




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1. SQL的發展的發展 SQL(Structured Query Language)意為結構化查詢語言意為結構化查詢語言. 1974年由年由Boyce和和Chamberlin提出來提出來. 最初在最初在System R關系數據庫中實現關系數據庫中實現. 該語言功能豐富、語言簡捷、使用靈活方便、深受各界歡迎該語言功能豐富、語言簡捷、使用靈活方便、深受各界歡迎. 1986年成為美國國家標準年成為美國國家標準. 1987年成為國際標準年成為國際標準SQL86. 1989年年,ISO頒布了增強完整性特征的頒布了增強完整性特征的SQL89標準標準. 1993年年, ISO對對SQL89標準進行了大量的
2、修改和擴充標準進行了大量的修改和擴充,推出推出SQL2(SQL92).SQL是一種通用的、功能極強的關系數據庫語言是一種通用的、功能極強的關系數據庫語言.各數據庫廠家紛紛推出各自支持各數據庫廠家紛紛推出各自支持SQL的軟件或與的軟件或與SQL 接口軟件接口軟件,使自己的數據庫可以運行使自己的數據庫可以運行SQL.許多其他軟件許多其他軟件(例如圖形處理、人工智能、軟件工程工具、軟件例如圖形處理、人工智能、軟件工程工具、軟件開發工具等開發工具等)也利用也利用SQL語言的數據查詢功能語言的數據查詢功能,作為自身的一部分作為自身的一部分,使其數據查詢功能更強大使其數據查詢功能更強大. 許多程序設計語言
3、中也都引入了許多程序設計語言中也都引入了SQL.2. SQL的特點2. SQL的特點的特點非關系模型的數據語言非關系模型的數據語言 模式數據定義語言:模式數據定義語言:Schema DDL 外模式外模式(子模式)數據定義語言:子模式)數據定義語言:SubSchema DDL 存儲模式數據定義語言:存儲模式數據定義語言: DSDL (Data Storage Definition Language) 數據操縱語言:數據操縱語言:DMLSQL語言語言 SQL將數據定義語言將數據定義語言DDL、數據操縱語言、數據操縱語言DML數據控制語言數據控制語言DCL集集 成在一起成在一起,各種語言風格統一各種
4、語言風格統一.(1) 一體化一體化 用用SQL語言可以實現數據庫生命周期的全部活動,其中包括建立語言可以實現數據庫生命周期的全部活動,其中包括建立數據庫、建立用戶帳號、定義關系模式、查詢及數據維護、數據庫數據庫、建立用戶帳號、定義關系模式、查詢及數據維護、數據庫安全控制等。安全控制等。(2) 高度非過程化高度非過程化非關系語言非關系語言 通過存取路徑存取數據。通過存取路徑存取數據。SQL語言語言 SQL是一種面向問題的語言,只需提出是一種面向問題的語言,只需提出“做什么做什么”,不必指出,不必指出“怎么做怎么做”。存取路徑的選擇和。存取路徑的選擇和SQL的操作過程是由系統自動完成的。的操作過程
5、是由系統自動完成的。 例如,例如,SQL只需要用一個只需要用一個Update語句就可以完成對數據庫表中數據語句就可以完成對數據庫表中數據的更新操作。的更新操作。(3) 面向集合的操作方式面向集合的操作方式非關系語言非關系語言一次一個記錄。一次一個記錄。SQL語言語言采用集合操作采用集合操作,操作對象和操作結果都是元組的集合。操作對象和操作結果都是元組的集合。(4) 兩種使用方式、統一的語法結構兩種使用方式、統一的語法結構SQL既是既是自含式語言自含式語言,又是,又是嵌入式語言嵌入式語言。自含式語言使用方式自含式語言使用方式就是聯機交互使用方式,即通過在終端鍵盤就是聯機交互使用方式,即通過在終端
6、鍵盤上輸入一條上輸入一條SQL命令,實現對數據庫操作的方式。這種方式能夠命令,實現對數據庫操作的方式。這種方式能夠立即從屏幕上看到命令執行的結果,為數據庫數據的遠程維護提立即從屏幕上看到命令執行的結果,為數據庫數據的遠程維護提供了方便。供了方便。嵌入式語言使用方式嵌入式語言使用方式是指將是指將SQL語句幾乎不加修改地嵌入到某種語句幾乎不加修改地嵌入到某種高級程序設計語言的程序中,以實現對數據庫的操作。例如嵌入高級程序設計語言的程序中,以實現對數據庫的操作。例如嵌入到到VB、Delphi、Java等前端開發平臺上,通過編寫的數據庫應用等前端開發平臺上,通過編寫的數據庫應用程序實現對數據庫的操作。
7、此時,用戶不能直接觀察到各條程序實現對數據庫的操作。此時,用戶不能直接觀察到各條SQL語句的輸出結果,其結果必須通過變量或過程參數返回。語句的輸出結果,其結果必須通過變量或過程參數返回。同一條命令在兩種操作方式中的語法結構基本一致。同一條命令在兩種操作方式中的語法結構基本一致。(5) 語言簡捷、易學易用語言簡捷、易學易用SQL具有很強的功能具有很強的功能,但由于其設計巧妙但由于其設計巧妙,使得語言十分簡捷。使得語言十分簡捷。完成其核心功能只用完成其核心功能只用9個動詞:個動詞:數據查詢:數據查詢:SELECT(查詢查詢)數據定義:數據定義:CREATE(創建表、索引、視圖創建表、索引、視圖)
8、DROP(刪除表、索引、視圖刪除表、索引、視圖) ALTER(修改表修改表)數據操縱:數據操縱: INSERT(插入插入) DELETE(刪除刪除) UPDATE(修改修改)數據控制:數據控制:GRANT(授權授權) REVOKE(收回授權收回授權)3. SQL語言的主要功能語言的主要功能SQL語言根據其可實現的功能不同,主要有語言根據其可實現的功能不同,主要有3類語句組成。類語句組成。 數據定義語句數據定義語句(DDL, Data Definition Language);用于定義關系;用于定義關系數據庫的模式、外模式和內模式,以實現對數據庫基本表、視圖數據庫的模式、外模式和內模式,以實現對
9、數據庫基本表、視圖及索引文件的定義、修改和刪除等操作。做常用的有及索引文件的定義、修改和刪除等操作。做常用的有CREATE、DROP、ALTER語句。語句。 數據操縱語句數據操縱語句(DML,Data Manipulation Language);用于完;用于完成對數據庫表數據的查詢和更新操作。其中,數據更新是指對數成對數據庫表數據的查詢和更新操作。其中,數據更新是指對數據進行插入、刪除和修改操作。做常用的有據進行插入、刪除和修改操作。做常用的有SELECT、INSECT、UPDATE、DELETE語句。語句。 數據控制語句數據控制語句(DCL,Data Control Language);用
10、于控制對數;用于控制對數據庫的訪問,以及服務器的關閉、啟動等操作。最常用的有據庫的訪問,以及服務器的關閉、啟動等操作。最常用的有GRANT、REVOKE等語句。等語句。4. SQL語言的書寫準則語言的書寫準則“ ”SQLSQL(structured query language)structured query language)結構化查詢語言。結構化查詢語言。 它是一種標準,不是一種軟件它是一種標準,不是一種軟件SQL SERVERSQL SERVER是數據庫管理系統的一種是數據庫管理系統的一種. .它是一種軟件,這種軟件在遵循它是一種軟件,這種軟件在遵循SQLSQL這種標準,很多數據庫這種
11、標準,很多數據庫管理軟件及開發工具都支持管理軟件及開發工具都支持SQLSQL這種標準。這種標準。 SQL的數據定義包括定義基本表,定義索引,定義視圖和定的數據定義包括定義基本表,定義索引,定義視圖和定義數據庫,其基本語句如下表所示:義數據庫,其基本語句如下表所示:操作對象操作對象創建語句創建語句刪除語句刪除語句修改語句修改語句基本表基本表CREATE TABLEDROP TABLEALTER TABLE索引索引CREATE INDEXDROP INDEX視圖視圖CREATE VIEWDROP VIEW數據庫數據庫CREATE DATABASEDROP DATABASEALTER DATABAS
12、E在在SQL語句格式中,有下列約定符號和語法規定需要說明:語句格式中,有下列約定符號和語法規定需要說明: 語句格式約定符號語句格式約定符號 語句格式中,尖括號語句格式中,尖括號“”中為實際語義;中括號中為實際語義;中括號“ ”中的內容為任中的內容為任選項;大括號選項;大括號“ ”或用分隔符或用分隔符“”中的內容為必選項,即必選其中的內容為必選項,即必選其中之一項;中之一項;, . . . n表示前面的項可重復多次表示前面的項可重復多次 一般語法規定一般語法規定 SQL中的數據項中的數據項(包括列項、表和視圖包括列項、表和視圖)分隔符為分隔符為“,”,其字符串常數,其字符串常數的定界符用單引號的
13、定界符用單引號“ ”表示表示 SQL特殊語法規定特殊語法規定 SQL的關鍵詞一般使用大寫字母表示;的關鍵詞一般使用大寫字母表示;SQL語句的結束符為語句的結束符為“ ; ”。SQL一般采用格式化書寫方式。一般采用格式化書寫方式。 通過通過SQL語言創建數據庫的核心語句是語言創建數據庫的核心語句是CREATE DATABASE。該。該語句的語法格式為:語句的語法格式為:CREATE DATABASE database_nameON PRIMARY , n , , nLOG ON , nCOLLATE collation_nameFOR LOADFOR ATTACH:=(NAME=logical_
14、file_name,FILENAME=os_file_name, SIZE=size,MAXSIZE=max_sizeUNLIMITED,FILEGROWTH=growth_increment) , n:=FILEGROUP filegroup_name , n下面具體說明語句中各參數的含義:下面具體說明語句中各參數的含義:n database_name是所創建數據庫的名稱,數據庫名稱在服務器中必須唯一,并且是所創建數據庫的名稱,數據庫名稱在服務器中必須唯一,并且 要符合要符合SQL Server 2000的命名規則,最多可包含的命名規則,最多可包含128個字符。個字符。n ON子句指定數據庫
15、的數據庫文件和文件組。子句指定數據庫的數據庫文件和文件組。n表示可以有表示可以有n個與前面相同的描個與前面相同的描 述,即為創建的數據庫指定多個文件。例如,述,即為創建的數據庫指定多個文件。例如, , n 表示可以出現表示可以出現n 個個。n PRIMARY用來指定主文件。如果沒有指定主文件,那么用來指定主文件。如果沒有指定主文件,那么CREATE DATABASE 語句中列出的第一個文件將默認為主文件。數據文件的描述主要給出文件的邏輯、語句中列出的第一個文件將默認為主文件。數據文件的描述主要給出文件的邏輯、 存儲路徑、大小及增長特性。存儲路徑、大小及增長特性。n LOG ON子句,用于指定數
16、據庫日志文件的屬性,其定義格式與數據文件的格式子句,用于指定數據庫日志文件的屬性,其定義格式與數據文件的格式 相同。相同。n logical_file_name邏輯文件名,實在創建數據庫后執行夫人邏輯文件名,實在創建數據庫后執行夫人T-SQL語句中引用文件語句中引用文件 的名稱。他在數據庫中必須唯一,并且符合標識符的命名規則。該名稱可以是字的名稱。他在數據庫中必須唯一,并且符合標識符的命名規則。該名稱可以是字 符或符或unicode常量,也可以是常規標識符或定界標識符。常量,也可以是常規標識符或定界標識符。n os_file_name操作系統文件名,是操作系統在創建物理文件時使用的路徑和文件名
17、。操作系統文件名,是操作系統在創建物理文件時使用的路徑和文件名。n size是數據文件的初始大小是數據文件的初始大小(對于主文件,若不指出大小,則默認為對于主文件,若不指出大小,則默認為model數據庫主數據庫主 文件的大小;對于輔助數據文件,自動設置為文件的大小;對于輔助數據文件,自動設置為1MB)。n maxsize指定文件的最大大小;指定文件的最大大小;UNLIMITED關鍵字:指定文件大小不受限制關鍵字:指定文件大小不受限制(實際實際 上只受磁盤可用空間限制上只受磁盤可用空間限制)n growth_increament 每次需要新的空間時文件大小的增量。該值指定一個整數,不每次需要新的
18、空間時文件大小的增量。該值指定一個整數,不 要包括小數位。要包括小數位。0值表示不增長。可以用值表示不增長。可以用KB、MB 、GB、TB或百分比或百分比(%)為單位指為單位指 定。如果未在數量后面指定單位,則默認值為定。如果未在數量后面指定單位,則默認值為MB。例如指定。例如指定20%,則增量大小是,則增量大小是 在原來空間大小的基礎上增加在原來空間大小的基礎上增加20%。注意,。注意,filegrowth值不能超過值不能超過maxsize的值。的值。n FOR LOAD子句,子句, 說明從一個備份庫向新建的數據庫中加載數據。使用該子句的說明從一個備份庫向新建的數據庫中加載數據。使用該子句的
19、 目的是為了與以前的版本兼容。目的是為了與以前的版本兼容。n FOR ATTACH子句,說明從已有的數據庫文件向數據庫添加數據,在用該子句子句,說明從已有的數據庫文件向數據庫添加數據,在用該子句 時,必須指定主數據文件。時,必須指定主數據文件。n COLLATE子句,用來指定數據庫的默認排序規則。子句,用來指定數據庫的默認排序規則。例例 1:用用CREATE DATABASE語句創建一個名為語句創建一個名為book的數據庫。在該數據庫中有的數據庫。在該數據庫中有5個數據文個數據文件,三個文件組。主文件組包括主數據文件件,三個文件組。主文件組包括主數據文件book_data1,文件大小為文件大小
20、為5MB,按,按10%增長,最大增長,最大大小不受限制,一個輔助數據文件大小不受限制,一個輔助數據文件book_data2,文件大小為,文件大小為3MB,按,按1MB增長,最大大小為增長,最大大小為50MB。此文件組名為。此文件組名為bookgroup1,包括兩個輔助數據文件,包括兩個輔助數據文件book_data3和和book_data4,它們大,它們大小均為小均為5MB,按,按2MB增長,最大大小不受限制;第三個文件組名為增長,最大大小不受限制;第三個文件組名為bookgroup2,包括一個輔,包括一個輔助數據文件助數據文件book_data5,大小為,大小為2MB,最大大小為,最大大小為
21、100MB,按,按15%增長;只有一個日志文件,增長;只有一個日志文件,大小為大小為2MB,最大大小為,最大大小為35MB,按,按1MB增長。增長。 首先啟動首先啟動SQL Server 2000 查詢分析器,在彈出的查詢分析器,在彈出的【SQL 查詢分析器查詢分析器】窗口的窗口的【查詢查詢】編編輯對話框中輸入創建數據庫的輯對話框中輸入創建數據庫的SQL語句,其代碼如下:語句,其代碼如下:CREATE DATABASE bookOn primary(name=book_data1,filename=D:SQL2000JZH1book_data1.mdf,size=5MB,maxsize=UNL
22、IMITED,filegrowth=10%),(name=book_data2,filename=D:SQL2000JZH1book_data2.ndf,size=3MB,maxsize=50MB,filegrowth=1MB),filegroup bookgroup1(name=book_data3,filename=D:SQL2000JZH1book_data3.ndf,size=5MB,maxsize=UNLIMITED,filegrowth=2MB),(name=book_data4,filename=D:SQL2000JZH1book_data4.ndf,size=5MB,maxsi
23、ze=UNLIMITED,filegrowth=2MB),filegroup bookgroup2(name=book_data5,filename=D:SQL2000JZH1book_data5.ndf,size=2MB,maxsize=100MB,filegrowth=15%)Log on(name=book_log,filename=D:SQL2000JZH1book_log.ldf,size=2MB,maxsize=35MB,filegrowth=1MB)在在【查詢查詢】編輯對話框中輸入代碼完畢后,單擊工具欄中的編輯對話框中輸入代碼完畢后,單擊工具欄中的【執行查詢執行查詢】按鈕,如按鈕
24、,如下左圖所示,或按快捷鍵下左圖所示,或按快捷鍵F5運行命令。執行運行命令。執行CREATE DATABASE命令時,在結果命令時,在結果窗口的下半部將顯示執行的進展情況。在命令成功執行后,在窗口的下半部將顯示執行的進展情況。在命令成功執行后,在SQL Server上執行刷上執行刷新操作,如下右圖所示,新建的數據庫新操作,如下右圖所示,新建的數據庫book就顯示在屏幕左邊的窗口中。就顯示在屏幕左邊的窗口中。創建數據庫后,可以對已存在的數據庫進行修改,包括:創建數據庫后,可以對已存在的數據庫進行修改,包括:u 增加或者刪除數據文件;增加或者刪除數據文件;u 改變數據文件的大小和增長方式;改變數據
25、文件的大小和增長方式;u 改變日志文件的大小和增長方式;改變日志文件的大小和增長方式;u 增加或刪除日志文件;增加或刪除日志文件;u 增加或刪除文件組;增加或刪除文件組; 通過通過SQL語言修改數據庫的核心語句是語言修改數據庫的核心語句是ALTER DATABASE。該語。該語句的語法格式為:句的語法格式為:ALTER DATABASE database_nameADD FILE , n TO FILEGROUP filegroup_nameADD LOG FILE , nREMOVE FILE logical_file_nameADD FILEGROUP filegroup_nameREMO
26、VE FILEGROUP filegroup_nameMODIFY FILE MODIFY NAME=new_dbname下面說明重要關鍵字和子句的含義和作用:下面說明重要關鍵字和子句的含義和作用:p ADD FILE 子句,想數據庫中添加數據文件,文件的屬性由子句,想數據庫中添加數據文件,文件的屬性由給出。全部關鍵字給出。全部關鍵字TO FILE GROUP指出要添加到的文件組指出要添加到的文件組(filegroup_name),若默認則為主文件組。,若默認則為主文件組。p ADD LOG FILE, 向數據庫中添加日志文件,日志文件的屬性由向數據庫中添加日志文件,日志文件的屬性由給出。給出
27、。p REMOVE FILE, 從數據庫中刪除數據文件,被刪除的文件名由從數據庫中刪除數據文件,被刪除的文件名由logical_file_name給出。當刪除一個數據文件時,邏輯文件和物理文件全給出。當刪除一個數據文件時,邏輯文件和物理文件全部被刪除。只有在文件為空時才能被刪除。部被刪除。只有在文件為空時才能被刪除。p ADD FILEGROUP, 向數據庫中添加文件組,文件組名由參數向數據庫中添加文件組,文件組名由參數filegroup_name給出。給出。p REMOVE FILEGROUP, 從數據庫中刪除文件組,文件組名由從數據庫中刪除文件組,文件組名由filegroup_name給出
28、。但應當注意,在刪除文件組之前必須保證該文件組給出。但應當注意,在刪除文件組之前必須保證該文件組為空,若不為空則應先刪除該文件組所包含的所有文件。為空,若不為空則應先刪除該文件組所包含的所有文件。p MODIFY FILE,修改數據庫文件的屬性,被修改文件的邏輯名由,修改數據庫文件的屬性,被修改文件的邏輯名由的的NAME參數給出,可以修改的文件屬性包括:參數給出,可以修改的文件屬性包括:FILENAME, SIZE, MAXSIZE, FILEGROUP。但要注意,一次只能修改其中的一個屬。但要注意,一次只能修改其中的一個屬性。性。例例 2:用用ALTER DATABASE命令,在命令,在bo
29、ok數據庫中添加一個數據文件數據庫中添加一個數據文件“book_data6”,并指定其初始大小為,并指定其初始大小為3MB;最大大小不受限制,設置增長;最大大小不受限制,設置增長為為15%。其代碼如下:其代碼如下:ALTER DATABASE bookADD FILE(NAME=book_data6,FILENAME=D:SQL2000JZH1book_data6.mdf,SIZE=3MB,MAXSIZE=UNLIMITED,FILEGROWTH=15%)例例 3:用用ALTER DATABASE命令,在命令,在book數據庫中增加一個名為數據庫中增加一個名為“waiwen”的文件組,并為該組
30、添加兩個數據文件。數據文件名分別為的文件組,并為該組添加兩個數據文件。數據文件名分別為“book_waiwen1”和和“book_waiwen2”,其中數據文件,其中數據文件“book_waiwen1”的初始大小為的初始大小為10MB;最大大小不受限制,設置增長為最大大小不受限制,設置增長為2MB;而;而“book_waiwen2”數據文件的初始數據文件的初始大小為大小為12MB,以,以12%增長,最大大小為增長,最大大小為120MB。其代碼如下:其代碼如下:ALTER DATABASE bookADD FILEGROUP waiwenALTER DATABASE bookADD FILE(N
31、AME=book_waiwen1,FILENAME=D:SQL2000JZH1book_waiwen1.ndf,SIZE=10MB,MAXSIZE=UNLIMITED,FILEGROWTH=2MB),(NAME=book_waiwen2,FILENAME=D:SQL2000JZH1book_waiwen2.ndf,SIZE=12MB,MAXSIZE=120MB,FILEGROWTH=12%)TO FILEGROUP waiwen例例 4:用用ALTER DATABASE命令,在命令,在book數據庫刪除數據文件數據庫刪除數據文件“book_waiwen2” 。其代碼如下:其代碼如下:ALTER
32、 DATABASE bookREMOVE FILE book_waiwen2例例 5:用用ALTER DATABASE命令,在命令,在book數據庫刪除文件組數據庫刪除文件組“waiwen”。注意被刪除的文件組必須為空,即不包括任何數據文件,如包含有數據文件注意被刪除的文件組必須為空,即不包括任何數據文件,如包含有數據文件則現將數據文件刪除。則現將數據文件刪除。其代碼如下:其代碼如下:ALTER DATABASE bookREMOVE FILE book_waiwen1ALTER DATABASE bookREMOVE FILEGROUP waiwen例例 6:用用ALTER DATABASE
33、命令,為命令,為book數據庫添加一個日志文件,所添數據庫添加一個日志文件,所添加日志文件名為加日志文件名為_Log1,并且所添日志文件初始大小為,并且所添日志文件初始大小為5MB,最大大小為,最大大小為78MB,按,按6MB增長。增長。其代碼如下:其代碼如下:ALTER DATABASE bookADD LOG FILE(NAME=book_Log1,FILENAME=D:SQL2000JZH1book_Log1.ldf,SIZE=5MB,MAXSIZE=78MB,FILEGROWTH=6MB)例例 7:用用ALTER DATABASE命令,刪除上例中所創建的日志文件。命令,刪除上例中所創建
34、的日志文件。其代碼如下:其代碼如下:ALTER DATABASE bookREMOVE FILE book_Log1例例 8:用用ALTER DATABASE命令,修改數據庫命令,修改數據庫“book”的屬性。將數據文件的屬性。將數據文件“book_data2”的初始大小改為的初始大小改為8MB,最大大小為,最大大小為120MB,按,按6MB增長。增長。注意每次只能修改數據文件的一個屬性。注意每次只能修改數據文件的一個屬性。其代碼如下:其代碼如下:ALTER DATABASE bookMODIFY FILE(NAME=book_data2,SIZE=8MB)ALTER DATABASE boo
35、kMODIFY FILE(NAME=book_data2,MAXSIZE=120MB)ALTER DATABASE bookMODIFY FILE(NAME=book_data2,FILEGROWTH=6MB) 當不再需要數據庫時,或數據庫被移到另一個數據庫或服務器時,即可當不再需要數據庫時,或數據庫被移到另一個數據庫或服務器時,即可刪除數據庫。數據庫刪除之后,文件及其數據都從服務器上的磁盤中刪除。刪除數據庫。數據庫刪除之后,文件及其數據都從服務器上的磁盤中刪除。一旦刪除數據庫,它將永久刪除,并且不能進行檢索,除非使用以前的備份。一旦刪除數據庫,它將永久刪除,并且不能進行檢索,除非使用以前的備
36、份。不能刪除系統數據庫不能刪除系統數據庫msdb,master,model和和tempdb。 建議在數據庫刪除之后備份建議在數據庫刪除之后備份master數據庫,因為刪除數據庫將更新數據庫,因為刪除數據庫將更新mater數據庫中的系統表。如果數據庫中的系統表。如果master需要還原,則從上次備份需要還原,則從上次備份master之后刪之后刪除的所有數據庫都將在系統表中引用,因而可能導致出現錯誤信息。除的所有數據庫都將在系統表中引用,因而可能導致出現錯誤信息。 通過通過SQL語言刪除數據庫的核心語句是語言刪除數據庫的核心語句是DROP DATABASE。該語。該語句的語法格式為:句的語法格式為
37、:DROP DATABASE database_name , n其中其中database_name是要刪除的數據庫名。是要刪除的數據庫名。例例 9:用用DROP DATABASE命令,刪除數據庫命令,刪除數據庫“book” 。其代碼如下:其代碼如下:DROP DATABASE book1. 定義基本表定義基本表定義基本表語句的一般格式為:定義基本表語句的一般格式為: CREATE TABLE database_name. owner. | owner. table_name /*指定表名指定表名*/( /*字段的定義字段的定義*/| column_name AS computed_column
38、_expression /*定義計算字段定義計算字段*/| ) /*指定表的約束指定表的約束*/ON filegroup | DEFAULT /*指定存儲表的文件組指定存儲表的文件組*/TEXTIMAGE_ON filegroup | DEFAULT /*指定存儲指定存儲text, ntext和和image類型數據的文件組類型數據的文件組*/下面說明重要關鍵字和子句的含義和作用:下面說明重要關鍵字和子句的含義和作用:p database_name 用來創建表所在的數據庫的名稱。當然,此數據庫必須用來創建表所在的數據庫的名稱。當然,此數據庫必須 存在,存在,不能將一個不存在的數據庫名稱作為指定的
39、數據庫名稱,否則會發生錯誤提示。不能將一個不存在的數據庫名稱作為指定的數據庫名稱,否則會發生錯誤提示。p owner, 用來指定所創建的新表的所有者名。用來指定所創建的新表的所有者名。p table_name, 用來指定添加表的名稱,表名必須遵循用來指定添加表的名稱,表名必須遵循SQL標識符命名規則。標識符命名規則。p column_name, 用來指定在新表中的字段名稱。用來指定在新表中的字段名稱。p AS, 指定所定義的列為計算列,其值由計算列表達式后確定。指定所定義的列為計算列,其值由計算列表達式后確定。p computed_column_expression,用來定義計算字段值的表達式
40、。表達式可以是,用來定義計算字段值的表達式。表達式可以是字段名、常量、變量、函數等或他們的組合。所謂計算字段是一個虛擬的字段,字段名、常量、變量、函數等或他們的組合。所謂計算字段是一個虛擬的字段,它的值并不實際存儲在表中,而是通過對同一個表中其他字段進行某種計算而得它的值并不實際存儲在表中,而是通過對同一個表中其他字段進行某種計算而得到的結果。到的結果。p ONfilegroup | DEFAULT,用來指定存儲此新表的文件組名稱。當指定,用來指定存儲此新表的文件組名稱。當指定filegroup時,此新表將存儲在所指定的文件組中,并且此文件組必須存在于數據時,此新表將存儲在所指定的文件組中,并
41、且此文件組必須存在于數據庫中。如果是指定庫中。如果是指定DEFAULT或沒有指定時,則此新表將會存儲在默認的文件組或沒有指定時,則此新表將會存儲在默認的文件組中。中。p TEXTIMAGE_ON,用來指定,用來指定text、ntext和和image字段的數據存儲的文件組。字段的數據存儲的文件組。如果無此子句或指定了如果無此子句或指定了DEFAULT,這些類型的數據就和表一起存儲在相同的文,這些類型的數據就和表一起存儲在相同的文件組中。件組中。例例 10:用用CREATE TABLE語句創建語句創建“圖書管理系統圖書管理系統”數據庫中的數據庫中的“圖書明細圖書明細表表”。其表結構如下:其表結構如
42、下:字段名字段名(列名列名) 數據類型數據類型長度長度允許空允許空圖書編號圖書編號int4類別編號類別編號samllint2 圖書名稱圖書名稱nvarchar50作者名稱作者名稱char10出版社名稱出版社名稱char20出版日期出版日期smalldatetime4定價定價money8是否借出是否借出bit1封面封面image16use 圖書管理系統圖書管理系統create table 圖書明細表圖書明細表(圖書編號圖書編號 int not null,類別編號類別編號 smallint null,圖書名稱圖書名稱 nvarchar(50) null,作者名稱作者名稱 char(10) null
43、,出版社名稱出版社名稱 char (20) null, 出版日期出版日期 smalldatetime null,定價定價 money null,是否借出是否借出 bit not null,封面封面 image null,)約束約束列級完整性約束和表級完整性約束列級完整性約束和表級完整性約束列級完整性約束列級完整性約束針對屬性值設置的限制條件。針對屬性值設置的限制條件。 NOT NULL或或 NULL約束約束NOT NULL約束為不允許字段值為空,而約束為不允許字段值為空,而NULL約束為允許字段值為空。字段值為空的含義是該屬性值約束為允許字段值為空。字段值為空的含義是該屬性值“不詳不詳”、“含
44、糊含糊”或或“無意義無意義”。對于關系的主屬性,必須限定為。對于關系的主屬性,必須限定為“NOT NULL”,以滿足實體完整性;而對一些不重要的屬性,例如學生的愛好、特長等,以滿足實體完整性;而對一些不重要的屬性,例如學生的愛好、特長等,則可以不輸入字段,即允許為則可以不輸入字段,即允許為NULL值。值。 其約束格式為其約束格式為: NOT NULL 或或 NULL UNIQUE約束約束唯一性約束,即不允許該關系的該列中,出現有重復的唯一性約束,即不允許該關系的該列中,出現有重復的屬性值。屬性值。 其約束格式為其約束格式為: UNIQUE DEFAULT約束約束默認值約束,將列中的使用頻率最高
45、的屬性值定義為默認值約束,將列中的使用頻率最高的屬性值定義為DEFAULT約束中的默認值,可以減少數據輸入的工作量。約束中的默認值,可以減少數據輸入的工作量。 其約束格式為其約束格式為: DEFAULT CHECK約束約束檢查約束,通過約束條件表達式設置列值應滿足的條件。檢查約束,通過約束條件表達式設置列值應滿足的條件。其約束格式為其約束格式為:CONSTRAINT CHECK ()例例 11:用用CREATE TABLE語句創建語句創建“學生學生_課程課程”數據庫中的數據庫中的“學生學生”基本情基本情況表。況表。其表結構如下:其表結構如下:數據庫名數據庫名基本表名基本表名字段名字段名數據類型
46、數據類型長度長度列級約束列級約束學生學生_課程課程學生學生學號學號CHAR5不能空,惟一值不能空,惟一值姓名姓名CHAR8不能空不能空年齡年齡SMALLINT默認默認20性別性別CHAR2“男男”或或“女女”所在系所在系CHAR20其代碼如下:其代碼如下:USE 學生學生_課程課程CREATE TABLE 學生學生(學號學號 CHAR(5) NOT NULL UNIQUE, 姓名姓名 CHAR(8) NOT NULL, 年齡年齡 SMALLINT DEFAULT 20, 性別性別 CHAR(2),所在系所在系 CHAR(20), CONSTRAINT C1 CHECK(性別性別 IN (男男,
47、女女); 表級完整性約束表級完整性約束列級約束的約束條件表達式中只涉及一個列的數據。如果列級約束的約束條件表達式中只涉及一個列的數據。如果 約束條件涉及到多個列屬性,則成為表級的約束條件。約束條件涉及到多個列屬性,則成為表級的約束條件。 PRIMARY KEY約束約束實體完整性約束,實體完整性約束,PRIMARY KEY約束用于定義約束用于定義主碼,它能保證主碼的唯一性和非空性。主碼,它能保證主碼的唯一性和非空性。PRIMARY KEY約束可直接寫在約束可直接寫在主碼后,也可按語法單獨列出。主碼后,也可按語法單獨列出。 其約束格式為其約束格式為: CONSTRAINT PRIMARY KEY
48、CLUSTERED() 其中,其中,CLUSTERED短語為建立短語為建立聚簇。聚簇。 FOREIGN KEY約束約束外碼和參照表約束,用于定義參照完整性。外碼和參照表約束,用于定義參照完整性。 其約束格式為其約束格式為: CONSTRAINT FOREIGN KEY ()REFERENCES ()例例 12:用用CREATE TABLE語句創建語句創建“學生學生_課程課程”數據庫中的基本表。數據庫中的基本表。其表結構如下:其表結構如下:數據庫名數據庫名基本表名基本表名屬性名屬性名數據類型數據類型長度長度列級約束列級約束表級約束表級約束學生學生_課程課程學生學生學號學號CHAR5不能空,惟一值
49、不能空,惟一值姓名姓名CHAR8不能空不能空年齡年齡SMALLINT默認默認20性別性別CHAR2“男男”或或“女女”所在系所在系CHAR20課程課程課程號課程號CHAR5不能空,惟一值不能空,惟一值課程號為主碼課程號為主碼課程名課程名CHAR20不能空不能空先行課先行課CHAR5選課選課學號學號CHAR5不能空不能空 學號和課程號學號和課程號為主碼;學號為外為主碼;學號為外碼;課程號為外碼碼;課程號為外碼課程號課程號CHAR5不能空不能空成績成績SMALLINT0100其代碼如下:其代碼如下:USE 學生學生_課程課程CREATE TABLE 學生學生 (學號學號 CHAR(5) NOT N
50、ULL UNIQUE, 姓名姓名 CHAR(8) NOT NULL, 年齡年齡 SMALLINT DEFAULT 20, 性別性別 CHAR(2),所在系所在系 CHAR(20), CONSTRAINT C1 CHECK(性別性別 IN (男男,女女);CREATE TABLE 課程課程 (課程號課程號 CHAR(5) PRIMARY KEY, 課程名課程名 CHAR(20), 先行課先行課 CHAR(5); CREATE TABLE 選課選課 (學號學號 CHAR(5), 課程號課程號 CHAR(5),成績成績 SMALLINT, CONSTRAINT C2 CHECK(成績成績 BETWE
51、EN 0 AND 100), CONSTRAINT C3 PRIMARY KEY(學號學號, 課程號課程號), CONSTRAINT C4 FOREIGN KEY(學號學號) REFERENCES 學生學生(學號學號),CONSTRAINT C5 FOREIGN KEY(課程號課程號) REFERENCES 課程課程(課程號課程號); 創建自動獲取列值的表:創建自動獲取列值的表: 指定默認值;指定默認值; 使用列表達式;使用列表達式;例例 13:用用CREATE TABLE語句創建一個有三列的表語句創建一個有三列的表test1,其中列,其中列col_3使使用了由列表達式用了由列表達式col_1
52、+col_2,表示該列的值為列,表示該列的值為列col_1和和col_2的值之和,其的值之和,其數據類型為計算值的數據類型。由于計算結果為數據類型為計算值的數據類型。由于計算結果為int型,故列型,故列col_3也為也為int型。型。其代碼如下:其代碼如下:CREATE TABLE test1(col_1 int,col_2 int,col_3 AS col_1+col_2)2、修改基本表、修改基本表 當以建立好的基本表隨著應用環境和應用需求的變化而需要修當以建立好的基本表隨著應用環境和應用需求的變化而需要修改時,改時, 需要利用需要利用SQL的修改基本表語句修改表結構。的修改基本表語句修改表
53、結構。SQL語言用語言用ALTER TABLE語句來修改基本表,其一般格式為:語句來修改基本表,其一般格式為: ALTER TABLE table_nameALTER COLUMN column_name /*修改已有列的屬性修改已有列的屬性*/new_data_type (precision , scale)NULL | NOT NULL| ADD , n /*增加新列增加新列*/| DROP CONSTRATINT constraint_name | COLUMN , n /*刪除列刪除列*/ 下面說明主要參數和子句的含義:下面說明主要參數和子句的含義: table_name 用來指定要修
54、改的表的名稱;用來指定要修改的表的名稱; ALTER COLUMN子句,用來指定要進行修改的表中的字段的屬性,子句,用來指定要進行修改的表中的字段的屬性,要修改的字段名由要修改的字段名由column_name給出;給出; new_data_type,用來指定被修改字段的新數據類型;,用來指定被修改字段的新數據類型; precision,用來指定新數據類型的有效位數;,用來指定新數據類型的有效位數; scale,用來指定新數據類型的小數位數;,用來指定新數據類型的小數位數; NULL | NOT NULL,用來指定其字段是否可接受,用來指定其字段是否可接受NULL; ADD子句,用來向表中增加新
55、字段。新字段的定義方法與子句,用來向表中增加新字段。新字段的定義方法與CREATE TABLE語句中定義字段的方法相同。語句中定義字段的方法相同。 DROP子句,用來從表中刪除字段或約束。子句,用來從表中刪除字段或約束。COLUMN參數中指定的參數中指定的是被刪除的字段名,是被刪除的字段名,constraint_name是被刪除的約束名。是被刪除的約束名。下面通過實例說明下面通過實例說明ALTER TABLE語句的使用方法。語句的使用方法。例例14,對例,對例10中圖書管理系統數據庫中的中圖書管理系統數據庫中的“圖書明細表圖書明細表”進行以下修改:進行以下修改:將字段名為將字段名為“圖書名稱圖
56、書名稱”的列長度由原來的的列長度由原來的50改為改為60,將名為,將名為“出版日期出版日期”的列的數據類型由原來的的列的數據類型由原來的smalldatetime改為改為datetime. 其代碼如下:其代碼如下:USE 圖書管理系統圖書管理系統ALTER TABLE 圖書明細表圖書明細表ALTER COLUMN 圖書名稱圖書名稱 nvarchar(60)ALTER TABLE 圖書明細表圖書明細表ALTER COLUMN 出版日期出版日期 datetime例例15,對例,對例10中圖書管理系統數據庫中的中圖書管理系統數據庫中的“圖書明細表圖書明細表”進行以下修改:進行以下修改:增加一個增加一
57、個“ISBN”字段。其代碼如下:字段。其代碼如下:USE 圖書管理系統圖書管理系統ALTER TABLE 圖書明細表圖書明細表ADD ISBN char (10) NULL例例16,對例,對例15中圖書管理系統數據庫中的中圖書管理系統數據庫中的“圖書明細表圖書明細表”進行以下修改:進行以下修改:刪除刪除“ISBN”字段。其代碼如下:字段。其代碼如下:USE 圖書管理系統圖書管理系統ALTER TABLE 圖書明細表圖書明細表DROP COLUMN ISBN 3、刪除基本表、刪除基本表SQL中可用中可用DROP TABLE命令來刪除表,其語法格式如下:命令來刪除表,其語法格式如下:DROP TA
58、BLE table_name例例17,刪除圖書管理系統數據庫中的,刪除圖書管理系統數據庫中的“圖書明細表圖書明細表” 。其代碼如下:。其代碼如下:USE 圖書管理系統圖書管理系統DROP TABLE 圖書明細表圖書明細表 索引是索引是SQL Server在列上建立的一種數據庫對象。索引對表中的在列上建立的一種數據庫對象。索引對表中的數據提供邏輯排序,可以提高數據的訪問速度。數據提供邏輯排序,可以提高數據的訪問速度。 數據庫中的索引是一個列表,在這個列表中包含了某個表中一列數據庫中的索引是一個列表,在這個列表中包含了某個表中一列或者若干列值的集合,以及這些值的記錄在數據表中的存儲位置的或者若干列
59、值的集合,以及這些值的記錄在數據表中的存儲位置的物理地址。物理地址。 如果一個表沒有創建索引,則數據行不按任何特定的順序存儲。這種如果一個表沒有創建索引,則數據行不按任何特定的順序存儲。這種結構稱為堆集。結構稱為堆集。SQL Server 索引的兩種類型為:索引的兩種類型為: 聚集索引聚集索引(Clustered Index) 聚集索引基于數據行的鍵值在表內排序和存儲這些數據行。由于數據行聚集索引基于數據行的鍵值在表內排序和存儲這些數據行。由于數據行按基于聚集索引鍵的排序次序存儲,因此聚集索引對查找行很有效。按基于聚集索引鍵的排序次序存儲,因此聚集索引對查找行很有效。每每個表只能有一個聚集索引
60、,因為數據行本身只能按一個順序存儲。個表只能有一個聚集索引,因為數據行本身只能按一個順序存儲。只有當表包含聚集索引時,表內的數據行才按排序次序存儲。如果表沒只有當表包含聚集索引時,表內的數據行才按排序次序存儲。如果表沒有聚集索引,則其數據行按堆集方式存儲。有聚集索引,則其數據行按堆集方式存儲。非聚集索引非聚集索引(Nonclustered Index)非聚集索引具有完全獨立于數據行的結構。非聚集索引的最低行包含非非聚集索引具有完全獨立于數據行的結構。非聚集索引的最低行包含非聚集索引的鍵值,并且每個鍵值項都有指針指向包含該鍵值的數據行。聚集索引的鍵值,并且每個鍵值項都有指針指向包含該鍵值的數據行
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 自動控制系統【直流】課設指導書-野瑩瑩要點
- 設備費用核算管理
- 財務會計綜合考試試卷 (一)
- 2024年中考押題預測卷02(武漢卷)-道德與法治(考試版)A3
- 2024-2025學年下學期高一生物滬科版期末必刷常考題之有性生殖中的遺傳信息傳遞
- 建筑施工特種作業-高處作業吊籃安裝拆卸工真題庫-1
- 山東社區招聘題目及答案
- 剖切面的種類與剖切方法2
- 2023-2024學年山東省青島市膠州市高二下學期期末學業水平檢測數學試題(解析版)
- 2023-2024學年湖北省新高考聯考協作體高二下學期7月期末考試數學試題(解析版)
- 消費者態度的形成與改變
- 大學生人際交往調查報告課件
- 湖南省長沙市望城區2020-2021學年八年級下學期期末考試歷史試卷
- 教學質量檢測質量分析表
- 10kv線路巡視檢查表
- 施工單通用范本
- 六合散-春腳集卷二-方劑加減變化匯總
- 慶陽市北部城區控制性詳細規劃—說明書
- 趣味英語(課堂PPT)
- 五年級語文下學期課文內容填空專項習題含答案
- 食品質量安全溯源系統技術方案
評論
0/150
提交評論