MySQL数据约束
定义:建表时在各字段类型后设置,用来对用户操作表的数据进行约束。
代码:
1.默认值 : default ' '
作用:当用户对使用默认值的字段不插入值的时候,就使用默认值(自动填充)。
注意:(1) 对默认值字段插入null是可以的
(2) 对默认值字段可以插入非null
create table student( id int, name varchar(20), address varchar(20) default '山东淄博' /*默认值*/ );
2.非空 : not null
作用: 限制字段必须赋值, ' ' 空字符也是值
注意: (1)非空字符必须赋值
(2)非空字符不能赋null
create table student( id int, name varchar(20), address varchar(20) not null /*非空*/ );
/*非空字段必须赋值*/
insert into student(id,name)values(1,'张三') /*添加失败,因为没有赋值*/
/*非空字符不能插入null*/
insert into student values(1,'张三',NULL) /*添加失败,因为赋值NULL*/
3.唯一 : unique
作用: 对字段的值不能重复
注意:(1)唯一字段可以插入null
(2)唯一字段可以插入多个null
create table student( id int unique, /*int 唯一*/ name varchar(20), address varchar(20) ); insert into student(id,name)values(1,'张三') insert into student values(1,'张三','山东淄博') /*添加失败,因为id重复了*/
4.主键: primary key
作用:非空 + 唯一
注意: (1)通常情况下,每张表都会设置一个主键字段。用于标记表中的每条记录的唯一性。
(2)建议不要选择表的包含业务含义的字段作为主键,建议给每张表独立设计一个非业务含义的id字段。
create table student( id int unique, /*int 唯一*/ name varchar(20), address varchar(20) ); insert into student(id,name)values(1,'张三') insert into student values(1,'张三','山东淄博') /*添加失败,因为id重复了 错误代码:Duplicate entry '1' for key 'PRIMARY'*/ insert into student values(null,'张三','山东淄博') /*添加失败,因为id没有赋值 错误代码:ERROR 1048 (23000): Column 'id' cannot be null*/
5.自增长:zerofill primary key auto_increment
create table student( id int ZEROFILL PRIMARY KEY AUTO_INCREMENT, /*自增长,从0开始 zerofill :l填充 */ name varchar(20) ); insert into student(name)values('张三'); insert into student(name)values('李四'); insert into student(name)values('王五'); /*id 自动对应为 0,1,2*/
6.外键: constraint 副表名称_主表名称_fk foreign key(副表中的某字段名) references 主表名称(主表主键)
作用:约束两种表的数据,副表中的外键字段必须与主表主键相对应
/*部门表(主表)*/ CREATE TABLE dept( id INT PRIMARY KEY, deptName VARCHAR(20) ) /* 修改员工表(副表/从表)*/ CREATE TABLE employee( eid INT PRIMARY KEY, empName VARCHAR(20), deptId INT,/* 把部门名称改为部门ID */ /* 声明一个外键约束 /* CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id) /* 外键名称 外键 参考表(参考字段)*/ )
注意:(1)被约束的表称为副表,约束别人的表称为主表,外键设置在副表上的!!!
(2)主表的参考字段通用为主键!
(3)添加数据: 先添加主表,再添加副表
(4)修改数据: 先修改副表,再修改主表
(5)删除数据: 先删除副表,再删除主表
上一篇: PHP自动重命名文件实现方法
下一篇: 营销人员兵败大数据