




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