版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、An Introduction to Database Systems數(shù)據(jù)庫系統(tǒng)概論An Introduction to Database System第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)(biozhn)語言SQL共八十九頁An Introduction to Database Systems第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)(biozhn)語言SQL3.1 SQL概述(i sh)3.2 學(xué)生-課程數(shù)據(jù)庫3.3 數(shù)據(jù)定義3.4 數(shù)據(jù)查詢3.5 數(shù)據(jù)更新3.6 視圖3.7 小結(jié)共八十九頁An Introduction to Database Systems3.1 SQL概述(i sh)SQL(Structured Que
2、ry Language) 結(jié)構(gòu)化查詢語言,是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言SQL是一個通用(tngyng)的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫語言共八十九頁An Introduction to Database SystemsSQL概述(i sh)(續(xù))3.1.1 SQL 的產(chǎn)生(chnshng)與發(fā)展3.1.2 SQL的特點(diǎn)3.1.3 SQL的基本概念共八十九頁An Introduction to Database SystemsSQL標(biāo)準(zhǔn)(biozhn)的進(jìn)展過程 標(biāo)準(zhǔn) 大致頁數(shù) 發(fā)布(fb)日期SQL/86 1986.10SQL/89(FIPS 127-1) 120頁 1989年SQL/92 622頁 199
3、2年SQL99 1700頁 1999年SQL2003 2003年共八十九頁An Introduction to Database Systems3.1 SQL概述(i sh)3.1.1 SQL 的產(chǎn)生與發(fā)展(fzhn)3.1.2 SQL的特點(diǎn)3.1.3 SQL的基本概念共八十九頁An Introduction to Database Systems3.1.2 SQL的特點(diǎn)(tdin)1.綜合統(tǒng)一集數(shù)據(jù)定義語言(DDL),數(shù)據(jù)操縱語言(DML),數(shù)據(jù)控制語言(DCL)功能于一體??梢?ky)獨(dú)立完成數(shù)據(jù)庫生命周期中的全部活動: 定義關(guān)系模式,插入數(shù)據(jù),建立數(shù)據(jù)庫; 對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行查詢和更新
4、; 數(shù)據(jù)庫重構(gòu)和維護(hù) 數(shù)據(jù)庫安全性、完整性控制等用戶數(shù)據(jù)庫投入運(yùn)行后,可根據(jù)需要隨時逐步修改模式,不影響數(shù)據(jù)的運(yùn)行。數(shù)據(jù)操作符統(tǒng)一共八十九頁An Introduction to Database Systems2.高度(god)非過程化非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操縱語言“面向過程”,必須制定存取路徑SQL只要提出“做什么”,無須了解存取路徑。 存取路徑的選擇以及SQL的操作過程由系統(tǒng)(xtng)自動完成。共八十九頁An Introduction to Database Systems3.面向集合的操作(cozu)方式非關(guān)系數(shù)據(jù)模型采用面向記錄的操作方式,操作對象是一條記錄SQL采用集合操作方式 操作
5、對象、查找結(jié)果(ji gu)可以是元組的集合 一次插入、刪除、更新操作的對象可以是元組的集合共八十九頁An Introduction to Database Systems4.以同一種(y zhn)語法結(jié)構(gòu)提供多種使用方式SQL是獨(dú)立的語言 能夠獨(dú)立地用于聯(lián)機(jī)交互的使用方式SQL又是嵌入式語言 SQL能夠嵌入到高級語言(例如C,C+,Java)程序(chngx)中,供程序(chngx)員設(shè)計(jì)程序(chngx)時使用共八十九頁An Introduction to Database Systems5.語言(yyn)簡潔,易學(xué)易用SQL功能極強(qiáng),完成(wn chng)核心功能只用了9個動詞。共八十九
6、頁An Introduction to Database Systems3.1 SQL概述(i sh)3.1.1 SQL 的產(chǎn)生(chnshng)與發(fā)展3.1.2 SQL的特點(diǎn)3.1.3 SQL的基本概念共八十九頁An Introduction to Database SystemsSQL的基本概念(續(xù))SQL視圖2視圖1基本表2基本表1基本表3基本表4存儲文件2存儲文件1外模式模 式內(nèi)模式SQL支持關(guān)系數(shù)據(jù)庫三級模式(msh)結(jié)構(gòu)共八十九頁An Introduction to Database SystemsSQL的基本概念(續(xù))基本表本身獨(dú)立存在的表SQL中一個(y )關(guān)系就對應(yīng)一個(y
7、)基本表一個(或多個)基本表對應(yīng)一個存儲文件一個表可以帶若干索引存儲文件邏輯結(jié)構(gòu)組成了關(guān)系數(shù)據(jù)庫的內(nèi)模式物理結(jié)構(gòu)是任意的,對用戶透明視圖從一個或幾個基本表導(dǎo)出的表數(shù)據(jù)庫中只存放視圖的定義而不存放視圖對應(yīng)的數(shù)據(jù)視圖是一個虛表用戶可以在視圖上再定義視圖共八十九頁An Introduction to Database Systems第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)(biozhn)語言SQL3.1 SQL概述3.2 學(xué)生-課程數(shù)據(jù)庫3.3 數(shù)據(jù)定義3.4 數(shù)據(jù)查詢(chxn)3.5 數(shù)據(jù)更新3.6 視圖3.7 小結(jié)共八十九頁An Introduction to Database Systems3.2 學(xué)生(xu
8、 sheng)-課程 數(shù)據(jù)庫學(xué)生(xu sheng)-課程模式 S-T : 學(xué)生表:Student(Sno,Sname,Ssex,Sage,Sdept) 課程表:Course(Cno,Cname,Cpno,Ccredit) 學(xué)生選課表:SC(Sno,Cno,Grade) 共八十九頁An Introduction to Database SystemsStudent表學(xué) 號Sno姓 名Sname性 別 Ssex年 齡 Sage所 在 系 Sdept200215121200215122200215123200515125李勇劉晨王敏張立男女女男20191819CSCSMAIS共八十九頁An Int
9、roduction to Database SystemsCourse表課程號Cno課程名Cname先行課Cpno學(xué)分Ccredit1234567數(shù)據(jù)庫數(shù)學(xué)信息系統(tǒng)操作系統(tǒng)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)處理PASCAL語言516764243424共八十九頁An Introduction to Database SystemsSC表學(xué) 號Sno 課程號 Cno 成績 Grade 200215121 200215121 200215121 200215122 200215122 1 2 3 2 3 92 85 88 90 80共八十九頁An Introduction to Database Systems第三章 關(guān)
10、系數(shù)據(jù)庫標(biāo)準(zhǔn)(biozhn)語言SQL3.1 SQL概述(i sh)3.2 學(xué)生-課程數(shù)據(jù)庫3.3 數(shù)據(jù)定義3.4 數(shù)據(jù)查詢3.5 數(shù)據(jù)更新3.6 視圖3.7 小結(jié)共八十九頁An Introduction to Database Systems3.3 數(shù)據(jù)(shj)定義 SQL的數(shù)據(jù)定義(dngy)功能: 模式定義、表定義、視圖和索引的定義 共八十九頁An Introduction to Database Systems3.3 數(shù)據(jù)(shj)定義3.3.1 模式(msh)的定義與刪除3.3.2 基本表的定義、刪除與修改3.3.3 索引的建立與刪除共八十九頁An Introduction to
11、Database Systems定義(dngy)模式(續(xù)) 例1定義一個學(xué)生-課程模式S-T CREATE SCHEMA “S-T” AUTHORIZATION WANG; 為用戶WANG定義了一個模式S-T 例2CREATE SCHEMA AUTHORIZATION WANG; 隱含(yn hn)為用戶名WANG如果沒有指定,那么隱含為共八十九頁An Introduction to Database Systems定義(dngy)模式(續(xù))定義模式實(shí)際上定義了一個命名空間在這個空間中可以定義該模式包含的數(shù)據(jù)庫對象,例如(lr)基本表、視圖、索引等。在CREATE SCHEMA中可以接受CRE
12、ATE TABLE,CREATE VIEW和GRANT子句。 CREATE SCHEMA AUTHORIZATION |共八十九頁An Introduction to Database Systems定義(dngy)模式(續(xù))例3CREATE SCHEMA TEST AUTHORIZATION ZHANG CREATE TABLE TAB1(COL1 SMALLINT, COL2 INT, COL3 CHAR(20), COL4 NUMERIC(10,3), COL5 DECIMAL(5,2) ); 為用戶(yngh)ZHANG創(chuàng)建了一個模式TEST,并在其中定義了一個表TAB1。共八十九頁A
13、n Introduction to Database Systems二、刪除(shnch)模式DROP SCHEMA CASCADE(級聯(lián)) 刪除模式的同時把該模式中所有的數(shù)據(jù)庫對象全部刪除RESTRICT(限制) 如果該模式中定義了下屬的數(shù)據(jù)庫對象(如表、視圖(sht)等),則拒絕該刪除語句的執(zhí)行。 當(dāng)該模式中沒有任何下屬的對象時 才能執(zhí)行。共八十九頁An Introduction to Database Systems刪除(shnch)模式(續(xù))例4 DROP SCHEMA ZHANG CASCADE; 刪除(shnch)模式ZHANG 同時該模式中定義的表TAB1也被刪除共八十九頁An
14、Introduction to Database Systems3.3 數(shù)據(jù)(shj)定義3.3.1 模式的定義與刪除3.3.2 基本(jbn)表的定義、刪除與修改3.3.3 索引的建立與刪除共八十九頁An Introduction to Database Systems3.3.2 基本(jbn)表的定義、刪除與修改一、定義基本表CREATE TABLE ( , , ); 如果完整性約束條件涉及到該表的多個(du )屬性列,則必須定義在表級上,否則既可以定義在列級也可以定義在表級。 共八十九頁An Introduction to Database Systems學(xué)生(xu sheng)表Stu
15、dent例5 建立“學(xué)生”表Student,學(xué)號是主碼,姓名(xngmng)取值唯一。 CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, /* 列級完整性約束條件*/ Sname CHAR(20) UNIQUE, /* Sname取唯一值*/ Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) ); 主碼共八十九頁An Introduction to Database Systems課程表Course 例6 建立(jinl)一個“課程”表Course CREATE TABLE Course ( Cno CHAR(4
16、) PRIMARY KEY, Cname CHAR(40), Cpno CHAR(4) , Ccredit SMALLINT, FOREIGN KEY (Cpno) REFERENCES Course(Cno) ); 先修課 Cpno是外碼 被參照(cnzho)表是Course被參照列是Cno共八十九頁An Introduction to Database Systems學(xué)生(xu sheng)選課表SC例7 建立一個“學(xué)生選課”表SCCREATE TABLE SC (Sno CHAR(9), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY (Sno,Cno)
17、, /* 主碼由兩個屬性(shxng)構(gòu)成,必須作為表級完整性進(jìn)行定義*/ FOREIGN KEY (Sno) REFERENCES Student(Sno), /* 表級完整性約束條件,Sno是外碼,被參照表是Student */ FOREIGN KEY (Cno) REFERENCES Course(Cno) /* 表級完整性約束條件, Cno是外碼,被參照表是Course*/); 共八十九頁An Introduction to Database Systems二、數(shù)據(jù)類型SQL中域的概念用數(shù)據(jù)類型來實(shí)現(xiàn)(shxin)定義表的屬性時 需要指明其數(shù)據(jù)類型及長度 選用哪種數(shù)據(jù)類型 取值范圍 要
18、做哪些運(yùn)算 共八十九頁An Introduction to Database Systems二、數(shù)據(jù)類型數(shù)據(jù)類型含義CHAR(n)長度為n的定長字符串VARCHAR(n)最大長度為n的變長字符串INT長整數(shù)(也可以寫作INTEGER)SMALLINT短整數(shù)NUMERIC(p,d)定點(diǎn)數(shù),由p位數(shù)字(不包括符號、小數(shù)點(diǎn))組成,小數(shù)后面有d位數(shù)字REAL取決于機(jī)器精度的浮點(diǎn)數(shù)Double Precision取決于機(jī)器精度的雙精度浮點(diǎn)數(shù)FLOAT(n)浮點(diǎn)數(shù),精度至少為n位數(shù)字DATE日期,包含年、月、日,格式為YYYY-MM-DDTIME時間,包含一日的時、分、秒,格式為HH:MM:SS共八十九頁
19、An Introduction to Database Systems三、模式(msh)與表每一個基本表都屬于某一個模式一個模式包含多個基本表定義(dngy)基本表所屬模式方法一:在表名中明顯地給出模式名 Create table “S-T”.Student(.); /*模式名為 S-T*/Create table “S-T”.Cource(.);Create table “S-T”.SC(.); 方法二:在創(chuàng)建模式語句中同時創(chuàng)建表 方法三:設(shè)置所屬的模式 共八十九頁An Introduction to Database Systems模式(msh)與表(續(xù))創(chuàng)建基本表(其他數(shù)據(jù)庫對象也一樣)
20、時,若沒有指定模式,系統(tǒng)根據(jù)搜索(su su)路徑來確定該對象所屬的模式 RDBMS會使用模式列表中第一個存在的模式作為數(shù)據(jù)庫對象的模式名 若搜索路徑中的模式名都不存在,系統(tǒng)將給出錯誤 顯示當(dāng)前的搜索路徑: SHOW search_path; 搜索路徑的當(dāng)前默認(rèn)值是:$user, PUBLIC 共八十九頁An Introduction to Database Systems模式(msh)與表(續(xù))DBA用戶可以設(shè)置搜索路徑(ljng),然后定義基本表 SET search_path TO “S-T”,PUBLIC; Create table Student(.); 結(jié)果建立了S-T.Stude
21、nt基本表。RDBMS發(fā)現(xiàn)搜索路徑中第一個模式名S-T存在,就把該模式作為基本表Student所屬的模式。共八十九頁An Introduction to Database Systems四、修改(xigi)基本表ALTER TABLE ADD 完整性約束(yush) DROP ALTER COLUMN ;共八十九頁An Introduction to Database Systems修改(xigi)基本表(續(xù))例8向Student表增加“入學(xué)時間”列,其數(shù)據(jù)類型為日期型。 ALTER TABLE Student ADD S_entrance DATE;不論(bln)基本表中原來是否已有數(shù)據(jù),新
22、增加的列一律為空值。例9將年齡的數(shù)據(jù)類型由字符型(假設(shè)原來的數(shù)據(jù)類型是字符型)改為整數(shù)。 ALTER TABLE Student ALTER COLUMN Sage INT;例10增加課程名稱必須取唯一值的約束條件。 ALTER TABLE Course ADD UNIQUE(Cname); 共八十九頁An Introduction to Database Systems五、刪除(shnch)基本表 DROP TABLE RESTRICT| CASCADE;RESTRICT:刪除表是有限制的。欲刪除的基本表不能被其他表的約束(yush)所引用如果存在依賴該表的對象,則此表不能被刪除CASCAD
23、E:刪除該表沒有限制。在刪除基本表的同時,相關(guān)的依賴對象一起刪除 共八十九頁An Introduction to Database Systems刪除(shnch)基本表(續(xù)) 例11 刪除Student表 DROP TABLE Student CASCADE ;基本表定義被刪除,數(shù)據(jù)被刪除表上建立(jinl)的索引、視圖、觸發(fā)器等一般也將被刪除 共八十九頁An Introduction to Database Systems刪除(shnch)基本表(續(xù))例12若表上建有視圖,選擇(xunz)RESTRICT時表不能刪除 CREATE VIEW IS_Student AS SELECT Sno
24、,Sname,Sage FROM Student WHERE Sdept=IS; DROP TABLE Student RESTRICT; -ERROR: cannot drop table Student because other objects depend on it共八十九頁An Introduction to Database Systems刪除(shnch)基本表(續(xù))例12如果(rgu)選擇CASCADE時可以刪除表,視圖也自動被刪除 DROP TABLE Student CASCADE; -NOTICE: drop cascades to view IS_StudentSEL
25、ECT * FROM IS_Student;-ERROR: relation IS_Student does not exist 共八十九頁An Introduction to Database Systems刪除(shnch)基本表(續(xù))序號 標(biāo)準(zhǔn)及主流數(shù)據(jù)庫的處理方式依賴基本表的對象SQL99Kingbase ESORACLE 9iMS SQLSERVER 2000RCRCC1.索引無規(guī)定2.視圖保留保留保留3.DEFAULT,PRIMARY KEY,CHECK(只含該表的列)NOT NULL 等約束4.Foreign Key5.TRIGGER6.函數(shù)或存儲過程保留保留保留保留保留DROP
26、 TABLE時,SQL99 與 3個RDBMS的處理(chl)策略比較R表示RESTRICT , C表示CASCADE 表示不能刪除基本表,表示能刪除基本表,保留表示刪除基本表后,還保留依賴對象 共八十九頁An Introduction to Database Systems3.3 數(shù)據(jù)(shj)定義3.3.1 模式的定義與刪除3.3.2 基本表的定義、刪除與修改3.3.3 索引(suyn)的建立與刪除共八十九頁An Introduction to Database Systems3.3.3 索引(suyn)的建立與刪除建立索引的目的:加快查詢速度誰可以建立索引DBA 或 表的屬主(即建立表的
27、人)DBMS一般會自動建立以下列上的索引 PRIMARY KEY UNIQUE誰 維護(hù)索引 DBMS自動完成使用索引 DBMS自動選擇(xunz)是否使用索引以及使用哪些索引共八十九頁An Introduction to Database Systems索 引RDBMS中索引一般采用B+樹、HASH索引來實(shí)現(xiàn)B+樹索引具有動態(tài)平衡的優(yōu)點(diǎn) HASH索引具有查找速度快的特點(diǎn)采用B+樹,還是HASH索引 則由具體的RDBMS來決定索引是關(guān)系數(shù)據(jù)庫的內(nèi)部實(shí)現(xiàn)技術(shù),屬于(shy)內(nèi)模式的范疇 CREATE INDEX語句定義索引時,可以定義索引是唯一索引、非唯一索引或聚簇索引 共八十九頁An Intro
28、duction to Database Systems一、建立(jinl)索引 語句(yj)格式CREATE UNIQUE CLUSTER INDEX ON (, );共八十九頁An Introduction to Database Systems建立(jinl)索引(續(xù))例13 CREATE CLUSTER INDEX Stusname ON Student(Sname);在Student表的Sname(姓名)列上建立一個(y )聚簇索引在最經(jīng)常查詢的列上建立聚簇索引以提高查詢效率 一個基本表上最多只能建立一個聚簇索引 經(jīng)常更新的列不宜建立聚簇索引 共八十九頁An Introduction
29、to Database Systems建立(jinl)索引(續(xù)) 例14為學(xué)生-課程(kchng)數(shù)據(jù)庫中的Student,Course,SC三個表建 立索引。 CREATE UNIQUE INDEX Stusno ON Student(Sno);CREATE UNIQUE INDEX Coucno ON Course(Cno);CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC); Student表按學(xué)號升序建唯一索引 Course表按課程號升序建唯一索引 SC表按學(xué)號升序和課程號降序建唯一索引共八十九頁An Introduction to Dat
30、abase Systems二、刪除(shnch)索引 DROP INDEX ;刪除索引時,系統(tǒng)會從數(shù)據(jù)(shj)字典中刪去有關(guān)該索引的描述。例15 刪除Student表的Stusname索引 DROP INDEX Stusname;共八十九頁An Introduction to Database Systems第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)(biozhn)語言SQL3.1 SQL概述3.2 學(xué)生-課程數(shù)據(jù)庫3.3 數(shù)據(jù)定義3.4 數(shù)據(jù)查詢3.5 數(shù)據(jù)更新3.6 視圖(sht)3.7 小結(jié)共八十九頁An Introduction to Database Systems數(shù)據(jù)(shj)查詢語句格式 SELE
31、CT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ;共八十九頁An Introduction to Database Systems3.4 數(shù)據(jù)(shj)查詢 3.4.1 單表查詢3.4.2 連接查詢3.4.3 嵌套查詢3.4.4 集合查詢3.4.5 Select語句(yj)的一般形式 共八十九頁An Introduction to Database Systems3.4.1 單表查詢(chxn) 查詢僅涉及一個(y )表:一、 選擇表中的若干列二、 選擇表中的若干元組三、 ORDER BY子句四、 聚集函數(shù)五、
32、GROUP BY子句共八十九頁An Introduction to Database Systems一、 選擇(xunz)表中的若干列查詢指定列例1 查詢?nèi)w學(xué)生的學(xué)號與姓名(xngmng)。SELECT Sno,SnameFROM Student;例2 查詢?nèi)w學(xué)生的姓名、學(xué)號、所在系。SELECT Sname,Sno,SdeptFROM Student;共八十九頁An Introduction to Database Systems2. 查詢(chxn)全部列選出所有(suyu)屬性列:在SELECT關(guān)鍵字后面列出所有列名 將指定為 *例3 查詢?nèi)w學(xué)生的詳細(xì)記錄。SELECT Sno,S
33、name,Ssex,Sage,Sdept FROM Student; 或SELECT *FROM Student; 共八十九頁An Introduction to Database Systems3. 查詢(chxn)經(jīng)過計(jì)算的值 SELECT子句的可以為:算術(shù)表達(dá)式字符串常量(chngling)函數(shù)列別名 共八十九頁An Introduction to Database Systems例4 查全體學(xué)生的姓名及其出生年份。SELECT Sname,2004-Sage /*假定當(dāng)年的年份為2004年*/FROM Student;輸出(shch)結(jié)果: Sname 2004-Sage 李勇 198
34、4 劉晨 1985 王敏 1986 張立 1985 查詢(chxn)經(jīng)過計(jì)算的值(續(xù))共八十九頁An Introduction to Database Systems查詢(chxn)經(jīng)過計(jì)算的值(續(xù))例5 查詢?nèi)w學(xué)生的姓名、出生年份和所有系,要求(yoqi)用小寫字母表示所有系名SELECT Sname,Year of Birth: ,2004-Sage, ISLOWER(Sdept)FROM Student;輸出結(jié)果: Sname Year of Birth: 2004-Sage ISLOWER(Sdept) 李勇 Year of Birth: 1984 cs 劉晨 Year of Bir
35、th: 1985 is 王敏 Year of Birth: 1986 ma 張立 Year of Birth: 1985 is 共八十九頁An Introduction to Database Systems查詢經(jīng)過(jnggu)計(jì)算的值(續(xù))使用列別名(bimng)改變查詢結(jié)果的列標(biāo)題: SELECT Sname NAME,Year of Birth: BIRTH, 2000-Sage BIRTHDAY,LOWER(Sdept) DEPARTMENTFROM Student;輸出結(jié)果: NAME BIRTH BIRTHDAY DEPARTMENT - - - - 李勇 Year of Bir
36、th: 1984 cs 劉晨 Year of Birth: 1985 is 王敏 Year of Birth: 1986 ma 張立 Year of Birth: 1985 is共八十九頁An Introduction to Database Systems3.4.1 單表查詢(chxn) 查詢僅涉及一個(y )表:一、 選擇表中的若干列二、 選擇表中的若干元組三、 ORDER BY子句四、 聚集函數(shù)五、 GROUP BY子句共八十九頁An Introduction to Database Systems二、選擇(xunz)表中的若干元組1. 消除取值重復(fù)(chngf)的行 如果沒有指定DIS
37、TINCT關(guān)鍵詞,則缺省為ALL 例6 查詢選修了課程的學(xué)生學(xué)號。 SELECT Sno FROM SC;等價于:SELECT ALL Sno FROM SC;執(zhí)行上面的SELECT語句后,結(jié)果為: Sno200215121200215121200215121200215122200215122共八十九頁An Introduction to Database Systems消除(xioch)取值重復(fù)的行(續(xù))指定DISTINCT關(guān)鍵詞,去掉表中重復(fù)的行 SELECT DISTINCT Sno FROM SC; 執(zhí)行(zhxng)結(jié)果: Sno200215121200215122共八十九頁An
38、Introduction to Database Systems2.查詢(chxn)滿足條件的元組查 詢 條 件謂 詞比 較=,=,=,!=,!,!;NOT+上述比較運(yùn)算符確定范圍BETWEEN AND,NOT BETWEEN AND確定集合IN,NOT IN字符匹配LIKE,NOT LIKE空 值IS NULL,IS NOT NULL多重條件(邏輯運(yùn)算)AND,OR,NOT表3.4 常用(chn yn)的查詢條件共八十九頁An Introduction to Database Systems(1) 比較(bjio)大小例7 查詢計(jì)算機(jī)科學(xué)系全體學(xué)生的名單。 SELECT Sname FROM
39、 Student WHERE Sdept=CS; 例8 查詢所有(suyu)年齡在20歲以下的學(xué)生姓名及其年齡。 SELECT Sname,Sage FROM Student WHERE Sage 20;例9 查詢考試成績有不及格的學(xué)生的學(xué)號。 SELECT DISTINCT Sno FROM SC WHERE Grade60; 共八十九頁An Introduction to Database Systems(2)確定(qudng)范圍謂詞: BETWEEN AND NOT BETWEEN AND 例10 查詢年齡在2023歲(包括(boku)20歲和23歲)之間的學(xué)生的 姓名、系別和年齡 S
40、ELECT Sname,Sdept,SageFROM StudentWHERE Sage BETWEEN 20 AND 23; 例11 查詢年齡不在2023歲之間的學(xué)生姓名、系別和年齡 SELECT Sname,Sdept,Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23; 共八十九頁An Introduction to Database Systems(3) 確定(qudng)集合謂詞:IN , NOT IN 例12查詢信息系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)科學(xué)系(CS)學(xué)生的姓名和性別(xngbi)。SELECT Sname,SsexFR
41、OM StudentWHERE Sdept IN ( IS,MA,CS );例13查詢既不是信息系、數(shù)學(xué)系,也不是計(jì)算機(jī)科學(xué)系的學(xué)生的姓名和性別。SELECT Sname,SsexFROM Student WHERE Sdept NOT IN ( IS,MA,CS );共八十九頁An Introduction to Database Systems(4)字符(z f)匹配謂詞: NOT LIKE ESCAPE 匹配串為固定字符串例14 查詢(chxn)學(xué)號為200215121的學(xué)生的詳細(xì)情況。 SELECT * FROM Student WHERE Sno LIKE 200215121;等價于
42、: SELECT * FROM Student WHERE Sno = 200215121 ;共八十九頁An Introduction to Database Systems字符(z f)匹配(續(xù)) 2) 匹配串為含通配符的字符串例15 查詢所有姓劉學(xué)生(xu sheng)的姓名、學(xué)號和性別。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE 劉%;例16 查詢姓歐陽且全名為三個漢字的學(xué)生的姓名。 SELECT Sname FROM Student WHERE Sname LIKE 歐陽_;共八十九頁An Introduction to D
43、atabase Systems字符(z f)匹配(續(xù))例17 查詢名字(mng zi)中第2個字為陽字的學(xué)生的姓名和學(xué)號。 SELECT Sname,Sno FROM Student WHERE Sname LIKE _陽%;例18 查詢所有不姓劉的學(xué)生姓名。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname NOT LIKE 劉%;共八十九頁An Introduction to Database Systems字符(z f)匹配(續(xù))3) 使用換碼字符將通配符轉(zhuǎn)義為普通字符 例19 查詢(chxn)DB_Design課程的課程號和學(xué)分。 SELEC
44、T Cno,Ccredit FROM Course WHERE Cname LIKE DB_Design ESCAPE ;例20 查詢以DB_開頭,且倒數(shù)第3個字符為 i的課程的詳細(xì)情況。 SELECT * FROM Course WHERE Cname LIKE DB_%i_ _ ESCAPE ; ESCAPE 表示“ ” 為換碼字符 共八十九頁An Introduction to Database Systems(5) 涉及(shj)空值的查詢謂詞: IS NULL 或 IS NOT NULL “IS” 不能用 “=” 代替(dit) 例21 某些學(xué)生選修課程后沒有參加考試,所以有選課記錄
45、,但沒 有考試成績。查詢?nèi)鄙俪煽兊膶W(xué)生的學(xué)號和相應(yīng)的課程號。 SELECT Sno,Cno FROM SC WHERE Grade IS NULL例22 查所有有成績的學(xué)生學(xué)號和課程號。 SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL;共八十九頁An Introduction to Database Systems(6) 多重條件(tiojin)查詢邏輯運(yùn)算符:AND和 OR來聯(lián)結(jié)多個查詢條件 AND的優(yōu)先級高于OR 可以用括號改變(gibin)優(yōu)先級可用來實(shí)現(xiàn)多種其他謂詞 NOT IN NOT BETWEEN AND 共八十九頁An Introd
46、uction to Database Systems多重條件(tiojin)查詢(續(xù))例23 查詢計(jì)算機(jī)系年齡在20歲以下的學(xué)生(xu sheng)姓名。 SELECT Sname FROM Student WHERE Sdept= CS AND Sage20;共八十九頁An Introduction to Database Systems多重條件(tiojin)查詢(續(xù))改寫例12例12 查詢信息(xnx)系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)科學(xué)系(CS)學(xué)生的姓名和性別。SELECT Sname,SsexFROM StudentWHERE Sdept IN ( IS,MA,CS )可改寫為:
47、SELECT Sname,SsexFROM StudentWHERE Sdept= IS OR Sdept= MA OR Sdept= CS ;共八十九頁An Introduction to Database Systems3.4.1 單表查詢(chxn) 查詢僅涉及一個(y )表:一、 選擇表中的若干列二、 選擇表中的若干元組三、 ORDER BY子句四、 聚集函數(shù)五、 GROUP BY子句共八十九頁An Introduction to Database Systems三、ORDER BY子句(z j) ORDER BY子句可以按一個或多個屬性列排序升序:ASC;降序:DESC;缺省值為升序
48、當(dāng)排序列含空值時ASC:排序列為空值的元組最后(zuhu)顯示DESC:排序列為空值的元組最先顯示 共八十九頁An Introduction to Database SystemsORDER BY子句(z j) (續(xù)) 例24 查詢選修了3號課程的學(xué)生的學(xué)號及其成績,查詢結(jié)果按分?jǐn)?shù)(fnsh)降序排列。 SELECT Sno,Grade FROM SC WHERE Cno= 3 ORDER BY Grade DESC;例25 查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系號升序排列,同一系中的學(xué)生按年齡降序排列。 SELECT * FROM Student ORDER BY Sdept,Sage DESC; 共八十九頁An Introduction to Database Systems3.4.1 單表查詢(chxn) 查詢(chxn)僅涉及一個表:一、 選擇表中的若干列二、 選擇表中的若干元組三、 ORDER BY子句四、 聚集函數(shù)五、 GROUP BY子句共八十九頁An Introduction to Database Syste
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 護(hù)理技術(shù)鋪床
- 能源審計(jì)與節(jié)能技術(shù)實(shí)施手冊
- 輸變電工程施工安全管理及風(fēng)險控制方案編制綱要模板
- 2026年劇本殺運(yùn)營公司快遞收發(fā)管理制度
- 2025年電力設(shè)施巡檢與故障排除手冊
- 互感器校驗(yàn)培訓(xùn)課件
- 全期護(hù)理中的跨學(xué)科合作
- 護(hù)理專業(yè)春季護(hù)理信息技術(shù)應(yīng)用
- 2025年智慧農(nóng)業(yè)五年物聯(lián)網(wǎng)應(yīng)用報告
- 云南英文介紹
- 創(chuàng)意美術(shù)生蠔課件
- 2025年上海市事業(yè)單位教師招聘體育學(xué)科專業(yè)知識考試
- 小學(xué)六年級英語重點(diǎn)語法全總結(jié)
- 黑龍江省安達(dá)市職業(yè)能力傾向測驗(yàn)事業(yè)單位考試綜合管理類A類試題帶答案
- 酒店清欠協(xié)議書模板模板
- 2025沈陽市消防救援支隊(duì)政府專職消防員招聘160人考試備考試題及答案解析
- 鐵路鐵鞋管理辦法
- 安防監(jiān)控系統(tǒng)維護(hù)與管理方案
- 2025屆重慶八中學(xué)七上數(shù)學(xué)期末復(fù)習(xí)檢測模擬試題含解析
- 2025年廣東省中考語文試卷真題(含答案解析)
- 燙熨治療法講課件
評論
0/150
提交評論