資源描述:
《數(shù)據(jù)庫語言SQL(同濟(jì)大學(xué))課件.ppt》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、4數(shù)據(jù)庫語言SQL本章目標(biāo)本章主要介紹SQL語言的基本語法和使用方式,要求熟練掌握SQL語言的使用規(guī)則,能夠根據(jù)實(shí)際需求寫出能夠準(zhǔn)確完成操作的SQL語句。4.1概述SQL的發(fā)展1974年,由Boyce和Chamberlin提出1975~1979,IBMSanJoseResearchLab的關(guān)系數(shù)據(jù)庫管理系統(tǒng)原型SystemR實(shí)施了這種語言SQL-86是第一個SQL標(biāo)準(zhǔn)SQL-89、SQL-92(SQL2)、SQL-99(SQL3)現(xiàn)狀大部分DBMS產(chǎn)品都支持SQL,成為操作數(shù)據(jù)庫的標(biāo)準(zhǔn)語言有方言,支持程度不同數(shù)據(jù)定義(DDL)定義、
2、刪除、修改關(guān)系模式(基本表)定義、刪除視圖(View)定義、刪除索引(Index)數(shù)據(jù)操縱(DML)數(shù)據(jù)查詢數(shù)據(jù)增、刪、改數(shù)據(jù)控制(DCL)用戶訪問權(quán)限的授予、收回4.1.1SQL的功能交互式SQL一般DBMS都提供聯(lián)機(jī)交互工具用戶可直接鍵入SQL命令對數(shù)據(jù)庫進(jìn)行操作由DBMS來進(jìn)行解釋嵌入式SQL能將SQL語句嵌入到高級語言(宿主語言)使應(yīng)用程序充分利用SQL訪問數(shù)據(jù)庫的能力、宿主語言的過程處理能力一般需要預(yù)編譯,將嵌入的SQL語句轉(zhuǎn)化為宿主語言編譯器能處理的語句4.1.2SQL的形式數(shù)據(jù)定義Create、Drop、Alter數(shù)據(jù)
3、操縱數(shù)據(jù)查詢:Select數(shù)據(jù)修改:Insert、Update、Delete數(shù)據(jù)控制Grant、Revoke4.1.3SQL的動詞數(shù)據(jù)查詢是數(shù)據(jù)庫應(yīng)用的核心功能?;窘Y(jié)構(gòu):SelectA1,A2,...,AnFromr1,r2,...,rmWhereP4.2數(shù)據(jù)查詢SelectWhereFromπA1,A2,...,An(?p(r1×r1×...×rm))4.2.1Select語句的含義對From子句中的各關(guān)系,作笛卡兒積(×)對Where子句中的邏輯表達(dá)式進(jìn)行選擇(σ)運(yùn)算,找出符合條件的元組。根據(jù)Select子句中的屬性列表,對
4、上述結(jié)果作投影(π)操作。查詢操作的對象是關(guān)系,結(jié)果還是一個關(guān)系,是一個結(jié)果集,是一個動態(tài)數(shù)據(jù)集。4.2.2Select子句對應(yīng)于關(guān)系代數(shù)的投影(π)運(yùn)算,用以列出查詢結(jié)果集中的期望屬性。重復(fù)元組SQL具有包的特性Select子句的缺省情況是保留重復(fù)元組(ALL),可用Distinct去除重復(fù)元組SelectDistinctsdeptFromStudentSelectAllsdeptFromStudent去除重復(fù)元組:費(fèi)時需要臨時表的支持*與屬性列表星號*表示所有屬性星號*:按關(guān)系模式中屬性的順序排列,并具有一定的邏輯數(shù)據(jù)獨(dú)立性顯式
5、列出屬性名:按用戶順序排列Select*FromStudentSelectStudent.*,cno,gradeFromStudent,SCWhereStudent.sno=SC.sno更名為結(jié)果集中的某個屬性改名使結(jié)果集更具可讀性Selectsnoasstu_no,cnoascourse_no,gradeFromSCSelectsno,sname,2001-sageasbirthdayFromStudent4.2.3where子句where子句對應(yīng)與關(guān)系代數(shù)中的選擇(σ)。查詢滿足指定條件的元組可以通過Where子句來實(shí)現(xiàn)。使wh
6、ere子句中的邏輯表達(dá)式返回True值的元組,是符合要求的元組,將被選擇出來。運(yùn)算符比較:<、<=、>、>=、=、<>、not+~確定范圍:BetweenAandB、NotBetweenAandB確定集合:IN、NOTIN字符匹配:LIKE,NOTLIKE空值:ISNULL、ISNOTNULL多重條件:AND、OR、NOTlike字符匹配:Like、NotLike通配符:%——匹配任意字符串_——匹配任意一個字符大小寫敏感列出姓張的學(xué)生的學(xué)號、姓名。Selectsno,snameFromStudentWheresnameLIKE‘張
7、%’列出張姓且單名的學(xué)生的學(xué)號、姓名。Selectsno,snameFromStudentWheresnameLIKE‘張__’轉(zhuǎn)義符escape例:列出課程名稱中帶有‘_’的課號及課名。Selectcno,cnameFromCourseWherecnameLIKE‘%_%’escape‘’4.2.4from子句From子句對應(yīng)與關(guān)系代數(shù)中的笛卡兒積(×)列出將被掃描的關(guān)系(表)例:列出所有學(xué)生的學(xué)號、姓名、課號、成績。SelectSudent.sno,sname,SC.cno,gradeFromStudent,SCWhereS
8、tudent.sno=SC.sno元組變量為From子句中的關(guān)系定義元組變量方便關(guān)系名的引用在同一關(guān)系的笛卡兒積中進(jìn)行辨別例:列出與95001同歲的同學(xué)的學(xué)號,姓名,年齡。SelectT.sno,T.sname,T.sageFromS