2 - SQL Server 2008 之 使用SQL語句為現有表添加約束條件


上一節講的是直接在創建表的時候添加條件約束,但是有時候是在表格創建完畢之后,再添加條件約束的,那么這個又該如何實現?

其實,跟上一節所寫的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

結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM