MySQL(五)数据约束

来源:互联网 发布:男鞋推荐学生知乎 编辑:程序博客网 时间:2024/06/07 11:49

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))



















0 0