扩大
缩小
  

十五、约束

什么是约束?

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

 

 
posted @ 2023-12-28 14:16  风筝遇上风  阅读(7)  评论(0编辑  收藏  举报