關系數據庫語言課件_第1頁
關系數據庫語言課件_第2頁
關系數據庫語言課件_第3頁
關系數據庫語言課件_第4頁
關系數據庫語言課件_第5頁
已閱讀5頁,還剩25頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1、關系數據庫語言 SQL,關系數據庫語言,關系數據庫語言 SQL,結構化查詢語言 SQL Structured Query Language SQL已不限于查詢,還包括數據操縱、定義、控制和管理等功能。它是一個綜合的、通用的、功能極強的關系數據庫語言。 國際標準化組織(ISO)89年公布了SQL語言的國際標準(SQL89)。 我國也制定了類似的標準(SQL89) 實際系統大都對SQL語言作了擴充,關系數據庫語言,SQL語言的特點,非過程化 SQL語言是非過程化語言(第四代語言)。 一體化 SQL集DDL、DML、DCL為一體。用SQL語言可實現DB生命周期的全部活動。 因實體、聯系均用關系來表示

2、,這種數據結構的單一性也帶來了DB語言的統一性。 兩種使用方式,統一的語法結構。 聯機交互使用方式。 嵌入某種高級程序設計語言,關系數據庫語言,表格實例之一,選課(學號,課程號,成績) sc(sno , cno , grade,課程(課程號,課程名,學分,上課時間,名額) course(cno , cname , credit,ctime,quota,系(系號,系名,電話) dep(dno , dname , tel,學生 (學號,姓名,性別,出生年月,系號) student(sno , sname , sex , birthday , dno,關系數據庫語言,表格實例之二,emp ( eno

3、,ename,sex , age,sal,mgr,dno ) 職工 職工號 姓名 性別 年齡 工資 領導 部門號 其中,mge為職工的上一級領導(即上一級領導的職工號,關系數據庫語言,建立表對象,CREATE TABLE student ( sno NUMBER(6) , sname CHAR(6) , sex CHAR(2) , birthday DATE , dno CHAR(3) ) ; insert into student values(980001, “李力”, “男”, “17-12月-1980”,“d01”,關系數據庫語言,INSERT INTO emp VALUES(e01,

4、 李宏,男, 32 ,580.0,e100,d02) ; INSERT INTO emp(eno,ename,dno) VALUES(eo1,王蘭 ,d01); UPDATE emp SET sal=sal*1.1 WHERE dno=d01 ; DELETE FROM emp WHERE dno=d01,DML 語句(DB寫語句,關系數據庫語言,Select 語句,SELECT * FROM student WHERE sex = 男 AND dno = D01 ; 查詢的結果仍可看成是一個關系,它由查出的記錄組成,關系數據庫語言,查詢語句中的投影操作,SELECT sno ,sname ,

5、dno FROM student WHERE sex男 ; 該語句輸出如下: sno sname dno 980001 張自立 d01 970020 李春生 d02,關系數據庫語言,查詢語句中的選擇操作,例:查詢79、80兩年出生的男同學的名單: SELECT sname,birthday FROM student WHERE sex=男 AND birthday BETWEEN 01-1月-79 AND 31-12月-80; 查詢1980年以前出生的學生: SELECT * FROM student WHERE birthday 01-1月-1980,關系數據庫語言,SQL語句中的運算符,算

6、術運算符:,*,/ 邏輯運算符:與 AND、或 OR, 非 NOT 比較符:,!,=, 其他運算符:IN,NOT IN 判斷是否是集合的成員。 BETWEEN AND 判斷列值是否滿足指定的區間 LIKE 匹配模式 _ % IS NOT NULL 測試空值,關系數據庫語言,查詢語句中的選擇操作,在查詢條件中,可以使用集合運算符 SELECT dname,tel FROM dep WHERE dname IN(計算機系,外語系,中文系) ; 該表達式等同于: dname=計算機系 OR dname=外語系 OR dname=中文系 集合運算符NOT IN是IN的反義詞, WHERE dname

7、NOT IN(計算機系,外語系,中文系),關系數據庫語言,查詢語句中的選擇操作,空值 查詢學號為980001的同學正在學習的課程: SELECT cno FROM sc WHERE sno=980001 AND grade IS NULL; 模糊匹配。 _ 表示任意一個字符 表示任意個字符(包括0個)。 例如,查詢姓王的同學信息; SELECT * FROM student WHERE sname LIKE 王,關系數據庫語言,查詢的排序輸出,查詢學生c01課程的成績,并按成績由高到低的順序輸出: SELECT sno,grade (輸出學號和成績) FROM sc WHERE cno=c01

8、and grade IS NOT NULL ORDER BY grade DESC ; 排序輸出的隱含順序是升序(ASC),如果要求按列值的降序輸出,需在列名后指定DESC,關系數據庫語言,5) 多表查詢與連接操作(joins,笛卡爾積操作將結果關系擴展,如果笛卡爾積的兩關系元組數分別為m和n,那么結果關系的元組數為mn,而在處理中往往只是需要其中部分元組。 連接(Join)操作是從笛卡爾積中選擇滿足條件的元組。最常用的條件是等值連接,Select * from student,dep where student.dno=dep.dno,dno,student,dep,關系數據庫語言,多表查詢

9、與連接操作,表之間的連接操作(通常是自然連接)體現在WHERE子句中的連接條件。 例:查詢計算機系的學生信息 SELECT sno,sname,sex FROM student,dep WHERE student.dno=dep.dno AND dname=計算機系,關系數據庫語言,查詢物理課不及格的學生名單(輸出學生的學號、姓名及成績): SELECT student.sno,sname,grade FROM student,sc,course WHERE cname=物理 AND grade60 AND o=o AND sc.sno=student.sno : 在該例中,查詢的結果來自兩張

10、表,而決定查詢結果的因素涉及到三張表的信息。 當一個查詢涉及到幾個關系時,為了區別不同表中的同名屬性,我們可以在屬性名前冠以關系名,多表查詢與連接操作,關系數據庫語言,聚合操作,聚合是把關系作為運算對象的另一類操作,是對關系中的列值進行統計工作,最終得到一個統計值。例如求職工的平均年齡,求職工的工資總額等。 常用5種聚合的操作符: SUM 對某列的值求和。 AVG 求某列值的平均值。 MIN 求某列值的最小值。 MAX 求某列值的最大值。 COUNT 統計某列值的個數(計數,關系數據庫語言,例:統計職工的工資總額: SELECT SUM(sal) FROM emp ; 例:求職工的最高工資、最

11、低工資和平均工資: SELECT MAX(sal),MIN(sal),AVG(sal) FROM emp ; 例:求女學生的學生總數: SELECT COUNT(*) FROM student WHERE sex=女,d01,d02,d01,d03,d01,d01,21,d02,18,19,20,21,18,22,sum,count,聚合操作,關系數據庫語言,聚合操作,查詢有多少名同學物理課不及格: SELECT COUNT(sno) FROM sc,course WHERE cname=物理 AND o=o AND grade60,關系數據庫語言,聚合操作,求每個系的學生數而不是求學生總數。

12、希望得到下面的輸出: dno count(*) d01 120 d02 65 SELECT dno,count(*) FROM student GROUP BY dno,d01,d01,d01,d02,d02,d01,980001,d02,980003,980002,980004,981001,981003,981002,dno,count,count,關系數據庫語言,聚合操作,查詢每個學生已獲得的學分(注:成績及格即取得相應課程的學分): SELECT sno,sum(credit) FROM sc,course WHERE grade60 AND o=o GROUP BY sno,關系數據

13、庫語言,子查詢,查詢物理系的學生名單(非子查詢) SELECT sname FROM student,dep WHERE dname=物理系 AND dep.dno=student.dno ; 子查詢: SELECT sname FROM student WHERE dno=(SELECT dno FROM dep WHERE dname=物理系 ),關系數據庫語言,子查詢,SQL提供的對于關系的操作符,并產生一個布爾型的結果。例如: EXISTS R 是一個條件,當且僅當關系R不空時為真。 集合運算符 IN ,NOT IN,關系數據庫語言,子查詢,例:查體育課不及格的男生名單: SELECT sname FROM student WHERE sex=男 AND sno IN ( SELECT sno FROM sc WHERE grade60 AND cno IN (SELECT cno FROM course WHERE cname=體育 ),關系數據庫語言,查找年齡在50歲以上、工資小于本部門平均工資的職工,輸出他們的姓名、年齡、工資: SELECT ename,age,sal FROM emp WHERE age50 and sal( SELECT avg(sal) FROM emp WHERE dno=,e

溫馨提示

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

評論

0/150

提交評論