mysql 之 数据约束

什么是数据约束 ?

对用户操作表的数据进行约束

默认值

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

注意:对默认值字段插入null是可以的

   对默认值字段也可以插入非 null

非空

作用:限制字段必须赋值

注意  非空字段必须赋值

    非空字段不能为赋NULL

 

唯一

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

注意:

    唯一字段可以插入NULL

    唯一字段可以插入多个NULL

主键(非空+唯一)

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

   建议不要选择表的包含业务含义的字段作为主键,建议给每张表设计一个非业务含义的ID字段

自增长:

作用:自动递增

CREATE TABLE student(

id INT(4) ZEROFILL PRIMARY KEY AUTO_INCREMENT, -- 自增长,从0开始  ZEROFILL 零填充

NAME VARCHAR(20)

)

自增长字段可以不赋值自动递增

select * from Student;//

delete from student;//--不影响自增长约束

trancate table student ;//可以影响自增长约束

 

外键

作用:约束两种表的数据

出现两种表的情况

  节约数据沉余高的问题:独立出一张表 

例如:员工表和部门表

问题出现:在插入员工表数据时,员工表的部门id可以随便插入!!!!!!!!

使用外键约束:约束插入员工表的部门id字段值

解决办法:在员工表的部门id 字段添加一个外键约束

部门表(主表)

create table dept(

id int  primary key,

deptName varchar(20));

员工表(从表)

create table employee(

id int primary key,

empName varchar(20),

deptid int --把部门名称改为部门ID

--声明一个外键约束

constraint emplyee_dept_fk外键名称 foreing key(deptid)外键reference dept(id) 参考表,参考字段 

)

 

注意1  被约束的表称为副表、约束别人的表称为主表,外键设置在副表上

  主表的参考字段通用为主键!

    添加数据:先添加主表,再添加副表

·    修改数据: 先修改副表,在修改主表 

    删除数据:先删除副表,在删除主表

posted @ 2018-09-17 23:35  秦明科  阅读(403)  评论(0编辑  收藏  举报