- SQL Server 2016從入門到精通(視頻教學超值版)
- 王英英
- 2586字
- 2019-12-06 15:49:26
5.1 數據定義語句
數據定義語句(DDL)是用于描述數據庫中要存儲的現實世界實體的語言。作為數據庫管理系統的一部分,DDL用于定義數據庫的所有特性和屬性,例如行布局、字段定義、文件位置,常見的數據定義語句有:CREATE DATABASE、CREATE TABLE、CREATE VIEW、DROP VIEW、ALTER TABLE等,下面將分別介紹各種數據定義語句。
5.1.1 CREATE的應用
作為數據庫操作語言中非常重要的部分,CREATE用于創建數據庫、數據表以及約束等,下面將詳細介紹CREATE的具體應用。
1.創建數據庫
創建數據庫是在系統磁盤上劃分一塊區域用于數據的存儲和管理,創建數據庫時需要指定數據庫的名稱、文件名稱、數據文件大小、初始大小、是否自動增長等內容。SQL Server中可以使用CREATE DATABASE語句,或者通過對象資源管理器創建數據庫。這里主要介紹CREATE DATABASE的用法。CREAETE DATABASE語句的基本語法格式如下:

- database_name:數據庫名稱,不能與SQL Server中現有的數據庫實例名稱相沖突,最多可以包含128個字符。
- ON:指定顯示定義用來存儲數據庫中數據的磁盤文件。
- PRIMARY:指定關聯的<filespec>列表定義的主文件,在主文件組<filespec>項中指定的第一個文件將生成主文件,一個數據庫只能有一個主文件。如果沒有指定PRIMARY,那么CREATE DATABASE語句中列出的第一個文件將成為主文件。
- NAME:指定文件的邏輯名稱。引用文件時在SQL Server中使用的邏輯名稱。
- FILENAME:指定創建文件時由操作系統使用的路徑和文件名,執行CREATE DATABASE語句前,指定路徑必須存在。
- SIZE:指定數據庫文件的初始大小,如果沒有為主文件提供size,數據庫引擎將使用model數據庫中的主文件的大小。
- MAXSIZE:指定文件可增大到的最大大小。可以使用KB、MB、GB和TB做后綴。默認值為MB。max_size是整數值。如果不指定max_size,則文件將不斷增長直至磁盤被占滿。UNLIMITED表示文件一直增長到磁盤充滿。
- FILEGROWTH:指定文件的自動增量。文件的FILEGROWTH設置不能超過MAXSIZE設置。該值可以KB、MB、GB、TB或百分比(%)為單位指定。默認值為MB。如果指定%,則增量大小為發生增長時文件大小的指定百分比。值為0時表明自動增長被設置為關閉,不允許增加空間。
【例5.1】創建名稱為test_db的數據庫,輸入語句如下。

該段代碼創建一個名稱為test_db的數據庫,設定數據庫的主數據文件名稱為test_db_data1,主數據文件大小為5MB,增長大小為1MB。注意,該段代碼沒有指定創建事務日志文件,但是系統默認會創建一個數據庫名稱加上_log的日志文件,該日志文件的大小為系統默認值2MB,增量為10%,因為沒有設置增長限制,所以事務日志文件的最大增長空間將是指定磁盤上所有剩余可用空間。
2.創建數據表
在創建完數據庫之后,接下來的工作就是創建數據表。所謂創建數據表,指的是在已經創建好了的數據庫中建立新表。創建數據表的過程是規定數據列的屬性的過程,同時也是實施數據完整性約束的過程。創建數據表使用CREATE TABLE語句,CREATE TABLE語句的基本語法格式如下:

- database_name:要在其中創建表的數據庫名稱,不指定數據庫名稱時,則默認使用當前數據庫。
- schema_name:新表所屬架構的名稱,若此項為空,則默認為新表的創建者在當前架構的名稱。
- table_name:創建的數據表的名稱。
- column_name:數據表中的各個列的名稱,列名稱必須唯一。
- data_type:指定字段列的數據類型,可以是系統數據類型,也可以是用戶定義數據類型。
- NULL | NOT NULL:確定列中是否允許使用空值。
- DEFAULT:用于指定列的默認值。
- ROWGUIDCOL:指示新列是行GUID列。對于每個表,只能將其中的一個uniqueidentifier列指定為ROWGUIDCOL列。
- PRIMARY KEY:主鍵約束,通過唯一索引對給定的一列或多列強制實體完整性的約束。每個表只能創建一個PRIMARY KEY約束。PRIMARY KEY約束中定義的所有列都必須定義為NOT NULL。
- UNIQUE:唯一性約束,該約束通過唯一索引為一個或多個指定列提供實體完整性。一個表可以有多個UNIQUE約束。
- CLUSTERED | NONCLUSTERED:指示為PRIMARY KEY或UNIQUE約束創建聚集索引還是非聚集索引。PRIMARY KEY約束默認為CLUSTERED,UNIQUE約束默認為NONCLUSTERED。在CREATE TABLE語句中,可只為一個約束指定CLUSTERED。如果在為UNIQUE約束指定CLUSTERED的同時又指定了RIMARY KEY約束,則PRIMARY KEY將默認為NONCLUSTERED。
- [ ASC | DESC ]:指定加入到表約束中的一列或多列的排序順序,ASC為升序排列,DESC為降序排列,默認值為ASC。
【例5.2】在test_db數據庫中創建員工表tb_emp1,結構如表5-1所示。
表5-1 tb_emp1表結構

輸入語句如下:

該段代碼將在test_db數據庫中添加一個名稱為tb_emp1的數據表。讀者可以打開表的設計窗口,看到該表的結構,如圖5-1所示。

圖5-1 tb_emp1表結構
5.1.2 DROP的功能
既然能夠創建數據庫和數據表,那么也能將其刪除,DROP語句可以輕松地刪除數據庫和表。下面介紹如何使用DROP語句。
1.刪除數據表
刪除數據表是將數據庫中已經存在的表從數據庫中刪除。注意,刪除表的同時,表的定義和表中數據、索引和視圖也會被刪除,因此,在刪除操作前,最好對表中的數據做個備份,以免造成無法挽回的后果(如果要刪除的表是其他表的參照表,此表將無法刪除,需要先刪除表中的外鍵約束或者將其他表刪除)。刪除表的語法格式如下:

table_name為要刪除的數據表的名稱。
【例5.3】刪除test_db數據庫中的table_emp表,輸入語句如下。

2.刪除數據庫
刪除數據庫是將已經存在的數據庫從磁盤空間上清除,清除之后,數據庫中的所有數據也將一同被刪除,刪除數據庫的基本語法格式為:

database_name為要刪除的數據庫的名稱。
【例5.4】刪除test_db數據庫,輸入語句如下。

5.1.3 ALTER的功能
當數據庫結構無法滿足需求或者存儲空間已經填滿時,可以使用ALTER語句對數據庫和數據表進行修改,下面將介紹如何使用ALTER語句修改數據庫和數據表。
1.修改數據庫
修改數據庫可以使用ALTER DATABASE語句,其基本語法格式如下:

- database_name:要修改的數據庫的名稱。
- ADD FILE……TO FILEGROUP:添加新數據庫文件到指定的文件組中。
- ADD LOG FILE:添加日志文件。
- REMOVE FILE:從SQL Server的實例中刪除邏輯文件說明并刪除物理文件。除非文件為空,否則無法刪除文件。
- MODIFY FILE:指定應修改的文件。一次只能更改一個<filespec>屬性。必須在<filespec>中指定NAME,以標識要修改的文件。如果指定了SIZE,那么新大小必須比文件當前大小要大。
- MODIFY NAME :使用指定的名稱重命名數據庫。
- ADD FILEGROUP:向數據庫中添加文件組。
- REMOVE FILEGROUP:從數據庫中刪除文件組。除非文件組為空,否則無法將其刪除。
- MODIFY FILEGROUP:通過將狀態設置為READ_ONLY或READ_WRITE,將文件組設置為數據庫的默認文件組或者更改文件組名稱來修改文件組。
【例5.5】將test_db數據庫的名稱修改為company,輸入語句如下。

2.修改表
修改表結構可以在已經定義的表中增加新的字段列或刪除多余的字段。實現這些操作可以使用ALTER TABLE語句,其基本語法格式如下:

- ALTER:修改字段屬性。
- ADD:向表中添加新的字段列,后面可以跟多個字段的定義信息,多個字段之間使用逗號隔開。
- DROP:刪除表中的字段,可以同時刪除多個字段,多個字段之間使用逗號分隔開。
【例5.6】在更改過名稱的company數據庫中,向tb_emp1數據表中添加名稱為birth的字段列,數據類型為date,要求非空,輸入語句如下。

【例5.7】刪除tb_emp1表中的birth字段列,輸入語句如下:

- 碼上行動:零基礎學會Python編程(ChatGPT版)
- 基于差分進化的優化方法及應用
- Building Mapping Applications with QGIS
- GameMaker Essentials
- 微信小程序開發實戰:設計·運營·變現(圖解案例版)
- Web Developer's Reference Guide
- Windows Phone 8 Game Development
- Python第三方庫開發應用實戰
- Professional JavaScript
- Mastering Citrix? XenDesktop?
- Mastering Python for Data Science
- 計算機應用基礎
- Django 3 Web應用開發從零開始學(視頻教學版)
- 數據結構:C語言描述(融媒體版)
- IBM Cognos Insight