第2章結構化查詢語言sql

上傳人:仙*** 文檔編號:35122439 上傳時間:2021-10-26 格式:DOC 頁數:16 大小:103.01KB
收藏 版權申訴 舉報 下載
第2章結構化查詢語言sql_第1頁
第1頁 / 共16頁
第2章結構化查詢語言sql_第2頁
第2頁 / 共16頁
第2章結構化查詢語言sql_第3頁
第3頁 / 共16頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《第2章結構化查詢語言sql》由會員分享,可在線閱讀,更多相關《第2章結構化查詢語言sql(16頁珍藏版)》請在裝配圖網上搜索。

1、第2章 結構化查詢語言SQL 2.1 概述 2.1.1 組成與功能 1 SQL是“Structured Query Language(結構式查詢語言)”的縮寫,1986年SQL語言被批準為關系數據庫語言的美國標準化語言。 2.SQL語言分類 分為四大類:數據定義語言,數據查詢語言,數據操縱語言,數據控制語言。 (1)數據定義語言:主要用創(chuàng)建、修改或刪除數據庫中對象,如表、視圖、模式、觸發(fā)器和存儲過程等,與其相關的主要SQL語句包括CREAT(創(chuàng)建)、ALTER(修改)、DROP(刪除); (2)數據操縱語言:主要用于數據的增、刪、改操作,主要語句有INSERT(插

2、入)、DELETE(刪除)、UPDATE(修改); (3)數據查詢語言:主要用于數據的檢索查詢,與其相關的語句是SELECT(查詢); (4)數據控制語言:主要用于控制用戶對數據庫的訪問權限、完整性規(guī)則描述、事務控制等操作??刂朴脩魧祿斓脑L問權限的主要語句有 GRANT(授予權利)和REVOKE(取消權利)等。事務控制的語句包括 COMMIT(事務提交)和ROLLBACK(事務撤消)等。 2.SQL語言的特點 1)非過程化語言: 非關系數據模型的數據操縱語言是面向過程的語言,用其完成某項請求,必須指定存取路徑。而用SQL語言進行數據操作,用戶只需提出“做什么”,而不必指明“怎么做”

3、,因此用戶無需了解存取路徑,存取路徑的選擇以及SQL語句的操作過程由系統(tǒng)自動完成。這不但大大減輕了用戶負擔,而且有利于提高數據獨立性。 2)統(tǒng)一的語言: SQL語言集數據定義語言DDL、數據操縱語言DML、數據控制語言DCL的功能于一體,語言風格統(tǒng)一,可以獨立完成數據庫生命周期中的全部活動,包括定義關系模式、錄入數據以建立數據庫、查詢、更新、維護、數據庫重構、數據庫安全性控制等一系列操作要求,這就為數據庫應用系統(tǒng)開發(fā)提供了良好的環(huán)境,例如用戶在數據庫投入運行后,還可根據需要隨時地逐步地修改模式,并不影響數據庫的運行,從而使系統(tǒng)具有良好的可擴充性。 3).面向集合的操作方式 SQL語言采

4、用集合操作方式,不僅查找結果可以是元組的集合,而且一次插入、刪除、更新操作的對象也可以是元組的集合。 非關系數據模型采用的是面向記錄的操作方式,任何一個操作其對象都是一條記錄。例如查詢所有平均成績在80分以上的學生姓名,用戶必須說明完成該請求的具體處理過程,即如何用循環(huán)結構按照某條路徑一條一條地把滿足條件的學生記錄讀出來。 4)是所有關系數據庫的公共語言。 3.SQL語言的基本數據類型 SQL Server提供了數值型、字符型、日期型、二進制型、位型、雙字節(jié)型等6大類數據類型。 1)數值數據類型 一般可以分為整數型、精確數值類型、浮點數值類型和貨幣類型等4類。 數字數據只包含數

5、字。數字數據類型包括正數和負數、小數(浮點數)和整數   整數由正整數和負整數組成,例如 39、25、0-2 和 33967。在 Micrsoft SQL Server 中,整數存儲的數據類型是    Int,Smallint和 Tinyint。Int 數據類型存儲數據的范圍大于 Smallint 數據類型存儲數據的范圍,而 Smallint 據類型存儲數據的范圍大于Tinyint 數據類型存儲數據的范圍。使用 Int 數據狗昔存儲數據的范圍是從 -2 147 483 648 到 2 147 483 647(每一個值要求4個字節(jié)存儲空間)。使用 Smallint 數據類型時,存儲數據的范圍從

6、 -32 768 到 32 767(每一個值要求2個字節(jié)存儲空間)。使用Tinyint 數據類型時,存儲數據的范圍是從0 到255(每一個值要求1個字節(jié)存儲空間)。   精確小婁數據在 SQL Server 中的數據類型是 Decimal 和 Numeric。這種數據所占的存儲空間根據該數據的位數后的位數來確定。   在SQL Server 中,近似小數數據的數據類型是 Float 和 Real。例如,三分之一這個分數記作。3333333,當使用近似數據類型時能準確表示。因此,從系統(tǒng)中檢索到的數據可能與存儲在該列中數據不完全一樣。 2)字符型 常用的字符型有Char、Varchar和T

7、ext等3種。 (1)char類型。長度固定。如果字段或變量被定義為char類型,而實際長度沒有達到定義的長度,則在字符串尾部添加空格以達到固定的字符數。 (2)varchar類型。長度可變。如果字段或變量被定義為varchar類型,而實際長度沒有達到定義的長度,SQL Server會自動丟掉尾部的空格以節(jié)省空間。 (3)text類型。 當要存儲的字符型數據非常龐大,長度超過了8000個字符時,可選擇text數據類型。即文本型,最大可存儲約2G的數據。 3)日期時間型 主要用來存儲日期和時間的組合數據,根據取值范圍的大小分為datetime和smalldatetime兩種。 日期

8、和時間數據類型由有效的日期和時間組成。例如,有效的日期和時間數據包括“4/01/98 12:15:00:00:00 PM”和“1:28:29:15:01AM 8/17/98”。前一個數據類型是日期在前,時間在后一個數據類型是霎時間在前,日期在后。在 Microsoft SQL Server中,日期和時間數據類型包括Datetime 和 Smalldatetime 兩種類型時,所存儲的日期范圍是從 1753 年 1 月 1 日開始,到9999 年12 月 31 日結束(每一個值要求 8 個存儲字節(jié))。使用 Smalldatetime 數據類型時,所存儲的日期范圍是 1900年 1 月 1日 開始

9、,到 2079 年 12 月 31 日結束(每一個值要求 4 個存儲字節(jié))。   日期的格式可以設定。設置日期格式的命令如下:   Set DateFormat {format | @format _var|   其中,format | @format_var 是日期的順序。有效的參數包括 MDY、DMY、YMD、YDM、MYD 和 DYM。在默認情況下,日期格式為MDY。   例如,當執(zhí)行 Set DateFormat YMD 之后,日期的格式為年 月 日 形式;當執(zhí)行 Set DateFormat DMY 之后,日期的格式為日 月有年 形式 4)二進制數據類型 二進制數據類型有

10、定長和變長之分,主要用來存儲二進制數據,如圖形圖像、Word文檔文件等。SQL Server提供了binary、varbinary和image等3種常用二進制數據類型。 5)位型 bit(位型)是SQL Server提供的一種支持邏輯數據的類型,只用來存儲1或0兩種,只有一位字節(jié)長,在SQL Server中bit字段的用途很多,可以作為“真/假”、“男/女”、“開/關”這類狀態(tài)信息的標志,可以作為活動賬號的指示器或項目的使用標志等。 6)特殊數據類型 有兩類不常用的數據類型,即雙字節(jié)數據類型和時間戳數據(Timestamp)類型。它們主要是為了實現特殊的用途,稱為特殊數據類型。 時間

11、戳數據類型往往因為其名字而造成誤解,實際上它既不是日期,也不是時間數據,而是SQL Server根據事件的發(fā)生次序自動生成的一種二制數據。這個數據有很多用途,其中之一是在SQL Server關閉重新啟動時,作為進行恢復工作的重要部分。另外利用timestamp數據還可以替代傳統(tǒng)的數據庫加鎖技術。 2.3.數據定義語言 1)空值 空值也可稱為NULL值??罩挡皇恰翱崭瘛狈颉?”值,它表示的是沒有值,是不確定的值。 2)數據類型:確定后一般不改變 2.3.1 數據庫 在SQL中,數據庫被定義為對象的集合,這些對象主要有表、索引、視圖、存儲過程等。數據庫在磁盤上是以文件為單位存儲的,由

12、數據文件和日志文件組成。數據文件中實際存放數據庫的所有數據和對象,日志文件用來存放用戶對數據庫所進行的所有操作,它是維護數據庫完整性的重要工具。 (1)創(chuàng)建數據庫 語句格式: CREATE DATABASE <數據庫名> 語句功能:創(chuàng)建一個數據庫,就是定義一個存儲空間。 應用舉例:CREATE DATABASE 教學管理庫 (2)刪除數據庫 語句格式:DROP DATABASE <數據庫名> 語句功能:從計算機系統(tǒng)中刪除(撤消)一個數據庫。當然會同時把該庫中的所有信息一并刪除掉。 語句舉例:DROP DATABASE 教學管理 2.3.2.表 1)表的概念 關系數據庫的主

13、要特點之一就是用表的方式組織數據。表是SQL語言存放數據、查找數據以及更新數據的基本數據結構。在SQL語言中,表有嚴格的定義,它是一個由行、列組成的二維結構,通常把行稱做記錄,把列稱為字段。 表2-1 學生基本情況登記表 學號 姓名 性別 出生日期 專業(yè) 年級 2008001 張紅 女 1988-3-6 計算機應用 1 2008002 李勇 男 1988-10-11 信息管理 1 … … … … … … 從表2-1可以看出,數據表一般具有以下屬性: (1)表名:表的惟一標識。比如學生基本情況登記表; (2)字段:一張表可以由若干列組成

14、,稱為字段。列名惟一,且同一列的數據必須具有相同的數據類型。 (3)記錄:表中的每一行稱為一條記錄,比如“2008001,張紅,女1988.3.6,計算機應用,1”,它描述了一名學生的若干屬性; (4)主關鍵字:能夠惟一表示數據表中的每條記錄的字段或者字段的組合,也稱為主碼、主鍵,比如學號。在一個學校中,學生的姓名可能重復,但學號必須是惟一的。 2)創(chuàng)建表結構 (1)語句格式: CREATE TABLE <表名> (<列名1><列的數據類型>,<列名2><列的數據類型>,...) (2)語句功能: 在當前數據庫中定義一個表的結構(即關系模式)。 (3)語句舉例: 如果希望在

15、“教學管理”數據庫中創(chuàng)建一個名為“學生表”的表結構,則可執(zhí)行下列語句: CREATE TABLE 學生表( 學號 char(7) Primary Key, 姓名 char(6), 性別 char(2), 出生日期 datetime, 專業(yè) char(10), 年級 int ) 在上述語句中,數據表的名稱為“學生表”,它包括學生號、姓名、性別、出生日期、專業(yè)、年級等6個字段(列)。學名的數據類型為Char型(字符型),長度為7;出生日期

16、的數據類型為Datatime型(日期型);年級的數據類型為Int型(整數型)。 3)刪除表結構 (1)語句格式: DROP TABLE <表名> (2)語句功能: 從當前數據庫中刪除一個表,當然在刪除表結構的同時也刪除了全部內容。 (3) 語句舉例: DROP TABLE 學生表 從當前數據庫中刪除掉名稱為“學生表”的表,假定事先已經在當前庫建立過該表。 2.3.2.索引 1索引的概念 索引(Index)提供了一種快速訪問數據的途徑。索引具有以下特點。 (1)索引是在基本表的列上建立的一種數據加對象,它和基本表分開存儲,它的建立或撤消對數據的內容

17、毫無影響。 (2)索引一經創(chuàng)建,就完全由系統(tǒng)自動選擇和維護,不需要用戶指定使用索引,也不需要用戶執(zhí)行打開索引或進行重新索引等操作,所有這些工作都是由SQL Server數據庫管理系統(tǒng)自動完成。 (3)基本表的記錄數量越多,記錄越長,越有必要創(chuàng)建索引,這對加快查詢速度的效率十分明顯。相反,對于記錄比較少的基本表而言,創(chuàng)建索引的意義不大。 (4)索引是為了加速查詢速度而創(chuàng)建的,但同時會影響基本表的插入、刪除或修改等更新活動的速度,當對基本表的數據進行增刪改操作時,索引文件也要隨之變化,以保持與基本表的一致,因此只有對那些數據量大、查詢頻度較高、實時性要求強的基本表要創(chuàng)建索引,并且一張基本表上

18、不要創(chuàng)建過多的索引。 2創(chuàng)建索引的原則 索引是建立在基本表列上的對象,通??蓞⒖家韵略瓌t: (1)基本表的記錄數量越多,記錄越長,越有必要創(chuàng)建索引,這對加快查詢速度的效率十分明顯。相反,對于記錄比較少的基本表而言,創(chuàng)建索引的意義不大。 (2)索引是為了加速查詢速度而創(chuàng)建的,但同時會影響基本表的插入、刪除或修改等更新活動的速度,當對基本表的數據進行增、刪、改操作時,索引文件也要隨之變化,以保持與基本表的一致,因此只有對那些數據量大、查詢頻度較高、實時性要求強的基本表要創(chuàng)建索引,并且一張基本表上不要創(chuàng)建過多的索引。 (3)索引是建立在基本表列上的對象,到底在哪個列上創(chuàng)建索引,通??筛淖兞?/p>

19、在WHERE、ORDER BY、GROUP BY子句中出現的頻率。比如,如果某個或某些列經常出現在ORDER BY子句中,那么就可考慮在之上建立索引。 3 不易創(chuàng)建索引的幾種情況 (1)包含太多重復值的列; (2)查詢中很少被引用的列; (3)值特別長的列。 (4)具有很多NULL值的列 (5)需要經常插入、刪除、修改的列。 (6)記錄較少的基本表 (7)需要進行頻繁、大批量數據更新的基本表 4 索引的類型 索引是創(chuàng)建在基本表列上的一種數據對象,從使用角度可將索引分為以下單列索引、惟一索引、復合索引三類;從是否改變基本表記錄的物理位置角度可分為聚集索引和非聚集索引兩類。實際

20、的索引通常是這兩大類5種方式的組合。 5 聚集和非聚集索引的對比 聚集索引和非聚集索引是SQL Server中經常用到的兩個概念,是非此即彼的關系。一個單列或復合索引即可以是聚集的也可以是非聚集的。在建立索引時,是采用聚集方式還是非聚集方式主要應從以下幾點考慮: (1)存取速度 從建立了聚集索引的表中取出數據要比建立了非聚集索引的表快。但相對而言,聚集索引會降低向表中插入、刪除和修改數據的速度。 (2)索引的數據 對聚集索引的主要限制是每個表只能建立一個聚集索引。但是一個表可以有不止一個非聚集索引。實際上,對每個表最多可以建立249個非聚集索引。也可以對一個表同時建立聚集和非聚集索

21、引。 (3)所需空間 非聚集索引需要較多的硬盤空間和內存。 6 創(chuàng)建索引 (1)語句格式: CREATE [UNIQUE][CLUSTERED] INDEX <索引名> ON <表名>(<列名1>[次序][,<列名2>[次序]]…) (2)語句功能 主要參數的意義是: UNIQUE:為表或視圖創(chuàng)建惟一索引(不允許存在索引值相同的兩行)。 CLUSTERED:聚集索引 索引名:在實際使用時,用戶并不需要知道索引名,但在創(chuàng)建階段,索引名應符合SQL Server的命名規(guī)則。并且在整個數據庫中,索引名不能重復。 次序:每個“列名”后面可以用“次序”指定索引值的排列次序,ASC

22、表示升序,DESC表示降序,默認值是ASC。 7 刪除索引 (1)語句格式: DROP INDEX <索引名>[,…n] (2)語句功能: 使用該語句一次可以撤消一個或多個指定的索引,索引名之間用逗號間隔。 2.3.4.視圖 1)視圖的概念 視圖看上去同表一模一樣,具有一組命名的字段和數據項,但它其實是一個虛擬的表,在數據庫中并不實際存。在視圖是由查詢數據庫表產生的,它限制了用戶能看到和修改的數據。 2)視圖的作用 視圖是由一個或多個基本表導出的表,人們通常把它理解為一組存儲在SQL Server數據庫中,經過預先編譯的SELECT語句。在SQL Server中可以基本表

23、一樣對視圖進行查詢、刪除、更新操作,但在對視圖數據所進行的增加、刪除、修改等更新操作最終都映射到相應的基本表上,并有一定的限制,在實際應用中,盡可能不要通過視圖對記錄進行更新操作。 (1)視圖是經過預編譯的SELECT語句,存儲在數據庫服務器端,因此執(zhí)行視圖比從客戶端直接執(zhí)行SELECT語句速度更快、效率更高一些。 (2)視圖屬于用戶模式范疇,在實際中,一般的用戶不一定具有SELECT語句方面的專門知識,從戶友好性角度來說,視圖更便于用戶使用。 (3)利用視圖可以簡化的形式表達復雜的SELECT語句組,如嵌套查詢等。 3)創(chuàng)建視圖 (1)語句格式: CREATE VIEW <視圖名

24、> (<列名>,...) AS

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!