SQL語句大全實例_第1頁
SQL語句大全實例_第2頁
SQL語句大全實例_第3頁
SQL語句大全實例_第4頁
SQL語句大全實例_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、SQL語句實例  表操作    例 1  對于表的教學(xué)管理數(shù)據(jù)庫中的表 STUDENTS ,可以定義如下:    CREATE TABLE STUDENTS (SNO NUMERIC (6, 0) NOT NULL, SNAME CHAR (8) NOT NULL, AGE NUMERIC(3,0) , SEX CHAR(2), BPLACE  CHAR(20), PRIMARY KEY(SNO) 例 2  對于表的教學(xué)管理數(shù)據(jù)庫中的表 ENROLLS ,可以定義如下:    

2、;     CREATE  TABLE  ENROLLS         (SNO      NUMERIC(6,0)  NOT NULL         CNO     CHAR(4)  NOT NULL        

3、; GRADE   INT         PRIMARY KEY(SNO,CNO)         FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO)         FOREIGN KEY(CNO) REFERENCES COURSES(CNO)        

4、CHECK (GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100) 例 3  根據(jù)表的 STUDENTS 表,建立一個只包含學(xué)號、姓名、年齡的女學(xué)生表。         CREATE TABLE GIRL         AS SELECT SNO, SNAME, AGE         FROM STUDENTS   &#

5、160;     WHERE SEX=' 女 '   例 4  刪除教師表 TEACHER 。         DROP  TABLE  TEACHER 例 5  在教師表中增加住址列。        ALTER TABLE TEACHERS        ADD (ADDR CHAR(50) 例 6&

6、#160; 把 STUDENTS 表中的 BPLACE 列刪除,并且把引用 BPLACE 列的所有視圖和約束也一起刪除。         ALTER TABLE STUDENTS         DROP BPLACE CASCADE 例 7  補充定義 ENROLLS 表的主關(guān)鍵字。        ALTER TABLE ENROLLS     

7、   ADD PRIMARY KEY (SNO,CNO) ;   視圖操作(虛表)   例 9  建立一個只包括教師號、姓名和年齡的視圖 FACULTY 。 ( 在視圖定義中不能包含 ORDER BY 子句 )         CREATE VIEW FACULTY         AS SELECT TNO, TNAME, AGE       &

8、#160; FROM TEACHERS 例 10  從學(xué)生表、課程表和選課表中產(chǎn)生一個視圖 GRADE_TABLE , 它包括學(xué)生姓名、課程名和成績。         CREATE VIEW GRADE_TABLE         AS SELECT  SNAME,CNAME,GRADE         FROM  STUDENTS,COURSES,ENRO

9、LLS         WHERE  STUDENTS.SNO ENROLLS.SNO AND         COURSES.CNO=ENROLLS.CNO 例 11  刪除視圖 GRADE_TABLE         DROP VIEW GRADE_TABLE RESTRICT   索引操作   例 12  在學(xué)生表中按學(xué)號建立索引。

10、         CREATE  UNIQUE  INDEX  ST         ON STUDENTS (SNO, ASC) 例 13  刪除按學(xué)號所建立的索引。         DROP INDEX ST   數(shù)據(jù)庫模式操作   例 14  創(chuàng)建一個簡易教學(xué)數(shù)據(jù)庫的數(shù)據(jù)庫模式   TEACHING_D

11、B ,屬主為 ZHANG 。         CREATE SCHEMA TEACHING_DB  AUTHRIZATION  ZHANG 例 15  刪除簡易教學(xué)數(shù)據(jù)庫模式 TEACHING_DB 。( 1 )選用 CASCADE ,即當(dāng)刪除數(shù)據(jù)庫模式時,則本數(shù)據(jù)庫模式和其下屬的基本表、視圖、索引等全部被刪除。( 2 )選用 RESTRICT ,即本數(shù)據(jù)庫模式下屬的基本表、視圖、索引等事先已清除,才能刪除本數(shù)據(jù)庫模式,否則拒絕刪除。)      

12、;   DROP SCHEMA TEACHING_DB CASCADE 單表操作   例 16  找出 3 個學(xué)分的課程號和課程名。          SELECT CNO, CNAME          FROM COURSES          WHERE CREDIT 3 例 17  查詢年齡大于 22

13、 歲的學(xué)生情況。          SELECT  *          FROM   STUDENTS          WHERE  AGE 22 例 18   找出籍貫為河北的男生的姓名和年齡。         

14、SELECT SNAME, AGE          FROM STUDENTS          WHERE BPLACE ' 河北 '  AND  SEX ' 男 ' 例 19  找出年齡在 20 23 歲之間的學(xué)生的學(xué)號、姓名和年齡,并按年齡升序排序。 (ASC (升序)或 DESC (降序)聲明排序的方式,缺省為升序。 )    

15、0;     SELECT SNO, SNAME, AGE          FROM   STUDENTS          WHERE  AGE BETWEEN 20 AND 23          ORDER  BY  AGE 例 20  找出年齡小于

16、23 歲、籍貫是湖南或湖北的學(xué)生的姓名和性別。(條件比較運算符、 和邏輯運算符 AND (與),此外還可以使用的運算符有:(大于)、(大于等于)、(小于等于)、(不等于)、 NOT (非)、 OR (或)等。 謂詞 LIKE 只能與字符串聯(lián)用,常常是 “ 列名   LIKE  pattern” 的格式。特殊字符 “_” 和 “%” 作為通配符。 謂詞 IN 表示指定的屬性應(yīng)與后面的集合(括號中的值集或某個查詢子句的結(jié)果)中的某個值相匹配,實際上是一系列的 OR (或)的縮寫。謂詞 NOT IN 表示指定的屬性不與后面的集合中的某個值相匹配。 謂詞 BETWEEN 是 “ 包

17、含于 之中 ” 的意思。)         SELECT SNAME, SEX         FROM   STUDENTS         WHERE  AGE 23  AND  BPLACE  LIKE' 湖 '         或 &#

18、160;       SELECT SNAME, SEX         FROM   STUDENTS         WHERE  AGE 23  AND  BPLACE  IN  ( ' 湖南 ' , ' 湖北 ' ) 例 22  找出學(xué)生表中籍貫是空值的學(xué)生的姓名和性別。(在 S

19、QL 中不能使用條件:列名 NULL 。在 SQL 中只有一個特殊的查詢條件允許查詢 NULL 值:)        SELECT SNAME, SEX        FROM   STUDENTS        WHERE  BPLACE IS NULL   多表操作   例 23  找出成績?yōu)?95 分的學(xué)生的姓名。(子查詢)   &

20、#160;     SELECT SNAME         FROM STUDENTS         WHERE SNO               (SELECT SNO          &#

21、160;     FROM   ENROLLS                WHERE  GRADE 95) 例 24  找出成績在 90 分以上的學(xué)生的姓名。         SELECT  SNAME         FRO

22、M   STUDENTS         WHERE  SNO IN                 (SELECT SNO                 FROM ENROLLS  &#

23、160;              WHERE GRADE 90)         或         SELECT  SNAME         FROM   STUDENTS     &

24、#160;   WHERE  SNO ANY                 (SELECT SNO                 FROM ENROLLS          &

25、#160;      WHERE GRADE 90) 例 25  查詢?nèi)繉W(xué)生的學(xué)生名和所學(xué)課程號及成績。(連接查詢)         SELECT  SNAME, CNO, GRADE         FROM   STUDENTS, ENROLLS         WHERE  STU

26、DENTS.SNO ENROLLS.SNO 例 26  找出籍貫為山西或河北,成績?yōu)?90 分以上的學(xué)生的姓名、籍貫和成績。(當(dāng)構(gòu)造多表連接查詢命令時,必須遵循兩條規(guī)則。第一,連接條件數(shù)正好比表數(shù)少 1 (若有三個表,就有兩個連接條件 ) ;第二,若一個表中的主關(guān)鍵字是由多個列組成,則對此主關(guān)鍵字中的每一個列都要有一個連接條件(也有少數(shù)例外情況)         SELECT  SNAME, BPLACE, GRADE        

27、FROM   STUDENTS, ENROLLS         WHERE  BPLACE IN ( 山西 , 河北 )  AND  GRADE 90  AND STUDENTS.SNO=ENROLLS.SNO 例 28  查出課程成績在 80 分以上的女學(xué)生的姓名、課程名和成績。( FROM 子句中的子查詢)         SELECT  SNAME, CNAME, GR

28、ADE         FROM   (SELECT SNAME, CNAME , GRADE                         FROM  STUDENTS, ENROLLS,COURSES      &

29、#160;                  WHERE  SEX ' 女 ')         AS TEMP (SNAME, CNAME,GRADE)         WHERE  GRADE 80       

30、0; 表達式與函數(shù)的使用   例 29  查詢各課程的學(xué)時數(shù)。(算術(shù)表達式由算術(shù)運算符、 * 、與列名或數(shù)值常量所組成。)         SELECT  CNAME,COURSE_TIME CREDIT*16         FROM   COURSES 例 30  找出教師的最小年齡。(內(nèi)部函數(shù): SQL 標(biāo)準(zhǔn)中只使用 COUNT 、 SUM 、 AVG 、 MAX 、 MIN 函數(shù),稱之為聚

31、集函數(shù)( Set Function )。 COUNT 函數(shù)的結(jié)果是該列統(tǒng)計值的總數(shù)目, SUM 函數(shù)求該列統(tǒng)計值之和, AVG 函數(shù)求該列統(tǒng)計值之平均值, MAX 函數(shù)求該列最大值, MIN 函數(shù)求該列最小值。)         SELECT  MIN(AGE)         FROM   TEACHERS 例 31  統(tǒng)計年齡小于等于 22 歲的學(xué)生人數(shù)。(統(tǒng)計)     

32、    SELECT  COUNT(*)         FROM   STUDENTS         WHERE  AGE < 22 例 32  找出學(xué)生的平均成績和所學(xué)課程門數(shù)。         SELECT  SNO, AVG(GRADE), COURSES COUNT(*) 

33、0;       FROM   ENROLLS         GROUP  BY SNO   例 34  找出年齡超過平均年齡的學(xué)生姓名。 SELECT SNAME FROM STUDENTS WHERE AGE       (SELECT  AVG(AGE)        

34、FROM   STUDENTS)   例 35  找出各課程的平均成績,按課程號分組,且只選擇學(xué)生超過 3 人的課程的成績。( GROUP BY 與 HAVING         GROUP BY 子句把一個表按某一指定列(或一些列)上的值相等的原則分組,然后再對每組數(shù)據(jù)進行規(guī)定的操作。         GROUP BY 子句總是跟在 WHERE 子句后面,當(dāng) WHERE 子句缺省時,它跟在 FROM 子句后面。 &

35、#160;       HAVING 子句常用于在計算出聚集之后對行的查詢進行控制。)          SELECT CNO, AVG(GRADE), STUDENTS COUNT(*)          FROM ENROLLS          GROUP BY CNO   

36、;       HAVING COUNT(*) >= 3   相關(guān)子查詢   例 37  查詢沒有選任何課程的學(xué)生的學(xué)號和姓名。(當(dāng)一個子查詢涉及到一個來自外部查詢的列時,稱為相關(guān)子查詢( Correlated Subquery) 。相關(guān)子查詢要用到存在測試謂詞 EXISTS 和 NOT EXISTS ,以及 ALL 、 ANY ( SOME )等。)         SELECT SNO, SNAME   &

37、#160;     FROM   STUDENTS         WHERE  NOT EXISTS               (SELECT *               FROM ENROL

38、LS               WHERE ENROLLS.SNO=STUDENTS.SNO) 例 38   查詢哪些課程只有男生選讀。         SELECT DISTINCT CNAME         FROM   COURSES C    &#

39、160;    WHERE ' 男 ' ALL                (SELECT SEX                 FROM  ENROLLS , STUDENTS       

40、;          WHERE ENROLLS.SNO=STUDENTS.SNO AND                       ENROLLS.CNO=C.CNO) 例 39  要求給出一張學(xué)生、籍貫列表,該表中的學(xué)生的籍貫省份,也是其他一些學(xué)生的籍貫省份。   

41、;      SELECT  SNAME, BPLACE         FROM   STUDENTS A         WHERE  EXISTS                (SELECT *   &

42、#160;              FROM STUDENTS B                  WHERE A.BPLACE=B.BPLACE AND             

43、60;          A.SNO < > B.SNO)     例 40  找出選修了全部課程的學(xué)生的姓名。         本查詢可以改為:查詢這樣一些學(xué)生,沒有一門課程是他不選修的。         SELECT  SNAME        

44、; FROM   STUDENTS         WHERE  NOT EXISTS                (SELECT *                 FROM COURSES  &

45、#160;              WHERE  NOT EXISTS                         (SELECT *        &#

46、160;                 FROM ENROLLS                          WHERE ENROLLS.SNO STUDENTS.SNO  

47、0;                           AND ENROLLS.CNO COURSES.CNO) 關(guān)系代數(shù)運算   例 41  設(shè)有某商場工作人員的兩張表:營業(yè)員表 SP_SUBORD 和營銷經(jīng)理表 SP_MGR ,其關(guān)系數(shù)據(jù)模式如下:      &#

48、160;  SP_SUBORD (SALPERS_ID, SALPERS_NAME, MANAGER_ID, OFFICE)         SP_MGR (SALPERS_ID, SALPERS_NAME, MANAGER_ID, OFFICE)         其中,屬性 SALPERS_ID 為工作人員的編號 , SALPERS_NAME 為工作人員的姓名 , MANAGER_ID 為所在部門經(jīng)理的編號 , OFFICE 為工作地點。 若查

49、詢?nèi)可虉龉ぷ魅藛T,可以用下面的 SQL 語句:         (SELECT * FROM SP_SUBORD)         UNION         (SELECT * FROM SP_MGR)         或等價地用下面的 SQL 語句:      &

50、#160;  SELECT *         FROM (TABLE SP_SUBORD UNION TABLE SP_MGR) ( 2 ) INTERSECT          (SELECT * FROM SP_SUBORD)          INTERSECT        &#

51、160; (SELECT * FROM SP_MGR)         或等價地用下面的 SQL 語句:         SELECT *         FROM (TABLE SP_SUBORD INTERSECT TABLE SP_MGR)         或用帶 ALL 的 SQL 語句:  

52、0;      (SELECT * FROM SP_SUBORD)         INTERSECT ALL         (SELECT * FROM SP_MGR)         或         SELECT *    

53、60;    FROM (TABLE SP_SUBORD INTERSECT ALL TABLE SP_MGR) ( 3 ) EXCEPT         (SELECT * FROM SP_MGR)         EXCEPT         (SELECT * FROM SP_SUBORD)      

54、   或等價地用下面的 SQL 語句:         SELECT *         FROM (TABLE SP_MGR EXCEPT TABLE SP_ SUBORD)         或用帶 ALL 的 SQL 語句:         (SELECT * FROM SP_MGR) 

55、0;       EXCEPT  ALL         (SELECT * FROM SP_SUBORD) 例 42  查詢籍貫為四川、課程成績在 80 分以上的學(xué)生信息及其成績。(自然連接)         (SELECT * FROM STUDENTS          WHERE BPLAC

56、E= 四川 )         NATURAL JOIN         (SELECT * FROM ENROLLS          WHERE GRADE >=80) 例3.43          列出全部教師的姓名及其任課的課程號、班級。 (外連接與外部并外連接允許在結(jié)果表中

57、保留非匹配元組,空缺部分填以 NULL 。外連接的作用是在做連接操作時避免丟失信息。         外連接有 3 類: ( 1 )左外連接( Left Outer Join )。連接運算謂詞為 LEFT OUTER JOIN ,其結(jié)果表中保留左關(guān)系的所有元組。 ( 2 )右外連接( Right Outer Join )。連接運算謂詞為 RIGHT OUTER JOIN ,其結(jié)果表中保留右關(guān)系的所有元組。 ( 3 )全外連接( Full Outer Join )。連接運算謂詞為 FULL OUTER JOIN ,其結(jié)果表中保

58、留左右兩關(guān)系的所有元組。)           SELECT TNAME, CNO, CLASS           FROM TEACHERS LEFT OUTER JOIN TEACHING USING (TNO)   SQL 的數(shù)據(jù)操縱   例 44  把教師李映雪的記錄加入到教師表 TEACHERS 中。(插入)      

59、60;  INSERT INTO TEACHERS         VALUES(1476 , ' 李映雪 ' , 44 , ' 副教授 ') 例 45  成績優(yōu)秀的學(xué)生將留下當(dāng)教師。         INSERT INTO TEACHERS (TNO , TNAME)         SELECT DISTINCT SNO , SNA

60、ME         FROM   STUDENTS , ENROLLS         WHERE STUDENTS.SNO ENROLLS.SNO AND GRADE 90 例 47  把所有學(xué)生的年齡增加一歲。(修改)         UPDATE STUDENTS        

61、SET AGE AGE+1 例 48  學(xué)生張春明在數(shù)據(jù)庫課考試中作弊,該課成績應(yīng)作零分計。         UPDATE ENROLLS         SET GRADE 0         WHERE CNO 'C1' AND            

62、;  ' 張春明 '              (SELECT SNAME              FROM STUDENTS              WHERE STUDENTS.SNO=ENROLLS.SN

63、O) 例 49  從教師表中刪除年齡已到 60 歲的退休教師的數(shù)據(jù)。(刪除)         DELETE FROM TEACHERS         WHERE  AGE 60   SQL 的數(shù)據(jù)控制   例 50  授予 LILI 有對表 STUDENTS 的查詢權(quán)。(表視圖特權(quán)的授予         一個 SQL 特權(quán)允許一個被授權(quán)

64、者在給定的數(shù)據(jù)庫對象上進行特定的操作。授權(quán)操作的數(shù)據(jù)庫對象包括:表 / 視圖、列、域等。授權(quán)的操作包括: INSERT 、 UPDATE 、 DELETE 、 SELECT 、 REFERENCES 、 TRIGGER 、 UNDER 、 USAGE 、 EXECUTE 等。其中 INSERT 、 UPDATE 、 DELETE 、 SELECT 、 REFERENCES 、 TRIGGER 有對表做相應(yīng)操作的權(quán)限,故稱為表特權(quán)。)         GRANT SELECT ON STUDENTS   &

65、#160;     TO LILI         WITH GRANT OPTION 例 51  取消 LILI 的存取 STUDENTS 表的特權(quán)。         REVOKE ALL         ON STUDENTS         FROM LILI C

66、ASCADE   不斷補充中:1.  模糊查找:它判斷列值是否與指定的字符串格式相匹配。可用于char、varchar、text、ntext、datetime和smalldatetime等類型查詢。 可使用以下通配字符: 百分號%:可匹配任意類型和長度的字符,如果是中文,請使用兩個百分號即%。 下劃線_:匹配單個任意字符,它常用來限制表達式的字符長度。 方括號:指定一個字符、字符串或范圍,要求所匹配對象為它們中的任一個。:其取值也 相同,但它要求所匹配對象為指定字符以外的任一個字符。 例如: 限制以Publishing結(jié)尾,使用LIKE '%Publishing&#

67、39; 限制以A開頭:LIKE 'A%' 限制以A開頭外:LIKE 'A%'2.更改表格         ALTER TABLE table_name          ADD COLUMN column_name DATATYPE          說明:

68、增加一個欄位(沒有刪除某個欄位的語法。)         ALTER TABLE table_name         ADD PRIMARY KEY (column_name)         說明:更改表得的定義把某個欄位設(shè)為主鍵。       

69、  ALTER TABLE table_name         DROP PRIMARY KEY (column_name)         說明:把主鍵的定義刪除。 3.group by 在select 語句中可以使用group by 子句將行劃分成較小的組,然后,使用聚組函數(shù)返回每一個組的匯總信息,另外,可以使用having子句限制返回的結(jié)果集。group by 子句可以將查詢結(jié)果分組,并返回行的匯總信息Oracle 按照gr

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論