加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.52kongjun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

1、SQL 创建约束和主键约束

发布时间:2022-12-05 15:02:08 所属栏目:MsSql教程 来源:网络
导读: 1、SQL 创建约束和主键约束
那么约束的作用是什么呢?正所谓无规矩不成方圆,MSSQL也建立一套约束机制,比如说再创建字段或者修改字段的时候,限制其输入格式、范围抑或是执行某种检查,如

1、SQL 创建约束和主键约束

那么约束的作用是什么呢?正所谓无规矩不成方圆,MSSQL也建立一套约束机制,比如说再创建字段或者修改字段的时候,限制其输入格式、范围抑或是执行某种检查,如果不想自己用代码逻辑检查,可以利用约束来处理。

1.1约束的分类及对应语法和应用(其中[]为可选,为必填) 1.1.1 检查约束 (Check )和主键约束(Primay Key) 语法:

**Check** [NOT FOR REPLICATION ] (chk_expres)//chk_expres为逻辑表达式返回值为truefalse

例子:

**例1:建立一个学生表,并使用CHECK约束对分数进行大于等于0小于等于100的约束**
Create Table T_Score(Id  VarChar PRIMARY KEY,Name VarChar,
Goal Int Not Null  CHECK (Goal>=0 and Goal<=100)  )
**例2:在数据库Project中的工作关系表添加Check约束确保加入日期和接受日期范围合理**
Use Project
Alter Table T_WorkRelation
Add
CONSTRAINT CHECK_DATE CHECK (JoinDate >’01-01-1900and joinDate

1.1.2 默认约束 (Default ),当用户没有为定义的Default约束的字段输入值时,自动赋约束值 语法:

Default  [FOR 字段名] //defau_conts为常量或者null

例子:

**例:为会员信息表中的入会时间添加Default约束为当前时间**
Create Table T_Member(Id  VarChar PRIMARY KEY,Name VarChar,
joinDate DateTime DEFAULT (getdate())
)

1.1.3 外键约束 (Foreign Key),需要建立两表间的关系并引用主表的列 语法:

FOREIGN KEY <子表字段> REFERENCES 父表<父表字段>

例子:

**主表stuInfo和从表stuMarks建立关系,关联字段stuNo**
alter table stuInfo
 add constraint FK_stuNo foreign key(stuNo)references stuinfo(stuNo)

1.1.4唯一约束 (Unique )唯一性,可以空mssql 表达式,但只能有一个 语法:

CONSTRAINT 约束名 (字段名1,字段名2)

例子:

**添加唯一约束(身份证号唯一,因为每个人的都不一样)**
 alter table stuInfo

 add constraint UQ_stuID unique(stuID)

约束综合例子应用:

create table tbDept
(
  dId int identity ( 1, 1) primary key not null,
  dName char ( 20) not null,
  pId int not null,
  pDesc text
)
insert into tbDept values ( ' 技术部 ' , 0, ' 的短短的 ' )
insert into tbDept values ( ' 业务部 ' , 0, ' 叮叮当当 ' )
insert into tbDept values ( ' 财务部 ' , 0, ' 叮叮咚咚大 ' )
create table MyUserInfo
(
  UserId int identity ( 10, 10) not null
  constraint PK_UserId_MyUserInfo
  primary key clustered ,   -- 主键 
  --1 创建外键
  dId int not null
  constraint FK_MyUserInfo_tbDept
  foreign key
  references tbDept( dId),
  UserCIP char ( 18) not null
  constraint UQ_UserCIP_MyUserInfo unique , -- 唯一约束
  UserJSID char ( 6) not null
  constraint UQ_userJSID_MyUserId unique , -- 唯一约束
  UserName varchar ( 20) not null,
  UserTel varchar ( 12) null,
  UserMolt int null,

  UserAge int not null   -- 用户年龄在2-120岁之间
  constraint CHK_UserAge_MyUserInfo check ( UserAge > 2 && UserAge < 120)
  UserSex char ( 2) not null   -- 用户性别男或女
  constraint CHK_UserSex_MyUserInfo check ( UserSex= ' 男 ' or UserSex= ' 女 ' ),
  -- 用户名和电话号码按 DESC 排序组合是唯一的
  constraint UQ_UserName_UserTel_MyUserInfo unique ( UserName desc , UserTel desc ),
   --constraint UQ_UserName_UserTel_MyUserInfo unique(UserName desc |asc,UserTel desc |asc)
  ----constraint UQ_UserName_UserTel_MyUserInfo unique(UserName ,UserTel desc |asc)
  -- 用户名和手机号码按 DESC 排序组合是唯一的
  constraint UQ_userName_UserMolt_MyUserInfo unique ( UserName desc , UserMolt desc )
);
--2 创建外键
ALTER TABLE MyUserInfo
ADD
constraint FK_MyUserInfo_tbDept
foreign key ( dId)
  references tbDept( dId);
--3 创建外键
ALTER TABLE MyUserInfo
with nocheck ADD
constraint FK_MyUserInfo_tbDept
  Foreign Key ( dId)
references tbDept( dId)
--4 创建外键
ALTER TABLE MyUserInfo
with check ADD
constraint FK_MyUserInfo_tbDept
  Foreign Key ( dId)
references tbDept( dId)

小结:

约束(Constraint)是Microsoft SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件。在SQL Server 中有5 种约束:主关键字约束(Primary Key Constraint)、外关键字约束(Foreign Key Constraint)、惟一性约束(Unique Constraint)、检查约束(Check Constraint)和缺省约束(Default Constraint)。

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!