《專升本輔導(dǎo)第5章SQL語言》由會(huì)員分享,可在線閱讀,更多相關(guān)《專升本輔導(dǎo)第5章SQL語言(24頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、2020/9/3,1,第5章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL,目 錄,上一頁,下一頁,退 出,2020/9/3,2,本 章 要 點(diǎn),5.1SQL語言的基本概念 5.2數(shù)據(jù)定義 5.3SQL中的數(shù)據(jù)查詢語句,思考題,2020/9/3,3,1綜合統(tǒng)一 SQL語言集數(shù)據(jù)定義(DDL)、數(shù)據(jù)操縱(DML)、數(shù)據(jù)管理(DCL)的功能于一體,語言風(fēng)格統(tǒng)一,可以獨(dú)立完成數(shù)據(jù)庫的全部操作,包括定義關(guān)系模式、錄入數(shù)據(jù)及建立數(shù)據(jù)庫、查詢、更新、維護(hù)數(shù)據(jù)、數(shù)據(jù)庫的重新構(gòu)造、數(shù)據(jù)庫安全性等一系列操作的要求,為數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)者提供了良好的環(huán)境。 2高度非過程化 3面向集合的操作方式 4以同一種語法結(jié)構(gòu)提供兩種使用
2、方式 5語言簡潔,易學(xué)易用,,5.1.1 SQL語言的特點(diǎn),2020/9/3,4,操作對象:表、索引和視圖 三個(gè)命令:表的建立(CREATE)、表的刪除(DROP) 表的修改(ALTER) 5.2.1 定義(創(chuàng)建)表 【格式】CREATE TABLE ( (,) CHECK ERROR 字符型文本信息 DEFAULT PRIMARY KEY | UNIQUE NULL | NOT NULL ,) 【功能】定義(也稱創(chuàng)建)一個(gè)表。,5.2 數(shù)據(jù)定義,2020/9/3,5,【例5-1】創(chuàng)建一個(gè)表STUD(學(xué)生信息表),它由以下字段組成:學(xué)號 (C,
3、10);姓名(C,8);性別(C,2);班級名(C,10);系別代號(C,2);地址(C,50);出生日期 (D);是否團(tuán)員 (L);備注 (M)。 CREATE TABLE STUD(學(xué)號C(10),姓名 C(10),性別 C(2),班級名 C(10),系別代號 C(2),地址 C(50),出生日期 D,是否團(tuán)員 L,備注 M,照片 G) LIST STRUCTURE 【例5-2】創(chuàng)建一個(gè)表SC(課程成績表),它由以下字段組成:學(xué)號(C,10);課程號(C,2)。 CREATE TABLE SC(學(xué)號 C(10),課程號 C(2)) LIST STRUCTURE,2020/9/3,6,5.3
4、 SQL中的數(shù)據(jù)查詢語句,數(shù)據(jù)庫中的數(shù)據(jù)很多時(shí)侯是為了查詢的,因此,數(shù)據(jù)查詢是數(shù)據(jù)庫的核心操作。而在SQL語言中,查詢語言中有一條查詢命令,即SELECT語句。,2020/9/3,7,5.3.1 基本查詢語句 【格式】SELECT ALL | DISTINCT TOP AS , AS FROM 【功能】無條件查詢。 【說明】ALL: 表示顯示全部查詢記錄,包括重復(fù)記錄。 DISTINCT: 表示顯示無重復(fù)結(jié)果的記錄。,2020/9/3,8,【例5-3】顯示STUD(學(xué)生信息數(shù)據(jù)表)中的所有記錄。 SELECT * ; FROM STUD 命令中
5、的*表示輸出顯示所有的字段,數(shù)據(jù)來源是STUD表,表中的內(nèi)容以瀏覽方式顯示。 【例5-4】顯示STUD(學(xué)生信息數(shù)據(jù)表)中的所有的學(xué)號及與之對應(yīng)的姓名,同時(shí)能去除重復(fù)記錄。 SELECT DISTINCT 學(xué)號,姓名; FROM STUD,2020/9/3,9,【例5-5】顯示SC(課程成績表)中的所有記錄,并將成績一項(xiàng)乘以0.7。 SELECT 學(xué)號,課程號,成績*0.7 AS 成績; FROM SC,2020/9/3,10,5.3.2 帶條件(WHERE)的查詢語句 【格式】SELECT FROM WHERE 【功能】從一個(gè)表中查詢滿足條件的數(shù)據(jù)。 【說明】由一系列用A
6、ND 或 OR 連接的條件表達(dá)式組成,條件表達(dá)式的格式可以是以下幾種:,2020/9/3,11,【例5-6】顯示STUD表中所有男生記錄的學(xué)號,姓名和性別字段值。 SELECT 學(xué)號,姓名,性別 ; FROM STUD WHERE 性別=男 【例5-7】顯示STUD表中出生日期在85年之間的學(xué)生的學(xué)號,姓名,出生日期。 SELECT 學(xué)號,姓名,出生日期 ; FROM STUD ; WHERE 出生日期 BETWEEN 01/01/85 AND; 12/31/86,2020/9/3,12,【例5-8】顯示STUD表中姓李的學(xué)生的學(xué)號,姓名,出生日期。 SELECT 學(xué)號,姓名,出生日期; FR
7、OM STUD ; WHERE 姓名 LIKE “李%”,2020/9/3,13,5.3.3 SQL的復(fù)雜查詢,1連接查詢 【說明】在一個(gè)數(shù)據(jù)庫中的多個(gè)表之間一般都存在著某些聯(lián)系,在一個(gè)查詢語句中同時(shí)涉及到兩個(gè)或兩個(gè)以上的表時(shí),這種查詢稱之為連接查詢(也稱為多表查詢)。在多表之間查詢必須處理表與表之間的連接關(guān)系。 【格式】SELECT FROM , .. WHERE ,2020/9/3,14,【例5-9】查詢并顯示各個(gè)學(xué)生的學(xué)號,姓名,各科成績及課程名。 SELECT a.學(xué)號,a.姓名,b.課程名,c.成績 ; FROM STUD a,COURSE b,SC
8、 c ; WHERE a.學(xué)號=c.學(xué)號 AND b.課程號=c.課程號 【例5-10】查詢并顯示各個(gè)學(xué)生所學(xué)課程的情況。 SELECT STUD.學(xué)號,STUD.姓名,COURSE.課程名 ; FROM STUD,SC,COURSE ; WHERE STUD.學(xué)號=SC.學(xué)號 AND SC.課程號=COURSE.課程號,2020/9/3,15,(1)內(nèi)連接 【格式】SELECT FROM INNER JOIN ON 內(nèi)連接是指包括符合條件的每個(gè)表的記錄,也稱之為全記錄操作。而上面兩個(gè)例子就是內(nèi)連接。 【例5-11】查詢并顯示各個(gè)學(xué)生的學(xué)號,所學(xué)課程及課程成績。 SEL
9、ECT SC.學(xué)號,COURSE.課程名,SC.成績 ; FROM SC,COURSE ; WHERE SC.課程號=COURSE.課程號,2020/9/3,16,如果采用內(nèi)連接方式,則命令如下: SELECT a.學(xué)號,b.課程名,成績 ; FROM SC a INNER JOIN COURSE b ; ON a.課程號=b.課程號 將會(huì)得到完全相同的結(jié)果。 (2)外連接 外連接是指把兩個(gè)表分為左右兩個(gè)表。右外連接是指連接滿足條件右側(cè)表的全部記錄。左外連接是指連接滿足條件左側(cè)表的全部記錄。全外連接是指連接滿足條件表的全部記錄。,2020/9/3,17,2分組與計(jì)算查詢 【格式】SELECT
10、ALL | DISTINCT FROM WHERE GROUP BY HAVING ORDER BY ASC | DESC 【功能】包括有排序、函數(shù)運(yùn)算和謂詞演算,2020/9/3,18,【例5-12】按出生日期降序顯示STUD表中的學(xué)號,姓名,出生日期。 SELECT 學(xué)號,姓名,出生日期 ; FROM STUD ; ORDER BY 出生日期 DESC 【例5-13】按成績升序顯示SC表中的學(xué)號,課程號,成績。 SELECT 學(xué)號,課程號,成績 ; FROM SC ; ORDER BY 成績,2020/9/3,19,【例5-13】按班級分類顯示學(xué)生的姓名,課程名,成績,同
11、一班級按分?jǐn)?shù)排序。 SELECT a.姓名,a.班級名,c.課程名,b.成績 ; FROM STUD a,SC b,COURSE c ; WHERE a.學(xué)號=b.學(xué)號 AND b.課程號=c.課程號; ORDER BY a.班級名,b.成績; 【例5-14】顯示成績在80至90之間的學(xué)號,姓名,課程名和成績。 SELECT a.姓名,c.課程名,b.成績 ; FROM STUD a,SC b,COURSE c ; WHERE a.學(xué)號=b.學(xué)號 AND b.課程號=c.課程號 ; AND b.成績 BETWEEN 80 AND 90,2020/9/3,20,【例5-14】顯示計(jì)算機(jī)系學(xué)生的成
12、績。 SELECT a.姓名,a.系別代號,c.課程名,b.成績 ; FROM STUD a,SC b,COURSE c ; WHERE a.學(xué)號=b.學(xué)號 AND b.課程號=c.課程號 ; AND a.系別代號=“01” 【例5-15】顯示各班總?cè)藬?shù)。 SELECT 班級名,COUNT(班級名) AS 總?cè)藬?shù) ; FROM STUD ; GROUP BY 班級名,2020/9/3,21,【例5-16】顯示計(jì)算機(jī)系的學(xué)生及所有男學(xué)生。 SELECT 學(xué)號,姓名,系別代號,性別 ; FROM STUD ; WHERE 系別代號=01 UNION ; SELECT 學(xué)號,姓名,系別代號,性別 ;
13、 FROM STUD ; WHERE 性別=男 【例5-17】顯示選修了英語或數(shù)學(xué)科目的學(xué)生學(xué)號。 SELECT 學(xué)號,課程號 FROM SC ; WHERE 課程號=01 UNION ; SELECT 學(xué)號,課程號 ; FROM SC ; WHERE 課程號=02,2020/9/3,22,【例5-18】顯示計(jì)算機(jī)系男生的名單。 SELECT 學(xué)號,姓名,系別代號,性別 ; FROM STUD ; WHERE 系別代號=“01” AND 性別=“男” 【例5-19】顯示既選修了01課程又選修了02課程學(xué)生的名單。 SELECT 學(xué)號 ; FROM SC ; WHERE 課程號=“01” AND
14、 學(xué)號 IN ; (SELECT 學(xué)號 FROM SC WHERE 課程號=“02”),2020/9/3,23,【例5-20】顯示計(jì)算機(jī)系非男生的名單。 SELECT 學(xué)號,姓名,系別代號,性別 ; FROM STUD ; WHERE 系別代號=“01” AND 性別=“女” 【例5-21】顯示選修了01課程而沒有選修02課程學(xué)生的名單。 SELECT 學(xué)號 ; FROM SC ; WHERE 課程號=“01” AND 學(xué)號 NOT IN ; (SELECT 學(xué)號 FROM SC WHERE 課程號=“02”),2020/9/3,24,3查詢?nèi)ハ?默認(rèn)情況下,查詢輸出到一個(gè)瀏覽窗口,用戶在“SELECT”語句中可使用INTO|TO FILE|TO SCREEN| TO PRINTER子句選擇查詢?nèi)ハ颍?INTO ARRAY 數(shù)組名:將查詢結(jié)果保存到一個(gè)數(shù)組中。 CURSOR:將查詢結(jié)果保存到一個(gè)臨時(shí)表中。 DBF | TABLE :將查詢結(jié)果保存到一個(gè)永久表中。 TO FILEADDITIVE:將查詢結(jié)果保存到文本文件中。如果帶“ADDITIVE”關(guān)鍵字,查詢結(jié)果以追加方式添加到指定的文件,否則,以新建或覆蓋方式添加到指定的文件。 TO SCREEN:將查詢結(jié)果保在屏幕上顯示。 TO PRINTER:將查詢結(jié)果送打印機(jī)打印。,