第2章結構化查詢語言sql
《第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
25、常以dt_xxxx做為名字。使用存儲過程的好處可歸納為以下幾點:
(1)執(zhí)行速度快。
(2)模塊化的程序設計。
(3)減少網絡流量。
(4)保證系統(tǒng)的安全性。
2)創(chuàng)建存儲過程
(1)語句格式:
CREATE PROC[EDURE] <存儲過程名> AS
26、名。
(2)語句功能:
執(zhí)行當前數據庫中事先定義好的一個存儲過程。
Exec dsh_proc1
4)修改存儲過程
(1)語句格式:
ALTER PROC <存儲過程名> AS
27、器是一種特殊的存儲過程,它基于一個表創(chuàng)建,但可以針對多個表進行操作,與表緊密相連,可以看作是表定義的一部分,主要用來保證數據的完整性。 在SQL Server中一張表可以有多個觸發(fā)器,用戶可以針對UPDATE、DELETE、INSERT語句分別設置觸發(fā)器,那么當用戶進行UPDATE、INSER、DELETE等數據維護操作執(zhí)行后,這些事先定義好的觸發(fā)器對象就會被“觸發(fā)”,并按事先定義好的規(guī)則自動執(zhí)行。觸發(fā)器如果使用不當,會影響數據庫的效果,因此初學者慎用。 2.4.數據操縱語言 SQL數據定義語言的主要作用是創(chuàng)建存儲數據的結構,而數據操縱語言的主要作用則是向數據庫中填寫數據,具體包括增加、
28、刪除、修改等操作。 1)插入數據 (1)語句格式 INSERT INTO <表名>(<列名>,… ) VALUES(<列值>,…) (2)語句功能 向一個表中所指定的若干列插入一行記錄。當向表中插入一完整的記錄時,可以省略列名表表。 (3)語句舉例 INSERT INTO 學生表 VALUES(’2007001’,’王麗’,’女’,’1987-10-31’,2) 在當前數據庫中執(zhí)行上述語句后,將在名為“學生表”的數據表中插入一名新同學的完整信息。由于“學生表”的學號、姓名和性別字段被定義為了字符型(Char型),因此它們對應的字段值必須用半角的單引號引起來,在SQL Serve
29、r中日期型(Datetime)也需要用單引號,而數值型(Int)則不需要這樣做。 2)刪除數據 (1)語句格式 DELETE FROM <表名> WHERE <條件> (2)語句功能 刪除一個表中滿足條件的所有記錄。 (3)語句舉例 DELETE FROM 學生表 WHERE 性別=’男’ 在當前數據庫中執(zhí)行上述語句后,將把“學生表”中所有性別等于“男”的記錄刪除。此處用到的“性別=’男’”是一種邏輯表達式,表示刪除的條件,我們將在下一節(jié)詳細介紹。如果要刪除所有記錄,則可以直接執(zhí)行“DELETE FROM 學生表”。 3)修改數據 (1)語句格式 UPDATE <表名
30、> SET <列名>=<表達式>,… WHERE <條件> (2)語句功能 按條件修改一個表中的某些列的值。 (3)語句舉例 UPDATE 學生表 SET 姓名=’王莉’ WHERE 學號=’2007001’ 在當前數據庫中執(zhí)行上述語句后,將把“學生表”中學號等于“2007001”的記錄的姓名字段的值修改為“王莉”。 2.5.數據查詢語言 1)基本語法格式 SQL數據查詢語言的主要作用是把數據從基本表中提取、展示出來,它只對應一條語句,即SELECT語句。SELECT的英文的選擇的意思,該語句帶有豐富的選項(稱為子句),每個選項都由一個關鍵字標識,其基本語法格式如下: SEL
31、ECT 字段列表 [ INTO 新表名 ] FROM 源表名 [ WHERE 查詢條件 ] [ GROUP BY 分組表達式 ] [ HAVING 查找條件 ] [ ORDER BY 排序表達式 [ ASC | DESC ] ] 2)最簡單的格式 SELECT * FROM 表名 3)最常用的格式 SELECT * FROM 表名 WHERE 查詢條件 這條語句翻譯成中文就是:從(FROM)某張表中選擇(SELECT)出所有滿足條件(WHERE)的所有字段(*)。 。。。。 二、本章涉及的實際操作 以下內容均可在SQL Server 的查詢分析器內進
32、行實驗。 1.建立數據庫 建立名為“教學管理庫”的數據庫 create database教學管理庫 2.建立表 建立名為“學生表”的表 create table 學生表 ( 學號 char (8) primary Key, 姓名 char(8), 性別 bit, 出生日期 datetime, 專業(yè) char(10), 年齡 int) 3.數據的插入與查詢 1)給表中插入一個數據 insert into 學生表 values (2007001,王麗,1,1982-8-5,計算機應用,26) insert into 學生表 values (2007002,張
33、華,0,1982-9-5,計算機應用,26) insert into 學生表 values (2007003,李敏,1,1982-3-15,計算機應用,26) 2) 查詢剛才輸入的記錄 Select * from 學生表 3) 教材29頁的例子 學生表: create table 學生表 ( 學號 char (8) primary Key, 姓名 char(8), 性別 bit, 出生日期 datetime, 專業(yè) char(10), 年齡 int) 課程表: create table 課程表 ( 課程號 char (7) primary Key,
34、課程名 char(20), 任課教師 char (8)) 成績表: create table 成績表 ( 學號 char (8), 課程號 char (7), 成績 Numeric (4,2)) 給學生表中添加的記錄: insert into 學生表 values (20030001,張青,1,1982-3-15,軟件,21) insert into 學生表 values (20030002,王麗,0,1984-6-29,軟件,19) insert into 學生表 values (20030003,趙紅,0,1985-7-21,軟件,18) insert int
35、o 學生表 values (20030004,李明,1,1981-9-21,應用,22) insert into 學生表 values (20030005,趙東,1,1981-8-19,應用,22) 查看其中的內容: Select * from 學生表 給課程表中添加的記錄: insert into 課程表 values (1000044,計算機網絡,張向東) insert into 課程表 values (1000045,程序設計,王洪偉) insert into 課程表 values (1000046,有能力與應用數據庫,李利) 查看其中的內容: Select * f
36、rom 課程表 給成績表中添加的記錄: insert into 成績表 values (20030001,1000044,80.5) insert into 成績表 values (20030002,1000044,78.5) insert into 成績表 values (20030001,1000045,81.5) insert into 成績表 values (20030003,1000045,83) insert into 成績表 values (20030001,1000046,0) insert into 成績表 values (20030003,1000046,
37、0) 查看其中的內容: Select * from 成績表 4.查詢的實例 教材31頁開始的各種涉及查詢的實例 例1:查詢學生表中的學號、姓名、年齡、專業(yè) Select 學號,姓名,年齡,專業(yè) from 學生表 例2:通配符*的使用 Select * from 學生表 例3:基于字段的表達式,注意str、year、month、as的含義:按**年**月形式顯示出生年月 Select 學號,姓名,str(year(出生日期),4)+’年’+str(month(出生日期),2)+’月’ as 年月 from 學生表 例4:distinct短語的使用:列出所
38、有的專業(yè)名 Select distinct 專業(yè) from 學生表 例5:使用where子句:查詢所有年齡在19-20的學生情況 Select * from 學生表 where 年齡 between 19 and 21 Select * from 學生表 where 年齡>=19 and 年齡<=21 例6:不顯示null值的記錄 Select * from 成績表 where not (成績 is null) 例7:列出所有軟件專業(yè)女同學的記錄 Select * from 學生表 where 專業(yè)=’軟件’ and 性別=’0’ 例8:練習日期型字段的使用:
39、列出所有1985-1-1以后出生的學生信息 Select * from 學生表 where 出生日期>’1985-1-1’ 例9:練習使用in 短語:列出所有年齡為19,21的學生記錄 Select * from 學生表 where 年齡 in (19,21) Select * from 學生表 where 年齡=19 or 年齡=21 例10:練習使用LIKE短語:列出所有姓王的學生的信息 Select * from 學生表 where 姓名 like ‘王%’ 例11:練習使用order by 字句:顯示所有“軟件”專業(yè)學生記錄 Select * from 學生
40、表 where 專業(yè)=’軟件’ order by 年齡 例12:練習統(tǒng)計函數的使用:在學生表中列出專業(yè)個數 Select count (distinct 專業(yè)) AS 專業(yè)數 from 學生表 例13:練習統(tǒng)計函數的使用:統(tǒng)計“學生表中”軟件專業(yè)學生個數 Select count (*) AS 專業(yè)人數 from 學生表 where 專業(yè)=’應用’ 例14:練習統(tǒng)計函數的使用:查詢學生表中應用專業(yè)學生的最大年齡,最小年齡,平均年齡 Select max(年齡) as 最大, min(年齡) as 最小, avg(年齡) as 平均 from 學生表 where 專業(yè)=’
41、應用’ Select max(年齡) as 最大, min(年齡) as 最小, avg(年齡) as 平均 from 學生表 where 專業(yè)=’應用’ 例15:列出學生表中不同專業(yè)中,各專業(yè)的學生人數 Select 專業(yè), count(*) as學生數 from 學生表 group by 專業(yè) 例16:練習into字句的使用 Select * into 軟件專業(yè)學生表 from 學生表 order by 學號 復雜查詢(連接查詢) 例17: 列出所有學生的學號,姓名,課程號和成績 Select 學生表.學號,姓名,課程號,成績 from 學生表,成績表 where
42、學生表.學號=成績表.學號 嵌套查詢 例18:列出所有學生的學號,姓名,課程號,課程名和成績 Select 學生表.學號,姓名,課程表.課程號,課程名,成績 from 學生表,課程表,成績表 where 學生表.學號=成績表.學號 and 課程表.課程號=成績表.課程號 例19:查詢所有女同學選修的課程號和課程名。 Select課程號,課程名 from 課程表 where 課程號 in (select 課程號 from 成績表 where 學號 in (select 學號 from 學生表 where 性別=0)) 例20:平均成績小于總平均成績的學生學號、姓名、專業(yè)。
43、Select 學號,姓名,專業(yè) from 學生表 where 學號 in (select distinct 學號 from 成績表 where 成績<(select avg(成績) from 成績表)) 2.6.數據控制語言 數據控制語言的種類很多,其中事務控制是最常用、最重要的一種。 1)事務的概念 事務(Transaction)是并發(fā)控制的基本單位,它反映了現實世界中需要以一個完整的單位提交的一項工作。SQL Server通過事務機制,將邏輯相關的一組操作捆綁在一起,以便服務器保持數據的完整性。它是SQL復雜程序設計必不可少的內容。 在使用事務的情況下,SQL Server可
44、以保證,要么所有的記錄要么全部處理,要么一行也不處理。如果修改了全部記錄的一半時服務器出錯了,SQL Server會返回到以前未執(zhí)行UPDATE操作前的位置,清除它已經修改過的數據,這就是事務處理的作用。 2)事務處理控制語句 SQL Server中可通過以下3個語句完成事務控制: (1)開始一個事務:BEGIN TRAN[SACTION] 事務名。 (2)提交一個事務:COMMIT [TRAN[SACTION] 事務名。 (3)回滾一個事務:ROLLBACK [TRAN[SACTION]] 事務名 在數據庫應用程序設計中,事務控制語句的一般用法是: 第1步:BEGIN TRAN 事務名 第2步:對數據庫進行增、刪、改等操作 第3步:提交事務或回滾:基本邏輯是,如果沒有發(fā)生異常情況,則通過COMMIT語句提交事務,確認第2步的操作;否則執(zhí)行ROLLBACK回滾命令,撤消第2步的所有操作。 16
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。