版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第四章結(jié)構(gòu)化查詢語言sqlsql概述數(shù)據(jù)的查詢是最基本的操作。sql語言是結(jié)構(gòu)化查詢語言的縮寫,是一種標(biāo)準(zhǔn)的關(guān)系數(shù)據(jù)庫查詢語言。它川 于對關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)進行存儲、查詢、更新等操作。一、sql的歷史與特點structured query language 結(jié)構(gòu)化杳詢語言1974年提出,稱為sequel語言;75-79年,由ibm公司修改成sequel2語言目前的sql語言86年,ansi (美國國家標(biāo)準(zhǔn)協(xié)會)確定sql為關(guān)系型數(shù)據(jù)庫系統(tǒng)的工業(yè)標(biāo)準(zhǔn),命名為sql-8692年,sqi-92為目前最新版木的sql語言99年,出版sql3絕大多數(shù)流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),如oracle, syba
2、se, microsoft sql server, access等都采用了 sql語 言標(biāo)準(zhǔn),但又都會有口己的一些擴充。二、sql有兩種使用方法:1、與用戶交互的方式聯(lián)機使用交互式sql;適用于非計算機專業(yè)人員,即最終用戶即吋查詢。稱 為自含型2、作為了語言嵌入到其他程序設(shè)計語言中使用。宿主型sql,適合于程序設(shè)計人員用高級語言編寫應(yīng) 用程序。三、sql的體系結(jié)構(gòu):1、sql的體系結(jié)構(gòu):視圖全局模式內(nèi)模式外模式視圖(view);全局模式稱為模式,或叫數(shù)據(jù)庫,由皋木表組成;內(nèi)模式由系統(tǒng)根據(jù)數(shù)據(jù)庫模 式白動實現(xiàn),不需要用戶過問。2、sql術(shù)語基本表:每個關(guān)系又叫做基本表或表(table),元組行(
3、row),關(guān)系中的屬性稱為字段(field) 一列(column);視圖:從一個或兒個基本表或其它視圖導(dǎo)出來的表。是個虛表,有白己獨立的結(jié)構(gòu)定義,但沒有獨立的數(shù)據(jù) 存在,它的數(shù)據(jù)來源于基本表。四、sql的主要功能是實現(xiàn)數(shù)據(jù)庫查詢,其他功能:ddl數(shù)據(jù)定義功能(data definition language):用于定義數(shù)據(jù)的結(jié)構(gòu),包括定義基本表、定義視圖、定 義索引三個部分。能夠?qū)崿F(xiàn)數(shù)據(jù)庫的三級體系結(jié)構(gòu)dmi,數(shù)據(jù)操縱(data mani pul ari on language):包括對棊本表和視圖的數(shù)據(jù)的操作。它的操作對彖是元組 的集合,其結(jié)果也是元組的集合。sql是一各高度非過程化的面向集
4、合的語言。dcl數(shù)據(jù)控制(data control language ):用于定義數(shù)據(jù)庫用戶的權(quán)限,以保證系統(tǒng)的安全性。一般由 dba來使用。五、sql特點:綜合統(tǒng)一、高度非過程化、集合操作、口含與宿主、三級體系4o 1數(shù)據(jù)庫模式的建'、/:和刪除、建立數(shù)據(jù)庫模式1、語句格式:create schemaidatabase 數(shù)據(jù)庫名 authorization v所有者名2、語句說明:(1)功能:建立一個空數(shù)據(jù)庫,缺省狀態(tài)f,該數(shù)據(jù)庫為創(chuàng)建者自己所有。加上授權(quán)語句,還可以將 此數(shù)據(jù)庫權(quán)交給其他人。(2)語句關(guān)鍵字不區(qū)分大小寫。(3)o括號內(nèi)為必需項3、例 p: 73二、刪除數(shù)據(jù)庫模式1、
5、語句格式:drop schemaidatabase 數(shù)據(jù)庫名2、語句說明:(1)刪除已存在的數(shù)據(jù)庫,包括其中所有對彖。3、例 p: 744o 2 sql語句對表的操作一、建立表結(jié)構(gòu):1、語句格式:create table v數(shù)據(jù)庫名.v所有者名.v基本表名(v列定義,.,v表級完整性控 制 ,.)2、語句說明:(1)功能:在當(dāng)前或給定的數(shù)據(jù)庫中建立一個基本表結(jié)構(gòu)(關(guān)系)。(2)表名自定,要符合命名規(guī)則。(3)列定義一般出現(xiàn)多個,即一個表的加性有多個。列定義至少包括列名列數(shù)據(jù)類型兩項,必要性可以有該列的完整性控制說明。3、sql中常用的數(shù)據(jù)類型二進 制binary (n )n+4字節(jié)n為p800
6、0這間的值,但最后用 檢索輸出的是二進制表示二進數(shù)據(jù)長度基木相 同時可以使用文本text實際大小最大可存儲231-1存儲文本數(shù)據(jù)圖形image實際人小最大可存儲231照片、圖、畫整型tnt4個字節(jié)-23廣(231-1)內(nèi)所有正負(fù)整數(shù) 數(shù)存儲可直接運算的數(shù) 值smallint2個字節(jié)-215 (215-1)內(nèi)所有正負(fù)整數(shù) 數(shù)tinyint1個字節(jié)0255范圍的所有正整數(shù)浮點 數(shù)據(jù) 類型real4個字節(jié)精確到7位小數(shù)存儲十進制小數(shù)。釆 用只入不舍的方式存 儲。float *8個字節(jié)精確到15位小數(shù)decimal *numeri c實際存儲空間decimal (p, s) , p表示總位數(shù),s表示小
7、數(shù)點后的位數(shù)。字符型char (n)n字節(jié)若輸入的字符少于n,以空格填 滿。若超長,則會截掉。存儲字符1-8000個口期 與時 間型datetime8個字節(jié) (精度3.33ms)mm dd yyyy hh:mm am/pm1753. 1. t9999. 12. 31 23:59:59存儲口期和時間的結(jié) 合體,引用時用單引 號smalldat etime4個字節(jié)1900. 1.2079. 6. 6,精確度 1 分 鐘貨幣money8個字節(jié)精確度為萬分之一用于存儲貨幣型位型bit1個字節(jié)只能輸入0與1,非此值當(dāng)為1常用作邏輯變最表真 假a只有字符與二進制數(shù)據(jù)類型需要指定長度,其他如整型、日期時間、
8、浮點數(shù)據(jù)類型,定義時不用指定長 度,也就是長度是默認(rèn)值。b、不同的數(shù)據(jù)庫系統(tǒng)支持的數(shù)據(jù)類型各不相同。在access中使用sql的create table語句,數(shù)據(jù)類型會 做自動轉(zhuǎn)換。4列完整性約束:冇六種(1) 定義主鍵約束:primary key(2) 默認(rèn)值約束:default 常量表達(dá)式(3) 單值約束(唯一性約束):unique,即在該列上的所有取值必須互不相同,用在某一列不是主鍵但其 值又是唯一的列上。(4) 外碼約束:references 父表名(主碼)(5) 檢查約束:check (邏輯表達(dá)式),用于對該列的取值做限制。(6) 非空/空值約束:not null/null ,專明此
9、列的值是否可以為空,默認(rèn)是可空值。5、示例(1) create tabl e tu (總編號 char (6),分類號 char (8),書名 char (16),日期 datetime)注意:表名與括號z間用空格分開,字段名與類型z間也必須有空格,各字段z間用逗號分開,可以一行 多列或一行列。系統(tǒng)默認(rèn)字段長度可以省略。(2) create table商品基本信息表(貨號 chai,貨名 char(20),進口 bit,品牌 char(10),單價 money);(3) create table商品基木信息表(貨號 char(8) primary key,貨名 char(20) unique,
10、進口 bit ,品牌 char (10),單價 money check (單價100),供應(yīng)商號char(10) references供應(yīng)商表(供應(yīng)商號);注:access不支持default、check,其他都可以。6、表級完整性約束:有四種(1) 主鍵約束:primary key (列名,。)(2) 外部鍵約束:foreign key(列) references父表名(參照主碼)(3) 單值約束:uniqe (列名。)(4) 檢查約束:check (邏輯表達(dá)式)表級約束基本上與列級約束和同,但在寫法上有一些差別,另外,表級約朿可以一次對多個列定義。例:create table商品基木信息表
11、(貨號 char(8),貨名 char(20),進口 bit ,品牌 char(10),單價 money check (單價500),供應(yīng)商號char(10),primary key (貨號,貨名),foreign key(供應(yīng)商號)references供應(yīng)商表(供應(yīng)商號)unique (貨名);注意:外碼必須與被參照關(guān)系屮對應(yīng)的主碼具有完全相同的數(shù)據(jù)類型。每個約束都會由系統(tǒng)自動產(chǎn)生一個約束名。課木例p: 7677二、修改表結(jié)構(gòu):修改基木表是指對已經(jīng)定義的基木表增加新的屬性名(列)或刪除,擴展關(guān)系模式1 語句格式:alter table v數(shù)據(jù)庫名.v所有者名x基本表名addv列定義 ,.ia
12、dd v表級完整性約束idrop colum nv歹ij名 ,idrop v約束名2、語句說明:(1)功能:可以增加也可以刪除列或完整性約束(2)新增的列不能規(guī)定為空值;刪除列前要先刪除與該列有關(guān)的約束,一次增加或刪除多個列時,只 用一個add或drop。3、alter table tu add單價money,總價money;給圖卩表增加單價與總價列;alter able tu drop單價,總價;刪除單價與總價三、刪除基本表1、語句格式:drop table v數(shù)據(jù)庫名.v所有者名x基本表名2、語句說明:(1)功能:刪除一個表。該表的所有內(nèi)容全部祁刪除。(2)如果該表與其他冇關(guān)系,應(yīng)該先刪除
13、關(guān)系才能刪除表。3、例:drop table tu四、表內(nèi)容的操作:1、插入記錄(數(shù)據(jù))(1)單行插入記錄語句格式:p: 78 insert into表名列名values(各列值,用逗號分開)例:建立tu表create table tu (總編號 char(6),分類號 char(8),書名 char仃6), h期 datetime)在表中插入一條記錄:insert into tu (總編號,分類號,書名,日期)values c010r;tp-r,'計算機應(yīng)用基礎(chǔ)','1991-01-01')也可省略為:insert into tu values (*0101&
14、#39;,tp-17#算機應(yīng)用基礎(chǔ)71991-01-0r)述可能只寫入部分列的值:insert into tu (總編號,書名,日期)values (*0102','計算機應(yīng)用'1991-01-0t)注意:對應(yīng)列的值數(shù)據(jù)類型也要對應(yīng)書寫格式。如字符、h期要用''o(2)插入多行記錄:可以利用select語句從另-表中獲収多條記錄并加入到另一表中。語句格式:insert into表名列名vselect子句說明:注意兩表的字段應(yīng)該一致。例:p: 792、修改記錄(1) 語句格式:p: 80update表名set 列名二表達(dá)式where邏輯表達(dá)式(2) 功能:
15、修改某些列的值,可按條件修改。例:圖帖表tu,設(shè)做如下操作:a、alter table tu add 庫存量 int,單價 money ,總價 moneyb、insert into tu (總編號,庫存量,單價)values ('020012,25)c update tu set總價=單價*庫存量d update tu set 書名="操作系統(tǒng)'where 總編號='02001'e、update tu set 分類號二'tp34' where 書名二"操作系統(tǒng)"例:課本p: 80 (1) 、(2) 從其他表中獲取數(shù)據(jù)
16、。3、刪除記錄(1) 語句格式p: 81delete from表名where邏輯表達(dá)式(2) 功能:刪除一個表中滿足條件的行(3) 例:delete from tu where庫存& is null 刪除庫存量為空的記錄。例:課本p: 8182練習(xí)與作業(yè):1、create語句建立教師任課表(課程id,課程名稱,系(部門)id,教師id,學(xué)分,學(xué)時,考試類型) 并作完整性約束(可用列完整性也可用表完整性)課程id為主鍵,考試類型默認(rèn)值為“閉卷”,系(部門)id是系(部門)表的外碼,教師id是教師情況 表的外碼。2、說明下面語句的功能:(1) create table emlpoyee(f
17、irstn char(9) not null primary key,last_n char(8),age int,city char(20);(2) alter table emlpoyee addaddress char (30),sex char(2) default '男';4o 4視圖的建立視圖:依賴慕木表而產(chǎn)生的虛表,可以是一個幾個基本表的映彖。視圖的建立與刪除不影響革木表,但視圖 內(nèi)記錄的更新會彫響基本的內(nèi)容。視圖能夠增加數(shù)據(jù)庫的安全性,因為視圖的使川可以授權(quán)。一、建立視圖:1、語句格式p: 82create view視圖名(列名表)as select列名表fro
18、m基木表名2、功能:當(dāng)前數(shù)據(jù)庫中根據(jù)select子句的查詢結(jié)果建立一個視圖,視圖包括結(jié)構(gòu)與內(nèi)容。3、例:p: 834、視圖的列名可以自定,列值也可以由壟本表的數(shù)據(jù)計算產(chǎn)生。如課本p: 84二、視圖內(nèi)容的修改語句格式p: 84 update視圖名set列名二表達(dá)式與基本表的更新語句一樣。三、修改視圖的定義:語旬格式p: 85alter view 視圖名(列名,。)as select 子句 例 p: 85四、刪除視圖:語句格式與示例:p: 85drop view視圖名數(shù)據(jù)定義與數(shù)據(jù)操作命令概括錯誤!建立命令database庫名create table 表名view視圖名as源表數(shù)據(jù)4.5 s ql
19、査詢一、sqlselect查詢語句格式1、完整的語句格式:p86。sql-select:用于檢索數(shù)據(jù),根據(jù)一個或多個表按條件進行查詢,產(chǎn)生出一個新表 (查詢結(jié)果)并顯示出來??梢栽诓樵冊O(shè)計器中使用select命令。2、簡單的語句格式:select * from基本表名select all | distinct < 表達(dá)式 1> as列名 1>|*from<表名1>臨時別名1,如:select * from spkl where 分類名二"電視機"to screensql中所用到的任何表都不用預(yù)先打開。&&將查詢的結(jié)果定向到某一窗
20、口中。二、參數(shù)及了句說明:1 . all|distinct:指定要包含在查詢結(jié)果中的字段、常量和表達(dá)式,distinct將排隊查詢結(jié)果小所有重復(fù)的 行。關(guān)系運算中的投影運算的具體實現(xiàn)(1)*:表示所有的字段,等同于all,默認(rèn)也是all;例:select * from商品表1;從商品表中顯示所有記錄內(nèi)容(所有的行與列)例4-1: select all分類名from商品表1;從商吊表屮查詢商陽表1中的所有分類名(有重復(fù)值)p: 88例4-2: select distinct分類名from商品表1;從商品表中查詢商品表1的分類名(去掉重復(fù)值)p: 89(2)字段函數(shù)(列函數(shù)p: 89)有:avg
21、(字段名)、count (字段名)、min (字段名)、max (字段名)、 sum (字段名)例4-7,例4-8,例4-9,例4-10as標(biāo)題名,用于指定該列顯示的標(biāo)題例:査詢教師情況表中有多少位教師:select count教師姓名as總?cè)藬?shù) from教師情況一覽表例:查詢教師情況表中有幾位副教授以上職稱的人select count (職稱)as高級職稱人數(shù)from教師情況一覽表where職稱二'教授or職稱二'副教授例:査詢教師情況表中最高工資與最低工資及平均工資:select max(工資)as最高工資,min(工資)as最低工資,avg(工資)as平均工資from教師
22、情況一覽表 注意:部分dbms只能用單引號,所以盡量采用單引號。使用列函數(shù)后,一般不要在select后再加入其他的列名。2. from子句:必帶的了句,指定要查詢的表,并可以為每個表指明別名,多個表同時使用時町以用逗號分開。 例 4-11: p: 92分析:關(guān)系運算涉及到三個表,姓名與學(xué)號在學(xué)生關(guān)系(s),課程號與課程名在課程關(guān)系(c),成績在選 課關(guān)系(sc) o(1)先做選擇:似乎這個運算可以省略(每個表中基本上所有記錄都要)(2)再做投影:學(xué)生表中投影出學(xué)號與姓名s1;課程表中投影出課程號與課程名一 1;(3)最后連接:按學(xué)號相等,將s1與sc連接sci (學(xué)號,姓名,課程號,成績):按
23、課程號相等將sci與c1連接sc2 (學(xué)號,姓名,課程號,成績,課程名)表達(dá)式為:(i】學(xué)號,姓名(s) )sc><(i】課程號,課程名(c)如果用一些其他的數(shù)據(jù)庫管理系統(tǒng)語言來實現(xiàn)上面的功能,則需要多行語句,但用sql語言,則只要一條語 句就行了。至于它先執(zhí)行選擇還是選做投影或連接,則由系統(tǒng)自定。例:從教師悄況表和教師任課表屮杳詢每位教師所上課程及課時use教師教學(xué)信息庫(在access中不能用)select教師姓名,x.教師id,課程名稱,學(xué)吋from教師情況一覽表x,教師任課表y where x.教師id二y.教師id注:對兩表屮都有的列名,要加以聲明,聲明可以是任意一個源表
24、名。還可以對同一數(shù)據(jù)表進行多次查詢,以別名代替課本例p: 4-14若是要查詢同時選修了三門以上課程(含三門),select語句該如何寫?select distinctcl.學(xué)生證號from成績表c1,成績表c2,成績表c3,wherccl.學(xué)生證號二c2.學(xué)生證號and cl.學(xué)生證號二c3.學(xué)生證號and 02.學(xué)生證號3.學(xué)生證號and 01.課 程號>c2.課程號and cl.課程號>c3.課程號and c2.課程號>c3.課程號課本例p: 4-153. where:只在查詢結(jié)果小包含一定的記錄,按所指定的篩選條件返回行數(shù)(記錄)。還作為表間連接的條件 子句。篩選條件少
25、連接條件的操作符可以有比較操作符邏輯運算符,如:(1)比鮫運算符:=:完全相等;<>,! =, #:不相等篩選記錄:課本例 4-3, 4-4, 4-12, 4-13, 4-14, 4-15連接表:a:等值連接:課本例4-6select * from商品表1 x,商品表2 y where x.商品代號二y.商品代號b:笛卡兒積連接省略where 了句select * from商品表1,商品表2c: 一般連接(非自然連接):select * from教帥情況一覽表x,教師任課表y where x.教師ld>y.教師id(2) like:字符串模式匹配,常與%聯(lián)用;%:任意字符,可
26、用于模糊查詢,_下劃線:代表一個字符。格式: 字符型列名not like字符表達(dá)式例:模糊杳詢(不區(qū)分人小寫)例 4-28 select * from 商品表 1 where 商品代號 like 'dsj%'例:杏詢姓名屮有姓張的教師select * from教師情況表where姓名1 ike '%張'例:查詢姓名為:張*的教師:select * from教師情況一覽表where教師姓名like j %張例:查詢姓名為:張*的教師:select * from教師悄況一覽表where教師姓名like ' %張'(3)謂詞査詢:not in:結(jié)果中的
27、一個子集,p: 102格式:not in常量表|子?xùn)嗽兝?-26.例 4-27例:查詢產(chǎn)地不在北京上海的商品。select * from spk2 where產(chǎn)地not in ("北京","上海")等效于:where產(chǎn)地"北京"and產(chǎn)地"上海" 例:select * from教師情況表where職稱in ('教授,'副教授')等效于:select * from教師情況一覽表where職稱二'教授'or職稱='講師例:select * from spkl where
28、分類名in ("電視機”,”洗衣機”)等效于。?例:査詢職稱不是高級職稱的教師情況。select * from教師情況表where職稱not in ('教授','副教授')in后還可以是一個子查詢:子查詢同樣是一個select語句,但其查詢的結(jié)果要符合where條件的要求。也稱為嵌套查詢例:査詢與周建林老師同系的教師情況select * from教師情況表where系號in (select系號from教師情況表where姓名二”周建林”)注:此例的in還可以直接用等號代替例:查詢與周建林同職稱的教師情況select * from教師情況表where職稱
29、in (select職稱from教師情況表where姓名二"周建林”)(4)not betweenand:在之間p: 100如(包含首尾值)或not betweeno。例4-22例:select *; from spkl where 單價 between 1000 and 4000 and 商品代號 like dsj%等效于:where 單價=1000 and 單價=4000 ;例:查詢工資在10001500 z間的教師情況(包括1000與1500這兩個數(shù))select * from 教師情況表 where 工資 between 1000 and 1500(5)存在量詞:not ex
30、ists (子?xùn)嗽儯﹑: 100例 4-23例:查詢品牌為'熊貓'的所有商品。select * from商品表1 where exists (select產(chǎn)地from商品表2 where商品表1.商品代號二商品表2.商品代 號and品牌/熊貓”)等效于:select spkl.* from spkl, spk2 wherespkl.商品代號=spk2.商品代號 and 品牌二'熊貓'若select * from spkl, spk2 where spkl.商品代號=spk2.商品代號and品牌二'熊貓'査詢的結(jié)果將會有何不同?例:select *
31、 from課程where not exists (select * from選課表where課程.課程號二選課表.課程號)查詢沒有人選修的課程基本悄況。6)謂詞:all|any (some) : p: 97, 98 格式:列名比較符all|any(子查詢)all:要滿足all后的所有的條件才可以,而any (some)只要滿足其中一個就行了。例4-17,例4 18 ,例 4 一 1 9 , 4-21例:查詢不比趙靜老師工資低的其他老師情況select * from教師情況一覽表where工資=(select工資from教師情況一覽表where教師姓名二'趙靜')union (并
32、運算):例 select * from spkl where 進口 = 1 union select * from spkl where 分類名二'電視機'查詢出所有進口的商品或是分類名為電視機的商品等效于:select * from spkl where進口二1 or分類名二電視機查詢出的結(jié)果相同,但商品的排列先后卻一般不相同。例1:查詢與熊貓品牌同產(chǎn)地的商品代號、分類名、產(chǎn)地(熊貓品牌的產(chǎn)地可能不只一個)select x.商品代號,分類名,產(chǎn)地from商品表1 x, spk商品表2 y where x.商品代號二y.商品代號and產(chǎn)地 =any (select 產(chǎn)地 fro
33、m spk2 where 品牌二'熊貓')例2:查詢比所有空調(diào)器的單價還要高的商品代號、分類名、產(chǎn)地。sele x.商品代號,分類名,產(chǎn)地from商品表1 x, spk商品表2 where x.商品代號二y.商品代號and單價al 1 (sele 單價from商品表1 where商品代號like "ktq%")練習(xí):說明下面語句的功能:或課本p: 111第二大題(1 ) select max(工資),min(工資)from教師情況一覽表(2 ) select * from教師情況一覽表where i資二(select max(工資)from教師情況一覽表)(
34、3 )select * from 教師情況一覽表 where 工資=any (select max (工資)from 教師情況一覽表 union select min( i"資)from教師情況一覽表)(4 ) select * from 教師情況一覽表 where 出生年月 between ' i960-01 -01' and ' 1969t2-31'(5 ) select x.商品代號,分類名,產(chǎn)地from spkl x , spk2 y where x.商品代號二y.商品代號(6 ) select x. *,產(chǎn)地,品牌 from spkl x ,
35、 spk2 y where x.商品代號二y.商品代號 and 單價1000(7 ) select count (*) from 教師情況一覽表 where 職稱二'教授(8) select “商品庫”,商品代號,分類名from spkl;每行都出現(xiàn)字符常量“商品庫”即新關(guān)系中第 一列名占動產(chǎn)牛(無列名),該列每行的內(nèi)容都是“商品庫”新版的sql提供了新的連接方式,連接語句岀現(xiàn)在from子句中而不是在where子句中課本p: 95左連接:from表名1 left join表2 on表1.列名比較符表2.列名中間連接:select * from spkl inner join spk2
36、on spkl.商品代號=spk2.商品代號右連接:from表名1 righ join表2 on表1.列名比較符表2.列名每種連接都包括雙重循環(huán),笫一璽循環(huán)(外)掃描笫一個表中的每一個元組,第二垂循環(huán)(內(nèi)循環(huán))掃描笫 二表屮的每一個元組,符合條件的就連接。中間連接左連接:在滿足中間連接的基礎(chǔ)上,將第一個表中的沒有連接的元組也加入到新關(guān)系中,這些元組中第二表 上所對應(yīng)的列值被自動置為空。右連接:與左連接類似,但是著重在第二個表。即在新版的sql中,先利用from選擇進行連接運算,再利用where選項進行選擇運算,最后用select后 的選項進行投影運算與第二章的所講的一般dbms的關(guān)系運算略有不
37、同不過這些操作全由dmbs自動實 現(xiàn),不用人為操心。課本p: 96例4-164 . group by:按列的值對查詢結(jié)果進行分組。格式:group by列名, 列名例 4-29,例 4-30, 4-315 . having:指定包括在查詢結(jié)果中的組必須滿足的篩選條件。通常與group by子句一起使用。篩選條件可以用and或or連接述可用not求反。格式:having邏輯表達(dá)式例4-32與4-29比較。思路:先查詢各專業(yè)的學(xué)生人數(shù)(即按專業(yè)分組統(tǒng)計人數(shù)),再將得到的結(jié)果篩 選出多于1人的專業(yè)。例4-33思路:先要杏詢岀有選修課程的學(xué)生淫號(在選課表屮),再從有選修課的結(jié)果屮再統(tǒng)計出學(xué) 號不止一
38、個(表示冇多門選修)的記錄,最后按這些學(xué)號再在學(xué)生基本信息表中查詢學(xué)生信息。例4-34思路:首先要查詢出該學(xué)號選修了多少門課。其他學(xué)生與此學(xué)生比較學(xué)號個數(shù)(在選課表 中一個學(xué)號代表選修了一門課)練習(xí):對教學(xué)信息庫1、查詢各類職稱的最高工資與最低工資2、查詢男女職工中的最高工資的職工情況6 . order by:根據(jù)列的數(shù)據(jù)對查詢結(jié)果進行排序。默認(rèn)是asc (升序),反之可川desc。后可跟一個數(shù)值表達(dá)式,表示顯示中的第兒列為排序關(guān)鍵字;可跟表中的主句的一個字段名;格式:order by列名列名,列名desc例 4-35. 4-36. 4-37, 4-38例:select * from spkl
39、 where 單價1000 and 單價4000 order by3按第三列的升序例:select x.商品代號,分類名,單價,產(chǎn)地from spkl x, spk2 y where x.商品代號二y.商品代號order by產(chǎn) 地,3&&前一個為第一關(guān)鍵字,后為第二關(guān)鍵字例:select分類名,商品代號,avg(單價)as單價,sum(數(shù)量)as數(shù)量和;from spkl; group by 分類名;having 商品代號 like d%或 having 商品代號 not like d%order by 單價 desc;包含d的類型或者是不包含商品代號d開頭的分組此查詢已將s
40、elect的常用到的子句包含了。p: 112第三題1、2 select count (*) as 數(shù)量在 1020 間的商品種數(shù) from spkl where 數(shù)量=10 and 數(shù)量=203 select分類名,avg(數(shù)量)as每類商品的平均數(shù)量from spkl group by分類名4、select * from spkl where 單價=2000 or 數(shù)量=155、select * from spkl whore 單價(select avg(單價)from spkl)6、select 分類名,count (分類名)as 種數(shù) from spkl group by 分類名 hav
41、ing count (分類名)17、select分類名,sum(單價)as總價值from spkl group by分類名例2:査詢“李小波”所選修的全部課程名稱。分析:影響到三個數(shù)據(jù)庫:名字在s表,課程名稱在c表,兩表沒有任何聯(lián)系,所以要第三個數(shù)據(jù)表sc,注意 要寫出聯(lián)接條件。sele ck. ch, cname, s. sname from s, sc, ck;where s. sh二sc. sh and sc. ch二ck. ch and sname二"李小波"例2:查詢與dsj-340同產(chǎn)地的商品的商品代號、分類名、產(chǎn)地select x.商品代號,分類名,產(chǎn)地;fromspk2 x, spkl y;where x.商品代號二y.商品代號and產(chǎn)地in (sele產(chǎn)地from spk2 where商占占代號二"dsj-340"),qi:此時的in也可以用什么代替?(等號)q2:子查詢
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版文化創(chuàng)意產(chǎn)業(yè)投資合作協(xié)議書模板3篇
- 綠色農(nóng)業(yè)科技與生態(tài)旅游融合
- 科技發(fā)展對現(xiàn)代安保工作提出的新挑戰(zhàn)及應(yīng)對策略
- 2025年度個人房屋抵押貸款利率調(diào)整合同
- 二零二五年度豪華度假村客房預(yù)訂與銷售合作協(xié)議3篇
- 2025年度個人汽車轉(zhuǎn)讓及二手車鑒定評估及維修服務(wù)合同3篇
- 遠(yuǎn)程教育環(huán)境下的學(xué)生安全保障措施
- 二零二五年度車輛捐贈服務(wù)贈與合同(公益車輛捐贈)3篇
- 2025版智慧小區(qū)物業(yè)服務(wù)與社區(qū)養(yǎng)老合作合同3篇
- 2025年度鋼材進出口貿(mào)易代理合同2篇
- 文化沖突與民族認(rèn)同建構(gòu)-洞察分析
- 《疥瘡的防治及治療》課件
- 學(xué)校對口幫扶計劃
- 腫瘤全程管理
- 《3-6歲兒童學(xué)習(xí)與發(fā)展指南》專題培訓(xùn)
- 導(dǎo)尿及留置導(dǎo)尿技術(shù)
- 寒假作業(yè)一年級上冊《數(shù)學(xué)每日一練》30次打卡
- 2024-2025學(xué)年九年級化學(xué)上冊 第二單元 單元測試卷(人教版)
- 2024年公共衛(wèi)生基本知識考試題庫(附含答案)
- GB/T 4706.10-2024家用和類似用途電器的安全第10部分:按摩器具的特殊要求
- 2024年江蘇省蘇州市中考英語試題卷(含標(biāo)準(zhǔn)答案及解析)
評論
0/150
提交評論