版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第1頁/共133頁關(guān)系數(shù)據(jù)語言的種類關(guān)系數(shù)據(jù)語言的種類 關(guān)系數(shù)據(jù)語言關(guān)系代數(shù)語言關(guān)系演算語言具有關(guān)系代數(shù)和關(guān)系演算雙重特點的語言元組關(guān)系演算語言域關(guān)系演算語言例:ISBL例:ALPHA,QUEL例:QBE例:SQL第2頁/共133頁 SQL有著一體化的特點。其一體化具體體現(xiàn)在兩個方面: 1. 無論是實體或?qū)嶓w間的聯(lián)系,都用“表”來表示; 2. SQL把DDL、DML乃至DCL融于一體,即SQL不但具有查詢、更新等數(shù)據(jù)操作功能,而且具有數(shù)據(jù)定義和控制功能。第3頁/共133頁第4頁/共133頁 1. SQL的發(fā)展 1974年IBM的San Jose實驗室的Boyce和Chamberlin為關(guān)系數(shù)據(jù)
2、庫管理系統(tǒng)System-R設(shè)計的一種查詢語言,當時稱為SEQUEL語言(Structured English Query Language),后簡稱為SQL (Structured Query Language) 。第5頁/共133頁1981年IBM推出關(guān)系數(shù)據(jù)庫系統(tǒng)SQL/DS 后,SQL得到了廣泛應(yīng)用。1986年美國國家標準協(xié)會(ANSI)公布了 第一個SQL標準SQL86。1987年,ISO通過SQL86標準。第6頁/共133頁1989年,ISO制定SQL89標準,SQL89標 準在SQL86基礎(chǔ)上增補了完整性描述。1990年,我國制定等同SQL89的國家標準。1992年,ISO制定SQ
3、L92標準,即SQL2。1999年,ANSI制定SQL3標準。第7頁/共133頁現(xiàn)狀 大部分DBMS產(chǎn)品都支持SQL,成為操作數(shù)據(jù)庫的標準語言。目前,絕大多數(shù)流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),如Oracle,Sybase,SQL Server等都采用了SQL語言標準。 在許多軟件產(chǎn)品中,軟件廠商都對SQL的基本命令集進行了擴充,將其擴展成嵌入式SQL語言。SQL Server 2000中使用Transact-SQL語言與數(shù)據(jù)庫服務(wù)器打交道。第8頁/共133頁 2. SQL的分類 交互式SQL 用戶可直接鍵入SQL命令對數(shù)據(jù)庫進行操作。 由DBMS來進行解釋。第9頁/共133頁 2. SQL的分類 嵌
4、入式SQL 能將SQL語句嵌入到高級語言(宿主語言)。 使應(yīng)用程序充分利用SQL訪問數(shù)據(jù)庫的能力、宿主語言的過程處理能力。 一般需要預(yù)編譯,將嵌入的SQL語句轉(zhuǎn)化為宿主語言編譯器能處理的語句。第10頁/共133頁 關(guān)系模式稱為表,存儲模式稱為存儲文件,用戶子模式由表和視圖組成第11頁/共133頁 數(shù)據(jù)庫由若干表組成,表由若干行和列組成。第12頁/共133頁 表(基本表)對應(yīng)實際的存儲數(shù)據(jù),而視圖是在表的基礎(chǔ)上推導(dǎo)出來的“虛表”。第13頁/共133頁 一個表可以跨一個或多個存儲文件,一個存儲文件也可存放一個或多個表。第14頁/共133頁 SQL用戶可以是終端用戶,也可以是應(yīng)用程序。第15頁/共1
5、33頁 1SQL(Structured Query Language)全稱是結(jié)構(gòu)化查詢語言,是一種關(guān)系數(shù)據(jù)庫語言,提供數(shù)據(jù)的定義、查詢、更新和控制等功能。功能強大、能夠完成各種數(shù)據(jù)庫操作。第16頁/共133頁 2SQL語言不是一個應(yīng)用程序開發(fā)語言,它只提供對數(shù)據(jù)庫的操作能力,不能完成屏幕控制、菜單管理、報表生成等功能。第17頁/共133頁 3有利于各種數(shù)據(jù)庫之間交換數(shù)據(jù)、有利于程序的移植、有利于實現(xiàn)程序和數(shù)據(jù)間的獨立性;有利于實施標準化。第18頁/共133頁 4書寫簡單、易學(xué)易用。 第19頁/共133頁SQLDDLDMLDCLCreate Table/Alter Table/Drop Tabl
6、e:定義基本表定義基本表Create View/Drop View:視圖操作視圖操作Create Index/Drop Index:索引操作索引操作InsertDeleteSelect(查詢(查詢QL)UpdateGrantRevoke記錄操作記錄操作權(quán)限管理權(quán)限管理數(shù)據(jù)定義數(shù)據(jù)定義數(shù)據(jù)操作數(shù)據(jù)操作數(shù)據(jù)控制數(shù)據(jù)控制第20頁/共133頁 1、數(shù)據(jù)定義語言(DDL:Data Definition Language) 創(chuàng)建、修改或刪除數(shù)據(jù)庫中各種對象,包括表、視圖、索引等。第21頁/共133頁 2、查詢語言(QL:Query Language) 按照指定的組合、條件表達式或排序檢索已存在的數(shù)據(jù)庫中的
7、數(shù)據(jù),但并不改變數(shù)據(jù)庫中數(shù)據(jù)。第22頁/共133頁 3、數(shù)據(jù)操縱語言(DML:Data Manipulation Language ) 對已經(jīng)存在的數(shù)據(jù)庫進行記錄的插入、刪除、修改等操作。第23頁/共133頁 4、數(shù)據(jù)控制語言(DCL:Data Control Language) 用來授予或收回訪問數(shù)據(jù)庫的某種特權(quán)、控制數(shù)據(jù)操縱事務(wù)的發(fā)生時間及效果、對數(shù)據(jù)庫進行監(jiān)視。第24頁/共133頁 大寫單詞是SQL的關(guān)鍵字,在語句中要按原樣來拼寫(輸入時可用小寫) 小寫字(或斜體字、漢字)表示要代換的實體,在語句中應(yīng)把小寫字換成一個實際的對象名或數(shù)據(jù)值。第25頁/共133頁 豎線(|)分開不同選項,在語
8、句中需選且只能選一個選項。 方括號()中的內(nèi)容為可選的語法項目。 花括號()中的內(nèi)容為必選的語法項目。第26頁/共133頁 ,或,n表示前面的語法項目可重復(fù)一次或多次,并用逗號分隔。 或 n表示前面的語法項目可重復(fù)一次或多次,并用空格分隔。 尖括號()中的內(nèi)容為標簽(標識符)。第27頁/共133頁第28頁/共133頁 數(shù)據(jù)定義語言用于建立、刪除數(shù)據(jù)庫模式和建立、修改、刪除數(shù)據(jù)表。第29頁/共133頁 當需要在計算機中某個關(guān)系數(shù)據(jù)庫系統(tǒng)下建立數(shù)據(jù)庫時,首先要使用數(shù)據(jù)庫模式的命令定義數(shù)據(jù)庫名,即模式名,然后在其中定義各個基本表(數(shù)據(jù)表)、視圖等有關(guān)對象。第30頁/共133頁 1. 建立數(shù)據(jù)庫模式
9、ANSI標準SQL中建立數(shù)據(jù)庫(SCHEMA:模式)的命令是: CREATE SCHEMA|DATABASE AUTHORIZATION ; 例如:創(chuàng)建者是溫翠靈,則上面命令寫作: CREATE SCHEMA jxgl AUTHORIZATION 溫翠靈;第31頁/共133頁 大多數(shù)的關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),所使用的命令格式于ANSI SQL不同,這些RDBMS更常用下面命令格式: CREATE DATABASE ; 例如:建立學(xué)費管理數(shù)據(jù)庫的命令是: CREATE DATABASE xfgl第32頁/共133頁 2. 刪除數(shù)據(jù)庫模式 命令格式是: DROP DATABASE ; 例
10、如刪除學(xué)費管理數(shù)據(jù)庫的命令是: DROP DATABASE xfgl 注:數(shù)據(jù)庫中信息一并刪掉。第33頁/共133頁 建立基本表的命令格式為: CREATE TABLE ( , , , );第34頁/共133頁CREATE TABLE ( , , , );數(shù)據(jù)類型第35頁/共133頁SQL Server 2000中常用的數(shù)據(jù)類型:Int或integer:整數(shù),占用4個字節(jié)Decimal或numeric:數(shù)字數(shù)據(jù)類型, 格式:Decimal(數(shù)據(jù)長度,小數(shù)位數(shù))float 和 real:浮點數(shù),float更靈活一些第36頁/共133頁SQL Server 2000中常用的數(shù)據(jù)類型:datetim
11、e:代表日期和一天內(nèi)的時間的日期和時間數(shù)據(jù)類型。從1753年1月1日到9999年12月31日的日期和時間數(shù)據(jù),如:1998-01-01 23:59:59.993char:固定長度字符數(shù)據(jù)類型:格式:char(n) n 必須是一個介于 1 和 8,000 之間的數(shù)值,當使用字符型(日期型)數(shù)據(jù)時需要用或”括起來。 第37頁/共133頁CREATE TABLE ( , , , ); DEFAULT:默認值約束 NULL/NOT NULL:空值/非空值約束 PRIMARY KEY:主鍵約束 UNIQUE:單值約束 REFERENCES() :外鍵約束 CHECK():檢查約束第38頁/共133頁CR
12、EATE TABLE ( , , , ); PRIMARY KEY(, ) UNIQUE (, ) FOREIGN KEY (, ) CHECK()第39頁/共133頁學(xué)學(xué) 號號姓姓 名名性別性別出生日期出生日期所所 在在 系系00221020022102王雪蓮?fù)跹┥徟?980-9-151980-9-15電電 子子 系系00513090051309白亞春白亞春男男1981-05-61981-05-6計算機系計算機系00522010052201陳陳 韜韜男男1981-05-61981-05-6計算機系計算機系00522170052217袁更旭袁更旭男男1980-12-81980-12-8計算機
13、系計算機系 例1:在SQL SERVER中建立如表3-1所示學(xué)生基本情況表。表3-1學(xué)生基本情況表第40頁/共133頁 例1:在SQL SERVER中建立如表3-1所示學(xué)生基本情況表。CREATE TABLE jbqk ( number char(8) PRIMARY KEY, name char(8) NOT NULL UNIQUE, sex char(2) NOT NULL CHECK (sex=男男 or , sex=女女), birthday datetime, department char(12), )第41頁/共133頁課程號課程號課程名課程名學(xué)時學(xué)時任課教師任課教師C201C2
14、01C C語言語言7272T002T002C505C505操作系統(tǒng)操作系統(tǒng)8080T001T001C506C506數(shù)據(jù)庫應(yīng)用數(shù)據(jù)庫應(yīng)用8484T002T002C508C508編譯原理編譯原理9696T003T003CREATE TABLE course ( c_number char(4) PRIMARY KEY, c_name char(20) NOT NULL, period decimal(3,0), t_number char(4) NOT NULL ) 例2:建立課程表(course)的命令是:第42頁/共133頁教師號教師號教師姓名教師姓名職職 稱稱T001T001溫翠靈溫翠靈講講
15、 師師T002T002陳陳 剛剛副教授副教授T003T003李建義李建義講講 師師T004T004康明威康明威教教 授授例3:建立教師表(teacher)的命令是: CREATE TABLE teacher ( t_number char(4) PRIMARY KEY, t_name char(8), title char(10) ) 第43頁/共133頁課程號課程號學(xué)學(xué) 號號成績成績C201C201002210200221027575C505C505005130900513099595C508C508005220100522019292C506C506005221700522178080 例
16、4:建立選課表(sle_course)的命令是: 第44頁/共133頁CREATE TABLE sle_course (c_number char(4) NOT NULL, number char(8) NOT NULL, score decimal(3,0) DEFAULT NULL, PRIMARY KEY(c_number, number) FOREIGN KEY(number) REFERENCES jbqk(number), FOREIGN KEY(c_number) REFERENCES course(c_number) ) 例4:建立選課表(sle_course)的命令是: 第4
17、5頁/共133頁 1添加新列命令: ALTER TABLE ADD , |ADD , 例5:下面命令在jbqk表中添加“score”列。 ALTER TABLE jbqk ADD score decimal(3,0); 第46頁/共133頁 2刪除表中的列 ALTER TABLE DROP COLUMN , |DROP , 例6:下面命令在jbqk表中添加“成績”列之后,再刪除“score”列。 ALTER TABLE jbqk ADD 成績 decimal(3,0); ALTER TABLE jbqk DROP COLUMN score;第47頁/共133頁DROP TABLE ; 例7:刪
18、除剛才所建的jbqk表,使用如下命令格式: DROP TABLE jbqk; 第48頁/共133頁 索引是對數(shù)據(jù)庫表中一個或多個列的值進行排序的結(jié)構(gòu)??梢岳盟饕焖僭L問數(shù)據(jù)庫表中的特定信息。第49頁/共133頁 1建立索引語句 CREATE UNIQUE INDEX ON 數(shù)據(jù)表名(列名次序,列名次序); 說明:索引可以建立在一列和多列之上,索引順序可以是ASC(升序)或DESC(降序),缺省值是升序。UNIQUE表示每一個索引值對應(yīng)唯一的數(shù)據(jù)記錄。 第50頁/共133頁 例8:在學(xué)生基本情況表jbqk之上建立一個關(guān)于學(xué)生表的索引文件。索引文件名為“學(xué)生索引”,索引建立在學(xué)號之上,按學(xué)號降序
19、排序。 CREAT INDEX 學(xué)生索引 ON jbqk(name desc);第51頁/共133頁 2刪除索引語句 DROP INDEX .; 注意:該命令不能刪除由CREATE TABLE或者ALTER TABLE命令創(chuàng)建的主鍵和唯一性約束索引,也不能刪除系統(tǒng)表中的索引。第52頁/共133頁 例9:刪除例8創(chuàng)建的索引“學(xué)生索引”。程序如下: DROP INDEX jbqk.學(xué)生索引 第53頁/共133頁第54頁/共133頁 Select:查詢數(shù)據(jù)SQL的核心是數(shù)據(jù)查詢。對于數(shù)據(jù)庫的查詢操作是通過 SELECT 查詢命令實現(xiàn)的,它的基本形式由 SELECTFROMWHERE 查詢塊組成,多個
20、查詢塊可以嵌套執(zhí)行。第55頁/共133頁 SQL語言的查詢語句(Select)一般格式是: SELECT A1,A2,An (投影運算) FROM R1,R2, Rm (笛卡爾積運算) WHERE F (F為謂詞條件) 上面查詢語句等價于關(guān)系代數(shù)表達式:)(21,21mAAAFRRRn 第56頁/共133頁n語句格式SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ; 查詢語言(查詢語言(QLQL)- - 查詢數(shù)據(jù)查詢數(shù)據(jù)第57頁/共133頁 1命令含義 從FROM子句指定的基本表或視圖中,根據(jù)WHERE子
21、句的條件表達式查找出滿足該條件的記錄,按照SELECT子句指定的目標列表達式,選出元組中的屬性值形成結(jié)果表。如果有GROUP BY子句,則將結(jié)果按“列名1”的值進行分組,該屬性列值相等的元組為一個組;如果GROUP BY子句帶有短語HAVING,則只有滿足短語指定條件的分組才會輸出。如果有ORDER BY子句,則結(jié)果表要按照的值進行升序和降序排列。第58頁/共133頁 1命令含義 SELECT ALL|DISTINCT實現(xiàn)的是對表的投影操作,WHERE 中實現(xiàn)的是選擇操作。 第59頁/共133頁 2目標列表達式第60頁/共133頁n語句格式SELECT ALL|DISTINCT , FROM
22、, WHERE GROUP BY HAVING ORDER BY ASC|DESC ; 數(shù)據(jù)操作語言(數(shù)據(jù)操作語言(DMLDML)- - 查詢數(shù)據(jù)查詢數(shù)據(jù)第61頁/共133頁 2目標列表達式 列表達式可以是“列名1,列名2”的形式;如果FROM子句指定了多個表,則列名應(yīng)是“表名.列名”的形式。第62頁/共133頁 2目標列表達式 列表達式可以使用SQL提供的聚集函數(shù)形成表達式,常用的函數(shù)如下: COUNT(*):統(tǒng)計記錄條數(shù) COUNT(列名):統(tǒng)計一列值的個數(shù) SUM(列名):計算某一數(shù)值型列的值的總和 AVG(列名):計算某一數(shù)值型列的值的平均值 MAX(列名):計算某一數(shù)值型列的值的最大
23、值 MIN(列名):計算某一數(shù)值型列的值的最小值第63頁/共133頁 2目標列表達式 DISTINCT參數(shù):表示在結(jié)果集中,查詢出的內(nèi)容相同的記錄只留下一條。第64頁/共133頁 1選擇表中的列例1:選擇jbqk表中的所有列 第65頁/共133頁學(xué)學(xué) 號號姓姓 名名性別性別出生日期出生日期所所 在在 系系00221020022102王雪蓮?fù)跹┥徟?980-9-151980-9-15電電 子子 系系00513090051309白亞春白亞春男男1981-05-61981-05-6計算機系計算機系00522010052201陳陳 韜韜男男1981-05-61981-05-6計算機系計算機系0052
24、2170052217袁更旭袁更旭男男1980-12-81980-12-8計算機系計算機系教師號教師號教師姓名教師姓名職職 稱稱T001T001溫翠靈溫翠靈講講 師師T002T002陳陳 剛剛副教授副教授T003T003李建義李建義講講 師師T004T004康明威康明威教教 授授課程號課程號課程名課程名學(xué)時學(xué)時任課教師任課教師C201C201C C語言語言7272T002T002C505C505操作系統(tǒng)操作系統(tǒng)8080T001T001C506C506數(shù)據(jù)庫應(yīng)用數(shù)據(jù)庫應(yīng)用8484T002T002C508C508編譯原理編譯原理9696T003T003課程號課程號學(xué)學(xué) 號號成績成績C201C2010
25、02210200221027575C505C505005130900513099595C508C508005220100522019292C506C506005221700522178080學(xué)生基本情況表選課表教師表課程表第66頁/共133頁學(xué)學(xué) 號號number姓姓 名名name性別性別sex出生日期出生日期birthday所所 在在 系系department00221020022102王雪蓮?fù)跹┥徟?980-9-151980-9-15電電 子子 系系00513090051309白亞春白亞春男男1981-05-61981-05-6計算機系計算機系00522010052201陳陳 韜韜男男1
26、981-05-61981-05-6計算機系計算機系00522170052217袁更旭袁更旭男男1980-12-81980-12-8計算機系計算機系表3-1學(xué)生基本情況表(jbqk)第67頁/共133頁 1選擇表中的列例1:選擇jbqk表中的所有列 SELECT * FROM jbqk;第68頁/共133頁 1選擇表中的列例2:選擇jbqk表中的number、name、department列 SELECT number,name,department FROM jbqk;第69頁/共133頁 1選擇表中的列例3:選擇jbqk中所有各個系的名字,去掉重復(fù)行 SELECT DISTINCT depa
27、rtment FROM jbqk; 第70頁/共133頁 2選擇表中的記錄 選擇表中的記錄是通過WHERE子句實現(xiàn)的例4:選擇jbqk中所有計算機系的學(xué)生。 SELECT * FROM jbqk WHERE department=計算機系第71頁/共133頁 3條件表達式的構(gòu)成(WHERE子句) 見表3-2第72頁/共133頁查詢查詢條件條件運運 算算 符符說說 明明比比 較較, , =,=,字符串比較從左向字符串比較從左向右進行右進行確定確定范圍范圍BETWEEN ANDBETWEEN AND,NOT BETWEEN ANDNOT BETWEEN ANDBETWEENBETWEEN后是下后是
28、下限,限,ANDAND后是上限后是上限確定確定集合集合ININ,NOT INNOT IN檢查一個屬性值是檢查一個屬性值是否屬于集合中的值否屬于集合中的值字符字符匹配匹配LIKELIKE,NOT LIKENOT LIKE用于構(gòu)造條件表達用于構(gòu)造條件表達式中的字符匹配式中的字符匹配空空 值值IS NULLIS NULL,IS NOT IS NOT NULLNULL當屬性值內(nèi)容為空當屬性值內(nèi)容為空時,要用此運算符時,要用此運算符邏輯邏輯運算運算ANDAND,OROR,NOTNOT用于構(gòu)造復(fù)合表達用于構(gòu)造復(fù)合表達式式表3-2 WHERE子句常用的查詢條件第73頁/共133頁課程號c_number課程名
29、c_name學(xué)時period任課教師t_numberC201C201C C語言語言7272T002T002C505C505操作系統(tǒng)操作系統(tǒng)8080T001T001C506C506數(shù)據(jù)庫應(yīng)用數(shù)據(jù)庫應(yīng)用8484T002T002C508C508編譯原理編譯原理9696T003T003課程號c_number學(xué) 號number成績scoreC201C201002210200221027575C505C505005130900513099595C508C508005220100522019292C506C506005221700522178080課程表(course)選課表(sle_course)第74頁
30、/共133頁例5:查詢考試成績不及格學(xué)生的學(xué)號。 SELECT DISTINCT number FROM sle_course WHERE score 60; 例6:查詢學(xué)時在6070之間的課程名稱和學(xué)時。 SELECT c_name, period FROM course WHERE period BETWEEN 60 AND 70第75頁/共133頁例7:查詢學(xué)時不在6070之間的課程名稱和學(xué)時。 SELECT c_name, period FROM course WHERE period NOT BETWEEN 60 AND 70; 例8:假設(shè)當前的系統(tǒng)年份為2002,查詢計算機系、 電
31、子系學(xué)生的學(xué)號、姓名、年齡。 SELECT number,name,2002-year(birthday) as age FROM jbqk WHERE department IN(計算機系,電子系);第76頁/共133頁例9:查詢所有姓“王”的學(xué)生信息。 SELECT * FROM jbqk WHERE name LIKE 王%; 此例中,使用了謂詞LIKE。在使用時,應(yīng)注意下面兩點:LIKE前的列名必須是字符串類型??梢允褂猛ㄅ浞篲(下劃線)表示任一單 個字符;%(百分號)表示任意長度字符。第77頁/共133頁 4查詢中聚集函數(shù)的使用 聚集函數(shù)見表3-3第78頁/共133頁函數(shù)名稱函數(shù)名
32、稱函數(shù)功能函數(shù)功能COUNT(DISTINCT|ALL *)統(tǒng)計元組個數(shù)COUNT(DISTINCT|ALL)統(tǒng)計一列重值的個數(shù)SUM(DISTINCT|ALL)計算數(shù)值型一列值的總和AVG(DISTINCT|ALL)求一列值的平均值MAX(DISTINCT|ALL)求一列值的最大值MIN(DISTINCT|ALL)求一列值的最小值說明:DISTINCT:取消列中的重復(fù)值 ALL:為默認狀態(tài),表示不取消重復(fù)值。 表3-3 聚集函數(shù)一覽表第79頁/共133頁例10:查詢學(xué)生總?cè)藬?shù)。 SELECT COUNT(*) FROM jbqk; 例11:計算0052201學(xué)生的平均成績。 SELECT A
33、VG(score) FROM jbqk WHERE number = 0052201; 第80頁/共133頁 5查詢結(jié)果的分組與排序 GROUP BY子句將查詢結(jié)果表按某一列或多列值分組,值相等的為一組。分組的目的是為了將集函數(shù)的作用對象細化,分組后集函數(shù)將作用在每一個組上,也就是說每個組都有一個函數(shù)值。第81頁/共133頁例12:查詢選修了2門以上課程的學(xué)生學(xué)號,且查詢 結(jié)果按照升序排列。 SELECT number FROM sle_course GROUP BY number HAVING COUNT(*) 2 ORDER BY number ASC; WHERE 與 HAVING 的區(qū)
34、別在于作用的對象不同。WHERE子句作用于基本表或視圖,從中選擇滿足條件的記錄;HAVING 短語作用于分組,從中選出滿足條件的組。 第82頁/共133頁例13:查詢所有選修課程的學(xué)生信息,包括所學(xué) 的課程名、授課教師和成績。 SELECT jbqk.number, , course.c_name, sle_course.score, teacher.t_name FROM jbqk,course,sle_course,teacher WHERE jbqk.number=sle_course.number andsle_course.c_number=course.c_num
35、ber andcourse.t_number=teacher.t_number 第83頁/共133頁 在SQL語言中,一個SELECT FROM WHERE語句成為一個查詢塊。將一個查詢塊嵌套在另一個查詢塊的WHERE子句(或HAVING短語)的條件中的查詢稱為嵌套查詢。處于內(nèi)層的查詢稱為子查詢。嵌套查詢命令在執(zhí)行時,每個子查詢在上一級查詢處理之前求解,即由里向外查。 第84頁/共133頁例14:查詢選修了“數(shù)據(jù)庫技術(shù)”課程的學(xué)生姓名。 SELECT FROM jbqk WHERE jbqk. number in( SELECT sle_course.number FROM
36、 sle_course WHERE sle_course.c_number in ( SELECT course.c_number FROM course WHERE course.c_name=數(shù)據(jù)庫技術(shù));第85頁/共133頁 在一些嵌套查詢中WHERE之后可以使用ANY和ALL這兩個謂詞,ANY表示子查詢結(jié)果中的某個值,而ALL表示子查詢結(jié)果中的所有值。第86頁/共133頁謂詞形式語 義謂詞形式語 義ANY大于子查詢結(jié)果中的某個值A(chǔ)LL大于子查詢結(jié)果中的所有值A(chǔ)NY大于等于子查詢結(jié)果中的某個值A(chǔ)LL大于等于子查詢結(jié)果中的所有值A(chǔ)LL小于等于子查詢結(jié)果中的所有值A(chǔ)LL等于子查詢結(jié)果中的所有
37、值=ANY等于子查詢結(jié)果中的某個值!=(或)ALL不等于子查詢結(jié)果中的所有值!=(或) ANY不等于子查詢結(jié)果中的某個值表3-4 謂詞一覽表第87頁/共133頁例15:查詢所有課程成績在95分以上的學(xué)生的 學(xué)號、姓名。 Select number,name From jbqk Where number=any( Select number From sle_course Where score=95)第88頁/共133頁第89頁/共133頁 DML主要用于數(shù)據(jù)更新操作,包括數(shù)據(jù)的插入(INSERT)、刪除(DELETE)和修改(UPDATE)第90頁/共133頁 1.插入單行數(shù)據(jù)語句的一般格式
38、是: INSERT INTO ( , , ) VALUES ( , , , )例1:向?qū)W生基本情況表(jbqk)中插入一條記錄。 INSERT INTO jbqk VALUES(0051101,王云麗,女,1981-12-18, 電子系,85); 省略列名列表時,表示插入完整新行。第91頁/共133頁例2:向教師表(teacher)中插入一條記錄。 INSERT INTO teacher VALUES (T509,安志遠,副教授); 注意:在SQL SERVER 2000 插入數(shù)據(jù)時在VALUES子句中必須將所有列值寫出,否則會出現(xiàn)“插入錯誤:列名或所提供值的數(shù)目與表定義不匹配?!卞e誤。第92
39、頁/共133頁 2. 插入多行數(shù)據(jù)語句的一般格式是: INSERT INTO 表名 ( , , ) SELECT 子句第93頁/共133頁 例3:生成學(xué)生臨時成績表fcourse,表中包括name,c_number,score。 INSERT INTO fcourse SELECT name, c_number,score FROM jbqk, sle_course WHERE jbqk.number= sle_course.number第94頁/共133頁 刪除命令比較簡單,刪除是對整條記錄操作,不能刪除記錄的部分屬性。一次可以刪除一條和若干條記錄,甚至將整個表的內(nèi)容刪空,只保留表的結(jié)構(gòu)定義
40、。第95頁/共133頁刪除命令格式為: DELETE FROM WHERE 例4:刪除jbqk表中學(xué)號為“0051101”的學(xué)生。 DELETE FROM jbqk WHERE number = 0051101第96頁/共133頁 注意: DROP TABLE : 刪除后表不再存在 DELETE FROM : 刪除后表依然存在,但為無記錄的空表。第97頁/共133頁 修改數(shù)據(jù)的語句格式一般是: UPDATE SET = , = WHERE 第98頁/共133頁例5:將課程表(course)中所有課程的學(xué)時減少5學(xué)時 UPDATE course SET period = period - 5;例
41、6:將jbqk表中“袁更旭”同學(xué)的所在系改為“管理系” UPDATE jbqk SET department = 管理系 WHERE name = 袁更旭; 第99頁/共133頁第100頁/共133頁 視圖是關(guān)系數(shù)據(jù)庫系統(tǒng)提供給以多種角度觀察數(shù)據(jù)庫中數(shù)據(jù)的重要機制。它就象一個窗口,透過它可以看到數(shù)據(jù)庫中用戶感興趣的數(shù)據(jù)及其變化。第101頁/共133頁 1. 視圖是一種虛表,是邏輯表,不是物理存在的表。 2. 基本表中的數(shù)據(jù)發(fā)生變化,從視圖中查詢出的數(shù)據(jù)也隨之改變。 3. 圖中的數(shù)據(jù)是從現(xiàn)有的一個或多個表中提取出來的,可以屏蔽表中的某些信息,有利于數(shù)據(jù)庫的安全性。第102頁/共133頁 4. 視
42、圖在數(shù)據(jù)庫中是作為查詢來保存的,當引用一個查詢時,DBMS就執(zhí)行這個查詢,然后將查詢結(jié)果作為視圖來用; 5. 一個基本表可以建立多個視圖,一個視圖 也可以在多個表上建立。 6. 擁有表的幾乎所有操作。 7. 有利于應(yīng)用程序的獨立性、數(shù)據(jù)一致性。 第103頁/共133頁 1視圖的建立 建立視圖的語句格式: CREATE VIEW (,) AS WITH CHECK OPTION; 注:其中查詢子句可以是任意復(fù)雜的SELECT 語句,但通常不允許含有ORDER BY和DISTINCT短語。第104頁/共133頁 1視圖的建立 WITH CHECK OPTION子句是為了防止用戶通過視圖對數(shù)據(jù)進行增
43、加、刪除、修改時,對不屬于視圖范圍內(nèi)的基本表數(shù)據(jù)進行誤操作。加上該子句后,當對視圖上的數(shù)據(jù)進行增、刪、改時,DBMS會檢查視圖中定義 的條件,若不滿足,則拒絕執(zhí)行。第105頁/共133頁例1:建立所有計算機系學(xué)生信息(學(xué)號、姓名、 性別、出生日期、所在系)視圖。 CREAT VIEW 計算機系 AS SELECT number,name,sex,birthday,department FROM jbqk WHERE department=計算機系第106頁/共133頁 2刪除視圖 刪除視圖語句格式: DROP VIEW ; 例2:刪除上例建立的視圖“計算機系”。 DROP VIEW 計算機系;
44、 第107頁/共133頁 1. 查詢視圖 當視圖被定義之后,就可以象對基本表一樣對視圖進行查詢了。例3:查詢“計算機系”視圖中年齡小于20歲的學(xué)生 SELECT * FROM 計算機系 WHERE 2002-year (birthday) 20;第108頁/共133頁 2更新視圖 由于視圖是不實際存儲數(shù)據(jù)的虛表,因此對視圖的更新,最終是通過轉(zhuǎn)換為對基本表的更新進行的。 UPDATE 計算機系 SET department = 管理系 WHERE name = 袁更旭; 第109頁/共133頁 2更新視圖 對視圖內(nèi)容的更新直接影響基本表。因此這是一個較復(fù)雜的問題,通常會加以限制。當視圖來自多個基
45、本表時,通常只對視圖做適當?shù)男薷模ㄈ鐚Ψ侵鲗傩缘男薷模?,不允許做插入和刪除數(shù)據(jù)的操作。第110頁/共133頁第111頁/共133頁 在數(shù)據(jù)庫系統(tǒng)中實現(xiàn)安全性除了通過物理方法對數(shù)據(jù)庫進行加密等方法外,主要是通過授予和檢驗權(quán)限的手段(DBA)。SQL有授權(quán)語句,通過該語句可以實現(xiàn)對數(shù)據(jù)庫的使用控制。第112頁/共133頁 SQL語句通過GRANT語句向用戶授予操作權(quán)限,GRANT語句的格式為: GRANT ,ON TO ,WITH GRANT OPTION; 說明:此授權(quán)語句是指將某作用在指定操作對象上的操作權(quán)限,授予指定的用戶。第113頁/共133頁對象名對象名對象對象類型類型操操 作作 權(quán)權(quán)
46、限限屬性列TABLESELECT,INSERT,UPDATE,DELETE,ALL PRIVILEGERS視 圖TABLESELECT,INSERT,UPDATE,DELETE,ALL PRIVILEGERS基本表TABLESELECT,INSERT,UPDATE,DELETE,ALTER,INDEX,ALL PRIVILEGERS(所有權(quán)限)數(shù)據(jù)庫DATABASECREATETAB(建表權(quán)限)表3-5 權(quán)限一覽表第114頁/共133頁 如果指定WITH GRANT OPTION子句,則獲得某種權(quán)限的用戶可以把這種權(quán)限在授予其他用戶。如沒有指定該子句,獲得授權(quán)的用戶將不能傳播權(quán)限。第115頁/共133頁例1:將查詢jbqk表的權(quán)限授予用戶sa。 GRANT SELECT ON TABLE jbqk TO sa;第116頁/共13
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人借貸反擔(dān)保協(xié)議(2024版)8篇
- 二零二五年度焊工焊接材料采購與聘用合同3篇
- 2025年廠房使用權(quán)轉(zhuǎn)讓合同模板4篇
- 二零二五版擔(dān)保二手車買賣風(fēng)險規(guī)避合同3篇
- 2025年度廠房租賃與產(chǎn)業(yè)孵化器服務(wù)協(xié)議4篇
- 雨傘 課程設(shè)計
- 2025年度高速公路服務(wù)區(qū)鋁合金門窗安裝與維護合同3篇
- 二零二五版城市綜合體開發(fā)勞動合同協(xié)議書2篇
- 2025年北方航線擔(dān)保合同
- 2025年倉儲租賃合同法律責(zé)任
- GB/T 14864-2013實心聚乙烯絕緣柔軟射頻電纜
- 品牌策劃與推廣-項目5-品牌推廣課件
- 信息學(xué)奧賽-計算機基礎(chǔ)知識(完整版)資料
- 發(fā)煙硫酸(CAS:8014-95-7)理化性質(zhì)及危險特性表
- 數(shù)字信號處理(課件)
- 公路自然災(zāi)害防治對策課件
- 信息簡報通用模板
- 火災(zāi)報警應(yīng)急處置程序流程圖
- 耳鳴中醫(yī)臨床路徑
- 安徽身份證號碼前6位
- 分子生物學(xué)在動物遺傳育種方面的應(yīng)用
評論
0/150
提交評論