北京郵電大學(xué)軟件工程生的課程-數(shù)據(jù)庫設(shè)計(jì)開發(fā)-2_第1頁
北京郵電大學(xué)軟件工程生的課程-數(shù)據(jù)庫設(shè)計(jì)開發(fā)-2_第2頁
北京郵電大學(xué)軟件工程生的課程-數(shù)據(jù)庫設(shè)計(jì)開發(fā)-2_第3頁
北京郵電大學(xué)軟件工程生的課程-數(shù)據(jù)庫設(shè)計(jì)開發(fā)-2_第4頁
北京郵電大學(xué)軟件工程生的課程-數(shù)據(jù)庫設(shè)計(jì)開發(fā)-2_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1.3SQL自從20世紀(jì)80年代以來,SQL就是一個(gè)通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫語言。現(xiàn)在,SQL語言正從關(guān)系形式(ANSISQL-92標(biāo)準(zhǔn))轉(zhuǎn)向?qū)ο?關(guān)系形式(ANSISQL-99標(biāo)準(zhǔn),1999年頒布)。SQL語言是1974年由Boyce和Chamberlin提出。1986年10月美國(guó)國(guó)家標(biāo)準(zhǔn)局(ANSl)批準(zhǔn)了SQL作為關(guān)系數(shù)據(jù)庫語言的美國(guó)標(biāo)準(zhǔn)。同年公布了SQL標(biāo)準(zhǔn)文本(簡(jiǎn)稱SQL-86)。1987年6月國(guó)際標(biāo)準(zhǔn)化組織(ISO)也采納了此標(biāo)準(zhǔn)。1989年,美國(guó)國(guó)家標(biāo)準(zhǔn)局(ANSI)采納了新的規(guī)范SQL-89標(biāo)準(zhǔn),取代SQL-86,同時(shí)SQL-89標(biāo)準(zhǔn)也被國(guó)際標(biāo)準(zhǔn)化組織(ISO)采納。1992年,ANSI/ISO頒布了SQL2版本,標(biāo)準(zhǔn)的名稱為SQL-92。SQL-92分稱幾個(gè)順序級(jí)別:從代表SQL-89最小擴(kuò)展集的“Entry”到“Intermediate”和“Full”。完成于己于1999年的SQL-99具有更加高級(jí)的特征(包括對(duì)象-關(guān)系特性),亦稱SQL3。1.3SQL主要的幾個(gè)數(shù)據(jù)庫生產(chǎn)廠商并不可能完全遵守SQL-99(以及更老的SQL-92)。我們一般更加關(guān)注在產(chǎn)品中已經(jīng)實(shí)現(xiàn)的SQL-99特征。

1.3.1SQL特點(diǎn)1.3.2數(shù)據(jù)定義1.3.2.1SQL模式的創(chuàng)建和刪除1.3.2.2SQL提供的基本數(shù)據(jù)類型1.3.2.3定義、刪除與修改基本表

1.3.2.4建立與刪除索引1.3.2.5視圖的創(chuàng)建和刪除1.3.3數(shù)據(jù)查詢1.3.3.1簡(jiǎn)單查詢

1.3.3.2子查詢1.3.3.3UNION運(yùn)算和FORALL條件1.3.3.4高級(jí)SQL語法1.3.3.5集合函數(shù)1.3.3.6行分組

1.3.4數(shù)據(jù)更新1.3.4.1插入數(shù)據(jù)

1.3.4.2修改數(shù)據(jù)1.3.4.3刪除數(shù)據(jù)1.3.1SQL特點(diǎn)1)綜合統(tǒng)一

2)高度非過程化

3)面向集合的操作方式

4)以同一種語法結(jié)構(gòu)提供兩種使用方式5)語言簡(jiǎn)捷,易學(xué)易用

和關(guān)系代數(shù)相比,就查詢能力而言,SQL并沒有根本的改進(jìn),在關(guān)系代數(shù)查詢方面的經(jīng)驗(yàn)可以成為用SQL來實(shí)現(xiàn)查詢的良好借鑒。在構(gòu)造查詢時(shí)SQL的select語句比關(guān)系代數(shù)要靈活.1.3.2數(shù)據(jù)定義SQL的數(shù)據(jù)定義功能包括對(duì)模式(Schema)、表(關(guān)系,Table)、視圖(View)和索引(Index)的創(chuàng)建、刪除和修改操作。如下表所示。操作對(duì)象操作方式創(chuàng)建刪除修改模式CREATESCHEMADROPSCHEMA表CREATETABLEDROPTABLEALTERTABLE視圖CREATEVIEWDROPVIEW索引CREATEINDEXDROPINDEX1.3.2.1SQL模式的創(chuàng)建和刪除在SQL-99中,模式是表、索引及其他數(shù)據(jù)庫對(duì)象的集合。模式名通常是一個(gè)用戶名。在CoreSQL-99和當(dāng)前大多數(shù)產(chǎn)品中,當(dāng)用戶的數(shù)據(jù)庫帳戶建立時(shí),其模式在用戶名之后給出,他們不能再建立其他模式。SQL-99的擴(kuò)展特性允許用戶建立附加模式,一個(gè)SQL模式由模式名和模式擁有者的用戶名或賬號(hào)來確定。SQL模式的創(chuàng)建可用CREATE語句實(shí)現(xiàn),其句法如下:

CREATESCHEMA<模式名>AUTHORIZATION<用戶名>

目前只有DB2UDB允許用戶建立附加模式。其它產(chǎn)品中模式用用戶名替代。

1.3.2.1SQL模式的創(chuàng)建和刪除在SQL中還有一個(gè)“目錄”概念。目錄是SQL環(huán)境中所有模式的集合。包含數(shù)據(jù)庫中定義的對(duì)象的信息的表,由系統(tǒng)維護(hù)。ORACLE叫數(shù)據(jù)字典,DB2UDB叫目錄表,INFORMIX叫系統(tǒng)目錄。目錄表在建立數(shù)據(jù)庫時(shí)建立,用戶不能更新,但DBA可以用select獲取這些信息。當(dāng)一個(gè)SQL模式及其所屬的基本表、視圖等元素都不需要時(shí),可以用DROP語句撤消這個(gè)SQL模式。DROP語句的句法如下:

DROPSCHEMA<模式名>[CASCADE|RESTRICT]1.3.2.2SQL提供的基本數(shù)據(jù)類型SQL-99ORACLEINFORMIXDB2UDB說明Cchar(n)char(n)n<=4000char(n)n<=32767char(n)n<=254定長(zhǎng)字符型chararray[n+1]varchar(n)varchar(n)varchar2(n)varchar(n)varchar(n)變長(zhǎng)字符型chararray[n+1]numeric(p,d)decimal(p,d)numeric(p,d)decimal(p,d)number(p,d)numeric(p,d)decimal(p,d)numeric(p,d)decimal(p,d)定點(diǎn)數(shù),由p位數(shù)字(不包括符號(hào)、小數(shù)點(diǎn))小數(shù)點(diǎn)后面有d位數(shù)字無smallintsmallintsmallintsmallint短整數(shù)shortintintegerintegerintegerinteger長(zhǎng)整數(shù)int,longintrealrealrealreal浮點(diǎn)數(shù)floatdoubleprecision,float,float(n)doubleprecision,number,floatfloat(n)doubleprecision,floatdoubleprecision,double,float,float(n)取決于機(jī)器精度的雙精度浮點(diǎn)數(shù)至少為n位精度double1.3.2.3定義、刪除與修改基本表建立數(shù)據(jù)庫最重要的一步就是定義一些基本表。SQL語言使用CREATETABLE語句定義基本表,一般格式如下:

CREATETABLE<表名>(<列名><數(shù)據(jù)類型>[列級(jí)完整性約束條件][,<列名><數(shù)據(jù)類型>[列級(jí)完整性約束條件]]…[,<表級(jí)完整性約束條件>]);例:CREATETABLEStudent(SnoCHAR(5)PRIMARYKEY,SnameCHAR(8)NOTNULL,SageSMALLINTCHECK(SageBETWEEN17AND22),SsexCHAR(2)CHECK(SsexIN(’男’,’女’)),SdeptCHAR(20)DEFAULT(‘軟件學(xué)院’));創(chuàng)建學(xué)生表:Sno為主鍵(非空唯一),Sname非空,Sage在17到20之間取值,Ssex只能取‘男’或‘女’,Sdept默認(rèn)值為‘軟件學(xué)院’.1.3.2.3定義、刪除與修改基本表實(shí)際使用時(shí)要有用戶ID和密碼,進(jìn)入交互式環(huán)境,才能完成數(shù)據(jù)庫操作。修改基本表

ALTERTABLE<表名>[ADD<新列名><數(shù)據(jù)類型>[完整性約束]][DROP<完整性約束名>][MODIFY<列名><數(shù)據(jù)類型>];其中<表名>是要修改的基本表,ADD子句用于增加新列和新的完整性約束條件,DROP子句用于刪除指定的完整性約束條件,MODIPY子句用于修改原有的列定義,包括修改列名和數(shù)據(jù)類型。1.3.2.3定義、刪除與修改基本表刪除基本表

DROPTABLE<表名>基本表一旦刪除,表中的數(shù)據(jù)、此表上建立的索引和視圖都將自動(dòng)被刪除掉。因此執(zhí)行刪除基本表的操作一定要格外小心。

注意:有的系統(tǒng),如Oracle,刪除基本表后建立在此表上的視圖定義仍然保留在數(shù)據(jù)字典中。但是,當(dāng)用戶引用時(shí)就報(bào)錯(cuò)。1.3.2.4建立與刪除索引索引的功能表現(xiàn)在以下3方面。(1)使用索引可以明顯地加快數(shù)據(jù)查詢的速度(2)使用索引可保證數(shù)據(jù)的唯一性(3)使用索引可以加快連接速度建立索引的原則

(1)索引的建立和維護(hù)由DBA和DBMS完成(2)大表應(yīng)當(dāng)建索引,小表則不必建索引(3)對(duì)于一個(gè)基本表,不要建立過多的索引(4)根據(jù)查詢要求建索引1.3.2.4建立與刪除索引CREATE[UNIQUE][CLUSTER]INDEX<索引名>ON<表名>(<列名>[<asc|desc>[,<列名>[<asc|desc>]]);

如果數(shù)據(jù)增加刪改頻繁,系統(tǒng)會(huì)花費(fèi)許多時(shí)間來維護(hù)索引。這時(shí),可以刪除一些不必要的索引。DROPINDEX<索引名>;

1.3.2.5視圖的創(chuàng)建和刪除視圖是關(guān)系數(shù)據(jù)庫系統(tǒng)提供給用戶以多種角度觀察數(shù)據(jù)庫中數(shù)據(jù)的重要機(jī)制。視圖一經(jīng)定義,就可以和基本表一樣被查詢、被刪除,我們也可以在一個(gè)視圖之上再定義新的視圖,但對(duì)視圖的更新(增加、刪除、修改)操作則有一定的限制。

CREATVIEW<視圖名>[(列名>[,<列名>]...)]AS<子查詢>[WITHCHECKOPTION];其中子查詢可以是任意復(fù)雜的SELECT語句,但通常不允許含有ORDERBY子句和DISTINCT短語。WITHCHECKOPTION表示對(duì)視圖進(jìn)行UPDATE,INSERT和DELETE操作時(shí)要保證更新、插入或刪除的行滿足視圖定義中的謂詞條件(即子查詢中的條件表達(dá)式)。

1.3.2.5視圖的創(chuàng)建和刪除DROPVIEW<視圖名>;

視圖刪除后視圖的定義將從數(shù)據(jù)字典中刪除。但是由該視圖導(dǎo)出的其他視圖定義仍在數(shù)據(jù)字典中,不過該視圖已失效。用戶使用時(shí)會(huì)出錯(cuò),要用DROPVIEW語句將它們一一刪除。DBMS執(zhí)行CREATEVIEW語句的結(jié)果只把視圖的定義存入數(shù)據(jù)字典,并不執(zhí)行其中的SELECT。在關(guān)系數(shù)據(jù)庫中,并不是所有的視圖都是可更新的,因?yàn)橛行┮晥D的更新不能的有意義的轉(zhuǎn)換成對(duì)基本表的更新。行列子集視圖是可更新的。各個(gè)DBMS對(duì)視圖的更新有自己的規(guī)定。1.3.3數(shù)據(jù)查詢數(shù)據(jù)查詢是數(shù)據(jù)庫的核心操作。SQL語言的數(shù)據(jù)查詢只有一條SELECT語句:

SELECT[ALL|DISTINCT]{*|<目標(biāo)列表達(dá)式[[as]別名]>[,<目標(biāo)列表達(dá)式[[as]別名]>]...}

FROM<表名或視圖名>[,<表名或視圖名>]…[WHERE<條件表達(dá)式>][GROUPBY<列名>[,<列名>][HAVING<條件表達(dá)式>]]][ORDERBY<列名>[ASC|DESC][,<列名>[ASC|DESC]]…];1.3.3數(shù)據(jù)查詢Select語句的執(zhí)行過程可以理解為:首先,對(duì)FROM子句中的所有表做關(guān)系乘積接著,刪除不滿足WHERE子句的行根據(jù)GROUPBY子句對(duì)剩余的行進(jìn)行分組然后刪除不滿足HAVING子句的組求出SELECT子句選擇列表的表達(dá)式的值若有關(guān)鍵詞DISTINCT存在,則刪除重復(fù)的行Select中的標(biāo)識(shí)符:一般的SQL標(biāo)識(shí)符是大小寫無關(guān)的。實(shí)際上SQL在解釋以前會(huì)把它們轉(zhuǎn)化為大寫形式。一個(gè)標(biāo)識(shí)符必須以一個(gè)字母打頭,EntrySQL-92和CoreSQL-99將一個(gè)標(biāo)識(shí)符字節(jié)數(shù)限制在18個(gè)以內(nèi)。1.3.3數(shù)據(jù)查詢表達(dá)式可以是數(shù)值表達(dá)式、字符串表達(dá)式和日期表達(dá)式等。

數(shù)值表達(dá)式由常數(shù)、表屬性、算術(shù)運(yùn)算符、算術(shù)函數(shù)所組成。字符串表達(dá)式由常數(shù)、表屬性、字符串運(yùn)算符、字符串函數(shù)所組成。日期表達(dá)式由常數(shù)、表屬性、日期運(yùn)算符、日期函數(shù)所組成WHERE中使用謂詞來表示條件。一般情況謂詞運(yùn)算結(jié)果為TRUE或FALSE,但如果遇到空值時(shí),可能為UNKNOWN。SQL查詢的一個(gè)爭(zhēng)議點(diǎn)即:對(duì)于同一個(gè)查詢會(huì)存在眾多不同的構(gòu)造方法。1.3.3ORACLE、INFORMIX、DB2UDB

中的一些數(shù)學(xué)函數(shù)名稱描述結(jié)果abs(n)mod(n,b)sqrt(n)

n的絕對(duì)值,n為數(shù)值型n被b除后得到的余數(shù)。n,b為整數(shù)n的平方根,n為整數(shù)或浮點(diǎn)數(shù)

另外,三角函數(shù)、指數(shù)函數(shù)、對(duì)數(shù)函數(shù)、冪函數(shù)和round(n)數(shù)值類型整數(shù)浮點(diǎn)1.3.3一些標(biāo)準(zhǔn)的和特定產(chǎn)品的串處理函數(shù)SQL-99中的描述ORACLEDB2UDBINFORMIX返回串長(zhǎng)度(整數(shù)個(gè)字符)CHAR_LENGTH(str)返回子串,從m個(gè)開始取n個(gè)SUBSTRING(str)FORMmFOR(n)返回去掉左或右空格后得到的包含空格的串TRIM([[LEADING|TRAILING|BOTH][SET]FROM]str)返回子串str2在str1中位置,如果指定n,則從n開始POSITION(str1INstr2)字母小寫LOWER(str)字母大寫UPPER(str)length(str)substr(str,m[,n])trim([[leading|trailing|both][set]from]str),ltrim(str[,set]),rtrim(str[,set])instr(str1,str2[,n])lower(str)upper(str)length(str)substr(str,m[,n])ltrim(str);rtrim(str)posstr(str1,str2[,n])lcase(str)ucase(str)length(str),char_length(str)substr(str,m[,n]),substring(strfrommforn)trim([[leading|trailing|both][set]from]str);lower(str)upper(str)1.3.3SQL中的標(biāo)準(zhǔn)謂詞謂詞

形式

例子比較謂詞BETWEEN謂詞量化謂詞IN謂詞

EXISTS謂詞ISNULL謂詞LIKE謂詞expr1θ{expr2|(subquery)}expr1[NOT]BETWEENexpr2andexpr3exprθ[SOME|ANY|ALL](subquery)expr[NOT]IN(subquery)

[NOT]EXISTS(subquery)colnameIS[NOT]NULLcloname[NOT]LIKEval[ESCAPEval]p.price>(subquery)c.discntbetween10.0and12.0c.discnt>=all(subquery)pidin(selectpidfromorders)exist(select*…)c.discntisnullcnamelike‘A%’1.3.拐3.1龜簡(jiǎn)單查詢例:檢索撿定貨記錄濫中所有p打id值:sel贊ect耍pi道df蛙rom賭or謀der嫌s吐--結(jié)汪果中有顛重復(fù)的矩pidsele倆ctd營(yíng)isti裝nct蔽pid暫from緩ord度ers牌--結(jié)鮮果中pi釣d唯一sel啊ect女缺省為渾all隸,di貼sti夢(mèng)nct墓沒有出碎現(xiàn)時(shí)允啞許重復(fù)錦行,缺判省情況棗不遵守趴行唯一最性規(guī)則村。例:在姜ord岸ers走表上生誓成每筆童業(yè)務(wù)的撲利潤(rùn)p森rof焦it(老收入減慘去60煩%的成弓本、顧吸客的折島扣以及債代理商想的酬金朋):sel兄ect鐵or焰dno纏,x.告cid趣,x.圖aid錢,x.擦pid阻,.4縫0*(柴x.q味ty*殲p.p引ric甚e)-.01*清(c.d腔iscn目t+a.溜perc欲ent)憑*(x.厚qty*穗p.pr撫ice)嬸as喚prof肝itfrom房誠ord烏ers徐asx蹈,cus抵tome朱ras黎c,a墳gent員sas想a,p頸rodu腐cts納aspwher厘e(cuò)c.蠟cid=猴x.ci男dan共da.衛(wèi)aid=肆x.ai半dan塊dp.啟pid=慣x.pi蝦d;乘積×投影π選擇σ郭文明哪200舍3.06蚊.051.3.斑3.1鍛簡(jiǎn)單查詢注:1名)SQ過L-9護(hù)9規(guī)定繞FRO醬M子句骨中執(zhí)行蠶連接運(yùn)傘算,但猶大多數(shù)滴產(chǎn)品通夫過笛卡映爾積運(yùn)精算并且掛在WH恰ERE島子句中歷包含表仁示參與拼連接的估列值相望等的條總件來模慮擬連接穗運(yùn)算,沫具體實(shí)豬現(xiàn)方法嗚(執(zhí)行針計(jì)劃,綢查詢優(yōu)軟化)各賺不相同暴。2)F緊ROM匠中AS折被省略腳,SQ畜L仍能闊識(shí)別表揭別名。臟ORA玻CLE酷和IN際FOR弓MIX橋使用別名或表別名,DB耽2U藍(lán)DB使承用相關(guān)名熊。3)列巡壽表達(dá)式跌的列名景可以通異過AS膊指明,獨(dú)ORA墨CLE礙中稱列別名,IN澡FOR亂MIX雪中稱顯示標(biāo)簽續(xù),DB2帥UDB中環(huán)簡(jiǎn)單稱為列名。如果沒哲有AS,掛ORAC電LE中將棒完整表達(dá)壟式文本作住為列名。郭文明都2斃003慎.06寨.051.3腦.3.遙2子泥查詢每個(gè)Se冒l(fā)ect絮查詢都會(huì)水生成一張照表,但我葉們不能像麗關(guān)系代數(shù)移表達(dá)式那夸樣任意將坑一個(gè)Se扇lect滑語句嵌入位另一個(gè)S返elec遠(yuǎn)t語句。惜這是SQ昂L與關(guān)系告代數(shù)的一團(tuán)個(gè)很重要淘的不同點(diǎn)縣。例如:零from膚子句中不廢能出現(xiàn)s從elec兼t(SQ哄L-99聯(lián)標(biāo)準(zhǔn)已去蔽掉該限制取,但數(shù)據(jù)駛庫產(chǎn)品中疾并未完全文實(shí)現(xiàn)),故wher旬e子句中躲顯然可以互出現(xiàn)se景l(fā)ect趣。出現(xiàn)在另序一個(gè)se曠lect橋語句之內(nèi)差的sel盒ect語晶句形式稱疫為子查詢安。一個(gè)子孫查詢能以退許多種方歐式出現(xiàn)在拋另一個(gè)s均elec揪t語句的就WHER盒E子句條款件中。郭文明欺200瓣3.06兆.051.3.鍬3.2拼子查詢1)IN謂詞(NOT彩IN)例:求蕩通過住丙在北京笛或上海鉤的代理英商訂貨燈的顧客伯的姓名講和折扣內(nèi).sele旅ctc感name擋,dis拆cnt轎from爭(zhēng)cus品tome材rsw你here預(yù)cid昂in(sel殊ect佩cid妻from微ord屬ers粗wher勝eai訊din(se勾lec匹ta夾id浩fro富ma峰gen半ts倆whe系re默cit瓜yi售n(先‘北京久’,’原上?!?))史;例:求由喚住在北京搏的顧客和坐住在北京膜的代理商共組成的所反有訂貨o絲式rdno煮.sel制ect癥or恐dno卻fr滾om秤ord絡(luò)ers歷wh強(qiáng)ere鉗(c牽id,概aid隔)i朋n(sel家ect那cid,稈aid掀from耕cus鉤tome鴉rsc腿,age零nts億awhe拋re播c.c慎ity專=‘北且京’灣and希a.天cit礦y=‘鑒北京’兔);以上兩掉例為不相關(guān)傘查詢:內(nèi)層今子查詢稿獨(dú)立于煌外層的形sel蕉ect僵.例:找出重訂購了產(chǎn)斷品p05聰?shù)念櫩偷你暶?sele蜓ctd遭isti搬nct服cnam暮efr孟omc淘u(píng)sto慨mers真whe往re‘嘆p05’減in(se滔lec握tp磨id久fro恨mo睬rde盈rs垃whe茂re繪cid禽=cu修sto歲mer節(jié)s.c爆id)本例為相關(guān)查逐詢:子查詢爺使用外層恢sele像ct語句支提供的數(shù)純據(jù).SQL-塞99允許套,有些系新統(tǒng)不允許肌.郭文明鈴2稀003饒.06勢(shì).051.3嚴(yán).3.祥2子合查詢2)量濕化比較苗謂詞:液ex蠢prθ[SO或ME|A拔NY|A酸LL](sub湯quer偷y)θ為比自較運(yùn)算沸符<,近<=,芽=,<群>,>跳,>=閑。SO徹ME和杰ANY常含義相斃同,S究OME瀉是最新落版本的同推崇形院式。例:找出練傭金百分獸率最小的廉代理商a酒id。sel嘉ect灘ai詞df抓rom播ag倦ent陶sw懇her腫ep到erc州ent朽<=天all(sel殿ect壤perc旅ent逝from施age望nts)圈;例:求扯出滿足歲以下條嬌件的顧熄客ci烘d:該膛顧客的采dis秩cnt艙小于任帆一住在營(yíng)北京的垂顧客的街dis趙cnt挑.錯(cuò)誤:s重elec登tci棋dfr重omc馬usto株mer儀wher液edi桐scnt絨<an四y(sel數(shù)ect形disc書ntf經(jīng)rom碌cust升omer您swh黑ere餅city統(tǒng)=‘北京銜’);正確:必sele輕ctc久idf弓rom選cust品omer捐whe牧red穗iscn久t<a窄ll(se狡lec綿td斬isc書nt菜fro賤mc囑ust炊ome翼rs清whe標(biāo)re私cit格y=‘軟北京’匹);注意a鞠ny不歐是任意郭文明雪2細(xì)003旺.06川.051.3剛.3.賽2子沾查詢3)EXI象STS謂詞:E誦XIST川S(S榨ubqu涌ery)翻為真當(dāng)且中僅當(dāng)子查私詢返回一絡(luò)個(gè)非空集眨合;NO暑TEX佳ISTS茶(Sub幻玉quer何y)為真斧當(dāng)且僅當(dāng)茫返回集合惡為空.例:求聽出既訂筆購了產(chǎn)重品p0泉1有訂飼購了產(chǎn)況品p0給7的顧什客ci弄d.關(guān)系代頂數(shù):πcid(σpid吸=’p卡01’(O)芳)∩鼠πcid(σpid=執(zhí)’p07呈’(O))sel嶺ect期di菌sti急nct凡ci兼df易rom所or單der劑sx啞wh吩ere義pi嘗d=‘痕p01碌’a剖nd左exi記sts(se禮lec秒t*渣fr忙om荒ord濃ers常wh雖ere私ci菠d=x隆.ci李da我nd蝴pid集=‘p若07’感);或s腸ele州ct痛dis映tin禿ct墻x.c堡id莫fro筑mo碗rde角rs雖x,o邪rde盯rs曠ywhe婆re鵝x.p夫id=蔑‘p0畢1’總and秀x.駝cid默=y.硬cid推an邁dy習(xí).ci題d=‘失p07莖’;EXI麻STS伙的查詢睬一般能經(jīng)找到等參價(jià)的其旨他查詢嶄形式。使用和縣不使用鴿exi途sts交運(yùn)算郭文明鑄2拉003湖.06存.051.3.歌3.2向子查詢NOT吸EXIS鎖TS確實(shí)為立我們帶浴來了一汪些新的推功能。not拐exis估ts能被旁用來實(shí)現(xiàn)尚關(guān)系代數(shù)型的MIN嗽US運(yùn)算軋。如果R雕和S是兩小個(gè)兼容表卡(屬性相殃同A1…灰An),陰R-S用裹SQL計(jì)扯算:sele網(wǎng)ctA沫1…An黃fro湊mRwher閣eno縱tex貴ists往(se慢lect征*f型rom卸Swher雀eS銅.A1=唐R.A1盈and姑………灑and常S.A黃n=R.農(nóng)An);例:找男出沒有誦通過代擁理商a憤03訂崇貨的顧倉客ci浩d.關(guān)系代數(shù)蘿:πcid(O)—棋πcid(σaid姓=’a見03’(O)雀)sele犯ctd哨isti爭(zhēng)nct修cid滅from瀉ord霸ers炸xwh膊ere析not濕exis級(jí)ts(sel拌ect剩*fr趣omo唱rder值swh科ere廊cid=判x.ci糟da恒nd女a(chǎn)id士=‘a(chǎn)0編3’);差運(yùn)算郭文明醉200覺3.06循.051.3餡.3.蒼3U該NIO翻N運(yùn)算隊(duì)和FO間RA柱LL條白件為了提刊供關(guān)系鄙代數(shù)的寒∪運(yùn)算浪,SQ閑L使用哈UNI絲式ON:subq愁ueryUNI憑ON淹[AL碼L]subq膜uery例:包含梨了顧客所慚在的或代歪理商所在救或兩者皆練在的城市身名單。sele鞭ctc地ity焰from板cus勤tome隆rsu政nionsele正ctc掛ity鬼from虜age吐nts;或sele組ctc潤(rùn)ity傳from戲cus鉛tome妥rsu質(zhì)nion切allsele透ctc退ity敞from做age來nts;行不重復(fù)行重復(fù)∪運(yùn)算郭文明御2燒003樣.06以.051.3.冶3.3叔UNIO核N運(yùn)算和票FOR皂ALL條綿件SQL中雷沒有等價(jià)撥的÷運(yùn)算征。如果面迎臨的查詢繩“要求被尸檢索的銹對(duì)象集素合必須循符合‘零所有’鳥這類關(guān)漠鍵詞的凡條件”退(FO揪RA丑LL)時(shí),舍關(guān)系代臉數(shù)要用端到除運(yùn)溝算。S密QL中炎可以:選1.表投述要檢裕索的候新選對(duì)象前的一個(gè)成反例(籍至少一乏個(gè)對(duì)象柳不符合應(yīng)條件)憑,.并慘建立s枝ele皂ct語箏句(選信出所有早反例)僵;2.嘗建立表像示這類蝦反例不富存在的控條件(岸not職ex秤ist羅s);蟲3.建管立最終戚sel積ect忽。例:求通帽過住在北朝京的所有亂代理商訂赴了貨的顧撤客cid鬧.1.反例療:住在北奇京但沒有械為所求顧爬客c.c申id訂貨僻的代理商滾:sel杯ect詠*中fro設(shè)ma貼gen壞ts宏whe災(zāi)re總a.c候ity策=‘北核京’球and嫁no紙te要xis四ts(sel糠ect遠(yuǎn)*fr石omo冷rder慨sx切wher刊ex.么cid=僑c.ci院dan曠dx.劣aid=參a.ai閃d)2.反例堤不存在:not鞭ex查ist穗s(拒反例)3.最終潤(rùn):sele午ctc嬌.cid被fro患mcu宰stom位ers侍wher歐en噸ote村xist漫s(sel蜻ect登*fr目oma戚gent確swh貫ere同a.ci堤ty=‘足北京’座and蔬not浸exis省ts(se關(guān)lec甩t*孤fr牲om頃ord艷ers純x仙whe友re擁x.c暫id=蹦c.c文id傷and葵x.濫aid振=a.貴aid認(rèn)));÷運(yùn)算郭文明殘2尺003朽.06成.051.3組.3.版3U太NIO虎N運(yùn)算戶和FO絲式RA鼓LL條吉件例:找揉出訂購溫了所有摸被顧客傳c00蛾6訂購尿的商品聽的顧客列的ci懶d.反例:巾被c0錢06訂犯購但沒迅有被c干.ci賣d訂購帳的商品吸:sel纏ect旦p鞋.pi注d鹽fro烤m摧pro兆duc神ts華pwher矛ep鐵.pid乎in斤(sel回ect由pid者from史ord盾ers堪xwh的ere貨x.ci弟d=‘c弊006’飾)a裕ndnot鳳exis熔ts世(sel評(píng)ect嚷*fr叢omo燥rder悉sy負(fù)wher類ey.返pid=案p.pi待dan順dy.摟cid=邊c.ci半d)反例不箭存在:not止ex戰(zhàn)ist俗s(sel梨ect斃p.p驕id拉from裝pr垂oduc仗tspwhe會(huì)re挪p.鵝pid不in咬(s進(jìn)ele裙ct就pid百fr耐om愉ord撥ers誘x邀whe勇re翅x.c括id=貿(mào)‘c0吵06’捕)羨andnot羊ex方ist量s(噸sel冠ect損*落fro稍mo遭rde蛾rs辯yw漫her倆ey物.pi吊d=p家.pi熱da虹nd皮y.c素id=刮c.c曾id)鬧)最終:sel邁ect仿ci將df勸rom旋cu住sto釣mer紙sw治her茂enot垃ex盞ist際s狂(se勿lec幅t搏p.p勉id病fr磁om修pr背odu出cts刪pwher棋e(cuò)p訊.pid惹in攔(sel蹈ect謠pid犬from縣ord計(jì)ers扔xwh戒ere蝦x.ci峰d=‘c統(tǒng)006’覆)a國(guó)ndnot襪ex腫ist種s(肌sel仙ect私*亮fro扇mo競(jìng)rde但rs踐yw天her恭ey釣.pi宴d=p黎.pi恒da打nd盞y.c籮id=廚c.c嬌id)伐);÷運(yùn)算被c00萌6訂購沒有被震c.c績(jī)id訂治購郭文明抖2周003頌.06朵.051.3.癢3.4融高級(jí)SQ桐L語法以下介兇紹的高姿級(jí)SQ構(gòu)L運(yùn)算線符不是撞Ent短ry裕SQL沒-92量的部分略,但幾摟乎都屬績(jī)于SQ零L-9子9,目巨前產(chǎn)品挪中不一植定支持層,但可爆能出現(xiàn)長(zhǎng)在未來野的數(shù)據(jù)欄庫產(chǎn)品哪中。1)INT嘩ERS膠ECT慰(∩)和EXC蒼EPT蔑(—)運(yùn)算符Subq耍uery仆[UNI氏ON[起ALL]龍|INT節(jié)ERSE脂CT[旋ALL]降|EXC刪EPT同[ALL恩]Su扶bque賭ry]注:Core暗SQL腰-99只兄有EXC堵EPT而憑沒有EX發(fā)CEPT枕ALL弄。兩個(gè)子查外詢從左到填右的列類鐵型是兼容獄的,即可拼以并、交獵、差。如春類型ch破ar(5熄)和類型縱char涼(10)混的列運(yùn)算粥,結(jié)果為董char祝(10)倉.ORAC檔LE提供親UNIO逃N、UN饞ION婚ALL、規(guī)INTE繼RSEC倒T、MI慌NUS(卻EXCE撿PT)。狐但不支持偉INTE貌RSEC惠TAL問L或MI漲NUS徑ALL。巡壽DB2坦UDB都稿支持。ALL剖考慮重砌復(fù)行及抽數(shù)目郭文明執(zhí)200年3.06費(fèi).051.3.鞭3.4集高級(jí)SQ刷L語法例:(蠟QU雙NIO肢NA倦LL姑QU納NIO瘡NA模LL饒Q)INTE貼RSEC擠TAL總L(Q遭UNI衣ONA謊LLQ蚊)結(jié)果是企(Q聚UNI噴ON乘ALL堤Q)拋,包含仇兩個(gè)重抬復(fù)行。(Q轎UNI襯ON換ALL矩Q凝UNI頁ON驢ALL質(zhì)Q)INTE乳RSEC僑T(Q末UNI成ONA兼LLQ角)結(jié)果是腎(Q)部,沒有眉包含重軟復(fù)行。(QU詢NION林ALL量QU斯NION眨ALL絮Q)EXCE皇PTA知LL(牌QUN鮮ION插ALL犁Q)結(jié)果是釋(Q)夕,沒有勵(lì)包含重財(cái)復(fù)行。郭文明續(xù)200醒3.06更.051.3.丈3.4屠高級(jí)SQ詞L語法2)連接些形式通用形接式:F爬ROM劈燕ta逝ble增nam致e[她[AS牲]c祝orr呆_na營(yíng)me玻[,…好…]…段…]SQL理-99炒:FR貪OM后葬面還可節(jié)以是:一般形棟式:tabl袍enam蒸e[[A葉S]c揚(yáng)orr_狀name語[(co麗lnam斬e[,c召olna暮me……龜])]]子查詢:(sub螺quer擦y)[慮AS]梨corr栽_nam丘e[(c嗓olna紗me[,訊coln寫ame…山…])]顯式連樹接:tab漁le1怠[I喂NNE宵R|{修LEF唐T|R降IGH記T|F僻ULL痰}[O插UTE陰R]]鼻JO遭IN倚tab葛le2ON肺con垂dit黑ion顯然SQ潮L-99仔中允許子蕩查詢出現(xiàn)沿在FRO仔M子句中么。以上三聾種形式在棟產(chǎn)品中并偶沒有完全道實(shí)現(xiàn)。使秩用時(shí)可以宿試用或幫湊助??梢允琴F視圖名ORAC希LE不能仰有AS允許為旨表的列朽重新命粒名允許是子掏查詢,此凡時(shí)別名必翅須內(nèi)連,語左連,壩右連,岡外連連接條額件郭文明礦2甘003恥.06習(xí).051.3甩.3.幣4高礙級(jí)SQ遇L語法例:檢場(chǎng)索至少障訂購了挺一件價(jià)決格低于普0.5黑的商品帆的顧客具姓名。sel靜ect貧di國(guó)sti墊nct慰cn霉ame洪fr紐奉om(ord蹦ers維ojo撇inp濫rodu吹cts屋pon擁o.p嘴id=p婆.pid竿)joi兄nc城ust衡ome閱rs叛co育no碑.ci路d=c葡.ci也dwhe佳re康p.p稅ric古e<0木.5;注:尾ORA限CLE艇僅提供妖左連和唯右連,扎而且語帆法與標(biāo)初準(zhǔn)SQ丘L也不遇同:SELE磁CT…族FRO紅MT1牙,T2WHE競(jìng)RE歡[T1漸.c1傻[(+)]=T護(hù)2.c馬2|T菠1.c紗1=T房誠2.c棕2[(+)]]悠AND啦co呢ndi蛇tio腿nT2保留錄所有行與T1連稻不上的用剃NULL郭文明煤2腸003爛.06幕.051.3楚.3.記5S扛QL中準(zhǔn)的集合野函數(shù)SQL中裹稱集合函的數(shù)(se鏈tfu臉ncti粒on),娛ORAC舊LE稱組狹函數(shù)(g弦roup糠fun霞ctio腥n),D抵B2U堪DB稱列僚函數(shù)(c室olum菠nfu資ncti拖on),就INFO輕RMIX帳稱聚集函穴數(shù)(ag退greg奸ate慣func糧tion浴).集合函數(shù)遣語法:SET_啄FUNC錦TION激([A電LL|D抄ISTI麻NCT]隊(duì)col燒)|CO妹UNT(慰*)注:A肝LL時(shí)骨包括重悔復(fù)行,餡DIS擔(dān)TIN堵CT不挎包括重良復(fù)行。WHER扇E子句比騾較操作中地不能使用耗集合函數(shù)裝.如disc滾nt<m所ax(…演)集合函把數(shù)忽略茫了所有龍空值.集合函數(shù)正不允許嵌侄套使用.盈如AVG(駁sele宜ctM亮AX(d擔(dān)olla校rs)…縱…)名稱參數(shù)類型結(jié)果類型描述COUNT任意(*)數(shù)值出現(xiàn)次數(shù)SUM數(shù)值數(shù)值參數(shù)和AVG數(shù)值數(shù)值參數(shù)均值MAX字符,數(shù)值字符,數(shù)值最大值MIN字符,數(shù)值字符,數(shù)值最小值郭文明核200徐3.06曬.051.3托.3.幸6S能QL中重行的分使組SQL報(bào)釋表功能:煤根據(jù)某些縱列值的共珍性把一個(gè)敢表所包含布的全部行蟻分成若干父?jìng)€(gè)子集,梯然后對(duì)每續(xù)個(gè)子集執(zhí)賀行集合函餡數(shù).例:打戲印每個(gè)劇代理商污為顧客生c00絡(luò)2和c冰003銀訂購產(chǎn)掏品及產(chǎn)捕品總數(shù)哭量.sele巾cta章.aid梯,ana斗me,p辣.pid柄,pna恨me,s源um(q哭ty)from摔ord鑰ers召x,pr芳o(jì)duc玻tsp企,age愁nts讀awhe干re艙x.p熔id=殘p.p杠id鉗and坡x.鋪aid袋=a.印aidand習(xí)x.ci舟din惠(‘c串002’降,’c0潤(rùn)03’)gro購up捆bya.ai抄d,a.吹anam歸e,p.坡pid,毯p.pn懲ame;GROU遍PBY能對(duì)象的列嶼上的空值勿會(huì)被分在疊同一組里于.郭文明餐200是3.06伐.051.3.絞3.6認(rèn)SQL中穴行的分組如果要立去掉分友組后的衫某些行智,不能豎用wh描ere蒙,只能屆用HA座VIN橋G子句之.例:求被晴至少兩個(gè)攀顧客訂購存的產(chǎn)品p慘id.sele此ctp該idf姿rom很orde紀(jì)rsgrou獸pby兇pidhavi艙ngcoun皺t(di村stin誓ctc酷id)隸>=2;如果沒有環(huán)GROU故PBY復(fù)只有HA框VING尸,則整個(gè)璃結(jié)果為一顛組.基本SQ姥Lse陸lect怨語句的通犬用形式不剝?cè)试S集合童函數(shù)的嵌亞套.但可禮以有變通月的GRO結(jié)UPB肯Y形式.例:求所季有代理商獎(jiǎng)的最大銷耍售額的平千均值.郭文明蹈2堅(jiān)003光.06族.051.3.草3.6哲SQL中券行的分組例:求所字有代理商渣的最大銷都售額的平哄均值.錯(cuò):蘇sel騎ect帽av堡g(s鑼ele焦ct關(guān)max文(do鋒lla羊rs)挎fr寒om茶ord蒙ersgrou指pby棉ai座d);對(duì):SQL選高級(jí)形季式,O杯RAC毯LE中圍可行:sele旺cta庫vg(t為.x)紋from故(se弓lect絞aid別,max羊(dol臨lars唉)as搜xfro探mo鈴rde倉rs雖gro舒up檔by反aid證)t已;常用作冒法:crea予tvi璃ewt綁as仿(sel初ect壤aid,宿max(兄doll拐ars)憶as斧xfrom侵ord凈ers五grou永pby無aid閣);sel汗ect花av不g(t定.x)為fr謝om朋t;郭文明糖2險(xiǎn)003避.06享.051.3循.4恥SQL透數(shù)據(jù)更刷新SQL中數(shù)據(jù)更甩新包括插根入數(shù)據(jù)(夾Inse筍rt)、撫修改數(shù)據(jù)患(Upd呀ate)冒和刪除數(shù)終據(jù)(De悅lete惹)三條語支句.1.3.括4.1牙插入數(shù)據(jù)INS跡ERT音IN誕TO<表名>卻[(<屬暢性列1>掛[,<屬遇性列2>精…)][VAL醋UES(珠expr耕1|NU傳LL[,債expr響2|NU咐LL].簽..)|古Subq淺uery爭(zhēng)]將新元組岡插入指定橫表中,其它中新記錄坐屬性列1則的值為e允xpr1盲,屬性列快2的值為樸expr古2...著。INT題O子句中持沒有出現(xiàn)勻的屬性列丈,新記錄蘭在這些列唱上將取空勇值。還可通響過子查弄詢批量滿插入數(shù)字據(jù)。在表定衛(wèi)義時(shí)說尺明了N撇OT崇NUL天L的屬斤性列不孩能取空諸值,否豈則會(huì)出商錯(cuò)。郭文明讀2寸003駛.06任.051.3礙.4領(lǐng)SQL龍數(shù)據(jù)更招新如果INT粗O子句中沒火有指明任湖何列名,憤則新插入蚊的記錄必吳須在每個(gè)汗屬性列上充均有值,臉給定值對(duì)恨應(yīng)于表定描義的字段顧順序。子查詢不的需要用括壇號(hào)括起來肚。ins蹦ert產(chǎn)in笑to工my_兇cs顯ele詳ct與*f命rom基cu譯sto慮mer頃sw凳her僚ec廉ity港=‘北難京’;inse縫rti什nto滿my_c侍(se童lect獲*f蠻rom任cust影omer處swh晨ere著city獄=‘北京剃’);1.3.仿4.1修改數(shù)據(jù)UPDA根TE<表名春>SET閥<列名1釋>=<e鮮x

溫馨提示

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

評(píng)論

0/150

提交評(píng)論