空間數(shù)據(jù)庫課件:第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL3-1_第1頁
空間數(shù)據(jù)庫課件:第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL3-1_第2頁
空間數(shù)據(jù)庫課件:第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL3-1_第3頁
空間數(shù)據(jù)庫課件:第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL3-1_第4頁
空間數(shù)據(jù)庫課件:第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL3-1_第5頁
已閱讀5頁,還剩86頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL3.1 SQL概述3.2 數(shù)據(jù)定義3.3 查詢3.4 數(shù)據(jù)更新3.5 視圖3.6 數(shù)據(jù)控制3.1 SQL概述SQL(Structured Query Language)的發(fā)展1974年,由Boyce和Chamberlin提出19751979,IBM San Jose Research Lab的關(guān)系數(shù)據(jù)庫管理系統(tǒng)原型System R實(shí)施了這種語言SQL-86是第一個(gè)SQL標(biāo)準(zhǔn)SQL-89、SQL-92(SQL2)、SQL99(SQL3)、SQL2003(SQL4) 、SQL2006、SQL2008、SQL2011(ISO/IEC 9075:2011)3.1 SQL

2、概述標(biāo)準(zhǔn) 大致頁數(shù) 發(fā)布日期SQL/86 1986.10SQL/89(FIPS 127-1) 120頁 1989年SQL/92 622頁 1992年SQL99 1700頁 1999年SQL2003 3600頁 2003年SQL2011 2011年3.1 SQL概述SQL2008 :ISO/IEC 9075(1-4,9-11,13,14)ISO/IEC 9075-1:2008 Framework (SQL/Framework):72pISO/IEC 9075-2:2008 Foundation (SQL/Foundation):1317pISO/IEC 9075-3:2008 Call-Leve

3、l Interface (SQL/CLI):378pISO/IEC 9075-4:2008 Persistent Stored Modules (SQL/PSM):161pISO/IEC 9075-9:2008 Management of External Data (SQL/MED):451pISO/IEC 9075-10:2008 Object Language Bindings (SQL/OLB):376pISO/IEC 9075-11:2008 Information and Definition Schemas (SQL/Schemata):278pISO/IEC 9075-13:2

4、008 SQL Routines and Types Using the Java TM Programming Language (SQL/JRT):186pISO/IEC 9075-14:2008 XML-Related Specifications (SQL/XML):411p3.1 SQL概述現(xiàn)狀大部分產(chǎn)品都支持SQL,成為操作數(shù)據(jù)庫的標(biāo)準(zhǔn)語言商業(yè)數(shù)據(jù)庫軟件對SQL的支持程度不同交互式SQL一般DBMS都提供聯(lián)機(jī)交互工具用戶可直接鍵入SQL命令對數(shù)據(jù)庫進(jìn)行操作由DBMS來進(jìn)行解釋SQL的形式交互式3.1 SQL概述SQL的特點(diǎn)1. 綜合統(tǒng)一 SQL可用于所有用戶的DB活動(dòng)模型,包括系統(tǒng)

5、管理員、數(shù)據(jù)庫管理員、應(yīng)用程序員、決策支持系統(tǒng)人員及許多其它類型的終端用戶。 SQL為許多任務(wù)提供了語句,包括:查詢數(shù)據(jù)在表中插入、修改和刪除記錄建立、修改和刪除數(shù)據(jù)對象控制對數(shù)據(jù)和數(shù)據(jù)對象的存取保證數(shù)據(jù)庫一致性和完整性SQL的特點(diǎn)2. 高度非過程化SQL是一個(gè)非過程化的語言,因?yàn)樗淮翁幚硪粋€(gè)記錄,對數(shù)據(jù)提供自動(dòng)導(dǎo)航。SQL允許用戶在高層的數(shù)據(jù)結(jié)構(gòu)上工作,而不對單個(gè)記錄進(jìn)行操作,可操作記錄集。所有SQL語句接受集合作為輸入,返回集合作為輸出。SQL的集合特性允許一條SQL語句的結(jié)果作為另一條SQL語句的輸入。SQL不要求用戶指定對數(shù)據(jù)的存放方法。這種特性使用戶更易集中精力于要得到的結(jié)果。SQ

6、L的特點(diǎn)3. 面向集合的操作方式 非關(guān)系數(shù)據(jù)模型采用的是面向記錄的操作方式、操作對象是一條記錄。而SQL語言采用集合操作方式,不僅操作對象、查找結(jié)果可以是元組的集合,而且一次插入、刪除、更新操作的對象也可以是元組的集合。4. 以同一種語法結(jié)構(gòu)提供兩種使用方法 SQL語言既是自含式語言,又是嵌入式語言。作為自含式語言,它能夠獨(dú)立地用于聯(lián)機(jī)交互的使用方式,用戶可以在終端健盤上直接鍵入SQL命令對數(shù)據(jù)庫進(jìn)行操作:作為嵌入式語言,SQL語句能夠嵌入到高級語言程序中,供程序員設(shè)計(jì)程序時(shí)使用。而在兩種不同的使用方式下,SQL語言的語法結(jié)構(gòu)基本上是一致的。5. 語言簡潔,易學(xué)易用3.1 SQL概述SQL的基

7、本概念SQL視圖2視圖1基本表2基本表1基本表3基本表4存儲文件2存儲文件1外模式模 式內(nèi)模式SQL支持關(guān)系數(shù)據(jù)庫三級模式結(jié)構(gòu)SQL的基本概念基本表本身獨(dú)立存在的表SQL中一個(gè)關(guān)系就對應(yīng)一個(gè)基本表一個(gè)(或多個(gè))基本表對應(yīng)一個(gè)存儲文件一個(gè)表可以帶若干索引存儲文件邏輯結(jié)構(gòu)組成了關(guān)系數(shù)據(jù)庫的內(nèi)模式物理結(jié)構(gòu)是任意的,對用戶透明視圖從一個(gè)或幾個(gè)基本表導(dǎo)出的表數(shù)據(jù)庫中只存放視圖的定義而不存放視圖對應(yīng)的數(shù)據(jù)視圖是一個(gè)虛表用戶可以在視圖上再定義視圖學(xué)生-課程 數(shù)據(jù)庫學(xué)生-課程模式 S-T : 學(xué)生表:Student(Sno,Sname,Ssex,Sage,Sdept) 課程表:Course(Cno,Cname

8、,Cpno,Ccredit) 學(xué)生選課表:SC(Sno,Cno,Grade)Student表學(xué) 號Sno姓 名Sname性 別 Ssex年 齡 Sage所 在 系 Sdept200215121200215122200215123200515125李勇劉晨王敏張立男女女男20191819CSCSMAISCourse表課程號Cno課程名Cname先行課Cpno學(xué)分Ccredit1234567數(shù)據(jù)庫數(shù)學(xué)信息系統(tǒng)操作系統(tǒng)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)處理PASCAL語言516764243424SC表學(xué) 號Sno 課程號 Cno 成績 Grade 200215121 200215121 200215121 2002151

9、22 200215122 1 2 3 2 3 92 85 88 90 80第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL3.1 SQL概述3.2 數(shù)據(jù)定義3.3 查詢3.4 數(shù)據(jù)更新3.5 視圖3.6 數(shù)據(jù)控制3.2 數(shù) 據(jù) 定 義 3.2.1 模式的定義與刪除定義模式例1定義一個(gè)學(xué)生-課程模式S-T CREATE SCHEMA “S-T” AUTHORIZATION WANG; 為用戶WANG定義了一個(gè)模式S-T例2CREATE SCHEMA AUTHORIZATION WANG; 隱含為用戶名WANG如果沒有指定,那么隱含為一、定義模式(續(xù))定義模式實(shí)際上定義了一個(gè)命名空間(Namespace)在這個(gè)空

10、間中可以定義該模式包含的數(shù)據(jù)庫對象,例如基本表、視圖、索引等。在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。 CREATE SCHEMA AUTHORIZATION |定義模式(續(xù))例3CREATE SCHEMA TEST AUTHORIZATION ZHANG CREATE TABLE TAB1(COL1 SMALLINT, COL2 INT, COL3 CHAR(20), COL4 NUMERIC(10,3), COL5 DECIMAL(5,2) ); 為用戶ZHANG創(chuàng)建了一個(gè)模式TEST,并在其中定義了一個(gè)表TAB1。二、刪除模

11、式DROP SCHEMA CASCADE(級聯(lián)) 刪除模式的同時(shí)把該模式中所有的數(shù)據(jù)庫對象全部刪除RESTRICT(限制) 如果該模式中定義了下屬的數(shù)據(jù)庫對象(如表、視圖等),則拒絕該刪除語句的執(zhí)行。 當(dāng)該模式中沒有任何下屬的對象時(shí) 才能執(zhí)行。例4 DROP SCHEMA ZHANG CASCADE; 刪除模式ZHANG 同時(shí)該模式中定義的表TAB1也被刪除3.2.2 創(chuàng)建基本表CREATE TABLE ( , , );:所要定義的基本表的名字:組成該表的各個(gè)屬性(列):涉及相應(yīng)屬性列的完整性約束條件:涉及一個(gè)或多個(gè)屬性列的完整性約束條件 3.2.2 創(chuàng)建基本表例4 建立一個(gè)“學(xué)生”表Stud

12、ent,它由學(xué)號Sno、姓名Sname、性別Ssex、年齡Sage、所在系Sdept五個(gè)屬性組成。其中學(xué)號不能為空,值是唯一的,并且姓名取值也唯一。 CREATE TABLE Student ( Sno CHAR(9) NOT NULL UNIQUE, Sname CHAR(20) UNIQUE, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20); 3.2.2 創(chuàng)建基本表列列名字母開頭,可含字母、數(shù)字、$、_列類型Char(n)【定長字符串類型】Varchar2(n)【可變長字符串類型】Number【數(shù)值型】Date【日期時(shí)間型】3.2.2 創(chuàng)建基本表常用

13、完整性約束主碼約束: PRIMARY KEY唯一性約束:UNIQUE非空值約束:NOT NULL參照完整性約束:REFERENCES檢查約束(Check):用戶自定義完整性這些約束既可以定義在列上,也可以定義在基本表之上列約束:在每列后定義,只對當(dāng)前列有效表約束:在全部列定義后定義,可定義多個(gè)列上的約束(1)定義列完整格式 DEFAULT NOT NULL Create Table Student( S# Varchar2(10) Constraint PK Primary Key, Sname Varchar2(20) NOT NULL, Age Number(3), Sex Char(1)

14、 DEFAULT F)NOT NULL表示不允許空值,實(shí)際上是Check約束的簡化A)默認(rèn)值當(dāng)往表中插入一條新記錄時(shí),如果某列上有默認(rèn)值,并且新記錄中未指定該列的值,則自動(dòng)以默認(rèn)值填充Insert Into Student(s#,sname,age) Values(001,John,20)S#SnameAgeSex001John20F自動(dòng)以默認(rèn)值填充插入一條新記錄B)列約束必須更在每個(gè)列定義后定義只對當(dāng)前列有效可以使用四種類型的約束格式Constraint 例S# char(n) Constraint PK_Student Primary KeyS# char(n) Primary Key (

15、2)定義約束列約束:在每個(gè)列后定義,可以有多個(gè)約束子句不能定義多個(gè)列上的約束表約束:在全部列定義完成后定義,可以有多個(gè)約束子句多個(gè)列上的約束必須使用表約束單列上的約束可以用列約束,也可用表約束四種約束都可以作為列約束或表約束A)列約束和表約束舉例Create Table Student( S# Varchar2(10) Constraint PK_S Primary Key, Sname Varchar2(20), Age Number(3) Constraint CK_S Check (age14 and age15)Constraint CK_S2 Check (Sex In (M,F)C

16、onstraint CK_SC Check (Score=0 and Score=100)(3)模式與表每一個(gè)基本表都屬于某一個(gè)模式一個(gè)模式包含多個(gè)基本表定義基本表所屬模式方法一:在表名中明顯地給出模式名 Create table “S-T”.Student(.); /*模式名為 S-T*/Create table “S-T”.Cource(.);Create table “S-T”.SC(.); 方法二:在創(chuàng)建模式語句中同時(shí)創(chuàng)建表 方法三:設(shè)置所屬的模式 模式與表(續(xù))創(chuàng)建基本表(其他數(shù)據(jù)庫對象也一樣)時(shí),若沒有指定模式,系統(tǒng)根據(jù)搜索路徑來確定該對象所屬的模式 RDBMS會使用模式列表中第一

17、個(gè)存在的模式作為數(shù)據(jù)庫對象的模式名 若搜索路徑中的模式名都不存在,系統(tǒng)將給出錯(cuò)誤 顯示當(dāng)前的搜索路徑: SHOW search_path; 搜索路徑的當(dāng)前默認(rèn)值是:$user, PUBLIC 模式與表(續(xù))DBA用戶可以設(shè)置搜索路徑,然后定義基本表 SET search_path TO “S-T”,PUBLIC; Create table Student(.); 結(jié)果建立了S-T.Student基本表。RDBMS發(fā)現(xiàn)搜索路徑中第一個(gè)模式名S-T存在,就把該模式作為基本表Student所屬的模式。3.2.3 修改基本表ALTER TABLE ADD 完整性約束 DROP ALTER COLUMN

18、 ;:要修改的基本表ADD子句:增加新列和新的完整性約束條件DROP子句:刪除指定的完整性約束條件ALTER COLUMN子句:修改列名和數(shù)據(jù)類型3.2.3 修改基本表例6 向Student表增加“入學(xué)時(shí)間”列,其數(shù)據(jù)類型為日期型。 ALTER TABLE Student ADD Scome DATE;不論基本表中原來是否已有數(shù)據(jù),新增加的列一律為空值。刪除屬性列 直接/間接刪除把表中要保留的列及其內(nèi)容復(fù)制到一個(gè)新表中刪除原表再將新表重命名為原表名 直接刪除屬性列:(新)例:ALTER TABLE Student Drop column Scome; 3.2.3 修改基本表例7 將年齡的數(shù)據(jù)類

19、型改為短整型。 ALTER TABLE Student ALTER COLUMN Sage SMALLINT;注:修改原有的列定義有可能會破壞已有數(shù)據(jù)例8 刪除學(xué)生姓名必須取唯一值的約束。ALTER TABLE Student DROP UNIQUE(Sname);3.2.4刪除基本表 DROP TABLE RESTRICT| CASCADE;RESTRICT:刪除表是有限制的。欲刪除的基本表不能被其他表的約束所引用如果存在依賴該表的對象,則此表不能被刪除CASCADE:刪除該表沒有限制。在刪除基本表的同時(shí),相關(guān)的依賴對象一起刪除 刪除基本表(續(xù)) 例9 刪除Student表 DROP TAB

20、LE Student CASCADE ;基本表定義被刪除,數(shù)據(jù)被刪除表上建立的索引、視圖、觸發(fā)器等一般也將被刪除 刪除基本表(續(xù))例10若表上建有視圖,選擇RESTRICT時(shí)表不能刪除 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept=IS; DROP TABLE Student RESTRICT; -ERROR: cannot drop table Student because other objects depend on it刪除基本表(續(xù))例11如果選擇CASCADE時(shí)可以刪除表,視圖也自

21、動(dòng)被刪除 DROP TABLE Student CASCADE; -NOTICE: drop cascades to view IS_StudentSELECT * FROM IS_Student;-ERROR: relation IS_Student does not exist 刪除基本表(續(xù))DROP TABLE時(shí),SQL99 與 3個(gè)RDBMS的處理策略比較R表示RESTRICT , C表示CASCADE 表示不能刪除基本表,表示能刪除基本表,保留表示刪除基本表后,還保留依賴對象 3.2.5 建立與刪除索引 建立索引是加快查詢速度的有效手段建立索引DBA或表的屬主(即建立表的人)根據(jù)需

22、要建立有些DBMS自動(dòng)建立以下列上的索引 PRIMARY KEY UNIQUE維護(hù)索引 DBMS自動(dòng)完成使用索引 DBMS自動(dòng)選擇是否使用索引以及使用哪些索引一、建立索引 語句格式CREATE UNIQUE CLUSTER INDEX ON (, );用指定要建索引的基本表名字索引可以建立在該表的一列或多列上,各列名之間用逗號分隔用指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASCUNIQUE表明此索引的每一個(gè)索引值只對應(yīng)唯一的數(shù)據(jù)記錄CLUSTER表示要建立的索引是聚簇索引一、建立索引 例8 為學(xué)生-課程數(shù)據(jù)庫中的Student,Course,SC三個(gè)表建立索引。其中Stud

23、ent表按學(xué)號升序建唯一索引,Course表按課程號升序建唯一索引,SC表按學(xué)號升序和課程號降序建唯一索引。CREATE UNIQUE INDEX Stusno ON Student(Sno);CREATE UNIQUE INDEX Coucno ON Course(Cno);CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC); 一、建立索引唯一值索引對于已含重復(fù)值的屬性列不能建UNIQUE索引對某個(gè)列建立UNIQUE索引后,插入新記錄時(shí)DBMS會自動(dòng)檢查新記錄在該列上是否取了重復(fù)值。這相當(dāng)于增加了一個(gè)UNIQUE約束一、建立索引聚簇索引建立聚簇索

24、引后,基表中數(shù)據(jù)也需要按指定的聚簇屬性值的升序或降序存放。也即聚簇索引的索引項(xiàng)順序與表中記錄的物理順序一致 例:CREATE CLUSTER INDEX Stusname ON Student(Sname); 在Student表的Sname(姓名)列上建立一個(gè)聚簇索引,而且Student表中的記錄將按照Sname值的升序存放 一、建立索引在一個(gè)基本表上最多只能建立一個(gè)聚簇索引聚簇索引的用途:對于某些類型的查詢,可以提高查詢效率聚簇索引的適用范圍 很少對基表進(jìn)行增刪操作 很少對其中的變長列進(jìn)行修改操作 二、刪除索引 DROP INDEX ;刪除索引時(shí),系統(tǒng)會從數(shù)據(jù)字典中刪去有關(guān)該索引的描述。 例

25、7 刪除Student表的Stusname索引。DROP INDEX Stusname;第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL3.1 SQL概述3.2 數(shù)據(jù)定義3.3 查詢3.4 數(shù)據(jù)更新3.5 視圖3.6 數(shù)據(jù)控制3.3 查 詢 3.3.1 概述3.3.2 單表查詢3.3.3 連接查詢3.3.4 嵌套查詢3.3.5 集合查詢3.3.6 小結(jié) 3.3.1 概述 語句格式SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ;3.3.1 概述語句格式SELECT子句:指定要顯示的屬性列FROM子句:指定查詢對象(基本表

26、或視圖)WHERE子句:指定查詢條件GROUP BY子句:對查詢結(jié)果按指定列的值分組,該屬性列值相等的元組為一個(gè)組。通常會在每組中作用集函數(shù)。HAVING短語:篩選出只有滿足指定條件的組ORDER BY子句:對查詢結(jié)果表按指定列值的升序或降序排序 3.3.2 單表查詢 查詢僅涉及一個(gè)表,是一種最簡單的查詢操作一、選擇表中的若干列二、選擇表中的若干元組三、對查詢結(jié)果排序四、使用集函數(shù)五、對查詢結(jié)果分組 一、查詢列 例1 查詢?nèi)w學(xué)生的學(xué)號與姓名。SELECT Sno,SnameFROM Student; 例2 查詢?nèi)w學(xué)生的姓名、學(xué)號、所在系。SELECT Sname,Sno,SdeptFROM

27、 Student;例3 查詢?nèi)w學(xué)生的詳細(xì)記錄。SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student; 或SELECT *FROM Student; 查詢經(jīng)過計(jì)算的值 SELECT子句的為表達(dá)式算術(shù)表達(dá)式字符串常量函數(shù)列別名等 例4 查全體學(xué)生的姓名及其出生年份。SELECT Sname,2000-SageFROM Student;輸出結(jié)果: Sname 2004-Sage - - 李勇 1984 劉晨 1985 查詢經(jīng)過計(jì)算的值例5 查詢?nèi)w學(xué)生的姓名、出生年份和所有系,要求用小寫字母表示所有系名。SELECT Sname,Year of Birth:

28、,2000-Sage, LOWER(Sdept)FROM Student; 輸出結(jié)果: Sname Year of Birth: 2004-Sage LOWER(Sdept) - - - - 李勇 Year of Birth: 1984 cs 劉晨 Year of Birth: 1985 is 王敏 Year of Birth: 1986 ma 張立 Year of Birth: 1985 is 使用列別名例5.1 使用列別名改變查詢結(jié)果的列標(biāo)題 SELECT Sname NAME,Year of Birth: BIRTH, 2004-Sage BIRTHDAY,LOWER(Sdept) DE

29、PARTMENT FROM Student;輸出結(jié)果: NAME BIRTH BIRTHDAY DEPARTMENT - - - - 李勇 Year of Birth: 1984 cs 劉晨 Year of Birth: 1985 is 王敏 Year of Birth: 1986 ma 張立 Year of Birth: 1985 is二、選擇表中的若干元組 1.消除取值重復(fù)的行:使用DISTINCT短語例6 查詢選修了課程的學(xué)生學(xué)號。(1) SELECT Sno FROM SC;或(默認(rèn) ALL) SELECT ALL Sno FROM SC;結(jié)果: Sno 200215121200215

30、121200215121200215122200215122 (2) SELECT DISTINCT Sno FROM SC;結(jié)果:Sno 200215121200215122例題(續(xù))注意 DISTINCT短語的作用范圍是所有目標(biāo)列例:查詢選修課程的各種成績錯(cuò)誤的寫法SELECT DISTINCT Cno,DISTINCT GradeFROM SC;正確的寫法 SELECT DISTINCT Cno,Grade FROM SC;2.查詢滿足條件的元組WHERE子句常用的查詢條件查 詢 條 件謂 詞比 較=,=,=,!=,!,!;NOT+上述比較運(yùn)算符確定范圍BETWEEN AND,NOT B

31、ETWEEN AND確定集合IN,NOT IN字符匹配LIKE,NOT LIKE空 值IS NULL,IS NOT NULL多重條件(邏輯運(yùn)算)AND,OR,NOT表3.4 常用的查詢條件(1) 比較大小例7 查詢計(jì)算機(jī)科學(xué)系全體學(xué)生的名單。 SELECT Sname FROM Student WHERE Sdept=CS; 例8 查詢所有年齡在20歲以下的學(xué)生姓名及其年齡。 SELECT Sname,Sage FROM Student WHERE Sage 20;例9 查詢考試成績有不及格的學(xué)生的學(xué)號。 SELECT DISTINCT Sno FROM SC WHERE Grade60; (

32、2)確定范圍謂詞: BETWEEN AND NOT BETWEEN AND 例10 查詢年齡在2023歲(包括20歲和23歲)之間的學(xué)生的 姓名、系別和年齡 SELECT 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; (3) 確定集合謂詞:IN , NOT IN 例12查詢信息系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)科學(xué)系(CS)學(xué)生

33、的姓名和性別。SELECT Sname,SsexFROM StudentWHERE Sdept IN ( IS,MA,CS );例13查詢既不是信息系、數(shù)學(xué)系,也不是計(jì)算機(jī)科學(xué)系的學(xué)生的姓名和性別。SELECT Sname,SsexFROM Student WHERE Sdept NOT IN ( IS,MA,CS );(4)字符匹配 NOT LIKE ESCAPE :指定匹配模板 匹配模板:固定字符串或含通配符的字符串 當(dāng)匹配模板為固定字符串時(shí), 可以用 = 運(yùn)算符取代 LIKE 謂詞 用 != 或 運(yùn)算符取代 NOT LIKE 謂詞 當(dāng)用戶要查詢的字符串本身就含有 % 或 _ 時(shí),要使用E

34、SCAPE 短語對通配符進(jìn)行轉(zhuǎn)義。通配符% (百分號) 代表任意長度(長度可以為0)的字符串例:a%b表示以a開頭,以b結(jié)尾的任意長度的字符串。如acb,addgb,ab 等都滿足該匹配串_ (下橫線) 代表任意單個(gè)字符例:a_b表示以a開頭,以b結(jié)尾的長度為3的任意字符串。如acb,afb等都滿足該匹配串字符匹配(續(xù))1)匹配串為固定字符串例14 查詢學(xué)號為200215121的學(xué)生的詳細(xì)情況。 SELECT * FROM Student WHERE Sno LIKE 200215121;等價(jià)于: SELECT * FROM Student WHERE Sno = 200215121 ;字符匹

35、配(續(xù)) 2) 匹配串為含通配符的字符串例15 查詢所有姓劉學(xué)生的姓名、學(xué)號和性別。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE 劉%;例16 查詢姓歐陽且全名為三個(gè)漢字的學(xué)生的姓名。 SELECT Sname FROM Student WHERE Sname LIKE 歐陽_;字符匹配(續(xù))例17 查詢名字中第2個(gè)字為陽字的學(xué)生的姓名和學(xué)號。 SELECT Sname,Sno FROM Student WHERE Sname LIKE _陽%;例18 查詢所有不姓劉的學(xué)生姓名。 SELECT Sname,Sno,Ssex FROM

36、Student WHERE Sname NOT LIKE 劉%;字符匹配(續(xù))3) 使用換碼字符將通配符轉(zhuǎn)義為普通字符 例19 查詢DB_Design課程的課程號和學(xué)分。 SELECT Cno,Ccredit FROM Course WHERE Cname LIKE DB_Design ESCAPE ;例20查詢以DB_開頭,且倒數(shù)第3個(gè)字符為 i的課程的詳細(xì)情況。 SELECT * FROM Course WHERE Cname LIKE DB_%i_ _ ESCAPE ; ESCAPE 表示“ ” 為換碼字符 (5) 涉及空值的查詢 使用謂詞 IS NULL 或 IS NOT NULL “

37、IS NULL” 不能用 “= NULL” 代替例21 某些學(xué)生選修課程后沒有參加考試,所以有選課記錄,但沒有考試成績。查詢?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;(6) 多重條件查詢用邏輯運(yùn)算符AND和 OR來聯(lián)結(jié)多個(gè)查詢條件 AND的優(yōu)先級高于OR 可以用括號改變優(yōu)先級可用來實(shí)現(xiàn)多種其他謂詞 NOT IN NOT BETWEEN AND 例23 查詢計(jì)算機(jī)系年齡在20歲以下的學(xué)生姓名。 SELECT Sname FROM Student WHERE Sdept= CS AND Sage=20 AND Sage=23;三、對查詢結(jié)果排序 使用ORDER BY子句 可以按一個(gè)或多個(gè)屬性列排序 升序:ASC;降序:DESC;缺省值為升序當(dāng)排序列含空值時(shí)ASC:排序列為空值的元組最后顯示DESC:排序列為空值的元組最先顯示 三、

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論