DDL - CREATE DATABASE、CREATE TABLE
雖然通常利用SSMS來新建一個資料庫與資料表比較方便,
但還是要了解一下如何使用指令碼來新增一個基本資料表。
一、新增資料庫與資料表
CREATE DATABASE mydatabase; GO USE mydatabase; GO CREATE TABLE TABLE_NAME ( id_a int NULL, name_a nvarchar(50) NULL ) GO
二、新增資料表
以下三種基本新增資料表的結果都一樣,
只是第一種省略了預設的結構描述dbo與所歸屬的檔案群組PRIMARY,
而第三種不特別指定欄位為NULL或是NOT NULL則預設為NULL。
CREATE TABLE TABLE_NAME ( id_a INT NULL, name_a NVARCHAR(50) NULL ) go
CREATE TABLE [dbo].[TABLE_NAME2] ( [id_a] [INT] NULL, [name_a] [NVARCHAR](50) NULL ) ON [PRIMARY] go
CREATE TABLE TABLE_NAME3 ( id_a INT, name_a NVARCHAR(50) ) go
三、設定主鍵
單一欄位設定主鍵
CREATE TABLE TABLE_NAME ( id_a INT PRIMARY KEY, name_a NVARCHAR(50) NULL ) go
弱實體設定主鍵的方式
CREATE TABLE TABLE_NAME ( id_a INT, name_a NVARCHAR(50), address_a NVARCHAR(50) NULL, PRIMARY KEY (id_a, name_a) ) go
弱實體設定主鍵錯誤的方式
CREATE TABLE TABLE_NAME ( id_a INT PRIMARY KEY, name_a NVARCHAR(50) PRIMARY KEY, address_a NVARCHAR(50) NULL ) go
四、設定外來鍵
先行準備父資料表
CREATE TABLE [dbo].[CUSTOMER2] ( [customer_id] [TINYINT] NOT NULL, [address] [NVARCHAR](50) NULL, [cell] [NCHAR](10) NULL, PRIMARY KEY (customer_id) ) go
再於子資料表設定外來鍵,並設定關連性
CREATE TABLE [dbo].[ORDER2] ( [order_id] [SMALLINT] NOT NULL, [customer_id] [TINYINT] REFERENCES CUSTOMER2(customer_id) ON UPDATE CASCADE ON DELETE CASCADE, [outitem] [DATETIME2](7) NOT NULL, PRIMARY KEY ([order_id]) ) go
可於物件總管裡查看ORDER2索引鍵的FK是否已經成功設定
五、IDENTITY自動累加
語法為:IDENTITY [ (seed , increment) ]
seed為起始值、increment是每次新增累加值,預設值為(1,1)
CREATE TABLE TABLE_1 ( id INT IDENTITY(10, 2) NOT NULL PRIMARY KEY, name VARCHAR(50) NULL ); INSERT INTO TABLE_1 (name) VALUES ('Bob'); SELECT * FROM TABLE_1; INSERT INTO TABLE_1 (name) VALUES ('Tom'); SELECT * FROM TABLE_1; INSERT INTO TABLE_1 (name) VALUES ('Bill'); SELECT * FROM TABLE_1; GO
觀察其結果可知,起始值從10開始,每次新增自動加2,
而且insert每一筆記錄時並不用特別指定id。