數(shù)據(jù)庫原理及應用開發(fā)技術SQL課件_第1頁
數(shù)據(jù)庫原理及應用開發(fā)技術SQL課件_第2頁
數(shù)據(jù)庫原理及應用開發(fā)技術SQL課件_第3頁
數(shù)據(jù)庫原理及應用開發(fā)技術SQL課件_第4頁
數(shù)據(jù)庫原理及應用開發(fā)技術SQL課件_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、數(shù)據(jù)庫原理及應用開發(fā)技術_sql1講義三 關系數(shù)據(jù)庫標準語言sql 1 sql1 sql簡介簡介 2 sql2 sql定義語言定義語言 3 sql3 sql操作語言操作語言 4 sql4 sql查詢語言查詢語言 5 sql5 sql的基本語言元素的基本語言元素 6 sql6 sql的操作符的操作符 7 sql7 sql表達式表達式 8 sql8 sql條件條件 9 sql9 sql函數(shù)函數(shù) 10 sql10 sql查詢與子查詢查詢與子查詢 總結總結數(shù)據(jù)庫原理及應用開發(fā)技術_sql23.1 sql3.1 sql簡介簡介 structure query language(sql)structure

2、 query language(sql)的歷史的歷史19701970年年, ,prof codd prof codd 提出著名的關系數(shù)據(jù)模型提出著名的關系數(shù)據(jù)模型sqlsql語言由語言由ibm research labibm research lab首先開發(fā)創(chuàng)建首先開發(fā)創(chuàng)建system rsystem r時使用時使用19791979年年, ,關系軟件公司關系軟件公司( (oracle)oracle)首先開發(fā)出實首先開發(fā)出實用的商業(yè)用的商業(yè)sqlsql版本版本sql sql 是高級的非過程化編程語言。是高級的非過程化編程語言。 數(shù)據(jù)庫原理及應用開發(fā)技術_sql33.1 sql3.1 sql簡介簡

3、介 sqlsql標準標準sql-86sql-86是第一個是第一個sqlsql標準標準sql-89sql-89、sql-92(sql2)sql-92(sql2)、sql-99(sql3)sql-99(sql3)關系型商業(yè)數(shù)據(jù)庫遵守的查詢語言規(guī)范關系型商業(yè)數(shù)據(jù)庫遵守的查詢語言規(guī)范各種通行的數(shù)據(jù)庫系統(tǒng)在其實踐過程中都對各種通行的數(shù)據(jù)庫系統(tǒng)在其實踐過程中都對 sql sql 規(guī)范作了某些編改和擴充規(guī)范作了某些編改和擴充 數(shù)據(jù)庫原理及應用開發(fā)技術_sql43.1 sql3.1 sql簡介簡介 sqlsql的使用的使用直接使用直接使用 交互式查詢工具(交互式查詢工具(ms sql server:trans

4、act-sqlms sql server:transact-sql) 直接鍵入直接鍵入sqlsql命令對數(shù)據(jù)庫進行操作命令對數(shù)據(jù)庫進行操作 由由dbmsdbms進行解釋進行解釋嵌入式嵌入式sql(embedded sql)sql(embedded sql) 嵌入到高級編程語言嵌入到高級編程語言 使應用程序充分利用使應用程序充分利用sqlsql訪問數(shù)據(jù)庫的能力、宿主訪問數(shù)據(jù)庫的能力、宿主語言的過程處理能力。語言的過程處理能力。 需要將嵌入的需要將嵌入的sqlsql語句轉化為宿主語言編譯器能處語句轉化為宿主語言編譯器能處理的語句理的語句數(shù)據(jù)庫原理及應用開發(fā)技術_sql53.1 sql3.1 sql

5、簡介簡介 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 revokerevoke數(shù)據(jù)庫原理及應用開發(fā)技術_sql6

6、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存儲日期時間存儲日期時間intint長整形長整形smallintsmallint短整形短整形float(n)float(n)浮點數(shù),精度至少為浮點數(shù),精度至少為n n位數(shù)字位

7、數(shù)字數(shù)據(jù)庫原理及應用開發(fā)技術_sql73.1 sql3.1 sql簡介簡介 數(shù)據(jù)定義語句格式數(shù)據(jù)定義語句格式1 1 創(chuàng)建表創(chuàng)建表 create table create table ( 列完整性約束條件列完整性約束條件 , 列完整性約束條件列完整性約束條件 , 列完整性約束條件列完整性約束條件, ););數(shù)據(jù)庫原理及應用開發(fā)技術_sql83.1 sql3.1 sql簡介簡介 數(shù)據(jù)定義語句格式數(shù)據(jù)定義語句格式2 2 更改表更改表 alter table alter table add add 列完整性約束條件列完整性約束條件 , drop drop , modify modify ;3 3 刪除

8、表刪除表 drop table drop table ;數(shù)據(jù)庫原理及應用開發(fā)技術_sql93.1 sql3.1 sql簡介簡介 數(shù)據(jù)操作語句格式數(shù)據(jù)操作語句格式1 1 插入操作插入操作 insert into insert into (, , ,1, )n) values (values (, , ,2, );n);數(shù)據(jù)庫原理及應用開發(fā)技術_sql103.1 sql3.1 sql簡介簡介 數(shù)據(jù)操作語句格式數(shù)據(jù)操作語句格式2 2 修改操作修改操作 update update set set =, , = where where ; ; 3 3 刪除操作刪除操作 deletedelete from

9、 from where where ;數(shù)據(jù)庫原理及應用開發(fā)技術_sql113.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|descasc|desc ;數(shù)據(jù)庫原理及應用開發(fā)技術_sql123.1 sql3.1 sql簡介簡介 數(shù)

10、據(jù)控制語句:授權數(shù)據(jù)控制語句:授權sqlsql語言用語言用grantgrant語句向用戶授予操作權限,語句向用戶授予操作權限,grantgrant語句的一般格式為:語句的一般格式為: grant grant , on on to to , with grant option;with grant option;數(shù)據(jù)庫原理及應用開發(fā)技術_sql133.1 sql3.1 sql簡介簡介 數(shù)據(jù)控制語句:收回權限數(shù)據(jù)控制語句:收回權限授予的權限用授予的權限用revokerevoke語句收回,語句收回,revokerevoke語句語句的一般格式為:的一般格式為: revoke revoke , on o

11、n from from ,;數(shù)據(jù)庫原理及應用開發(fā)技術_sql143.1 sql3.1 sql簡介簡介 數(shù)據(jù)控制語句:角色數(shù)據(jù)控制語句:角色創(chuàng)建角色創(chuàng)建角色 create role create role ;分配角色:分配角色: grant grant to to ;數(shù)據(jù)庫原理及應用開發(fā)技術_sql153.2 sql3.2 sql定義語言定義語言表、視圖是數(shù)據(jù)庫中的主體。表、視圖是數(shù)據(jù)庫中的主體。sqlsql提供數(shù)據(jù)定提供數(shù)據(jù)定義語句對這些主體進行管理義語句對這些主體進行管理 sqlsql的數(shù)據(jù)定義語句的數(shù)據(jù)定義語句 操作對象操作對象操操 作作 方方 式式創(chuàng)創(chuàng) 建建刪刪 除除修修 改改表表cre

12、ate tabledrop tablealter table視視 圖圖create viewdrop view數(shù)據(jù)庫原理及應用開發(fā)技術_sql163.2.1 3.2.1 表定義表定義1 表的創(chuàng)建sqlsql語言使用語言使用create tablecreate table語句定義表,其一語句定義表,其一般格式如下:般格式如下:create table create table ( 列級完整性約束條件列級完整性約束條件 , 列級完整性約束條件列級完整性約束條件 ) , ); ;數(shù)據(jù)庫原理及應用開發(fā)技術_sql173.2.1 3.2.1 表定義表定義1 表的創(chuàng)建(1 1)實體完整性)實體完整性 例例

13、 建立建立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 smallint, sdept char(20) ); sdept char(20) );數(shù)據(jù)庫原理及應用開發(fā)技術_sql183.2.1 3.2.1 表定義表定義1 表的創(chuàng)建(1

14、 1)實體完整性)實體完整性 例例 建立建立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);數(shù)據(jù)庫原理及應用開發(fā)技術_sql193.2.1 3.2.1 表定義表定義1 表的創(chuàng)建(2)參照完整性)參照完整性例例 建立建立sc表,表,sno和和cno是主碼,且是主碼,且

15、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) references course(cno);數(shù)據(jù)庫原理及應用開發(fā)技術_sql203.2.1 3.2.1 表定義表定義1 表的創(chuàng)建(3)屬性值約束)屬性值約束 非空值限制非空值限制 指定允許的取

16、值范圍指定允許的取值范圍當往表中插入元組或修改屬性的值時,當往表中插入元組或修改屬性的值時,數(shù)據(jù)庫管理系統(tǒng)就檢查屬性上的限制是否數(shù)據(jù)庫管理系統(tǒng)就檢查屬性上的限制是否被滿足,如果不滿足則操作被拒絕執(zhí)行。被滿足,如果不滿足則操作被拒絕執(zhí)行。數(shù)據(jù)庫原理及應用開發(fā)技術_sql213.2.1 3.2.1 表定義表定義1 表的創(chuàng)建(3 3)屬性值約束)屬性值約束例例 當學生的性別是男時,其名字不能以當學生的性別是男時,其名字不能以ms.打頭。打頭。 create table student (sno char(7) primary key, sname char(8) not null, ssex cha

17、r(2), sage smallint, sdept char(20), check (ssex =女女 or sname not like ms.% );數(shù)據(jù)庫原理及應用開發(fā)技術_sql223.2.1 3.2.1 表定義表定義2 修改表一般格式為:一般格式為: alter table add 完整性約束完整性約束 drop modify ;數(shù)據(jù)庫原理及應用開發(fā)技術_sql233.2.1 3.2.1 表定義表定義2 2 修改表修改表例例 向向student表增加表增加“入學時間入學時間”列,其數(shù)據(jù)列,其數(shù)據(jù)類型為日期型。類型為日期型。alter table student add scome

18、date;不論表中原來是否已有數(shù)據(jù),新增加的列一不論表中原來是否已有數(shù)據(jù),新增加的列一律為空值。律為空值。例例 刪除學生姓名不能取空值的約束。刪除學生姓名不能取空值的約束。alter table student drop not null(sname);數(shù)據(jù)庫原理及應用開發(fā)技術_sql243.2.1 3.2.1 表定義表定義3、刪除表、刪除表當某個表不再需要時,可以使用當某個表不再需要時,可以使用drop table語句刪除它。其一般格式為:語句刪除它。其一般格式為:drop table 例例 刪除刪除student表。表。drop table student;數(shù)據(jù)庫原理及應用開發(fā)技術_sql

19、253.2.2 3.2.2 試圖定義試圖定義1、視圖的作用、視圖的作用(1)視圖能夠簡化用戶的操作)視圖能夠簡化用戶的操作(2)視圖可以減少冗余數(shù)據(jù))視圖可以減少冗余數(shù)據(jù)(3)視圖對重構數(shù)據(jù)庫提供了一定程度的邏)視圖對重構數(shù)據(jù)庫提供了一定程度的邏輯獨立性輯獨立性(4)視圖能夠對機密數(shù)據(jù)提供安全保護)視圖能夠對機密數(shù)據(jù)提供安全保護數(shù)據(jù)庫原理及應用開發(fā)技術_sql263.2.2 3.2.2 試圖定義試圖定義2、視圖創(chuàng)建、視圖創(chuàng)建sql語言用語言用create view命令建立視命令建立視圖,其一般格式為:圖,其一般格式為:create view (, )as with check option;數(shù)

20、據(jù)庫原理及應用開發(fā)技術_sql273.2.2 3.2.2 試圖定義試圖定義2 試圖創(chuàng)建試圖創(chuàng)建例例 建立計算機系學生的視圖。建立計算機系學生的視圖。create view student_csas數(shù)據(jù)庫原理及應用開發(fā)技術_sql283.2.2 3.2.2 試圖定義試圖定義 2 試圖創(chuàng)建試圖創(chuàng)建例例 建立英語課(建立英語課(1156)成績單的視圖。)成績單的視圖。create view english_grade(sno, sname, grade)as數(shù)據(jù)庫原理及應用開發(fā)技術_sql293.2.2 3.2.2 試圖定義試圖定義2 試圖創(chuàng)建試圖創(chuàng)建例例 建立英語課的成績在建立英語課的成績在80分

21、以上的學生分以上的學生的視圖。的視圖。create view english_grade_80as數(shù)據(jù)庫原理及應用開發(fā)技術_sql303.2.2 3.2.2 試圖定義試圖定義3 刪除視圖刪除視圖當不再需要一個視圖時,可以刪除它,當不再需要一個視圖時,可以刪除它,語句格式為:語句格式為:drop view 例例 刪除視圖刪除視圖student_csdrop view student_cs;數(shù)據(jù)庫原理及應用開發(fā)技術_sql313.3 sql3.3 sql操作語言操作語言1 插入操作插入操作2 修改操作修改操作3 刪除操作刪除操作數(shù)據(jù)庫原理及應用開發(fā)技術_sql323.3.1 3.3.1 插入操作插

22、入操作1、插入操作、插入操作插入語句的格式是:插入語句的格式是: insertinto (, )values ( , );數(shù)據(jù)庫原理及應用開發(fā)技術_sql333.3.1 3.3.1 插入操作插入操作例例 將學生王林的信息插入到將學生王林的信息插入到student表中。表中。insert into student(sno,sname,ssex,sdept,sage)values (2000012, 王林王林, 男男, 計算機計算機, 19);into子句指定子句指定student表和要賦值的列,表和要賦值的列,values子句對元組的各列賦值。子句對元組的各列賦值。數(shù)據(jù)庫原理及應用開發(fā)技術_sq

23、l343.3.1 3.3.1 插入操作插入操作例例 在表在表course中增加課程離散數(shù)學的信中增加課程離散數(shù)學的信息。息。insertinto course(cno,cname,cpno,ccredit)values (1136, 離散數(shù)學離散數(shù)學, null, 4);符號符號null的含義是賦予該列的值是空的含義是賦予該列的值是空值。值。數(shù)據(jù)庫原理及應用開發(fā)技術_sql353.3.2 3.3.2 修改操作修改操作2、修改操作、修改操作修改操作又稱為更新操作,語句的一般修改操作又稱為更新操作,語句的一般格式是:格式是:update set =, =where ;數(shù)據(jù)庫原理及應用開發(fā)技術_sq

24、l363.3.2 3.3.2 修改操作修改操作例例 將學號為將學號為2000012的學生的年齡改為的學生的年齡改為18歲。歲。update studentset sage=18where sno=2000012;例例6 將所有學生的年齡增加將所有學生的年齡增加1歲。歲。update studentset sage= sage+1;數(shù)據(jù)庫原理及應用開發(fā)技術_sql373.3.3 3.3.3 刪除操作刪除操作3、刪除操作、刪除操作 語句的一般格式為:語句的一般格式為: delete from where ;數(shù)據(jù)庫原理及應用開發(fā)技術_sql383.3.3 3.3.3 刪除操作刪除操作例例 刪除學號為

25、刪除學號為2000012的學生記錄。的學生記錄。deletefrom studentwhere sno=2000012;例例 刪除所有的學生選課記錄。刪除所有的學生選課記錄。deletefrom sc;數(shù)據(jù)庫原理及應用開發(fā)技術_sql393.4 sql3.4 sql查詢語音查詢語音 1.1.查詢基本結構概述查詢基本結構概述 2.2.查詢子句概述查詢子句概述 3.select 3.select 列表列表 4.from4.from子句子句 5.where5.where子句子句數(shù)據(jù)庫原理及應用開發(fā)技術_sql403.4.1 查詢基本結構概述 查詢基本結構概述:查詢基本結構概述:select 列表:指

26、定列列表:指定列 from 指定表指定表 where 指定行指定行 語義:語義:select select 子句中的屬性列表,對上述結果作投子句中的屬性列表,對上述結果作投影(影( )操作。)操作。from from 子句:對指定關系,作笛卡兒積(子句:對指定關系,作笛卡兒積()where where 子句:進行選擇(子句:進行選擇()運算,找出符)運算,找出符合條件的元組。合條件的元組。數(shù)據(jù)庫原理及應用開發(fā)技術_sql413.4.2 查詢子句概述 select select 子句指定您要檢索的列。子句指定您要檢索的列。 from from 子句指定從中請求列的表。在所有從表中檢索數(shù)據(jù)子句指定

27、從中請求列的表。在所有從表中檢索數(shù)據(jù)的查詢中都需要該子句。的查詢中都需要該子句。 on on 子句指定子句指定 from from 子句中的表將如何進行連接。該子句子句中的表將如何進行連接。該子句只用于多表查詢。只用于多表查詢。 where where 子句指定表中您要查看的行。子句指定表中您要查看的行。 group by group by 子句用于集合數(shù)據(jù)。子句用于集合數(shù)據(jù)。 having having 子句指定要在其上收集集合數(shù)據(jù)的行。子句指定要在其上收集集合數(shù)據(jù)的行。 order by order by 子句對結果集中的行進行排序。子句對結果集中的行進行排序。數(shù)據(jù)庫原理及應用開發(fā)技術_s

28、ql423.4.3 select 列表1從表中選擇所有列 select distinct select distinct * * from table-expression from table-expression2從表中選擇特定的列 select dept_id, dept_name from departmentselect dept_id, dept_name from department3重命名查詢結果中的列 select column-namecolumn-name as aliasalias select column-namecolumn-name aliasalias4查詢

29、結果中顯示字符串 select the firstname is as “ ”,first_name from employees;select the firstname is as “ ”,first_name from employees;5計算 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ù)庫原理及應用開發(fā)技術_sql433.4.4 fr

30、om子句 直接使用表名 from table_name 使用相關名 您可以賦予表名一個相關名以減少需要鍵入的字符。您可以在 from 子句中指派相關名,方法是在表名之后鍵入該相關名,如下所示: select d.dept_id, d.dept_name from department d from 子句包括鏈接兩個或多個表的表名數(shù)據(jù)庫原理及應用開發(fā)技術_sql443.4.5 where 子句比較 where salary 50000 范圍 where salary between 40000 and 60000 列表 where station in ( beijing, shanghai,

31、jinan) 字符匹配 where phone like 415% 未知值 where first_name is not null組合組合 where salary 50000 and first_name like a% 數(shù)據(jù)庫原理及應用開發(fā)技術_sql453.5 sql3.5 sql的基本語言元素的基本語言元素 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)值常量數(shù)值常量 數(shù)據(jù)格式化數(shù)據(jù)格式化 空值空值數(shù)據(jù)庫原理及應用開發(fā)技術_sql463.5.1 3.5.1 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)據(jù)類型自動轉換規(guī)則數(shù)據(jù)類型自動轉換規(guī)則insertupdateinsertupdate語句中語句中, ,數(shù)據(jù)值按照字段的類型進行轉數(shù)據(jù)

32、值按照字段的類型進行轉換換selectselect語句中語句中, ,字段值按照定義的變量類型轉換字段值按照定義的變量類型轉換比較字符數(shù)值與數(shù)字數(shù)值時比較字符數(shù)值與數(shù)字數(shù)值時, ,將字符數(shù)值轉換為數(shù)字將字符數(shù)值轉換為數(shù)字比較字符數(shù)值與日期數(shù)值時比較字符數(shù)值與日期數(shù)值時, ,將字符數(shù)值轉換為日期將字符數(shù)值轉換為日期賦值語句中賦值語句中, ,一般將等號右邊的變量轉換為左邊的數(shù)據(jù)一般將等號右邊的變量轉換為左邊的數(shù)據(jù)類型類型 數(shù)據(jù)庫原理及應用開發(fā)技術_sql473.5.1 3.5.1 數(shù)據(jù)類型數(shù)據(jù)類型 字符自動轉換字符自動轉換 select salary + 10 from employees; sel

33、ect last_name from employees where employee_id = 200; select last_name from employees where hiredate = 1982-01-23;數(shù)據(jù)庫原理及應用開發(fā)技術_sql483.5.2 3.5.2 數(shù)值常量數(shù)值常量 字符常量字符常量 hello oracle 09-mar-98 數(shù)字常量數(shù)字常量 25 +6.34 0.5 25e-03 -1數(shù)據(jù)庫原理及應用開發(fā)技術_sql493.5.3 3.5.3 數(shù)據(jù)格式化數(shù)據(jù)格式化 字符串格式化字符串格式化cast ( cast ( expressionexpress

34、ion as as data_type data_type ) ) convert ( convert ( data_type data_type ( ( length length ) , ) , expressionexpression , , style style ) ) 日期格式化日期格式化字符串轉日期字符串轉日期 select cast(2009-01-01 as datetime) select cast(2009-01-01 as datetime) 日期格式轉換日期格式轉換 select convert(varchar(100), getdate(), select conv

35、ert(varchar(100), getdate(), 0)0)數(shù)據(jù)庫原理及應用開發(fā)技術_sql503.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 1

36、0 a = null unknown 10 a != null unknown數(shù)據(jù)庫原理及應用開發(fā)技術_sql513.6 sql3.6 sql的操作符的操作符 操作符介紹操作符介紹一元操作符一元操作符二元操作符二元操作符多元操作符多元操作符 算術運算符算術運算符 連接運算符連接運算符 組合操作符組合操作符數(shù)據(jù)庫原理及應用開發(fā)技術_sql523.6.1 3.6.1 算數(shù)運算符算數(shù)運算符 運算符運算符舉例舉例 + -+ -select * from where quantity = -1; select hire_date from employees where convert(int,getd

37、ate() - hire_date,1) 365;* * / / update employees set salary = salary * 1.1;數(shù)據(jù)庫原理及應用開發(fā)技術_sql533.6.2 3.6.2 連接運算符連接運算符 連接運算符連接運算符:+:+ 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

38、 col1+col2+col3+col4 concatenation from tab1; - abcdef ghijkl數(shù)據(jù)庫原理及應用開發(fā)技術_sql543.6.3 3.6.3 組合操作符組合操作符 將兩個或多個查詢的結果組合到一個結果將兩個或多個查詢的結果組合到一個結果集中集中 操作符 返回結果 union 組合組合查詢的結果(不重復)查詢的結果(不重復) union all 組合查詢的全部結果組合查詢的全部結果 intersect 組合查詢的共有結果組合查詢的共有結果 minus對第一個查詢取唯一記錄,對共對第一個查詢取唯一記錄,對共有記錄不返回有記錄不返回數(shù)據(jù)庫原理及應用開發(fā)技術_s

39、ql553.6.3 3.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

40、,t2 from a1;數(shù)據(jù)庫原理及應用開發(fā)技術_sql563.7 sql3.7 sql表達式表達式 sqlsql表達式的應用范圍表達式的應用范圍select exprselect expr、where exprwhere expr、having exprhaving exprorder by expr order by expr insert insert 的的values() values() 、update update 的的set exprset expr sqlsql表達式的形式表達式的形式簡單表達式、復合表達式、簡單表達式、復合表達式、casecase表達式表達式datetimed

41、atetime表達式、間隔表達式表達式、間隔表達式變量表達式、表達式列表變量表達式、表達式列表數(shù)據(jù)庫原理及應用開發(fā)技術_sql573.7.1 sql3.7.1 sql簡單表達式簡單表達式 舉例舉例select select employees.first_name from from employeesemployeesselect select 1 from employees where from employees where first_name = first_name = w wselect select any string from employees from employe

42、es where where 數(shù)據(jù)庫原理及應用開發(fā)技術_sql583.7.2 sql3.7.2 sql復合表達式復合表達式 舉例舉例 (clark + smith) len(moose) * 57 sqrt(144) + 72數(shù)據(jù)庫原理及應用開發(fā)技術_sql593.7.3 case3.7.3 case表達式表達式 casecase表達式讓你可以在表達式讓你可以在sqlsql中使用中使用ififelseelseend if end if 的邏輯的邏輯 exampleexample select sno,case when grade 85 then high when grade ,=,=,=

43、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ù)庫原理及應用開發(fā)技術_sql643.8.2 3.8.2 邏輯條件邏輯條件邏輯類型邏輯類型exampleexamplenotselect * from employees where not (job_id is null);select * fro

44、m employees where not (salary between 1000 and 2000); andorselect * from employees where job_id = pu_clerk andor department_id = 30;數(shù)據(jù)庫原理及應用開發(fā)技術_sql653.8.3 3.8.3 成員條件成員條件類型類型exampleexampleinselect * from employees where job_id in (pu_clerk,sh_clerk);select * from employees where salary in (select sa

45、lary from employees where department_id =30); not inselect * from employeeswhere job_id not in(pu_clerk, sh_clerk);數(shù)據(jù)庫原理及應用開發(fā)技術_sql663.8.4 3.8.4 范圍條件范圍條件 類型類型exampleexamplenot between x and y select * fromemployees where salary between 2000 and 3000;數(shù)據(jù)庫原理及應用開發(fā)技術_sql673.8.5 null條件條件 類型類型exampleexampl

46、e is not is notselect last_name null from employeeswhere salaryis null; 數(shù)據(jù)庫原理及應用開發(fā)技術_sql683.8.6 like條件條件 舉例:舉例: select ename from emp where ename like a_l% escape ;類型x not like yescape z數(shù)據(jù)庫原理及應用開發(fā)技術_sql693.8.7 3.8.7 復合條件復合條件 通過()、通過()、not not 、and and 、or or 復合各類簡單復合各類簡單的條件的條件 exampleexampleselect f

47、irst_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ù)庫原理及應用開發(fā)技術_sql703.9 3.9 功能函數(shù)功能函數(shù) 內部函數(shù)內部函數(shù)單行函數(shù)單行函數(shù)聚集函數(shù)聚集函數(shù) 用戶自定義函數(shù)用戶自定義函數(shù)數(shù)據(jù)庫原理及應用開發(fā)技術_sql713.9 3.9

48、 功能函數(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轉換函數(shù)轉換函數(shù) convertconvert、castcast數(shù)據(jù)庫原理及應用開發(fā)技術_sql723.9 3.9 功能函數(shù)功能函數(shù) 常用的聚集函數(shù)常用的聚集函數(shù) 求平均:求平均:avg

49、總計:總計:count 最大值:最大值:max 最小值:最小值:min 求總和:求總和:sum數(shù)據(jù)庫原理及應用開發(fā)技術_sql733.10 sql3.10 sql查詢和子查詢查詢和子查詢 1.1.sqlsql查詢舉例查詢舉例 2.2.sqlsql子查詢子查詢子查詢簡介子查詢簡介子查詢的作用子查詢的作用wherewhere子句中的子查詢子句中的子查詢fromfrom子句中的子查詢子句中的子查詢havinghaving子句中的子查詢子句中的子查詢數(shù)據(jù)庫原理及應用開發(fā)技術_sql743.10.1 sql3.10.1 sql匯總、分組與排序匯總、分組與排序 sqlsql匯總:匯總:應用了集合函數(shù)的每一

50、組行生成一個值應用了集合函數(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) from 數(shù)據(jù)庫原理及應用開發(fā)技術_sql753.10.2 sql3.10.2 sql匯總、分組與排序匯總、分組與排序

51、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ù)庫原理及應用開發(fā)技術_sql763.10.2 sql3.10.2 sql匯總、分組與排序匯總、分組與排序 wherewhere子句與子句與havinghaving子句:子句:where wher

52、e 決定哪些元組被選擇參加運算,作用于關系決定哪些元組被選擇參加運算,作用于關系中的元組。中的元組。having having 決定哪些分組符合要求,作用于分組。決定哪些分組符合要求,作用于分組。聚合函數(shù)的條件關系必須用聚合函數(shù)的條件關系必須用havinghaving,wherewhere中不應出中不應出現(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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論