美文网首页
mysql的约束

mysql的约束

作者: 温柔倾怀 | 来源:发表于2019-08-09 21:56 被阅读0次

约束是用于维护数据的完整性, 所谓数据的完整性指的是,根据业务逻辑的需要,我们将表的某些字段设置成一种约束,从而保证数据的合理性和完整性,比如身份证编号就是唯一,我们就可以使用unique 这个约束.

mysql的约束分类

  1. 主键约束: primary key
  2. 唯一约束: unique
  3. not null
  4. check :检查约束,很多数据库都有,但是mysql支持语法,并没有实际作用
  5. 外键约束: foreign key

主键约束

  • 主键约束一般在int,字符型设置
  • 一旦一个字段被设置成主键约束,则该字段不能重复,也不能为null
  • 一张表最多只能有一个主键,但是可以是复合主键(两个字段合起来当一个主键)
  create table `user`(
  id int,
  name varchar(32) not null default '',
  email varchar(32) not null default '',
  primary key (id,name)
  )charset=utf8 engine=muisam;
  • 当id,name同时重复才会认为是重复冲突的
    1,'aaa','aaa@.com' 可以插入
    1,'bbb','bbb@.com' 也可以插入
    1,'aaa','bbb@.com' 不可以插入
  • not null 和unique 的效果非常像 primary key

not null 约束

unique约束(唯一约束)

当我们希望某个字段的值不能出现重复值时,我们就可以将该字段设置成unique

  • 如果我们将某个字段设置为 unique ,但是没有设置 not null, 那么该字段可以为null,并且可以有多个null
  • 如果你要某个字段不能重复,而且不能为 null, 我们可以这样定义字段
    字段名 字段类型 not null unique
  • 一个表中,可以有多个unique约束.

外键约束

用于定义表和和从表之间的关系:外键约束要定义在从表上,主表则必须具有主键约束或是unique约束,当定义外键约束后,要求外键列数据必须在主表的主键列存在或是为null
foreign key (外键(本表)字段) references 主表(字段);

  • 外键字段是在本表定义的
  • 外键字段是指向另外一张表的某个字段


  1. 先创建主表
mysql> create table my_class(
    -> class_id int primary key,
    -> class_name varchar(64) not null unique,
    -> class_intro text not null
    -> )charset=utf8 engine=innodb;
Query OK, 0 rows affected (0.02 sec)
  1. 创建从表
mysql> create table stu(
    -> id int primary key,
    -> name varchar(64) not null default '',
    -> class_id int,
    -> /*定义外键*/
    -> foreign key (class_id) references my_class(class_id)
    -> )charset=utf8 engine=innodb;
Query OK, 0 rows affected (0.02 sec)
  • 给stu表添加数据时,要求对应的my_class表的class_id已经存在
  • 如果外键没有设置not null,那么外键的值可以是null,而且可以有多个

mysql> insert into stu values(1,'张三',1); ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (test.stu, CONSTRAINTstu_ibfk_1FOREIGN KEY (class_id) REFERENCESmy_class(class_id))

  • 由于刚刚创建的my_class表中没有class_id值,不能直接向stu中添加数据
  • 表的类型要innodb,这样的类型支持外键
  • 外键字段的类型要和主键字段的类型一致(长度可以不同)
  • 外键字段的值,必须在主键出现过,或者为null
  • 一旦建立了主外键的关系,数据不能随意删除和修改了

相关文章

  • mysql 学习语句

    MySQL学习笔记 登录和退出MySQL服务器 基本语法 建表约束 主键约束 唯一主键 非空约束 默认约束 外键约...

  • mysql约束

    1, mysql 不支持外键约束 ,条件约束约束分为列级约束,primary 主键约束check 条件约束for...

  • MySQL基础——约束

    上篇文章我们学习了MySQL基础——函数,这篇文章我们学习MySQL基础——约束。 约束 约束是作用于表中字段上的...

  • mySQl约束

    MYSQL的五种约束

  • mySQL的约束:

    mySQL的五中约束:

  • mysql的约束

    约束是用于维护数据的完整性, 所谓数据的完整性指的是,根据业务逻辑的需要,我们将表的某些字段设置成一种约束,从而保...

  • mysql 约束

    mysql 中常见的约束: 默认约束 非空约束 主键约束 唯一约束 外键约束 自增长约束 顾命思议,主要讲几个容易...

  • mysql 约束

    接下来的一些内容,我们需要提前学一些简单的sql语句,方便大家理解接下来的知识。 DDL—数据定义语言(Creat...

  • MySQL约束

    mysql约束 1. 约束简介 关系型数据库系统和文件系统的一个不同点是,关系型数据库本身能保证存储数据的完整性,...

  • MySQL约束

    概念: 为了保证数据的完整性和一致性,MySQL提供了约束这个属性。约束分为表级约束和列级约束,如果约束只是针对某...

网友评论

      本文标题:mysql的约束

      本文链接:https://www.haomeiwen.com/subject/ffrkjctx.html