SQL中的几种约束的创建与删除

SQL中的几种约束的创建与删除,第1张

约束的目的就是确保表中的数据的完整性。

常用的约束类型如下:

主键约束:(Primary Key constraint) 要求主键列唯一,并且不允许为空

唯一约束:(Unique Constraint) 要求该列唯一,允许为空,但只能出现一个空值

检查约束:(Check Constraint)某列取值范围限制、格式限制等。如有关年龄的限制

默认约束:(Default Constraint) 某列的默认值,如我们的男性学员比较多,性别默认为男

外键约束:(Foreign Key Constraint) 用于在两表之间建立关系,需要指定引用主表的哪一列

一、添加约束

在创建表时,我们可以在字段后添加各种约束,但一般不这样混用,推荐将添加约束和建表的语句分开编写。

添加约束的语法如下:

Code:

Alter Table 表名

Add Constraint 约束名 约束类型 具体的约束类型

上述语法标识修改某个表,添加某个约束,其中约束名的命名规则推荐采用"约束类型_约束字段"这样的形式。

Code:

---添加主键约束

Alter Table stuInfo

Add Constraint PK_stuNO primary Key(stuNo)

---添加唯一约束

Alter Table stuInfo

Add Constraint UQ_stuID unique(stuID)

---添加默认约束

Alter Table stuInfo

Add Constraint DF_stuAddress default('地址不详') for stuAddress

---添加检查约束

Alter Table stuInfo

Add Constraint CK_stuAge check(stuAge between 15 and 40)

---添加外键约束

Alter Table stuMarks

Add Constraint FK_stuNo foreign key(stuNo) references stuInfo(stuNo)

二、删除约束

如果错误的添加了约束,则可以删除约束

删除约束的语法如下:

Code:

Alter Table 表名

Drop Constraint 约束名

附加:在创建表的时候同时添加约束的写法:

Code:

use stuDB

go

if exists(select * from Sysobjects where name = 'stuInfo')

drop table stuInfo

go

create table stuInfo

(

stuName varchar(20) not null primary key(stuName)

,stuID int not null unique(stuID)

,stuAddress varchar(20) not null default('地址不详')

,stuAge int not null check(stuAge between 15 and 40)

)

语法:

ALTER TABLE 表名

ADD CONSTRAINT 约束名 约束 类型 具体的约束说明

上述语法表示修改某个表,添加某个约束。其中,约束名的命名规则推荐采用“约束类型_约束字段”这样的形式。

示例:

添加主键约束(将stuNo设为主键):

ALTER TABLE stuInfo

ADD CONSTRAINT PK_stuNo PRIMARY KEY (stuNo)

添加唯一约束(身份z号唯一):

ALTER TABLE stuInfo

ADD CONSTRAINT UQ_stuID UNIQUE (stuID)

添加默认约束(如果地址不填,默认为“地址不详”):

ALTER TABLE stuInfo

ADD CONSTRAINT DF_stuAddress DEFAULT ('地址不详') FOR stuAddress

添加检查约束(要求年龄只能在 15~40岁之间)

ALTER TABLE stuInfo

ADD CONSTRAINT CK_stuAge CHECK(stuAge BETWEEN 15 AND 40)

添加外键约束(主表 stuInfo 和从表 stuGrade 建立关系,关联字段为 stuNo ):

ALTER TABLE stuGrade

ADD CONSTRAINT FK_stuNo

FOREIGN KEY (stuNo) REFERENCES stuInfo(stuNo)

GO

你的语法不对,当然出错,详细语法参阅SQL联机丛书

--添加非空约束

ALTER TABLE LOVO ALTER COLUMN NAME VARCHAR(20) NOT NULL

--添加默认约束

ALTER TABLE LOVO ADD CONSTRAINT name_default DEFAULT 'zhouqiang' FOR NAME


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11668154.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存