MySQL5种约束_mysql几种约束

本文详细介绍了主键约束、唯一性约束、默认约束和外键约束在数据库设计中的作用,通过实例演示了如何在MySQL中添加这些约束,并探讨了子表与父表的关系。重点在于理解这些约束在确保数据完整性和关联性上的关键作用。
摘要由CSDN通过智能技术生成

主键约束(Primay Key Coustraint) 唯一性,非空性,实体完整性约束主键不能为空

在一张表中,用来唯一标识一条记录的字段集,叫做主关键字或者主关键码,简称主键(或主码),这里说"字段集"是因为主键可能用一个字段或者多个字段来表示。

唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个检查约束 (Check Counstraint) 对该列数据的范围、格式的限制(如:年龄、性别等)默认约束 (Default Counstraint) 该数据的默认值外键约束 (Foreign Key Counstraint) 需要建立两表间的关系并引用主表的列

添加主键约束

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 stuInfo

add constraint FK_stuNo foreign key(stuNo)references stuinfo(stuNo)

注:外键

一张表的非主属性是另一个表的主属性就是这个表的外键。(例:学生表中主键是学号,专业信息表中主键是专业编号。学生表中的非主属性专业编号恰好是专业信息表中的主键。我们就称这个专业编号是学生表的外键。)

有两张表A表和B表,表A中的一个字段id是外键,表B中的一个字段id是主键,那么称B为父表,A为子表。就是说一个表中外键字段(相当于这里的A表)是另一个表中(相当于这里的B表)的主键。(例:学生表(学号, 姓名, 性别,专业编号),专业信息表(专业编号,专业名称,专业备注信息)。这里学生表是子表,专业信息表是父表)

例子:

/*数据约束*/

CREATE TABLE user01 (

uid INT NOT NULL,/*非空约束*/

PRIMARY KEY  /*主键约束*/  AUTO_INCREMENT /*自增长*/

uname VARCHAR(10) UNIQUE,/*唯一约束*/

address VARCHAR(20) DEFAULT'张店'/*默认值约束*/

);

INSERT INTO user01 VALUES(1,'小红帽','博山');

INSERT INTO user01(uname) VALUES('大灰狼');

SELECT * FROM user01;

DROP TABLE user01;

/*外键约束*/

CREATE TABLE emp1(    /*副表*/

eid INT PRIMARY KEY AUTO_INCREMENT,

ename VARCHAR(10),

deptid INT,

CONSTRAINT emp1_dept_fk FOREIGN KEY(deptid) REFERENCES

dept(id)/*添加外键约束*/

);

INSERT INTO emp1(ename,deptid) VALUES('张三',5);

INSERT INTO emp1(ename,deptid) VALUES('李四',4);

INSERT INTO emp1(ename,deptid) VALUES('王五',3);

INSERT INTO emp1(ename,deptid) VALUES('张五',2);

SELECT * FROM emp1;

DROP TABLE emp1;

CREATE TABLE dept(    /*主表*/

id INT PRIMARY KEY AUTO_INCREMENT,

dname VARCHAR(15)

);

INSERT INTO dept(dname) VALUES('研发部');

INSERT INTO dept(dname) VALUES('产品部');

INSERT INTO dept(dname) VALUES('销售部');

SELECT * FROM dept;

DROP TABLE dept;

/*修改数据(先改副表再改主表)*/

UPDATE emp SET deptid=1 WHERE eid=2;

UPDATE dept SET id=5 WHERE id=2;

/*删除数据(先删副表再删主表)*/

DELETE FROM emp WHERE eid=1;

DELETE FROM dept WHERE id=3;

/*两种全表删除的区别*/

CREATE TABLE test(

id INT PRIMARY KEY AUTO_INCREMENT,

tname VARCHAR(10)

);

INSERT INTO test(tname) VALUES('小红');

INSERT INTO test(tname) VALUES('小蓝');

INSERT INTO test(tname) VALUES('小绿');

SELECT * FROM test;

DELETE FROM test; /*不会删除约束*/

TRUNCATE TABLE test;/*会删除约束*/

DROP TABLE test;

/*先建表后添加外键约束*/

CREATE TABLE test(

id INT PRIMARY KEY AUTO_INCREMENT,

tname VARCHAR(10),

empid INT

);

ALTER TABLE test

ADD CONSTRAINT test_emp1_fk FOREIGN KEY(empid)

REFERENCES emp1(eid);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值