MSSQLSERVER数据库- 约束

      为了减少数据冗余和使数据库内容变的严谨,MSSQL数据库里引入了关系和约束。我们平时做一些小程序,需要使用到MSSQL数据库的时候大多没有严格去规划一下数据库的设计,但是真正开发的时候需要你严格的进行需求分析后再进行数据库设计,好的数据库设计对于维护和未来对程序的扩展有着非常大的好处。

      所以我觉的学习一下约束和关系还是挺重的。我是现学现卖,将学习的过程记录一下:

在学习之前先背几个单词,在需要在SQL语句写的时候用到:

  • Alter:改变
  • Primary:主要
  • Constraint:约束
  • Unique:唯一的、独特的
  • Foreign::外国的,外交的
  • Reference:参考,引用,提及
  • Cascade层叠,串联的

数据库约束是为了保证数据的完整性而实现的一套机制,约束有:

  • 非空约束
  • 主键约束(PK) Primary key constraint
  • 唯一约束(UQ) Unique constraint
  • 默认约束(DF) Default constraint
  • 检查约束(CK) Check constraint
  • 外键约束(FK) Foreign key constraint

我们首先来创建一张表teacher

 

 

如何给表增加字段

alter table teacher

add ttest nvarchar(50)

如图,看到添加了ttest字段

 

先看一下主键约束

alter table teacher

add constraint PK_Teacher primary key(tId)

 

对比一下这两张图,可以看到图2的键里多了个PK_Teacher,并且列的tId变成了一个钥匙,说明创建成功

    

            (图2)                                                    (图1)

 

维一约束:

alter table teacher

add constraint  UQ_Teacher_tname unique(tname)

那么唯一约束有什么不同。我们可以往数据库插入两条数据

insert into teacher(tId,tname,tage,tsalary) values('1','Jack',18,'3000');

insert into teacher(tId,tname,tage,tsalary) values('2','Jack',21,'4000');

 

发现在执行第二条数据的时候报错:

消息2627,级别14,状态1,第

违反了UNIQUE KEY 约束'UQ_Teacher_tname'。不能在对象'dbo.teacher' 中插入重复键。

 

通过这样,从而保证了数据的正确性

默认约束

alter table teacher

add constraint DF_Teacher_age default(18) for tage

插入一条数据:insert into teacher(tId,tname,tsalary) values('2','Bill',99999);

然后进行查表:select * from teacher

发现在没有插入数据tage的情况下,最后的名为billage数据默认是18

 

tId tname tage tsalary

1 Jack 18 3000

2 Bill 18 99999

 

 

检查约束

  

 

发现错误,因为猫不是正常规定的人的性别该有的男和女。

消息547,级别16,状态0,第

INSERT 语句与CHECK 约束"CK_Teacher_Tsex"冲突。该冲突发生于数据库"MySchool",表"dbo.teacher", column 'tsex'

语句已终止。

 

 

那里在工具里怎么设置呢右键字段tsex选择CHECK约束

在管理器的表设计里,右键Ttest选关系,如图3所示

 

也可以对年龄的范围进行约束:

alter table teacher

add constraint CK_Teacher_Tage check(tage>=18 and tage<100);

外键约束

  

那么如何在管理器里进行外键的设置 如图 右键tid选关系。在表的规范里进行设置主表和外表的关系,InsertUpdate规范里进行设置更新和删除的级联设置。

 

综合练习

 

 

  

最后我们那约束进行删除 该怎么办如下SQL语句:

alter table Employee

drop constraint CK_Employee_tSex

 

约束的了解就到这里!

 

posted @   春天又来了  阅读(1401)  评论(1编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示