欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL数据约束

程序员文章站 2022-05-20 11:01:51
定义:建表时在各字段类型后设置,用来对用户操作表的数据进行约束。 代码: 1.默认值 : default ' ' 作用:当用户对使用默认值的字段不插入值的时候,就使用默认值(自动填充)。 注意:(1) 对默认值字段插入null是可以的 (2) 对默认值字段可以插入非null 2.非空 : not n ......

定义:建表时在各字段类型后设置,用来对用户操作表的数据进行约束。

代码:

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)删除数据: 先删除副表,再删除主表