上一節講的是直接在創建表的時候添加條件約束,但是有時候是在表格創建完畢之后,再添加條件約束的,那么這個又該如何實現?
其實,跟上一節所寫的SQL代碼,很多是相同的,只是使用了修改表的ALTER關鍵字及添加約束的ADD CONSTRAINT關鍵字而已,其他大同小異。
代碼如下:
USE PersonInfo --使用PersonInfo數據庫 GO IF EXISTS (SELECT * FROM sys.tables WHERE [name] = 'Employee ') --如果存在Employee這張表 DROP TABLE Employee --則刪除 GO IF EXISTS(SELECT * FROM sys.tables WHERE [name] = 'Person') --如果存在Person這張表 DROP TABLE Person --則刪除 GO CREATE TABLE Person --創建Person(人物)表 ( --索引 PersonID int IDENTITY(1,1) NOT NULL,-- 創建一個整型、自增為1、標識種子為1、不允許為空的列PersonID --名字 Name nvarchar(20) NOT NULL, --創建一個Unicode非固定長度(最多存儲20個Unicode字符)的列Name --年齡 Age int NOT NULL ,--創建一個整型的列Age --性別 Gender bit NOT NULL, --創建一個類型為bit的列Gender --身份信息 [Identity] nchar(18) NOT NULL--創建一個非Unicode非固定長度(最多存儲18個非Unicode字符)的列Identity ) ALTER TABLE Person ADD CONSTRAINT PK_PersonID PRIMARY KEY(PersonID), --為PersonID創建主鍵約束 CONSTRAINT CK_Age CHECK(Age >=18 AND Age <=55),--為Age創建檢查約束 CONSTRAINT DF_Gender DEFAULT(1) FOR Gender,--為Gender創建默認約束 CONSTRAINT CK_Identity CHECK (LEN([Identity])=18),--為Identity創建檢查約束 CONSTRAINT UQ_Identity UNIQUE([Identity]) --為Identity創建唯一約束 GO CREATE TABLE Employee --創建Employee(雇員)表 ( --索引 EmployeeID int IDENTITY(1,1001) NOT NULL, -- 創建一個整型、自增為1、標識種子為1001、不允許為空的列EmployeeID --人物索引 PersonID int NOT NULL , --職位 Post nvarchar(20) NOT NULL,--創建一個Unicode非固定長度(最多存儲20個Unicode字符)的列Post --入職時間 EntryTime datetime --創建一個類型為datetime的列EntryTime ) GO ALTER TABLE Employee ADD CONSTRAINT PK_EmployeeID PRIMARY KEY(EmployeeID),--為EmlpoyeeID創建主鍵約束 CONSTRAINT FK_PersonID FOREIGN KEY(PersonID) REFERENCES Person(PersonID),--為PersonID創建外鍵約束 CONSTRAINT DF_EntryTime DEFAULT getdate() FOR EntryTime--為EmlpoyeeID創建默認約束 GO
結果: