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