十五、約束

什麼是約束?

SqlServer數據庫爲了保存的數據更具備準確性,一致性,在SqlServer中支持的有約束,有規則來限
定,如果符合規則就可以保存,如果不符合,就不能保存。SQL下有以下幾種約束:
1. 主鍵約束
2. 外鍵約束
3. Not Null約束
4. 唯一約束
5. 檢查約束

一、主鍵約束(PRIMARY KEY)

主鍵在每個表中對應的一行記錄的唯一的標識,且主鍵同時要設置Not Null約束,如果在指定主鍵約
束時沒有指定Not Null約束,SQL Server會自動添加Not Null約束,下面使用圖片演示創建表時指定
主鍵約束
主鍵:唯一的標識----人的身份信息---身份證---身份證號碼
彙集多個特點於一身:唯一標識,非空,聚集索引--排序
CREATE TABLE [dbo].[Company](
[Id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[Name] [varchar](50) NULL,
[CreateTime] [datetime] NULL,
[CreatorId] [int] NOT NULL,
[LastModifierId] [int] NULL,
[LastModifyTime] [datetime] NULL,
[NewName] [dbo].[CompanyName] NULL,
CONSTRAINT [PK_Company] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

二、外鍵約束

外鍵是指在表中保存其他表的主鍵,同樣的外鍵一樣需要設置Not Null約束,下面使用圖片演示創表時
添加外鍵約束;
Company:公司----SysUser 職員---主鍵(公司的唯一標識)
SysUser: 信息--包含了所屬公司, (需要保存用戶的公司信息,就保存Compnay的主鍵
USE [ZhaoxiEdu]
GO
ALTER TABLE [dbo].[SysUser] WITH NOCHECK ADD CONSTRAINT [FK_SysUser_Company] FOREIGN KEY([CompanyId])
REFERENCES [dbo].[Company] ([Id])
GO
ALTER TABLE [dbo].[SysUser] CHECK CONSTRAINT [FK_SysUser_Company]
GO

三、Not Null約束

在表中,被指定Not Null約束的列的值不能爲null,下面使用圖片演示添加和刪除Not Null約束,首先
是添加Not Null約束
update [ZhaoxiEdu].[dbo].[Company] set NewName=null where
id=2

四、唯一約束/唯一索引

唯一約束是保證該數據在表數據中是唯一的,下面是唯一約束的核心價值。
userInfo表----很多字段---No(用戶的身份證號碼)---不應該出現重複。
USE [ZhaoxiEdu]
GO
/****** Object: Index [IX_SysUser] Script Date: 2022/8/24 16:04:17 ******/
ALTER TABLE [dbo].[SysUser] ADD CONSTRAINT [IX_SysUser] UNIQUE NONCLUSTERED
(
[Name] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF,
ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON
[PRIMARY]
GO

五、檢查約束

檢查約束用於指定列是否滿足列的要求,比如年齡的數據不可以是負數下面使用圖片演示添加檢查約束 
USE [ZhaoxiEdu]
GO
ALTER TABLE [dbo].[SysUser] WITH CHECK ADD CONSTRAINT [CK_SysUser] CHECK (([age]>(0)))
GO
ALTER TABLE [dbo].[SysUser] CHECK CONSTRAINT [CK_SysUser]
GO

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章