MySQL数据约束
定义:建表时在各字段类型后设置,用来对用户操作表的数据进行约束。
代码:
1.默认值 : default ' '
作用:当用户对使用默认值的字段不插入值的时候,就使用默认值(自动填充)。
注意:(1) 对默认值字段插入null是可以的
(2) 对默认值字段可以插入非null
create table student( id int, name varchar(), address varchar() default '山东淄博' /*默认值*/ );
2.非空 : not null
作用: 限制字段必须赋值, ' '空字符也是值
注意: (1)非空字符必须赋值
(2)非空字符不能赋null
create table student( id int, name varchar(), address varchar() not null /*非空*/ );<br />/*非空字段必须赋值*/<br />insert into student(id,name)values(1,'张三') /*添加失败,因为没有赋值*/<br />/*非空字符不能插入null*/<br />
insert into student values(1,'张三',NULL) /*添加失败,因为赋值NULL*/
3.唯一 : unique
作用: 对字段的值不能重复
注意:(1)唯一字段可以插入null
(2)唯一字段可以插入多个null
create table student( id int unique, /*int 唯一*/ name varchar(), address varchar() ); insert into student(id,name)values(,'张三') insert into student values(,'张三','山东淄博') /*添加失败,因为id重复了*/
4.主键: primary key
作用:非空 + 唯一
注意: (1)通常情况下,每张表都会设置一个主键字段。用于标记表中的每条记录的唯一性。
(2)建议不要选择表的包含业务含义的字段作为主键,建议给每张表独立设计一个非业务含义的id字段。
create table student( id int unique, /*int 唯一*/ name varchar(), address varchar() ); insert into student(id,name)values(,'张三') insert into student values(,'张三','山东淄博') /*添加失败,因为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() ); 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() ) /* 修改员工表(副表/从表)*/ CREATE TABLE employee( eid INT PRIMARY KEY, empName VARCHAR(), deptId INT,/* 把部门名称改为部门ID */ /* 声明一个外键约束 /* CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id) /* 外键名称 外键 参考表(参考字段)*/ )
注意:(1)被约束的表称为副表,约束别人的表称为主表,外键设置在副表上的!!!
(2)主表的参考字段通用为主键!
(3)添加数据:先添加主表,再添加副表
(4)修改数据:先修改副表,再修改主表
(5)删除数据:先删除副表,再删除主表
相关推荐
Dullonjiang 2020-07-30
sofast 2020-07-08
AngelicaA 2020-07-04
Iamready 2020-06-25
TMD咯MySQL 2020-06-16
窃破天道 2020-06-12
tanyhuan 2020-06-09
debugjoker 2020-06-07
nan00zzu 2020-06-07
BiPerler 2020-06-03
勇往直前 2020-06-01
huangyx 2020-05-29
阿亮 2020-05-28
Justagreenonion 2020-05-14
sunnyJam 2020-04-03
数据库之扑朔迷离 2020-04-26
gamestart0 2020-04-10
李轮清 2020-05-11
imacoder 2020-05-10