




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、用戶從鍵盤上輸入一個大用戶從鍵盤上輸入一個大于于10的偶數,程序將其的偶數,程序將其分解為兩個質數之和,并分解為兩個質數之和,并顯示出分解的結果。顯示出分解的結果。 關系數據庫標準語關系數據庫標準語言言SQL32022-3-2n3.1 SQL概述概述n3.2 數據定義數據定義n3.3 查詢查詢n3.4 數據更新數據更新n3.5 視圖視圖n3.6 數據控制數據控制42022-3-2nSQL簡介簡介結構化查詢語言結構化查詢語言SQL(Structured Query Language)是一種介于關系代數與關系演算之間的語言,其)是一種介于關系代數與關系演算之間的語言,其功能包括查詢、操縱、定義和控
2、制四個方面,是一功能包括查詢、操縱、定義和控制四個方面,是一個通用的、功能極強的關系數據庫語言。目前已成個通用的、功能極強的關系數據庫語言。目前已成為關系數據庫的標準語言。為關系數據庫的標準語言。SQL語言的版本包括:語言的版本包括:SQL-89,SQL-92, SQL3SQL語言集數據查詢(語言集數據查詢(data query)、數據操縱()、數據操縱(data manipulation)、數據定義()、數據定義(data definition)和數據控制(和數據控制(data control)功能于一體,充分體現)功能于一體,充分體現了關系數據語言的特點和優點了關系數據語言的特點和優點52
3、022-3-2n綜合統一綜合統一SQL語言集數據定義語言語言集數據定義語言DDL、數據操縱語言、數據操縱語言DML、數據控制語言、數據控制語言DCL的功能于一體,可以完成數據的功能于一體,可以完成數據庫生命周期中的全部活動。庫生命周期中的全部活動。關系模型中實體和實體間的聯系都用關系來表示,關系模型中實體和實體間的聯系都用關系來表示,使得操作符單一,每種操作只使用一個操作符。使得操作符單一,每種操作只使用一個操作符。n高度非過程化高度非過程化使用使用SQL語言,只需要提出語言,只需要提出“做什么做什么”,而無需指,而無需指明明“怎么做怎么做”,無需了解存取路徑,提高了數據的,無需了解存取路徑,
4、提高了數據的獨立性獨立性n面向集合的操作方式面向集合的操作方式SQL語言采用集合操作方式,查詢、插入、刪除、語言采用集合操作方式,查詢、插入、刪除、修改操作的對象都是結合。修改操作的對象都是結合。62022-3-2n以同一種語法結構提供兩種使用方式以同一種語法結構提供兩種使用方式作為自含式語言作為自含式語言提供聯機交互工具,提供聯機交互工具,在終端鍵盤上直接鍵入在終端鍵盤上直接鍵入SQL命令對數據庫進行操作命令對數據庫進行操作,由由DBMS來進行解釋來進行解釋作為嵌入式語言作為嵌入式語言, SQL語句能嵌入到高級語言程序中語句能嵌入到高級語言程序中使應用程序充分利用使應用程序充分利用SQL訪問
5、數據庫的能力、宿訪問數據庫的能力、宿主主 語言的過程處理能力語言的過程處理能力一般需要預編譯,將嵌入的一般需要預編譯,將嵌入的SQL語句轉化為宿主語句轉化為宿主語言編譯器能處理的語句語言編譯器能處理的語句72022-3-2n語言簡潔,易學易用,核心功能語言簡潔,易學易用,核心功能9個動詞個動詞82022-3-2nSQL語言支持關系數據庫三級模式語言支持關系數據庫三級模式92022-3-2n存儲文件存儲文件其邏輯結構組成了數據庫的內模式,物理結構有數其邏輯結構組成了數據庫的內模式,物理結構有數據庫廠商所有,對用戶透明。據庫廠商所有,對用戶透明。n基本表(基表,基本表(基表,Base Table)
6、本身獨立存在的表,對應于模式,一個關系對應于本身獨立存在的表,對應于模式,一個關系對應于一個表,表可以有一到多個索引,以提高查詢速度一個表,表可以有一到多個索引,以提高查詢速度n視圖(視圖(View)從一個或多個表或視圖中導出的表,對應于外模式從一個或多個表或視圖中導出的表,對應于外模式,本身不獨立存在,數據庫中只存放其定義,是虛,本身不獨立存在,數據庫中只存放其定義,是虛表。表。一般可以象使用基本表一樣來使用視圖?一般可以象使用基本表一樣來使用視圖?。102022-3-2n3.2.1 定義、刪除與修改基本表定義、刪除與修改基本表n3.2.2 建立與刪除索引建立與刪除索引112022-3-2n
7、1. 定義基本表定義基本表CREATE TABLE ( , , ););:所要定義的基本表的名字:所要定義的基本表的名字:組成該表的各個屬性(列):組成該表的各個屬性(列):涉及相應屬性列的完整性約束條件:涉及相應屬性列的完整性約束條件:涉及一個或多個屬性列的完整性約:涉及一個或多個屬性列的完整性約束條件束條件 122022-3-2例例1 建立一個建立一個“學生學生”表表Student,它由學號,它由學號Sno、姓名、姓名Sname、性別、性別Ssex、年齡、年齡Sage、所在系、所在系Sdept五個屬性五個屬性組成。其中學號不能為空,值是唯一的,并且姓名取組成。其中學號不能為空,值是唯一的,
8、并且姓名取值也唯一。值也唯一。CREATE TABLE Student (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20) UNIQUE, Ssex CHAR(1) , Sage INT, Sdept CHAR(15); SnoSnameSsexSageSdept 字字符符型型 字字符符型型 字字符符型型 整整數數 字字符符型型 長長度度為為5 5 長長度度為為2 20 0 長長度度為為1 1 長長度度為為1 15 5 不不能能為為空空值值132022-3-2n常用完整性約束常用完整性約束主碼約束:主碼約束: PRIMARY KEY唯一性約束:唯一性約束:
9、UNIQUE非空值約束:非空值約束:NOT NULL參照完整性約束參照完整性約束PRIMARY KEY與與 UNIQUE的區別?的區別?142022-3-2nPRIMARY KEY通過主鍵可強制表的實體完整性通過主鍵可強制表的實體完整性; PRIMARY KEY 約束中的列不能接受空值。約束中的列不能接受空值。當為表指定當為表指定 PRIMARY KEY 約束時,約束時,SQL Server2000 通過通過為主鍵列創建唯一索引強制數據的唯一性。當在查詢中使用為主鍵列創建唯一索引強制數據的唯一性。當在查詢中使用主鍵時,該索引還可用來對數據進行快速訪問主鍵時,該索引還可用來對數據進行快速訪問nU
10、NIQUE可使用可使用 UNIQUE 約束確保在非主鍵列中不輸入重復值。約束確保在非主鍵列中不輸入重復值。盡管盡管 UNIQUE 約束和約束和 PRIMARY KEY約束都強制唯一性,約束都強制唯一性,但在強制下面的唯一性時應使用但在強制下面的唯一性時應使用 UNIQUE 約束:約束: 非主鍵的一列或列組合:一個表可以定義多個非主鍵的一列或列組合:一個表可以定義多個 UNIQUE 約束,而只能定義一個約束,而只能定義一個 PRIMARY KEY 約束。約束。允許空值的列:允許空值的列上可以定義允許空值的列:允許空值的列上可以定義 UNIQUE 約束約束,而不能定義,而不能定義 PRIMARY
11、KEY 約束。約束。152022-3-2例例 建立一個建立一個“學生選課學生選課”表表SC,它由學號,它由學號Sno、課程、課程號號Cno,修課成績,修課成績Grade組成,其中組成,其中(Sno, Cno)為主碼為主碼CREATE TABLE SC( Sno CHAR(5) , Cno CHAR(3) , Grade int, Primary key (Sno, Cno);162022-3-2ALTER TABLE ADD 完整性約束完整性約束 DROP MODIFY ;:要修改的基本表:要修改的基本表ADD子句子句:增加新列和新的完整性約束條件:增加新列和新的完整性約束條件DROP子句子句
12、:刪除指定的完整性約束條件:刪除指定的完整性約束條件MODIFY子句子句:用于修改列名和數據類型:用于修改列名和數據類型172022-3-2n例例2 向向Student表增加表增加“入學時間入學時間”列,其數據類型列,其數據類型為日期型。為日期型。 ALTER TABLE Student ADD Scome DATE;不論基本表中原來是否已有數據,新增加的列一律不論基本表中原來是否已有數據,新增加的列一律為空值。為空值。 n刪除屬性列:刪除屬性列: 間接刪除間接刪除把表中要保留的列及其內容復制到一個新表中把表中要保留的列及其內容復制到一個新表中刪除原表刪除原表再將新表重命名為原表名再將新表重命
13、名為原表名直接刪除屬性列直接刪除屬性列:(新新)例:例:ALTER TABLE Student Drop Scome;182022-3-2n例例3 將年齡的數據類型改為半字長整數。將年齡的數據類型改為半字長整數。 ALTER TABLE Student MODIFY Sage SMALLINT注:修改原有的列定義有可能會破壞已有數據注:修改原有的列定義有可能會破壞已有數據n例例4 刪除學生姓名必須取唯一值的約束。刪除學生姓名必須取唯一值的約束。ALTER TABLE Student DROP UNIQUE (Sname)192022-3-2nDROP TABLE ; n基本表刪除基本表刪除數據
14、、表上的索引都刪除數據、表上的索引都刪除表上的視圖往往仍然保留,但無法引用表上的視圖往往仍然保留,但無法引用n刪除基本表時,系統會從數據字典中刪去有關該基本刪除基本表時,系統會從數據字典中刪去有關該基本表及其索引的描述表及其索引的描述 n例例5 刪除刪除Student表表 DROP TABLEStudent ;202022-3-2n數據庫查詢是數據庫的核心操作,數據庫查詢是數據庫的核心操作,select具有靈活的使具有靈活的使用方式和豐富的功能用方式和豐富的功能3.1.1 單表查詢單表查詢3.1.2 連接查詢連接查詢3.1.3 嵌套查詢嵌套查詢3.1.4 集合查詢集合查詢3.1.5 selec
15、t 語句的一般格式語句的一般格式 212022-3-2n語句格式語句格式SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ;SELECT子句子句:指定要顯示的屬性列:指定要顯示的屬性列FROM子句子句:指定查詢對象:指定查詢對象(基本表或視圖基本表或視圖)WHERE子句子句:指定查詢條件:指定查詢條件 GROUP BY子句子句:對查詢結果按指定列的值分組,該屬性列:對查詢結果按指定列的值分組,該屬性列值相等的元組為一個組。通常會在每組中作用集函數。值相等的元組為一個組。通常會在每組中作用集函數。HAVING
16、短語短語:篩選出只有滿足指定條件的組:篩選出只有滿足指定條件的組ORDER BY子句子句:對查詢結果表按指定列值的升序或降序排:對查詢結果表按指定列值的升序或降序排序序 222022-3-2數據查詢是數據庫應用的核心功能數據查詢是數據庫應用的核心功能n 基本結構基本結構nSelect A1, A2, ., An From R1, R2, ., Rm Where Pn關系代數中基于關系是一個集合這樣的數學概念關系代數中基于關系是一個集合這樣的數學概念,因此因此,重復的元組不會在關系中出現。重復的元組不會在關系中出現。n但在實踐中但在實踐中,要刪除查詢結果中的重復元組是相當費時要刪除查詢結果中的重
17、復元組是相當費時的的,所以在商用數據庫產品中所以在商用數據庫產品中,允許在關系和允許在關系和SQL表達式表達式的結果中出現重復元組。的結果中出現重復元組。232022-3-2SELECTSELECTFROMFROM常用語句執行過程常用語句執行過程 SELECTSELECT 投影投影 FROMFROM TABLE TABLE內存內存 WHEREWHERE 選取元組選取元組 GROUPGROUP 分組分組 HAVINGHAVING 選擇分組選擇分組 UNION|UNION| 查徇結果的集合運算查徇結果的集合運算 SELECTSELECT ORDER BY ORDER BY 排序輸出排序輸出2420
18、22-3-2學生學生-課程數據庫課程數據庫n學生表:學生表:Student(Sno,Sname,Ssex,Sage,Sdept)n課程表:課程表:Course(Cno,Cname,Cpno,Ccredit)n 學生選課表:學生選課表:SC(Sno,Cno,Grade) 252022-3-2n查詢僅涉及一個表,是一種最簡單的查詢操作查詢僅涉及一個表,是一種最簡單的查詢操作一、選擇表中的若干列一、選擇表中的若干列二、選擇表中的若干元組二、選擇表中的若干元組三、對查詢結果排序三、對查詢結果排序四、使用集函數四、使用集函數五、對查詢結果分組五、對查詢結果分組 262022-3-2n1.查詢指定列查詢指
19、定列例例1 查詢全體學生的學號與姓名。查詢全體學生的學號與姓名。SELECT Sno,Sname FROM Student; 例例2 查詢全體學生的姓名、學號、所在系。查詢全體學生的姓名、學號、所在系。 SELECT Sname,Sno,Sdept FROM Student;n2.查詢全部列查詢全部列例例3 查詢全體學生的詳細記錄。查詢全體學生的詳細記錄。SELECT Sno, Sname, Ssex, Sage, Sdept FROM Student;或或 SELECT * FROM Student;272022-3-2n1.消除取值重復的行消除取值重復的行n2.查詢滿足條件的元組查詢滿足條
20、件的元組 282022-3-2n在在SELECT子句中使用子句中使用DISTINCT短語短語假設假設SC表中有下列數據表中有下列數據 Sno Cno Grade - - - 95001 1 92 95001 2 85 95001 3 88 95002 2 90 95002 3 80例例6 查詢選修了課程的學生學號查詢選修了課程的學生學號(1)SELECT Sno FROM SC;或或(默認默認 ALL) SELECT ALL Sno FROM SC; 結果:結果: Sno - 95001 95001 95001 95002 95002 (2) SELECT DISTINCT Sno FROM
21、SC; 結果:結果: Sno - 95001 95002 292022-3-2n注意注意 DISTINCT短語的作用范圍是所有目標列短語的作用范圍是所有目標列例:查詢選修課程的各種成績例:查詢選修課程的各種成績錯誤的寫法錯誤的寫法SELECT DISTINCT Cno,DISTINCT GradeFROM SC;正確的寫法正確的寫法 SELECT DISTINCT Cno,Grade FROM SC; 302022-3-2表表 3.3 常常用用的的查查詢詢條條件件查查 詢詢 條條 件件謂謂 詞詞比比 較較=,=,=,!=,!,!;NOT + 上上述述比比較較運運算算符符確確定定范范圍圍BETW
22、EEN AND,NOT BETWEEN AND確確定定集集合合IN,NOT IN字字符符匹匹配配LIKE,NOT LIKE空空 值值IS NULL,IS NOT NULL多多重重條條件件AND,ORWHERE子句常用的查詢條件子句常用的查詢條件312022-3-2n在在WHERE子句的子句的中使用比較運算符中使用比較運算符=,=,=,!= 或或 ,!,!, 邏輯運算符邏輯運算符NOT + 比較運算符比較運算符n例例8 查詢所有年齡在查詢所有年齡在20歲以下的學生姓名及其年歲以下的學生姓名及其年齡齡 SELECT Sname,Sage FROM Student WHERE Sage = 20;
23、322022-3-2n使用謂詞使用謂詞 BETWEEN AND NOT BETWEEN AND n例例10 查詢年齡在查詢年齡在2023歲(歲(包括包括20歲和歲和23歲歲)之)之間的學生的姓名、系別和年齡。間的學生的姓名、系別和年齡。 SELECT Sname,Sdept,Sage FROM StudentWHERE Sage BETWEEN 20 AND 23; (WHERE Sage = 20 AND Sage =23)n例例11 查詢年齡不在查詢年齡不在2023歲之間的學生姓名、系歲之間的學生姓名、系別和年齡別和年齡SELECT Sname,Sdept,Sage FROM Studen
24、tWHERE Sage NOT BETWEEN 20 AND 23;332022-3-2 NOT LIKE ESCAPE n:指定匹配模板:指定匹配模板匹配模板:固定字符串或含通配符的字符串匹配模板:固定字符串或含通配符的字符串當匹配模板為固定字符串時當匹配模板為固定字符串時,可以用可以用 = 運算符取代運算符取代 LIKE 謂詞謂詞,用用 != 或或 運算符取代運算符取代 NOT LIKE謂詞謂詞通配符通配符% 代表任意長度(長度可以為代表任意長度(長度可以為0)的字符串)的字符串例:例:a%b表示以表示以a開頭,以開頭,以b結尾的任意長度的字符結尾的任意長度的字符串。如串。如acb,add
25、gb,ab 等都滿足該匹配串等都滿足該匹配串_ (下橫線下橫線) 代表任意單個字符代表任意單個字符例:例:a_b表示以表示以a開頭,以開頭,以b結尾的長度為結尾的長度為3的任意字符的任意字符串。如串。如acb,afb等都滿足該匹配串等都滿足該匹配串342022-3-21) 匹配模板為固定字符串匹配模板為固定字符串 例例14 查詢學號為查詢學號為95001的學生的詳細情況。的學生的詳細情況。 SELECT * FROM Student WHERE Sno LIKE 95001;等價于:等價于: SELECT * FROM Student WHERE Sno = 95001;352022-3-22
26、) 匹配模板為含通配符的字符串匹配模板為含通配符的字符串例例15 查詢所有姓劉學生的姓名、學號和性別。查詢所有姓劉學生的姓名、學號和性別。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE 劉劉%;例例16 查詢姓查詢姓歐陽歐陽且全名為三個漢字的學生的姓名。且全名為三個漢字的學生的姓名。 SELECT Sname FROM Student WHERE Sname LIKE 歐陽歐陽_ _;362022-3-22) 匹配模板為含通配符的字符串匹配模板為含通配符的字符串例例17 查詢名字中第查詢名字中第2個字為個字為陽陽字的學生的姓名和學字的學
27、生的姓名和學號號 SELECT Sname,Sno FROM Student WHERE Sname LIKE _ _陽陽%;例例18 查詢所有不姓劉的學生姓名。查詢所有不姓劉的學生姓名。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname NOT LIKE 劉劉%;372022-3-2n 使用謂詞使用謂詞 IS NULL 或或 IS NOT NULLn “IS NULL” 不能用不能用 “= NULL” 代替代替例例21 某些學生選修課程后沒有參加考試,所以有選課某些學生選修課程后沒有參加考試,所以有選課記錄,但沒有考試成績。查詢缺少成績的學生的學號
28、記錄,但沒有考試成績。查詢缺少成績的學生的學號和相應的課程號。和相應的課程號。 SELECT Sno,Cno FROM SC WHERE Grade IS NULL;例例22 查所有有成績的學生學號和課程號。查所有有成績的學生學號和課程號。 SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL382022-3-2nSQL允許屬性有一個特殊值允許屬性有一個特殊值NULL稱作空值。稱作空值。未知值:有值但是不知道是什么,例如未知生日未知值:有值但是不知道是什么,例如未知生日不適用的值:例如配偶的名字不適用的值:例如配偶的名字保留的值:無權知道的值,例未公布的
29、電話號碼保留的值:無權知道的值,例未公布的電話號碼n空值的運算空值的運算空值不同于空白或零值。沒有兩個相等的空值。空空值不同于空白或零值。沒有兩個相等的空值。空值和任何值進行算術運算,結果仍為空值。值和任何值進行算術運算,結果仍為空值。執行計算時消除空值很重要,因為如果包含空值執行計算時消除空值很重要,因為如果包含空值列,某些計算(如平均值)會不準確。列,某些計算(如平均值)會不準確。 當使用邏輯運算符和比較運算符,有可能返回當使用邏輯運算符和比較運算符,有可能返回 TRUE 或或 FALSE 以外的第三種結果以外的第三種結果 UNKNOWN, UNKNOWN是與是與TRUE 和和 FALSE
30、 相同的布爾值相同的布爾值392022-3-2n空空 (NULL) 值表示數值未知。值表示數值未知。空值不同于空白或零值。沒有兩個相等的空值。空值不同于空白或零值。沒有兩個相等的空值。n空串指的是零長度字符串空串指的是零長度字符串,空字符串文字空字符串文字 ( ) 將作為空將作為空字符串解釋字符串解釋 當當 m = 0 時,時,RIGHT(123, m) 返回空字符串。返回空字符串。當當 m 是負數時,是負數時,RIGHT(123, m) 返回空字符串。返回空字符串。RTRIM( ) 返回空字符串。返回空字符串。402022-3-2n用邏輯運算符用邏輯運算符AND和和 OR來聯結多個查詢條件來
31、聯結多個查詢條件 AND的優先級高于的優先級高于OR 可以用括號改變優先級可以用括號改變優先級n可用來實現多種其他謂詞可用來實現多種其他謂詞 NOT IN NOT BETWEEN AND 例例23 查詢計算機系年齡在查詢計算機系年齡在20歲以下的學生姓名。歲以下的學生姓名。 SELECT Sname FROM Student WHERE Sdept= CS AND Sage20;412022-3-2n使用使用ORDER BY子句子句 可以按一個或多個屬性列排序可以按一個或多個屬性列排序 升序:升序:ASC;降序:;降序:DESC;缺省值為升序缺省值為升序n空值將作為最大值排序空值將作為最大值排序ASC:排序列為空值的元
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年 安康旬陽市直教育單位教師遴選考試試題附答案
- 2025年中國影視廣告市場運行態勢報告
- 中國無人機航測行業調查報告
- 中國化纖原料行業市場調查報告
- 多功能料理機項目投資可行性研究分析報告(2024-2030版)
- 2025年中國藻藍蛋白行業市場運行現狀及投資戰略研究報告
- 2025年中國鮮脆榨菜芯行業市場發展前景及發展趨勢與投資戰略研究報告
- 中國海水養殖行業市場前景預測及投資戰略研究報告
- 中國福建燃氣行業調查報告
- 二氯二甲海因中間體行業深度研究分析報告(2024-2030版)
- 三、油氣回收設備組成
- 空調服務技術保障及人員培訓方案
- 醫院導醫服務禮儀
- 《交流耐壓試驗技術》課件
- 國開80646+24219Python語言基礎復習題期末復習資料
- 醫藥產品經理職業規劃
- 鄭州航空工業管理學院《企業經營統計學案例》2022-2023學年第一學期期末試卷
- 四川省成都市(2024年-2025年小學五年級語文)統編版摸底考試((上下)學期)試卷及答案
- 汽車保險與理賠課件 8.2汽車水災事故的預防與施救
- 手術室護理不良事件的管理
- 采購磁鐵物料合同模板
評論
0/150
提交評論