版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL1 講義三 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL 1 SQL1 SQL簡介簡介 2 SQL2 SQL定義語言定義語言 3 SQL3 SQL操作語言操作語言 4 SQL4 SQL查詢語言查詢語言 5 SQL5 SQL的基本語言元素的基本語言元素 6 SQL6 SQL的操作符的操作符 7 SQL7 SQL表達(dá)式表達(dá)式 8 SQL8 SQL條件條件 9 SQL9 SQL函數(shù)函數(shù) 10 SQL10 SQL查詢與子查詢查詢與子查詢 總結(jié)總結(jié) 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL2 3.1 SQL3.1 SQL簡介簡介 Structure Query Language(SQL)Struct
2、ure Query Language(SQL)的歷史的歷史 19701970年年, ,Prof Codd Prof Codd 提出著名的關(guān)系數(shù)據(jù)模型提出著名的關(guān)系數(shù)據(jù)模型 SQLSQL語言由語言由IBM Research LabIBM Research Lab首先開發(fā)創(chuàng)建首先開發(fā)創(chuàng)建 System RSystem R時(shí)使用時(shí)使用 19791979年年, ,關(guān)系軟件公司關(guān)系軟件公司( (Oracle)Oracle)首先開發(fā)出實(shí)首先開發(fā)出實(shí) 用的商業(yè)用的商業(yè)SQLSQL版本版本 SQL SQL 是高級的非過程化編程語言。是高級的非過程化編程語言。 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL3 3.1 SQL
3、3.1 SQL簡介簡介 SQLSQL標(biāo)準(zhǔn)標(biāo)準(zhǔn) SQL-86SQL-86是第一個是第一個SQLSQL標(biāo)準(zhǔn)標(biāo)準(zhǔn) SQL-89SQL-89、SQL-92(SQL2)SQL-92(SQL2)、SQL-99(SQL3)SQL-99(SQL3) 關(guān)系型商業(yè)數(shù)據(jù)庫遵守的查詢語言規(guī)范關(guān)系型商業(yè)數(shù)據(jù)庫遵守的查詢語言規(guī)范 各種通行的數(shù)據(jù)庫系統(tǒng)在其實(shí)踐過程中都對各種通行的數(shù)據(jù)庫系統(tǒng)在其實(shí)踐過程中都對 SQL SQL 規(guī)范作了某些編改和擴(kuò)充規(guī)范作了某些編改和擴(kuò)充 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL4 3.1 SQL3.1 SQL簡介簡介 SQLSQL的使用的使用 直接使用直接使用 交互式查詢工具(交互式查詢工具(MS
4、sql server:Transact-sqlMS sql server:Transact-sql) 直接鍵入直接鍵入SQLSQL命令對數(shù)據(jù)庫進(jìn)行操作命令對數(shù)據(jù)庫進(jìn)行操作 由由DBMSDBMS進(jìn)行解釋進(jìn)行解釋 嵌入式嵌入式SQL(Embedded SQL)SQL(Embedded SQL) 嵌入到高級編程語言嵌入到高級編程語言 使應(yīng)用程序充分利用使應(yīng)用程序充分利用SQLSQL訪問數(shù)據(jù)庫的能力、宿主訪問數(shù)據(jù)庫的能力、宿主 語言的過程處理能力。語言的過程處理能力。 需要將嵌入的需要將嵌入的SQLSQL語句轉(zhuǎn)化為宿主語言編譯器能處語句轉(zhuǎn)化為宿主語言編譯器能處 理的語句理的語句 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技
5、術(shù)_SQL5 3.1 SQL3.1 SQL簡介簡介 SQLSQL語句分類語句分類 數(shù)據(jù)定義語言(數(shù)據(jù)定義語言(Data DefinitionData Definition) createcreate alteralter dropdrop 數(shù)據(jù)操作語言(數(shù)據(jù)操作語言(Data ManipulationData Manipulation) insertinsert updateupdate deletedelete 數(shù)據(jù)查詢語言數(shù)據(jù)查詢語言 selectselect 數(shù)據(jù)控制語言數(shù)據(jù)控制語言(Data Control)(Data Control) grantgrant rolerole revo
6、kerevoke 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL6 3.5.1 3.5.1 數(shù)據(jù)類型數(shù)據(jù)類型 常用的數(shù)據(jù)類型常用的數(shù)據(jù)類型 數(shù)據(jù)類型數(shù)據(jù)類型描述描述 CHAR(size)CHAR(size)存儲最長為存儲最長為n n個字節(jié)的定長字符串個字節(jié)的定長字符串 VARCHAR(size)VARCHAR(size)存儲最長為存儲最長為n n個字節(jié)的變長字符串個字節(jié)的變長字符串 NUMERIC(P,S)NUMERIC(P,S)存儲任何類型的數(shù)字存儲任何類型的數(shù)字 DATETIMEDATETIME存儲日期時(shí)間存儲日期時(shí)間 INTINT長整形長整形 SMALLINTSMALLINT短整形短整形 FLOAT(
7、n)FLOAT(n)浮點(diǎn)數(shù),精度至少為浮點(diǎn)數(shù),精度至少為n n位數(shù)字位數(shù)字 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL7 3.1 SQL3.1 SQL簡介簡介 數(shù)據(jù)定義語句格式數(shù)據(jù)定義語句格式 1 1 創(chuàng)建表創(chuàng)建表 CREATE TABLE CREATE TABLE ( 列完整性約束條件列完整性約束條件 , 列完整性約束條件列完整性約束條件 , 列完整性約束條件列完整性約束條件, );); 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL8 3.1 SQL3.1 SQL簡介簡介 數(shù)據(jù)定義語句格式數(shù)據(jù)定義語句格式 2 2 更改表更改表 ALTER TABLE ALTER TABLE ADD ADD 列完整性約束條件列完整
8、性約束條件 , DROP DROP , MODIFY MODIFY ; 3 3 刪除表刪除表 DROP TABLE DROP TABLE ; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL9 3.1 SQL3.1 SQL簡介簡介 數(shù)據(jù)操作語句格式數(shù)據(jù)操作語句格式 1 1 插入操作插入操作 INSERT INTO INSERT INTO (, , ,1, )n) VALUES (VALUES (, , ,2, );n); 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL10 3.1 SQL3.1 SQL簡介簡介 數(shù)據(jù)操作語句格式數(shù)據(jù)操作語句格式 2 2 修改操作修改操作 UPDATE UPDATE SET SET =, ,
9、= WHERE WHERE ; ; 3 3 刪除操作刪除操作 DELETEDELETE FROM FROM WHERE WHERE ; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL11 3.1 SQL3.1 SQL簡介簡介 數(shù)據(jù)查詢語句:數(shù)據(jù)查詢語句: 數(shù)據(jù)查詢是數(shù)據(jù)庫的核心操作數(shù)據(jù)查詢是數(shù)據(jù)庫的核心操作 SELECTSELECT語句的格式為:語句的格式為: SELECT ALL|DISTINCT ALL|DISTINCT 別名別名 , , 別名別名 FROM 別名別名 , , 別名別名 WHERE GROUP BY 1 HAVING ORDER BY ASC|DESC, ASC|DESC, 3 ASC|
10、DESCASC|DESC ; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL12 3.1 SQL3.1 SQL簡介簡介 數(shù)據(jù)控制語句:授權(quán)數(shù)據(jù)控制語句:授權(quán) SQLSQL語言用語言用GRANTGRANT語句向用戶授予操作權(quán)限,語句向用戶授予操作權(quán)限, GRANTGRANT語句的一般格式為:語句的一般格式為: GRANT GRANT , ON ON TO TO , WITH GRANT OPTION;WITH GRANT OPTION; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL13 3.1 SQL3.1 SQL簡介簡介 數(shù)據(jù)控制語句:收回權(quán)限數(shù)據(jù)控制語句:收回權(quán)限 授予的權(quán)限用授予的權(quán)限用REVOKEREVOKE語句
11、收回,語句收回,REVOKEREVOKE語句語句 的一般格式為:的一般格式為: REVOKE REVOKE , ON ON FROM FROM ,; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL14 3.1 SQL3.1 SQL簡介簡介 數(shù)據(jù)控制語句:角色數(shù)據(jù)控制語句:角色 創(chuàng)建角色創(chuàng)建角色 CREATE ROLE CREATE ROLE ; 分配角色:分配角色: GRANT GRANT TO TO ; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL15 3.2 SQL3.2 SQL定義語言定義語言 表、視圖是數(shù)據(jù)庫中的主體。表、視圖是數(shù)據(jù)庫中的主體。SQLSQL提供數(shù)據(jù)定提供數(shù)據(jù)定 義語句對這些主體進(jìn)行管理義語句對這
12、些主體進(jìn)行管理 SQLSQL的數(shù)據(jù)定義語句的數(shù)據(jù)定義語句 操作對象操作對象操操 作作 方方 式式 創(chuàng)創(chuàng) 建建刪刪 除除修修 改改 表表CREATE TABLE DROP TABLE ALTER TABLE 視視 圖圖CREATE VIEWDROP VIEW 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL16 3.2.1 3.2.1 表定義表定義 1 表的創(chuàng)建 SQLSQL語言使用語言使用CREATE TABLECREATE TABLE語句定義表,其一語句定義表,其一 般格式如下:般格式如下: CREATE TABLE CREATE TABLE ( 列級完整性約束條件列級完整性約束條件 , 列級完整性約束條件
13、列級完整性約束條件 ) , ); ; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL17 3.2.1 3.2.1 表定義表定義 1 表的創(chuàng)建 (1 1)實(shí)體完整性)實(shí)體完整性 例例 建立建立StudentStudent表,表,SnoSno作為主碼。作為主碼。 CREATE TABLE StudentCREATE TABLE Student (Sno CHAR(7) PRIMARY KEY,(Sno CHAR(7) PRIMARY KEY, Sname CHAR(8), Sname CHAR(8), Ssex CHAR(2) , Ssex CHAR(2) , Sage SMALLINT, Sage SMALL
14、INT, Sdept CHAR(20) ); Sdept CHAR(20) ); 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL18 3.2.1 3.2.1 表定義表定義 1 表的創(chuàng)建 (1 1)實(shí)體完整性)實(shí)體完整性 例例 建立建立SCSC表,表,SnoSno和和CnoCno是主碼。是主碼。 CREATE TABLE SCCREATE TABLE SC (Sno CHAR(7), (Sno CHAR(7), Cno CHAR(4), Cno CHAR(4), Grade SMALLINT,Grade SMALLINT, PRIMARY KEY (Sno,Cno); PRIMARY KEY (Sno,Cno
15、); 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL19 3.2.1 3.2.1 表定義表定義 1 表的創(chuàng)建 (2)參照完整性)參照完整性 例例 建立建立SC表,表,Sno和和Cno是主碼,且是主碼,且Sno和和Cno也是外碼,分別引也是外碼,分別引 用用Student表的表的Sno列和列和Course表的表的Cno列。列。 CREATE TABLE SC (Sno CHAR(7), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY (Sno,Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno)
16、REFERENCES Course(Cno); 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL20 3.2.1 3.2.1 表定義表定義 1 表的創(chuàng)建 (3)屬性值約束)屬性值約束 非空值限制非空值限制 指定允許的取值范圍指定允許的取值范圍 當(dāng)往表中插入元組或修改屬性的值時(shí),當(dāng)往表中插入元組或修改屬性的值時(shí), 數(shù)據(jù)庫管理系統(tǒng)就檢查屬性上的限制是否數(shù)據(jù)庫管理系統(tǒng)就檢查屬性上的限制是否 被滿足,如果不滿足則操作被拒絕執(zhí)行。被滿足,如果不滿足則操作被拒絕執(zhí)行。 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL21 3.2.1 3.2.1 表定義表定義 1 表的創(chuàng)建 (3 3)屬性值約束)屬性值約束 例例 當(dāng)學(xué)生的性別是男時(shí),其名
17、字不能以當(dāng)學(xué)生的性別是男時(shí),其名字不能以Ms.打頭。打頭。 CREATE TABLE Student (Sno CHAR(7) PRIMARY KEY, Sname CHAR(8) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20), CHECK (Ssex =女女 OR Sname NOT LIKE Ms.% ); 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL22 3.2.1 3.2.1 表定義表定義 2 修改表 一般格式為:一般格式為: ALTER TABLE ADD 完整性約束完整性約束 DROP MODIFY ; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_S
18、QL23 3.2.1 3.2.1 表定義表定義 2 2 修改表修改表 例例 向向Student表增加表增加“入學(xué)時(shí)間入學(xué)時(shí)間”列,其數(shù)據(jù)列,其數(shù)據(jù) 類型為日期型。類型為日期型。 ALTER TABLE Student ADD Scome DATE; 不論表中原來是否已有數(shù)據(jù),新增加的列一不論表中原來是否已有數(shù)據(jù),新增加的列一 律為空值。律為空值。 例例 刪除學(xué)生姓名不能取空值的約束。刪除學(xué)生姓名不能取空值的約束。 ALTER TABLE Student DROP NOT NULL(Sname); 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL24 3.2.1 3.2.1 表定義表定義 3、刪除表、刪除表 當(dāng)
19、某個表不再需要時(shí),可以使用當(dāng)某個表不再需要時(shí),可以使用DROP TABLE語句刪除它。其一般格式為:語句刪除它。其一般格式為: DROP TABLE 例例 刪除刪除Student表。表。 DROP TABLE Student; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL25 3.2.2 3.2.2 試圖定義試圖定義 1、視圖的作用、視圖的作用 (1)視圖能夠簡化用戶的操作)視圖能夠簡化用戶的操作 (2)視圖可以減少冗余數(shù)據(jù))視圖可以減少冗余數(shù)據(jù) (3)視圖對重構(gòu)數(shù)據(jù)庫提供了一定程度的邏)視圖對重構(gòu)數(shù)據(jù)庫提供了一定程度的邏 輯獨(dú)立性輯獨(dú)立性 (4)視圖能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù))視圖能夠?qū)C(jī)密數(shù)據(jù)提供安全
20、保護(hù) 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL26 3.2.2 3.2.2 試圖定義試圖定義 2、視圖創(chuàng)建、視圖創(chuàng)建 SQL語言用語言用CREATE VIEW命令建立視命令建立視 圖,其一般格式為:圖,其一般格式為: CREATE VIEW (, ) AS WITH CHECK OPTION; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL27 3.2.2 3.2.2 試圖定義試圖定義 2 試圖創(chuàng)建試圖創(chuàng)建 例例 建立計(jì)算機(jī)系學(xué)生的視圖。建立計(jì)算機(jī)系學(xué)生的視圖。 CREATE VIEW Student_CS AS 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL28 3.2.2 3.2.2 試圖定義試圖定義 2 試圖創(chuàng)建試圖創(chuàng)建
21、例例 建立英語課(建立英語課(1156)成績單的視圖。)成績單的視圖。 CREATE VIEW English_Grade(Sno, Sname, Grade) AS 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL29 3.2.2 3.2.2 試圖定義試圖定義 2 試圖創(chuàng)建試圖創(chuàng)建 例例 建立英語課的成績在建立英語課的成績在80分以上的學(xué)生分以上的學(xué)生 的視圖。的視圖。 CREATE VIEW English_Grade_80 AS 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL30 3.2.2 3.2.2 試圖定義試圖定義 3 刪除視圖刪除視圖 當(dāng)不再需要一個視圖時(shí),可以刪除它,當(dāng)不再需要一個視圖時(shí),可以刪除它, 語句
22、格式為:語句格式為: DROP VIEW 例例 刪除視圖刪除視圖Student_CS DROP VIEW Student_CS; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL31 3.3 SQL3.3 SQL操作語言操作語言 1 插入操作插入操作 2 修改操作修改操作 3 刪除操作刪除操作 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL32 3.3.1 3.3.1 插入操作插入操作 1、插入操作、插入操作 插入語句的格式是:插入語句的格式是: INSERT INTO (, ) VALUES ( , ); 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL33 3.3.1 3.3.1 插入操作插入操作 例例 將學(xué)生王林的信息插入到將學(xué)生王
23、林的信息插入到Student表中。表中。 INSERT INTO Student(Sno,Sname,Ssex,Sdept,Sage) VALUES (2000012, 王林王林, 男男, 計(jì)算機(jī)計(jì)算機(jī), 19); INTO子句指定子句指定Student表和要賦值的列,表和要賦值的列, VALUES子句對元組的各列賦值。子句對元組的各列賦值。 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL34 3.3.1 3.3.1 插入操作插入操作 例例 在表在表Course中增加課程離散數(shù)學(xué)的信中增加課程離散數(shù)學(xué)的信 息。息。 INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VAL
24、UES (1136, 離散數(shù)學(xué)離散數(shù)學(xué), NULL, 4); 符號符號NULL的含義是賦予該列的值是空的含義是賦予該列的值是空 值。值。 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL35 3.3.2 3.3.2 修改操作修改操作 2、修改操作、修改操作 修改操作又稱為更新操作,語句的一般修改操作又稱為更新操作,語句的一般 格式是:格式是: UPDATE SET =, = WHERE ; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL36 3.3.2 3.3.2 修改操作修改操作 例例 將學(xué)號為將學(xué)號為2000012的學(xué)生的年齡改為的學(xué)生的年齡改為 18歲。歲。 UPDATE Student SET Sage=18 WH
25、ERE Sno=2000012; 例例6 將所有學(xué)生的年齡增加將所有學(xué)生的年齡增加1歲。歲。 UPDATE Student SET Sage= Sage+1; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL37 3.3.3 3.3.3 刪除操作刪除操作 3、刪除操作、刪除操作 語句的一般格式為:語句的一般格式為: DELETE FROM WHERE ; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL38 3.3.3 3.3.3 刪除操作刪除操作 例例 刪除學(xué)號為刪除學(xué)號為2000012的學(xué)生記錄。的學(xué)生記錄。 DELETE FROM Student WHERE Sno=2000012; 例例 刪除所有的學(xué)生選課記錄。刪除
26、所有的學(xué)生選課記錄。 DELETE FROM SC; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL39 3.4 SQL3.4 SQL查詢語音查詢語音 1.1.查詢基本結(jié)構(gòu)概述查詢基本結(jié)構(gòu)概述 2.2.查詢子句概述查詢子句概述 3.SELECT 3.SELECT 列表列表 4.FROM4.FROM子句子句 5.WHERE5.WHERE子句子句 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL40 3.4.1 查詢基本結(jié)構(gòu)概述 查詢基本結(jié)構(gòu)概述:查詢基本結(jié)構(gòu)概述: SELECT 列表:指定列列表:指定列 FROM 指定表指定表 WHERE 指定行指定行 語義:語義: Select Select 子句中的屬性列表,對上述結(jié)果作
27、投子句中的屬性列表,對上述結(jié)果作投 影(影( )操作。)操作。 From From 子句:對指定關(guān)系,作笛卡兒積(子句:對指定關(guān)系,作笛卡兒積() Where Where 子句:進(jìn)行選擇(子句:進(jìn)行選擇()運(yùn)算,找出符)運(yùn)算,找出符 合條件的元組。合條件的元組。 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL41 3.4.2 查詢子句概述 SELECT SELECT 子句指定您要檢索的列。子句指定您要檢索的列。 FROM FROM 子句指定從中請求列的表。在所有從表中檢索數(shù)據(jù)子句指定從中請求列的表。在所有從表中檢索數(shù)據(jù) 的查詢中都需要該子句。的查詢中都需要該子句。 ON ON 子句指定子句指定 FROM F
28、ROM 子句中的表將如何進(jìn)行連接。該子句子句中的表將如何進(jìn)行連接。該子句 只用于多表查詢。只用于多表查詢。 WHERE WHERE 子句指定表中您要查看的行。子句指定表中您要查看的行。 GROUP BY GROUP BY 子句用于集合數(shù)據(jù)。子句用于集合數(shù)據(jù)。 HAVING HAVING 子句指定要在其上收集集合數(shù)據(jù)的行。子句指定要在其上收集集合數(shù)據(jù)的行。 ORDER BY ORDER BY 子句對結(jié)果集中的行進(jìn)行排序。子句對結(jié)果集中的行進(jìn)行排序。 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL42 3.4.3 SELECT 列表 1從表中選擇所有列 SELECT distinct SELECT distin
29、ct * * FROM table-expression FROM table-expression 2從表中選擇特定的列 SELECT dept_id, dept_name FROM departmentSELECT dept_id, dept_name FROM department 3重命名查詢結(jié)果中的列 SELECT column-namecolumn-name AS aliasalias SELECT column-namecolumn-name aliasalias 4查詢結(jié)果中顯示字符串 select the firstname is as “ ”,first_name from
30、 employees;select the firstname is as “ ”,first_name from employees; 5計(jì)算 SELECT 列表中的值 SELECT first_name, salary - 10 AS salary after tax FROM SELECT first_name, salary - 10 AS salary after tax FROM employees; employees; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL43 3.4.4 FROM子句 直接使用表名 FROM table_name 使用相關(guān)名 您可以賦予表名一個相關(guān)名以減少需要鍵入
31、的字符。 您可以在 FROM 子句中指派相關(guān)名,方法是在表名之 后鍵入該相關(guān)名,如下所示: SELECT d.dept_id, d.dept_name FROM Department d FROM 子句包括鏈接兩個或多個表的表名 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL44 3.4.5 WHERE 子句 比較 WHERE salary 50000 范圍 WHERE salary BETWEEN 40000 AND 60000 列表 WHERE station IN ( beijing, shanghai, jinan) 字符匹配 WHERE phone LIKE 415% 未知值 WHERE firs
32、t_name is not NULL 組合組合 WHERE salary 50000 AND first_name like A% 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL45 3.5 SQL3.5 SQL的基本語言元素的基本語言元素 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)值常量數(shù)值常量 數(shù)據(jù)格式化數(shù)據(jù)格式化 空值空值 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL46 3.5.1 3.5.1 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)據(jù)類型自動轉(zhuǎn)換規(guī)則數(shù)據(jù)類型自動轉(zhuǎn)換規(guī)則 INSERTUPDATEINSERTUPDATE語句中語句中, ,數(shù)據(jù)值按照字段的類型進(jìn)行轉(zhuǎn)數(shù)據(jù)值按照字段的類型進(jìn)行轉(zhuǎn) 換換 SELECTSELECT語句中語句中, ,字段值按照定義
33、的變量類型轉(zhuǎn)換字段值按照定義的變量類型轉(zhuǎn)換 比較字符數(shù)值與數(shù)字?jǐn)?shù)值時(shí)比較字符數(shù)值與數(shù)字?jǐn)?shù)值時(shí), ,將字符數(shù)值轉(zhuǎn)換為數(shù)字將字符數(shù)值轉(zhuǎn)換為數(shù)字 比較字符數(shù)值與日期數(shù)值時(shí)比較字符數(shù)值與日期數(shù)值時(shí), ,將字符數(shù)值轉(zhuǎn)換為日期將字符數(shù)值轉(zhuǎn)換為日期 賦值語句中賦值語句中, ,一般將等號右邊的變量轉(zhuǎn)換為左邊的數(shù)據(jù)一般將等號右邊的變量轉(zhuǎn)換為左邊的數(shù)據(jù) 類型類型 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL47 3.5.1 3.5.1 數(shù)據(jù)類型數(shù)據(jù)類型 字符自動轉(zhuǎn)換字符自動轉(zhuǎn)換 SELECT salary + 10 FROM employees; SELECT last_name FROM employees WHERE e
34、mployee_id = 200; SELECT last_name FROM employees WHERE hiredate = 1982-01-23; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL48 3.5.2 3.5.2 數(shù)值常量數(shù)值常量 字符常量字符常量 Hello ORACLE 09-MAR-98 數(shù)字常量數(shù)字常量 25 +6.34 0.5 25e-03 -1 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL49 3.5.3 3.5.3 數(shù)據(jù)格式化數(shù)據(jù)格式化 字符串格式化字符串格式化 CAST ( CAST ( expressionexpression AS AS data_type data_type )
35、 ) CONVERT ( CONVERT ( data_type data_type ( ( length length ) , ) , expressionexpression , , style style ) ) 日期格式化日期格式化 字符串轉(zhuǎn)日期字符串轉(zhuǎn)日期 Select cast(2009-01-01 as datetime) Select cast(2009-01-01 as datetime) 日期格式轉(zhuǎn)換日期格式轉(zhuǎn)換 Select CONVERT(varchar(100), GETDATE(), Select CONVERT(varchar(100), GETDATE(), 0
36、)0) 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL50 3.5.4 NULL(3.5.4 NULL(空空) ) Null:Null:表明記錄的字段中不包含任何值表明記錄的字段中不包含任何值( (空空) ) 目前將目前將等同于等同于Null Null (ORACLE)ORACLE) 條件中的條件中的NULLNULL If A is: Condition Evaluates to: 10 a IS NULL FALSE 10 a IS NOT NULL TRUE NULLa IS NULL TRUE NULL a IS NOT NULL FALSE 10 a = NULL UNKNOWN 10 a != N
37、ULL UNKNOWN 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL51 3.6 SQL3.6 SQL的操作符的操作符 操作符介紹操作符介紹 一元操作符一元操作符 二元操作符二元操作符 多元操作符多元操作符 算術(shù)運(yùn)算符算術(shù)運(yùn)算符 連接運(yùn)算符連接運(yùn)算符 組合操作符組合操作符 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL52 3.6.1 3.6.1 算數(shù)運(yùn)算符算數(shù)運(yùn)算符 運(yùn)算符運(yùn)算符舉例舉例 + -+ - SELECT * FROM WHERE quantity = -1; SELECT hire_date FROM employees WHERE convert(int,GETDATE() - hire_date,1)
38、 365; * * / / UPDATE employees SET salary = salary * 1.1; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL53 3.6.2 3.6.2 連接運(yùn)算符連接運(yùn)算符 連接運(yùn)算符連接運(yùn)算符:+:+ Example: CREATE TABLE tab1 (col1 VARCHAR(6), col2 CHAR(6),col3 VARCHAR(6), col4 CHAR(6) ); INSERT INTO tab1 (col1, col2, col3, col4) VALUES (abc, def, ghi, jkl); SELECT col1+col2+col3+c
39、ol4 Concatenation FROM tab1; - Abcdef ghijkl 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL54 3.6.3 3.6.3 組合操作符組合操作符 將兩個或多個查詢的結(jié)果組合到一個結(jié)果將兩個或多個查詢的結(jié)果組合到一個結(jié)果 集中集中 操作符 返回結(jié)果 UNION 組合組合查詢的結(jié)果(不重復(fù))查詢的結(jié)果(不重復(fù)) UNION ALL 組合查詢的全部結(jié)果組合查詢的全部結(jié)果 INTERSECT 組合查詢的共有結(jié)果組合查詢的共有結(jié)果 MINUS對第一個查詢?nèi)∥ㄒ挥涗?,對共對第一個查詢?nèi)∥ㄒ挥涗洠瑢?有記錄不返回有記錄不返回 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL55 3.6.3 3
40、.6.3 組合操作符組合操作符 舉例:舉例: create table a1(t1 char(1),t2 char(2); create table a2(t01 char(1),t02 char(2); insert into a1(t1,t2) values(1,11); insert into a1(t1,t2) values(2,22); insert into a2(t01,t02) values(2,22); insert into a2(t01,t02) values(3,33); select t01,t02 from a2 Union select t1,t2 from a1
41、; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL56 3.7 SQL3.7 SQL表達(dá)式表達(dá)式 SQLSQL表達(dá)式的應(yīng)用范圍表達(dá)式的應(yīng)用范圍 Select exprSelect expr、where exprwhere expr、having exprhaving expr Order by expr Order by expr insert insert 的的values() values() 、update update 的的set exprset expr SQLSQL表達(dá)式的形式表達(dá)式的形式 簡單表達(dá)式、復(fù)合表達(dá)式、簡單表達(dá)式、復(fù)合表達(dá)式、CASECASE表達(dá)式表達(dá)式 DatetimeDateti
42、me表達(dá)式、間隔表達(dá)式表達(dá)式、間隔表達(dá)式 變量表達(dá)式、表達(dá)式列表變量表達(dá)式、表達(dá)式列表 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL57 3.7.1 SQL3.7.1 SQL簡單表達(dá)式簡單表達(dá)式 舉例舉例 Select Select Employees.first_name from from EmployeesEmployees Select Select 1 from Employees where from Employees where first_name = first_name = w w Select Select any string from Employees from Employ
43、ees where where 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL58 3.7.2 SQL3.7.2 SQL復(fù)合表達(dá)式復(fù)合表達(dá)式 舉例舉例 (CLARK + SMITH) LEN(MOOSE) * 57 SQRT(144) + 72 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL59 3.7.3 CASE3.7.3 CASE表達(dá)式表達(dá)式 CASECASE表達(dá)式讓你可以在表達(dá)式讓你可以在SQLSQL中使用中使用 IFIFELSEELSEEND IF END IF 的邏輯的邏輯 ExampleExample SELECT sno,CASE WHEN grade 85 THEN high WHEN grade ,=
44、,=,= 2500; ANY,SOMESELECT * FROM employees WHERE salary = ANY (SELECT salary FROM employees WHERE department_id = 30); ALLSELECT * FROM employees WHERE salary = ALL ( 1400, 3000); 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL64 3.8.2 3.8.2 邏輯條件邏輯條件 邏輯類型邏輯類型ExampleExample NOTSELECT * FROM employees WHERE NOT (job_id IS NULL); SE
45、LECT * FROM employees WHERE NOT (salary BETWEEN 1000 AND 2000); ANDORSELECT * FROM employees WHERE job_id = PU_CLERK ANDOR department_id = 30; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL65 3.8.3 3.8.3 成員條件成員條件 類型類型ExampleExample INSELECT * FROM employees WHERE job_id IN (PU_CLERK,SH_CLERK); SELECT * FROM employees WHERE salar
46、y IN (SELECT salary FROM employees WHERE department_id =30); NOT INSELECT * FROM employees WHERE job_id NOT IN (PU_CLERK, SH_CLERK); 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL66 3.8.4 3.8.4 范圍條件范圍條件 類型類型ExampleExample not between X and y SELECT * FROM employees WHERE salary BETWEEN 2000 AND 3000; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL67 3.8.5 NUL
47、L條件條件 類型類型ExampleExample IS NOT IS NOTSELECT last_name NULL FROM employees WHERE salary IS NULL; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL68 3.8.6 LIKE條件條件 舉例:舉例: SELECT ename FROM emp WHERE ename LIKE A_L% ESCAPE ; 類型 X not LIKE y esca pe z 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL69 3.8.7 3.8.7 復(fù)合條件復(fù)合條件 通過()、通過()、not not 、and and 、or or 復(fù)合各類簡單復(fù)合各
48、類簡單 的條件的條件 ExampleExample Select first_name from employees Select first_name from employees Where first_name like Where first_name like m%m% and and (salary = 2000 or department_id in (salary = 2000 or department_id in (10,20);(10,20); 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL70 3.9 3.9 功能函數(shù)功能函數(shù) 內(nèi)部函數(shù)內(nèi)部函數(shù) 單行函數(shù)單行函數(shù) 聚集函數(shù)聚集函數(shù) 用
49、戶自定義函數(shù)用戶自定義函數(shù) 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL71 3.9 3.9 功能函數(shù)功能函數(shù) 常用的單行函數(shù)常用的單行函數(shù) 數(shù)值函數(shù)數(shù)值函數(shù) absabs、sqrtsqrt、roundround、modmod 字符函數(shù)字符函數(shù) lowerlower、upperupper、lenlen、trimtrim、substrsubstr 日期函數(shù)日期函數(shù) Day,month,year,getdate,weekday,todayDay,month,year,getdate,weekday,today 轉(zhuǎn)換函數(shù)轉(zhuǎn)換函數(shù) ConvertConvert、castcast 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL7
50、2 3.9 3.9 功能函數(shù)功能函數(shù) 常用的聚集函數(shù)常用的聚集函數(shù) 求平均:求平均:AVG 總計(jì):總計(jì):COUNT 最大值:最大值:MAX 最小值:最小值:MIN 求總和:求總和:SUM 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL73 3.10 SQL3.10 SQL查詢和子查詢查詢和子查詢 1.1.SQLSQL查詢舉例查詢舉例 2.2.SQLSQL子查詢子查詢 子查詢簡介子查詢簡介 子查詢的作用子查詢的作用 WHEREWHERE子句中的子查詢子句中的子查詢 FROMFROM子句中的子查詢子句中的子查詢 HAVINGHAVING子句中的子查詢子句中的子查詢 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL74 3.10
51、.1 SQL3.10.1 SQL匯總、分組與排序匯總、分組與排序 SQLSQL匯總:匯總: 應(yīng)用了集合函數(shù)的每一組行生成一個值應(yīng)用了集合函數(shù)的每一組行生成一個值 舉例:舉例: SELECT avg(salary + 1) FROM SELECT avg(salary + 1) FROM SELECT count(distinct id) FROM SELECT count(distinct id) FROM SELECT sum(salary) FROM SELECT sum(salary) FROM SELECT max(salary) FROM SELECT max(salary) FRO
52、M 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL75 3.10.2 SQL3.10.2 SQL匯總、分組與排序匯總、分組與排序 SQLSQL分組:分組: GROUP BY GROUP BY 字句,將表的輸出劃分為若干個字句,將表的輸出劃分為若干個 組組 舉例:舉例: SELECT employee_id,avg(salary) FROM SELECT employee_id,avg(salary) FROM employees GROUP BY employee_id;employees GROUP BY employee_id; 數(shù)據(jù)庫原理及應(yīng)用開發(fā)技術(shù)_SQL76 3.10.2 SQL3.10.2 S
53、QL匯總、分組與排序匯總、分組與排序 WHEREWHERE子句與子句與HAVINGHAVING子句:子句: Where Where 決定哪些元組被選擇參加運(yùn)算,作用于關(guān)系決定哪些元組被選擇參加運(yùn)算,作用于關(guān)系 中的元組。中的元組。 Having Having 決定哪些分組符合要求,作用于分組。決定哪些分組符合要求,作用于分組。 聚合函數(shù)的條件關(guān)系必須用聚合函數(shù)的條件關(guān)系必須用HavingHaving,WhereWhere中不應(yīng)出中不應(yīng)出 現(xiàn)聚合函數(shù)?,F(xiàn)聚合函數(shù)。 舉例:舉例: SELECT department_id, MIN(salary), MAX (salary) FROM employees GROUP BY department_id HAVING MIN(salary) (WHERE salary (SELECT avg(e.salary) from employees e ); ; 數(shù)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版農(nóng)副產(chǎn)品購銷合同標(biāo)準(zhǔn)范本
- 2024版農(nóng)副業(yè)承包合同范本
- 2024年高端設(shè)備采購合同標(biāo)的詳細(xì)描述
- 2024年短視頻制作與推廣合同
- 2024版土地買賣合同參考范文
- 二零二五年度新型材料進(jìn)出口合同執(zhí)行規(guī)定3篇
- 小學(xué)安全工作常規(guī)檢查制度(3篇)
- 幼兒園戶外親子活動方案(4篇)
- 2024年青海省教育命題中心全省選調(diào)學(xué)科秘書考試真題
- 2024年邵陽市第十三中學(xué)教師招聘筆試真題
- 應(yīng)收帳款管理辦法
- 小學(xué)六年級數(shù)學(xué)100道題解分?jǐn)?shù)方程
- 2022年08月北京外交學(xué)院非事業(yè)編科研助理招聘14人高頻考點(diǎn)卷叁(3套)答案詳解篇
- 甲狀腺結(jié)節(jié)的超聲規(guī)范化診斷教學(xué)課件
- 職業(yè)健康監(jiān)護(hù)技術(shù)規(guī)范
- 安徽省白酒生產(chǎn)企業(yè)名錄395家
- 多媒體技術(shù)與應(yīng)用ppt課件(完整版)
- 2022年五年級數(shù)學(xué)興趣小組活動記錄
- 閱讀題賒小雞
- 鋼管購銷合同
- 中國風(fēng)各類PPT模板15
評論
0/150
提交評論