




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
3.1.1SQL語言的發展SQL語言對關系數據庫理論的發展和商用RDBMS的研制、使用和推廣等起著重要的作用。它的發展歷程為:1)1970:E.J.Codd發表了關系數據庫理論2)1974-1979:IBM以Codd的理論為基礎開發了“Sequel”,并重命名為“結構化查詢語言”;3)1979:Oracle發布了商業版結構化查詢語言;4)1981-84:出現了其他商業版本,分別來自IBM(DB2),DataGeneral,RelationalTechnology(INGRES);
3.1.1SQL語言的發展5)結構化查詢語言/86:6)結構化查詢語言/89:7)結構化查詢語言;8)1997:成為動態網站的后臺支持;9)結構化查詢語言/2003:包含了XML相關內容,自動生成列值(ColumnValues);10)結構化查詢語言/2006:定義了結構化查詢語言與XML(包含XQuery)的關聯應用;11)2006:Sun公司將以結構化查詢語言基礎的數據庫管理系統嵌入JavaV
63.1.2SQL語言的特點綜合統一:SQL語言集數據定義語言(DDL),數據操縱語言(DML),數據控制語言(DCL)功能于一體。高度非過程化:SQL語言只要提出“做什么”,無須了解存取路徑。存取路徑的選擇以及SQL的操作過程由系統自動完成.面向集合的操作方式以同一種語法結構提供多種使用方式:自含式:將SQL作為操作命令獨立使用;宿主式:將SQL嵌入到高級語言中使用。3.1SQL語言的基本概念和特點3.1.1SQL語言的發展 3.1.2SQL語言的特點
3.1.3SQL語言的基本概念 3.1.2SQL語言的特點語言簡潔:由于SQL是一種結構化的查詢語言,它的結構、語法、詞匯等本質上都是精確的、典型的英語,這樣就使得用戶不需要任何編程經驗就可以讀懂它、使用它,容易學習和使用。其核心功能只使用了11個動詞,如表3.7所示。本章節將重點講解前面9個動詞的語法和作用。3.1SQL語言的基本概念和特點3.1.1SQL語言的發展 3.1.2SQL語言的特點 3.1.3SQL語言的基本概念
3.1.3SQL語言的基本概念支持SQL的RDBMS同樣支持關系數據庫三級模式結構,如圖3-1所示。用戶可以用SQL對基本表和視圖進行查詢或其他操作。圖3-1SQL對關系數據庫模式的支持3.2SQL數據定義3.2.1數據庫的定義3.2.2基本表的定義 3.2.3索引的定義 3.2.1數據庫的定義1.
創建數據庫創建數據庫常用的語法格式為:CREATEDATABASEdatabase_name
[ON
[PRIMARY](
NAME=logical_file_name,
FILENAME='os_file_name'
[,SIZE=size]
[,MAXSIZE={max_size|UNLIMITED}]
[,FILEGROWTH=growth_increment])[,...n]
[LOGON[PRIMARY](
NAME=logical_file_name,
FILENAME='os_file_name'
[,SIZE=size]
[,MAXSIZE={max_size|UNLIMITED}]
[,FILEGROWTH=growth_increment])[,...n]3.2.1數據庫的定義2. 更改數據庫數據庫創建后可以通過SQL語句進行修改,如重命名數據庫、擴大數據庫、修改數據庫文件、管理數據庫文件組。語法為:ALTERDATABASEdatabase_name{ADDFILE<filespec>[,...n][TOFILEGROUP{filegroup_name|DEFAULT}]|ADDLOGFILE<filespec>[,...n]|REMOVEFILElogical_file_name|MODIFYFILE<filespec>|MODIFYname=new_datatabase_name|ADDFILEGROUP=filegroup_name|MODIFYfilegroup=filegroup_nameDEFAULT|REMOVEfilegroup=filegroup_name}3.2.1數據庫的定義3. 刪除數據庫刪除數據庫的語法為:DROPDATABASEdatabase_name3.2SQL數據定義3.2.1數據庫的定義3.2.2基本表的定義
3.2.3索引的定義 3.2.2基本表的定義1. 創建基本表創建表的語法為:CREATETABLE<表名>
(<列名><數據類型>[<列級完整性約束條件>][,<列名><數據類型>[<列級完整性約束條件>]]…[,<表級完整性約束條件>])
注:如果完整性約束條件涉及到該表的多個屬性列,則必須定義在表級上,否則既可以定義在列級也可以定義在表級。3.2.2基本表的定義2. 修改基本表ALTERTABLE修改表是指修改表的結構,包括修改列、增加列、刪除列、增加約束、刪除約束等。修改表的語法為:ALTERTABLE<表名>[ADD<新列名><數據類型>[完整性約束]][DROPCOLUMN<列名>][ADDCONSTRAINT<完整性約束名>[完整性約束]][DROP<完整性約束名>][ALTERCOLUMN<列名><數據類型>]3.2.2基本表的定義3.刪除基本表刪除基本表的語法為:DROPTABLE<表名>3.2SQL數據定義3.2.1數據庫的定義3.2.2基本表的定義 3.2.3索引的定義
3.2.3索引的定義索引可以加快查詢速度,加強行的唯一性。用戶可以根據實際應用的需要,在基本表上建立一個或多個索引,以提供多種存取路徑,加快查詢速度。建立和刪除索引一般是由數據庫管理員DBA或數據庫擁有者DB_Owner負責完成。系統在存取數據時會自動選擇合適的索引作為存取路徑,用戶不必也不能選擇索引。SQLServer中的索引主要包括:1)主碼索引:2)唯一索引(Unique)3)聚簇索引(Clustered)4)非聚簇索引(NonClustered)3.2.3索引的定義1.創建索引創建索引的語法為:CREATE[Unique][Clustered|NonClustered]INDEX<索引名>ON<表名>(<列名>[<次序>][,<列名>[<次序>]]…);索引可以建在該表的一列或多列上,各列名之間用逗號分隔。每個<列名>后面還可以用<次序>指定索引值的排列次序,包括ASC(升序)和DESC(降序)兩種,缺省值為ASC。3.2.3索引的定義2.刪除索引刪除索引的語法為:DROPINDEX<表名>.<索引名>刪除索引時,系統會從數據字典中刪去有關該索引的描述。3.3SQL數據查詢3.3.1單表查詢
3.3.2連接查詢 3.3.3嵌套查詢 3.3.4集合查詢 3.3SQL數據查詢SQL數據查詢是數據庫的核心操作。SQL提供SELECT語句進行數據庫的查詢,該語句靈活、方便,簡單易學。其一般語法格式為:SELECT[ALL|DISTINCT]<目標列表達式>[,<目標列表達式>]…FROM<表名或視圖名>[別名][,<表名或視圖名>[別名]]…[WHERE<條件表達式>][GROUPBY<列名1>[HAVING<條件表達式>]][ORDERBY<列名2>[ASC|DESC]3.3SQL數據查詢它的執行方式是:1)根據WHERE子句的條件表達式,從FROM子句指定的基本表或視圖中找出滿足條件的記錄,再按SELECT子句中的目標列表達式,選出記錄中的屬性值形成結果表。2)如果有GROUPBY子句,則將結果按<列名1>的值進行分組,該屬性列值相等的記錄為一組。通常會在每組中使用聚合函數求解統計數據。如果GROUPBY子句帶HAVING短語,則只有滿值指定條件的組才能被查詢出來。3)如果有ORDERBY子句,則結果表會按照<列名2>的值升序或降序排序。3.3.1單表查詢單表查詢是指查詢的對象僅涉及到一張表。1.選擇表中的若干列1)查詢指定列2)查詢所有列:在SELECT關鍵字后面列出所有列名可以將以<目標列表達式>指定為*3)查詢經過計算的值SELECT子句的<目標列表達式>不僅可以是表中的屬性列,還可以是算術表達式、字符串常量、函數、列別名。3.3.1單表查詢2.選擇表中的若干記錄1)消除取值重復的行:DISTINCT2)查詢滿足條件的記錄:查詢條件是通過WHERE子句實現的,常用的查詢條件如表3-9所示:3.3.1單表查詢3.對查詢結果排序:ORDERBY子句ORDERBY子句可以將查詢結果按一個或多個屬性列排序,排序方式有升序(ASC)和降序(DESC),缺省值為升序。當排序列含空值時,按升序(ASC)排列,空值顯示在記錄最后,若按降序(DESC)排列,空值顯示在最前。3.3.1單表查詢3.對查詢結果分組統計:GROUPBY子句GROUPBY子句將查詢結構按指定的一列或多列值分組,值相等的為一組。對查詢結果分組是為了細化聚集函數的作用對象。如果未對查詢結果分組,聚集函數將作用于整個查詢結果。對查詢結果分組后,聚集函數將分別作用于每個組,每個組返回一個函數值。常用的聚集函數包括:計數:COUNT([DISTINCT|ALL]*);
COUNT([DISTINCT|ALL]<列名>)計算總和:SUM([DISTINCT|ALL]<列名>)
計算平均值:AVG([DISTINCT|ALL]<列名>)最大最小值:MAX([DISTINCT|ALL]<列名>);
MIN([DISTINCT|ALL]<列名>)3.3SQL數據查詢3.3.1單表查詢 3.3.2連接查詢
3.3.3嵌套查詢 3.3.4集合查詢 3.3.2連接查詢當查詢涉及兩個以上的表,稱為連接查詢。連接查詢時關系數據庫中最主要、最重要的查詢。包括等值查詢、自然連接查詢、非等值連接查詢、自身連接查詢、外連接查詢和復合條件連接查詢等。語法格式為:[<表1>.]<列名1><比較運算符>[<表2>.]<列名2>[<表1>.]<列名1>BETWEEN[<表2>.]<列名2>AND[<表名2>.]<列名3>連接條件中的各連接字段類型必須是可比的,但名字不必是相同的。3.3.2連接查詢1.連接操作的執行過程的方法1)嵌套循環法(NESTED-LOOP)2)排序合并法(SORT-MERGE)(常用于=連接)3)索引連接(INDEX-JOIN)3.3.2連接查詢2.等值與非等值連接查詢1)等值連接:連接運算符為“=”2)非等值連接:連接運算符為“>、<、>=、<=、<>”等。3.3.2連接查詢3.自身連接自身連接實現表與其自己的連接,此時需要給表起別名以示區別。由于所有屬性名都是同名屬性,因此必須使用別名前綴。3.3.2連接查詢4.外連接普通連接操作只輸出滿足連接條件的記錄,連接的表中所有不滿足連接條件的記錄均不顯示。外連接操作可以指定某張表為連接主體,將主體表中不滿足連接條件的記錄一并輸出。常用的外連接有:1)左外連接:列出左邊關系中所有的記錄。2)右外連接:列出右邊關系中所有的記錄。3)全連接(fulljoin)4)內連接(innerjoin)5.復合條件連接復合條件連接是指WHERE子句中含多個連接條件。3.3SQL數據查詢3.3.1單表查詢 3.3.2連接查詢 3.3.3嵌套查詢
3.3.4集合查詢 3.3.3嵌套查詢一個SELECT-FROM-WHERE語句稱為一個查詢塊,將一個查詢塊嵌套在另一個查詢塊的WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢。層層嵌套方式反映了SQL語言的結構化。3.3.3嵌套查詢SQL嵌套查詢有兩種:1)不相關子查詢:即子查詢的查詢條件不依賴于父查詢。它的執行方式是:由里向外逐層處理。即每個子查詢在上一級查詢處理之前求解,子查詢的結果用于建立其父查詢的查找條件。2)相關子查詢:即子查詢的查詢條件依賴于父查詢。它的執行步驟是:首先取外層查詢中表的第一條記錄,根據它與內層查詢相關的屬性值處理內層查詢,若WHERE子句返回值為真,則取此記錄放入結果表;然后再取外層表的下一條記錄進行同樣的操作,重復這一過程,直至外層表全部檢查完為止。3.3.3嵌套查詢1.帶有IN謂詞的子查詢此查詢為不相關子查詢,執行過程為:1)首先執行子查詢①,從Provider表中找出“浙江康恩貝”的供應商代碼為S003;2)然后執行子查詢②,在PM表中找出S003供應的藥品代碼;3)最后執行最外層查詢③,從Medicine表中查詢MedicineCode和MedicineName。
3.3.3嵌套查詢3.帶有EXISTS謂詞的子查詢EXISTS謂詞代表存在量詞
。帶有EXISTS謂詞的子查詢不返回任何數據,只產生邏輯真值“true”或邏輯假值“false”。使用存在量詞EXISTS后,若內層查詢結果非空,則外層的WHERE子句返回真值;若內層查詢結果為空,則外層的WHERE子句返回假值。由EXISTS引出的子查詢,其目標列表達式通常都用*或某個常量如1,因為帶EXISTS的子查詢只返回真值或假值,給出列名無實際意義3.3.3嵌套查詢3.帶有EXISTS謂詞的子查詢與EXISTS相對應的是NOTEXISTS謂詞。使用存在量詞NOTEXISTS后,若內層查詢結果非空,則外層的WHERE子句返回假值,若內層查詢結果為空,則外層的WHERE子句返回真值。一些帶EXISTS或NOTEXISTS謂詞的子查詢不能被其他形式的子查詢等價替換。但是所有帶IN謂詞、比較運算符的子查詢都能用帶EXISTS謂詞的子查詢等價替換,因此實際應用很廣泛。SQL中沒有全稱量詞(FORALL),經常把帶有全稱量詞的謂詞轉換為等價的帶有存在量詞的謂詞。3.3SQL數據查詢3.3.1單表查詢 3.3.2連接查詢 3.3.3嵌套查詢 3.3.4集合查詢
3.3.4集合查詢集合查詢是指在某些應用中,查詢結果需要通過多條SELECT語句從一個或多個表中來獲取,查詢最終結果是多條SELECT語句查詢結果的匯總數據集。集合查詢可以看作是數據的垂直聯接,而前面介紹的多表聯接查詢可以看作是數據的水平聯接。SQL提供UNION、INTERSECT和EXCEPT運算符來實現集合查詢。這三個查詢聚集運算符可以滿足不同的需要,但都要求每條SELECT語句生成的數據集中列的個數、列的數據類型和順序必須相同。3.3.4集合查詢1.UNIONUNION是一種并集運算,可以將兩個以上的查詢結果合并成一個結果,并在后續的結果集中去除前面結果集中已有的數據行。UNION將多個查詢結果合并起來時,系統自動去掉重復記錄。如果需要保留所有的重復數據,可以使用UNIONALL。3.3.4集合查詢2.INTERSECTINTERSECT可以返回多條查詢語句中都包含的非重復數據
3.EXCEPTEXCEPT可以比較左右兩個查詢結果集的差異,并從左側的查詢結果集中返回在右側結果集找不到的數據,即從左側的結果集中減去右側結果集中相同的數據后得到的結果。3.4SQL數據更新3.4.1插入數據 3.4.2更新數據3.4.3刪除數據
3.4.1插入數據SQL插入數據有兩種方式:1)插入一條記錄;2)插入子查詢結果,可以一次插入多個記錄。1.插入一條記錄語法格式為: INSERT INTO<表名>[(<屬性列1>[,<屬性列2>…)] VALUES(<常量1>[,<常量2>]…)注:VALUES子句中提供的值必須與INTO子句中提供的列的類型和列的個數匹配。3.4.1插入數據2.插入子查詢結果語法格式為:INSERTINTO<表名>[(<屬性列1>[,<屬性列2>…)]
子查詢注:子查詢中的SELECT子句目標列必須與提供的列的類型和列的個數匹配。3.4SQL數據更新3.4.1插入數據 3.4.2更新數據3.4.3刪除數據
3.4.2更新數據更新數據的語法格式:UPDATE<表名>SET<列名>=<表達式>[,<列名>=<表達式>]…[WHERE<條件>]數據修改有三種方式:修改某一條記錄的值修改多條記錄的值帶子查詢的修改語句3.4SQL數據更新3.4.1插入數據 3.4.2更新數據3.4.3刪除數據
3.4.3刪除數據刪除數據的語法格式:DELETEFROM<表名> [WHERE<條件>]刪除數據有三種方式:刪除某一條記錄的值刪除多個記錄的值帶子查詢的刪除語句3.5視圖3.5.1視圖的定義
3.5.2視圖的查詢 3.5.3視圖的更新 3.5.4視圖的作用3.5.1視圖的定義1. 創建視圖
創建視圖的語法為:CREATEVIEW<視圖名>[(<列名>[,<列名>]...)]AS<子查詢>[WITHCHECKOPTION]其中:<子查詢>可以是任意查詢語句,但不允許含有ORDERBY子句。[WITHCHECKOPTION]選項表示當對視圖進行UPDATE、INSERT和DELETE操作時,要保證更新、插入或刪除的行滿足視圖定義中的子查詢的條件。3.5.1視圖的定義1. 創建視圖
(1)其中某個目標列不是單純的屬性名,而是集函數或列表達式。(2)多表連接時選出了幾個同名列作為視圖的字段。(3)需要在視圖中為某個列啟用新的更合適的名字。在SQLServer中創建視圖時,CREATEVIEW必須是批查詢中的第一條語句。3.5.1視圖的定義2.修改視圖修改視圖的語法為:ALTERVIEW<視圖名>[(<列名>[,<列名>]...)]AS<子查詢>[WITHCHECKOPTION]修改視圖并不會影響數據表所涉及的數據,但是視圖定義的更改,可能會導致依賴于此視圖的相關數據庫對象的執行失敗。3.5.1視圖的定義3.刪除視圖刪除視圖的語法為:DROPVIEW<視圖名>刪除視圖同樣不會影響影響原來的數據,但是一個視圖被刪除后,引用此視圖的其它數據庫對象可能將會失效或執行錯誤。因此在確認刪除之前,應查看視圖的依賴關系窗口,確認是否有數據庫對象依賴于將被刪除的視圖,再做決定3.5視圖3.5.1視圖的定義 3.5.2視圖的查詢
3.5.3視圖的更新 3.5.4視圖的作用3.5.2視圖的查詢3.5.2視圖的查詢視圖也是表,因此其查詢方式與查詢表的方式其實是一樣的??梢栽趩蝹€視圖上查詢,也可以和其他基本表一起使用,實現連接查詢或嵌套查詢。3.5視圖3.5.1視圖的定義 3.5.2視圖的查詢 3.5.3視圖的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教師教育教學反思與社會支持機制的結合試題及答案
- 生態修復工程2025年生物多樣性保護與生態修復工程審計報告
- 環境保護概論試題及答案
- 濰坊地理期末試題及答案
- 家具設計中創意表達與實現試題及答案
- 物理學各分支特點分析試題及答案
- 針對心血管疾病的2025年互聯網醫療平臺在線問診報告
- 工業廢氣凈化處理技術2025年市場潛力深度研究報告
- 沉浸式戲劇與科技融合:2025年創新創作與市場推廣前景報告
- 鐵嶺師范高等??茖W?!兑苿踊ヂ摼W應用開發技術》2023-2024學年第二學期期末試卷
- 數學三角形的高、中線、角平分線教案2024-2025學年北師大版(2024)七年級數學下冊
- 高低壓柜常見故障及檢修培訓
- 2021水閘工程運行管理規程
- (高清版)DB51∕T 1292-2011 牧草種質資源田間鑒定與評價技術規程
- 三農項目申請操作流程指南
- 組織行為學(對外經濟貿易大學)知到課后答案智慧樹章節測試答案2025年春對外經濟貿易大學
- 貼太陽膜知識培訓課件
- 面粉廠粉塵防爆培訓課件
- 1000道二年級數學口算練習題
- 第16課《有為有不為 》課件-2024-2025學年統編版語文七年級下冊
- 2024版股權分配與員工持股計劃協議書模板3篇
評論
0/150
提交評論