SQL語句大全實(shí)例參考模板_第1頁
SQL語句大全實(shí)例參考模板_第2頁
SQL語句大全實(shí)例參考模板_第3頁
SQL語句大全實(shí)例參考模板_第4頁
SQL語句大全實(shí)例參考模板_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

2、IC(3,0)    SEX      CHAR(2)    BPLACE  CHAR(20)    PRIMARY KEY(SNO) 例 2  對于表的教學(xué)管理數(shù)據(jù)庫中的表 ENROLLS ,可以定義如下:         CREATE  TABLE  ENROLLS         (SNO &

3、#160;    NUMERIC(6,0)  NOT NULL         CNO     CHAR(4)  NOT NULL         GRADE   INT         PRIMARY KEY(SNO,CNO)     &

4、#160;   FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO)         FOREIGN KEY(CNO) REFERENCES COURSES(CNO)         CHECK (GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100) 例 3  根據(jù)表的 STUDENTS 表,建立一個(gè)只包含學(xué)號、姓名、年齡的女學(xué)生表。   &#

5、160;     CREATE TABLE GIRL 1 / 14        AS SELECT SNO, SNAME, AGE         FROM STUDENTS         WHERE SEX=' 女 '   例 4  刪除教師表 TEACHER 。    

6、60;    DROP  TABLE  TEACHER 例 5  在教師表中增加住址列。        ALTER TABLE TEACHERS        ADD (ADDR CHAR(50) 例 6  把 STUDENTS 表中的 BPLACE 列刪除,并且把引用 BPLACE 列的所有視圖和約束也一起刪除。         ALT

7、ER TABLE STUDENTS         DROP BPLACE CASCADE 例 7  補(bǔ)充定義 ENROLLS 表的主關(guān)鍵字。        ALTER TABLE ENROLLS        ADD PRIMARY KEY (SNO,CNO) ;   視圖操作(虛表)   例 9  建立一個(gè)只包括教師號、姓名和年齡的視圖 FACULTY 。 ( 在

8、視圖定義中不能包含 ORDER BY 子句 )         CREATE VIEW FACULTY         AS SELECT TNO, TNAME, AGE         FROM TEACHERS 例 10  從學(xué)生表、課程表和選課表中產(chǎn)生一個(gè)視圖 GRADE_TABLE , 它包括學(xué)生姓名、課程名和成績。     &#

9、160;   CREATE VIEW GRADE_TABLE         AS SELECT  SNAME,CNAME,GRADE         FROM  STUDENTS,COURSES,ENROLLS         WHERE  STUDENTS.SNO ENROLLS.SNO AND    &

10、#160;    COURSES.CNO=ENROLLS.CNO 例 11  刪除視圖 GRADE_TABLE         DROP VIEW GRADE_TABLE RESTRICT   索引操作   例 12  在學(xué)生表中按學(xué)號建立索引。         CREATE  UNIQUE  INDEX  ST    

11、0;    ON STUDENTS (SNO,ASC) 例 13  刪除按學(xué)號所建立的索引。         DROP INDEX ST   數(shù)據(jù)庫模式操作   例 14  創(chuàng)建一個(gè)簡易教學(xué)數(shù)據(jù)庫的數(shù)據(jù)庫模式   TEACHING_DB ,屬主為 ZHANG 。         CREATE SCHEMA TEACHING_DB  AUTHRIZATION  

12、;ZHANG 例 15  刪除簡易教學(xué)數(shù)據(jù)庫模式 TEACHING_DB 。( 1 )選用 CASCADE ,即當(dāng)刪除數(shù)據(jù)庫模式時(shí),則本數(shù)據(jù)庫模式和其下屬的基本表、視圖、索引等全部被刪除。( 2 )選用 RESTRICT ,即本數(shù)據(jù)庫模式下屬的基本表、視圖、索引等事先已清除,才能刪除本數(shù)據(jù)庫模式,否則拒絕刪除。)         DROP SCHEMA TEACHING_DB CASCADE 單表操作   例 16  找出 3 個(gè)學(xué)分的課程號和課程名。    

13、60;     SELECT CNO, CNAME          FROM COURSES          WHERE CREDIT 3 例 17  查詢年齡大于 22 歲的學(xué)生情況。          SELECT  *       

14、;   FROM   STUDENTS          WHERE  AGE 22 例 18   找出籍貫為河北的男生的姓名和年齡。          SELECT SNAME, AGE          FROM STUDENTS     

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

16、;  STUDENTS          WHERE  AGE BETWEEN 20 AND 23          ORDER  BY  AGE 例 20  找出年齡小于 23 歲、籍貫是湖南或湖北的學(xué)生的姓名和性別。(條件比較運(yùn)算符、 和邏輯運(yùn)算符 AND (與),此外還可以使用的運(yùn)算符有:(大于)、(大于等于)、(小于等于)、(不等于)、 NOT (非)、 OR (或)等。 謂詞

17、LIKE 只能與字符串聯(lián)用,常常是 “ 列名   LIKE  pattern” 的格式。特殊字符 “_” 和 “%” 作為通配符。 謂詞 IN 表示指定的屬性應(yīng)與后面的集合(括號中的值集或某個(gè)查詢子句的結(jié)果)中的某個(gè)值相匹配,實(shí)際上是一系列的 OR (或)的縮寫。謂詞 NOT IN 表示指定的屬性不與后面的集合中的某個(gè)值相匹配。 謂詞 BETWEEN 是 “ 包含于 之中 ” 的意思。)         SELECT SNAME, SEX      

18、60;  FROM   STUDENTS         WHERE  AGE 23  AND  BPLACE  LIKE' 湖 '         或         SELECT SNAME, SEX         FROM&#

19、160;  STUDENTS         WHERE  AGE 23  AND  BPLACE  IN  ( ' 湖南 ' , ' 湖北 ' ) 例 22  找出學(xué)生表中籍貫是空值的學(xué)生的姓名和性別。(在 SQL 中不能使用條件:列名 NULL 。在 SQL 中只有一個(gè)特殊的查詢條件允許查詢 NULL 值:)        SELECT SNAME, SEX &

20、#160;      FROM   STUDENTS        WHERE  BPLACE IS NULL   多表操作   例 23  找出成績?yōu)?95 分的學(xué)生的姓名。(子查詢)         SELECT SNAME         FROM STUDENTS  &#

21、160;      WHERE SNO               (SELECT SNO                FROM   ENROLLS          

22、      WHERE  GRADE 95) 例 24  找出成績在 90 分以上的學(xué)生的姓名。         SELECT  SNAME         FROM   STUDENTS         WHERE  SNO IN     

23、;            (SELECT SNO                 FROM ENROLLS                 WHERE GRADE 90)  

24、60;      或         SELECT  SNAME         FROM   STUDENTS         WHERE  SNO ANY            

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

26、     SELECT  SNAME, CNO, GRADE         FROM   STUDENTS, ENROLLS         WHERE  STUDENTS.SNO ENROLLS.SNO 例 26  找出籍貫為山西或河北,成績?yōu)?90 分以上的學(xué)生的姓名、籍貫和成績。(當(dāng)構(gòu)造多表連接查詢命令時(shí),必須遵循兩條規(guī)則。第一,連接條件數(shù)正好比表數(shù)少 1 (

27、若有三個(gè)表,就有兩個(gè)連接條件 ) ;第二,若一個(gè)表中的主關(guān)鍵字是由多個(gè)列組成,則對此主關(guān)鍵字中的每一個(gè)列都要有一個(gè)連接條件(也有少數(shù)例外情況)         SELECT  SNAME, BPLACE, GRADE         FROM   STUDENTS, ENROLLS         WHERE  BPLACE IN ( 山西 , 河

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

29、0;                     FROM  STUDENTS, ENROLLS,COURSES                         W

30、HERE  SEX ' 女 ')         AS TEMP (SNAME, CNAME,GRADE)         WHERE  GRADE 80         表達(dá)式與函數(shù)的使用   例 29  查詢各課程的學(xué)時(shí)數(shù)。(算術(shù)表達(dá)式由算術(shù)運(yùn)算符、 * 、與列名或數(shù)值常量所組成。)       &

31、#160; SELECT  CNAME,COURSE_TIME CREDIT*16         FROM   COURSES 例 30  找出教師的最小年齡。(內(nèi)部函數(shù): SQL 標(biāo)準(zhǔn)中只使用 COUNT 、 SUM 、 AVG 、 MAX 、 MIN 函數(shù),稱之為聚集函數(shù)( Set Function )。 COUNT 函數(shù)的結(jié)果是該列統(tǒng)計(jì)值的總數(shù)目, SUM 函數(shù)求該列統(tǒng)計(jì)值之和, AVG 函數(shù)求該列統(tǒng)計(jì)值之平均值, MAX 函數(shù)求該列最大值, MIN 函數(shù)求該列最小值。) &#

32、160;       SELECT  MIN(AGE)         FROM   TEACHERS 例 31  統(tǒng)計(jì)年齡小于等于 22 歲的學(xué)生人數(shù)。(統(tǒng)計(jì))         SELECT  COUNT(*)         FROM   STUDENTS

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

34、OUP  BY SNO   例 34  找出年齡超過平均年齡的學(xué)生姓名。 SELECT SNAME FROM STUDENTS WHERE AGE       (SELECT  AVG(AGE)         FROM   STUDENTS)   例 35  找出各課程的平均成績,按課程號分組,且只選擇學(xué)生超過 3 人的課程的成績。( GROUP BY 與 HAVING  &

35、#160;      GROUP BY 子句把一個(gè)表按某一指定列(或一些列)上的值相等的原則分組,然后再對每組數(shù)據(jù)進(jìn)行規(guī)定的操作。         GROUP BY 子句總是跟在 WHERE 子句后面,當(dāng) WHERE 子句缺省時(shí),它跟在 FROM 子句后面。         HAVING 子句常用于在計(jì)算出聚集之后對行的查詢進(jìn)行控制。)       

36、;   SELECT CNO, AVG(GRADE), STUDENTS COUNT(*)          FROM ENROLLS          GROUP BY CNO          HAVING COUNT(*) >= 3   相關(guān)子查詢   例 37  查詢沒有選任何課程的學(xué)生的學(xué)號和

37、姓名。(當(dāng)一個(gè)子查詢涉及到一個(gè)來自外部查詢的列時(shí),稱為相關(guān)子查詢( Correlated Subquery) 。相關(guān)子查詢要用到存在測試謂詞 EXISTS 和 NOT EXISTS ,以及 ALL 、 ANY ( SOME )等。)         SELECT SNO, SNAME         FROM   STUDENTS         WHERE 

38、; NOT EXISTS               (SELECT *               FROM ENROLLS               WHERE ENROLLS.SNO=STUDENTS.

39、SNO) 例 38   查詢哪些課程只有男生選讀。         SELECT DISTINCT CNAME         FROM   COURSES C         WHERE ' 男 ' ALL           &#

40、160;    (SELECT SEX                 FROM  ENROLLS , STUDENTS                 WHERE ENROLLS.SNO=STUDENTS.SNO AND    

41、                   ENROLLS.CNO=C.CNO) 例 39  要求給出一張學(xué)生、籍貫列表,該表中的學(xué)生的籍貫省份,也是其他一些學(xué)生的籍貫省份。         SELECT  SNAME, BPLACE         FROM

42、60;  STUDENTS A         WHERE  EXISTS                (SELECT *                  FROM STUDENTS B  

43、60;               WHERE A.BPLACE=B.BPLACE AND                        A.SNO < > B.SNO)     例 40  找出選

44、修了全部課程的學(xué)生的姓名。         本查詢可以改為:查詢這樣一些學(xué)生,沒有一門課程是他不選修的。         SELECT  SNAME         FROM   STUDENTS         WHERE  NOT EXISTS   

45、60;            (SELECT *                 FROM COURSES                 WHERE  NOT EXISTS &#

46、160;                       (SELECT *                          FROM ENR

47、OLLS                          WHERE ENROLLS.SNO STUDENTS.SNO                     

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

49、; SP_MGR (SALPERS_ID, SALPERS_NAME, MANAGER_ID, OFFICE)         其中,屬性 SALPERS_ID 為工作人員的編號 , SALPERS_NAME 為工作人員的姓名 , MANAGER_ID 為所在部門經(jīng)理的編號 , OFFICE 為工作地點(diǎn)。 若查詢?nèi)可虉龉ぷ魅藛T,可以用下面的 SQL 語句:         (SELECT * FROM SP_SUBORD)   

50、60;     UNION         (SELECT * FROM SP_MGR)         或等價(jià)地用下面的 SQL 語句:         SELECT *         FROM (TABLE SP_SUBORD UNION TABLE SP_MGR) ( 2

51、 ) INTERSECT          (SELECT * FROM SP_SUBORD)          INTERSECT          (SELECT * FROM SP_MGR)         或等價(jià)地用下面的 SQL 語句:    

52、60;    SELECT *         FROM (TABLE SP_SUBORD INTERSECT TABLE SP_MGR)         或用帶 ALL 的 SQL 語句:         (SELECT * FROM SP_SUBORD)         INTERSE

53、CT ALL         (SELECT * FROM SP_MGR)         或         SELECT *         FROM (TABLE SP_SUBORD INTERSECT ALL TABLE SP_MGR) ( 3 ) EXCEPT     

54、    (SELECT * FROM SP_MGR)         EXCEPT         (SELECT * FROM SP_SUBORD)         或等價(jià)地用下面的 SQL 語句:         SELECT *     

55、60;   FROM (TABLE SP_MGR EXCEPT TABLE SP_ SUBORD)         或用帶 ALL 的 SQL 語句:         (SELECT * FROM SP_MGR)         EXCEPT  ALL         (SELECT *

56、FROM SP_SUBORD) 例 42  查詢籍貫為四川、課程成績在 80 分以上的學(xué)生信息及其成績。(自然連接)         (SELECT * FROM STUDENTS          WHERE BPLACE= 四川 )         NATURAL JOIN         (S

57、ELECT * FROM ENROLLS          WHERE GRADE >=80) 例3.43          列出全部教師的姓名及其任課的課程號、班級。 (外連接與外部并外連接允許在結(jié)果表中保留非匹配元組,空缺部分填以 NULL 。外連接的作用是在做連接操作時(shí)避免丟失信息。         外連接有 3 類: ( 1 )左外連接( Le

58、ft Outer Join )。連接運(yùn)算謂詞為 LEFT OUTER JOIN ,其結(jié)果表中保留左關(guān)系的所有元組。 ( 2 )右外連接( Right Outer Join )。連接運(yùn)算謂詞為 RIGHT OUTER JOIN ,其結(jié)果表中保留右關(guān)系的所有元組。 ( 3 )全外連接( Full Outer Join )。連接運(yùn)算謂詞為 FULL OUTER JOIN ,其結(jié)果表中保留左右兩關(guān)系的所有元組。)           SELECT TNAME, CNO, CLASS   

59、60;       FROM TEACHERS LEFT OUTER JOIN TEACHING USING (TNO)   SQL 的數(shù)據(jù)操縱   例 44  把教師李映雪的記錄加入到教師表 TEACHERS 中。(插入)         INSERT INTO TEACHERS         VALUES(1476 , ' 李映雪 ' , 44

60、, ' 副教授 ') 例 45  成績優(yōu)秀的學(xué)生將留下當(dāng)教師。         INSERT INTO TEACHERS (TNO , TNAME)         SELECT DISTINCT SNO , SNAME         FROM   STUDENTS , ENROLLS     

61、60;   WHERE STUDENTS.SNO ENROLLS.SNO AND GRADE 90 例 47  把所有學(xué)生的年齡增加一歲。(修改)         UPDATE STUDENTS         SET AGE AGE+1 例 48  學(xué)生張春明在數(shù)據(jù)庫課考試中作弊,該課成績應(yīng)作零分計(jì)。         UPDATE ENROLLS

62、         SET GRADE 0         WHERE CNO 'C1' AND              ' 張春明 '              (SELECT SNAM

63、E              FROM STUDENTS              WHERE STUDENTS.SNO=ENROLLS.SNO) 例 49  從教師表中刪除年齡已到 60 歲的退休教師的數(shù)據(jù)。(刪除)         DELETE FROM TEACHERS &

64、#160;       WHERE  AGE 60   SQL 的數(shù)據(jù)控制   例 50  授予 LILI 有對表 STUDENTS 的查詢權(quán)。(表視圖特權(quán)的授予         一個(gè) SQL 特權(quán)允許一個(gè)被授權(quán)者在給定的數(shù)據(jù)庫對象上進(jìn)行特定的操作。授權(quán)操作的數(shù)據(jù)庫對象包括:表 / 視圖、列、域等。授權(quán)的操作包括: INSERT 、 UPDATE 、 DELETE 、 SELECT 、 REFERENCES 、 TRIGGER

65、 、 UNDER 、 USAGE 、 EXECUTE 等。其中 INSERT 、 UPDATE 、 DELETE 、 SELECT 、 REFERENCES 、 TRIGGER 有對表做相應(yīng)操作的權(quán)限,故稱為表特權(quán)。)         GRANT SELECT ON STUDENTS         TO LILI         WITH GRANT OPTION 例 51 

66、 取消 LILI 的存取 STUDENTS 表的特權(quán)。         REVOKE ALL         ON STUDENTS         FROM LILI CASCADE   不斷補(bǔ)充中:1.  模糊查找:它判斷列值是否與指定的字符串格式相匹配。可用于char、varchar、text、ntext、datetime和smalldatetime等類型查詢。

67、 可使用以下通配字符: 百分號%:可匹配任意類型和長度的字符,如果是中文,請使用兩個(gè)百分號即%。 下劃線_:匹配單個(gè)任意字符,它常用來限制表達(dá)式的字符長度。 方括號:指定一個(gè)字符、字符串或范圍,要求所匹配對象為它們中的任一個(gè)。:其取值也 相同,但它要求所匹配對象為指定字符以外的任一個(gè)字符。 例如: 限制以Publishing結(jié)尾,使用LIKE '%Publishing' 限制以A開頭:LIKE 'A%' 限制以A開頭外:LIKE 'A%'2.更改表格        

68、ALTER TABLE table_name          ADD COLUMN column_name DATATYPE          說明:增加一個(gè)欄位(沒有刪除某個(gè)欄位的語法。)         ALTER TABLE table_name  &

69、#160;      ADD PRIMARY KEY (column_name)         說明:更改表得的定義把某個(gè)欄位設(shè)為主鍵。         ALTER TABLE table_name         DROP PRIMARY KEY (column_name)         說明:把主鍵的定義刪除。 3.group by 在select 語句中可以使用group by 子句將行劃分成較小的組,然后,使用聚組函數(shù)返回每一個(gè)組的匯總信息,另外,可以使用having子句限制返回的結(jié)果集。group by 子句可以將查詢結(jié)果分組,并

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論