MySQL数据约束

2018-06-18 01:26:52来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

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

代码:

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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:MySQL 8 新特性之Invisible Indexes

下一篇:MariaDB/MySQL备份和恢复(一):mysqldump工具用法详述