MySQL(五)数据约束

1.默认值(default)

作用:当用户对使用默认值的字段,不插入值的时候,就使用默认值。

1)对默认值字段插入 NULL 是可以的

2)对默认值字段可以插入非 NULL

CREATE TABLE student(
	id INT,
	NAME VARCHAR(20),
	address VARCHAR(20) DEFAULT '中国' 
)
INSERT INTO student(id,NAME) VALUES(1,'张三');

INSERT INTO student(id,NAME,address) VALUES(2,'李四',NULL);

2.非空(not null)

作用:限制字段必须赋值

1)非空字符必须赋值

2)非空字符不能赋 NULL

CREATE TABLE student(
	id INT,
	NAME VARCHAR(20),
	gender VARCHAR(2) NOT NULL
)

3.唯一(unique)

作用:对字段的值不能重复

1)唯一字段可以插入null

2)唯一字段可以插入多个null

CREATE TABLE student(
	id INT UNIQUE,
	NAME VARCHAR(20)
)

4.主键(primary key)

作用:非空+唯一

1)通常情况下,每张表都会设置一个主键字段。用于标记表中记录的唯一性。

2)建议不要选择表中包含业务含义的字段作为逐渐,建议给每张表独立设计一个非业务含义的id字段

CREATE TABLE student(
	id INT PRIMARY KEY,
	NAME VARCHAR(20)
)

5.自增长(AUTO_INCREMENT)

作用:自动递增(从1开始)

 INT(2) ZEROFILL代表这个整数至少有2位,若不够,则用0填充

CREATE TABLE student(
	id INT(2) ZEROFILL PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(20)
);

6.外键(foreign key)

作用:约束两种表的数据

出现两种表的情况:

1)解决冗余高问题:独立出一张表

constraint 外键约束名称 foreign key(外键字段) references 引用表(字段)

CREATE TABLE employee(
	id INT PRIMARY KEY,
	empName VARCHAR(20),
	deptId INT,
	CONSTRAINT emloyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id)
);
CREATE TABLE dept(
	id INT PRIMARY KEY,
	deptName VARCHAR(20)
)
注意:

1)被约束的表称为副表(例如:employee),约束别人的表成为主表(例如:dept),外键设置在副表上!!!

2)主表的参考字段通常为 主键 !!!

3)添加数据的顺序:先添加主表,再添加副表数据

4)修改数据的顺序:先修改副表,再修改主表数据

5)删除数据的顺序:先删除副表,再删除主表数据

7.级联操作

当有了外键约束的时候,必须先修改或删除副表中的所有关联数据,才能修改或删除主表!

但是,我们希望直接修改或删除主表数据,从而影响副表数据。可以使用级联操作

级联修改:on update cascade

级联删除:on delete cascade

CREATE TABLE employee(
	id INT PRIMARY KEY,
	empName VARCHAR(20),
	deptId INT,
	CONSTRAINT emloyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id) ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE TABLE dept(
	id INT PRIMARY KEY,
	deptName VARCHAR(20)
)



















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值