第六章 結(jié)構(gòu)化查詢語言(SQL)_第1頁
第六章 結(jié)構(gòu)化查詢語言(SQL)_第2頁
第六章 結(jié)構(gòu)化查詢語言(SQL)_第3頁
第六章 結(jié)構(gòu)化查詢語言(SQL)_第4頁
第六章 結(jié)構(gòu)化查詢語言(SQL)_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第六章

結(jié)構(gòu)化查詢語言(SQL)

1本章目錄第一節(jié)SQL概述第二節(jié)數(shù)據(jù)定義功能第三節(jié)數(shù)據(jù)操縱功能第四節(jié)數(shù)據(jù)查詢功能

2SQL語言集數(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)境。第一節(jié)SQL概述3數(shù)據(jù)定義語言DDL用于執(zhí)行數(shù)據(jù)定義的操作,如創(chuàng)建或刪除表、索引和視圖之類的對象。由CREATE、DROP、ALTER命令組成,完成數(shù)據(jù)庫對象的建立(CREATE)、刪除(DROP)和修改(ALTER)。一、定義(創(chuàng)建)表【格式】CREATETABLE<表名>(<字段名1><數(shù)據(jù)類型>[(<寬度>[,<小數(shù)位數(shù)>])][完整性約束][NULL|NOTNULL][,<字段名2>…])【功能】定義(也稱創(chuàng)建)一個(gè)表。第二節(jié)

數(shù)據(jù)定義功能4【例5-1】創(chuàng)建一個(gè)表STUD(學(xué)生信息表),它由以下字段組成:學(xué)號(C,10);姓名(C,8);性別(C,2);班級名(C,10);系別代號(C,2);地址(C,50);出生日期(D);是否團(tuán)員(L);備注(M)。CREATETABLESTUD(學(xué)號C(10),姓名

C(10),性別

C(2),班級名

C(10),系別代號

C(2),地址

C(50),出生日期

D,是否團(tuán)員

L,備注

M,照片

G)LISTSTRUCTURE【例5-2】創(chuàng)建一個(gè)表SC(課程成績表),它由以下字段組成:學(xué)號(C,10);課程號(C,2)。CREATETABLESC(學(xué)號

C(10),課程號

C(2))LISTSTRUCTURE5【例5-3】利用SQL命令建立“圖書管理”數(shù)據(jù)庫,其中包含4個(gè)表:讀者表、作者表、圖書表、借書表。操作步驟如下:1.創(chuàng)建數(shù)據(jù)庫:CREATEDATABASE圖書管理2.用SQL命令建立“讀者”表:CREATETABLE讀者(讀者編號C(9)NOTNULL;PRIMARYKEY,姓名C(8),性別C(2)CHECK(性別=“;男”O(jiān)R性別=“女”)DEFAULT“男”,出身日期D,少;數(shù)民族否L,籍貫C(10),聯(lián)系電話C(8),照片G)

說明:該命令在當(dāng)前打開的圖書管理數(shù)據(jù)庫中建立讀者表,其中讀者編號為主關(guān)鍵字,用CHECK對性別字段值說明了有效性規(guī)則,并設(shè)定了性別字段默認(rèn)值為“男”。6【格式】ALTERTABLE<表名>[ADD|ALTER<字段名><數(shù)據(jù)類型>[(<寬度>[,<小數(shù)位數(shù)>])][完整性約束][NULL|NOTNULL]【功能】修改表結(jié)構(gòu)?!菊f明】ADD用于增加字段,ALTER為修改字段?!纠?-4】在課程成績表SC中,增加一個(gè)成績字段變量(N,3)。ALTERTABLESCADD成績

N(3)LISTSTRUCTURE二、修改表7

三、刪除表【格式】DROPTALBE<表名>【功能】刪除指定表的結(jié)構(gòu)和內(nèi)容(包括在此表上建立的索引)?!菊f明】如果只是想刪除一個(gè)表中的所有記錄,則應(yīng)使用DELETE語句。8

數(shù)據(jù)操縱語言一般由INSERT(插入)、DELETE(刪除)、UPDATE(更新),SELETE(檢索,又稱查詢)等組成,由于SELETE比較特殊,所以一般又將它以查詢(檢索)語言單獨(dú)出現(xiàn)。第三節(jié)數(shù)據(jù)操縱功能9【格式】INSERTINTO<表名>[<字段名表>]VALUES(<表達(dá)式表>)【功能】在指定的表文件末尾追加一條記錄。格式1用表達(dá)式表中的各表達(dá)式值賦值給<字段名表>中的相應(yīng)的各字段?!菊f明】如果某些字段名在INTO子句中沒有出現(xiàn),則新記錄在這些字段名上將取空值(或默認(rèn)值)。但必須注意的是,在表定義說明了NOTNULL的字段名不能取空值。

<字段名表>:指定表文件中的字段,缺省時(shí),按表文件字段的順序依次賦值。一、插入記錄10【例5-6】在表文件STUD的末尾追加記錄。INSERTINTOSTUD(學(xué)號,姓名,性別,班級名,系別代號,地址,出生日期,是否團(tuán)員);VALUES("011110","李建國","男","計(jì)0121","01","湖北武漢",{^09/28/02},.T.)11【格式】UPDATE<表文件名>SET<字段名1>=<表達(dá)式>[,<字段名2>=<表達(dá)式>…][WHERE<條件>]【功能】更新指定表文件中滿足WHERE條件子句的數(shù)據(jù)。其中SET子句用于指定列和修改的值,WHERE用于指定更新的行,如果省略WHERE子句,則表示表中所有行?!菊f明】更新操作又稱為修改操作?!纠?-7】將成績表(SC)中,所有課程號為02的成績各加5分。

UPDATESCSET成績=成績+5;

WHERE課程號="02"二、更新記錄命令12三、刪除記錄【格式】DELETEFROM<表名>WHERE<表達(dá)式>【功能】從指定的表中刪除滿足WHERE子句條件的所有記錄。如果在DELETE語句中沒有WHERE子句,則該表中的所有記錄都將被刪除?!菊f明】這里的刪除是邏輯刪除,即在刪除的記錄前加上一個(gè)刪除標(biāo)記“*”?!纠?-8】刪除STUD表中所有性別為男的記錄。

DELETEFROMSTUDWHERE性別=“男”PACK13第四節(jié)

數(shù)據(jù)查詢功能

數(shù)據(jù)庫中的數(shù)據(jù)很多時(shí)侯是為了查詢的,因此,數(shù)據(jù)查詢是數(shù)據(jù)庫的核心操作。而在SQL語言中,查詢語言中有一條查詢命令,即SELECT語句。一、基本查詢語句【格式】SELECT<字段列表>FROM<表>【功能】無條件查詢?!菊f明】DISTINCT:表示顯示無重復(fù)結(jié)果的記錄。14【例5-9】顯示STUD(學(xué)生信息數(shù)據(jù)表)中的所有記錄。SELECT*FROMSTUD

命令中的*表示輸出顯示所有的字段,數(shù)據(jù)來源是STUD表,表中的內(nèi)容以瀏覽方式顯示?!纠?-10】顯示STUD(學(xué)生信息數(shù)據(jù)表)中的所有的學(xué)號及與之對應(yīng)的姓名,同時(shí)能去除重名。SELECTDISTINCT學(xué)號,姓名;FROMSTUD15【例5-11】顯示SC(課程成績表)中的所有記錄,并將成績一項(xiàng)乘以0.7。SELECT學(xué)號,課程號,成績*0.7AS成績;FROMSC二、帶條件(WHERE)的查詢語句【格式】SELECT<字段列表>FROM<表>;

WHERE<條件表達(dá)式>【功能】從一個(gè)表中查詢滿足條件的數(shù)據(jù)?!菊f明】<條件表達(dá)式>由一系列用AND或OR連接的條件表達(dá)式組成,條件表達(dá)式的格式可以是以下幾種:16(1)<字段名1><關(guān)系運(yùn)算符><字段名2>。(2)<字段名><關(guān)系運(yùn)算符><表達(dá)式>。(3)<字段名>[NOT]BETWEEN<起始值>AND<終止值>(4)<字段名>[NOT]IN(<子查詢>)(6)<字段名>[NOT]LINK<字符表達(dá)式>17SQL支持的關(guān)系運(yùn)算符如下:=、<>、?。?、#、==、>、>=、<、<=?!纠?-12】顯示STUD表中所有男生記錄的學(xué)號,姓名和性別字段值。SELECT學(xué)號,姓名,性別;FROMSTUDWHERE性別="男"【例5-13】顯示STUD表中出生日期在82年之間的學(xué)生的學(xué)號,姓名,出生日期。SELECT學(xué)號,姓名,出生日期;FROMSTUD;WHERE出生日期BETWEEN{^01/01/82}AND{^12/31/82}18【例5-14】顯示STUD表中姓李的學(xué)生的學(xué)號,姓名,出生日期。SELECT學(xué)號,姓名,出生日期;FROMSTUD;WHERE姓名

LIKE“李%”19三、SQL的復(fù)雜查詢1.連接查詢【說明】在一個(gè)數(shù)據(jù)庫中的多個(gè)表之間一般都存在著某些聯(lián)系,在一個(gè)查詢語句中同時(shí)涉及到兩個(gè)或兩個(gè)以上的表時(shí),這種查詢稱之為連接查詢(也稱為多表查詢)。在多表之間查詢必須處理表與表之間的連接關(guān)系。

SELECT<字段列表>

FROM<表1>[,表2…..]

WHERE<條件表達(dá)式>20【例5-15】查詢并顯示各個(gè)學(xué)生的學(xué)號,姓名,各科成績及課程名。SELECTa.學(xué)號,a.姓名,b.課程名,c.成績;FROMSTUDa,COURSEb,SCc;WHEREa.學(xué)號=c.學(xué)號.AND.b.課程號=c.課程號【例5-16】查詢并顯示各個(gè)學(xué)生所學(xué)課程的情況。SELECTSTUD.學(xué)號,STUD.姓名,COURSE.課程名;FROMSTUD,SC,COURSE;WHERESTUD.學(xué)號=SC.學(xué)號.AND.SC.課程號=COURSE.;課程號212.連接問題在SQL語句中,在FROM子句中提供了一種稱之為連接的子句。【例5-17】查詢并顯示各個(gè)學(xué)生的學(xué)號,所學(xué)課程及課程成績。SELECTSC.學(xué)號,COURSE.課程名,SC.成績;FROMSC,COURSE;WHERESC.課程號=COURSE.課程號內(nèi)連接方式:SELECTa.學(xué)號,b.課程名,成績;FROMSCaINNERJOINCOURSEbON;a.課;程號=b.課程號223.嵌套查詢在SQL語句中,一個(gè)SELECT-FROM-WHERE語句稱為一個(gè)查詢塊。將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢或子查詢?!纠?-18】顯示“沈小霞”所在系的學(xué)生名單。SELECT學(xué)號,姓名,系別代號;FROMSTUD;WHERE系別代號=(SELECT系別代號;FROMSTUDWHERE姓名="沈小霞")234.分組與計(jì)算查詢【格式】SELECT<字段列表>

FROM<表>[WHERE<條件>][GROUPBY<分類字段列表>…][HAVING<過濾條件>][ORDERBY<排序項(xiàng)>[ASC|DESC]]【功能】包括有排序、函數(shù)運(yùn)算和謂詞演算24【例5-19】按出生日期降序顯示STUD表中的學(xué)號,姓名,出生日期。SELECT學(xué)號,姓名,出生日期;FROMSTUD;ORDERBY出生日期

DESC【例5-20】按成績升序顯示SC表中的學(xué)號,課程號,成績。SELECT學(xué)號,課程號,成績;FROMSC;ORDERBY成績25【例5-21】按班級分類顯示學(xué)生的姓名,課程名,成績,同一班級按分?jǐn)?shù)降序。SELECT姓名,班級名,c.課程名,b.成績;FROMSTUDaINNERJOINSCbINNERJOIN;KCONb.課程號=c.課程號ONa.學(xué)號=b.學(xué)號;ORDERBYa.班級名,b.成績DESC;26【例5-24】顯示男女生人數(shù)。SELECT性別,COUNT(性別)

AS人數(shù);FROMSTUD;GROUPBY性別27【例5-28】顯示既選修了kc0001課程又選修了kc0002課程學(xué)生的名單。SELECT學(xué)號;FROMSC;WHERE課程號=“kc0001”AND學(xué)號

IN;(SELECT學(xué)號

FROMSC;WHERE課程號=“kc0002”)28【例5-30】顯示選修了kc0001課程而沒有選修kc0002課程學(xué)生的名單。SELECT學(xué)號;FROMSC;WHERE課程號=“kc0001”AND學(xué)號

溫馨提示

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

評論

0/150

提交評論