mysql - 约束(constraint)


mysql - 约束(constraint)

约束实际上就是表中数据的限制条件,目的就是为了保证表中的记录完整和有效。

约束种类

非空约束(not null)
唯一性约束(unique)
主键约束(primary key) PK
外键约束(foreign key) FK
检查约束(目前MySQL不支持、Oracle支持)

非空约束:

mysql> create table t_user(
    -> id int(10),
    -> name varchar(32) not null
    -> );
Query OK, 0 rows affected (0.08 sec)

唯一性约束:

unique约束的字段,具有唯一性,不可重复,但可以为null

  1. 列级约束

    mysql> create table t_user(
        -> id int(10),
        -> name varchar(32) not null,
        -> email varchar(128) unique
        -> );
    Query OK, 0 rows affected (0.03 sec)
    
  2. 表级约束,可以给多个字段联合约束(表示两个或以上的字段同时与另一条记录相等,则报错)

    mysql> create table t_user(
        -> id int(10),
        -> name varchar(32) not null,
        -> email varchar(128),
        -> unique(name,email)
        -> );
    Query OK, 0 rows affected (0.01 sec)
    

    表级约束可以给约束起名字(方便以后通过这个名字来删除这个约束)

    mysql> create table t_user(
        -> id int(10),
        -> name varchar(32) not null,
        -> email varchar(128),
        -> constraint t_user_email_unique unique(email)
        -> );
    Query OK, 0 rows affected (0.06 sec)
    

主键

一张表应该有主键字段,如果没有,表示该表无效
主键值:是当前行数据的唯一标识、是当前行数据的身份证号
即使表中两行记录相关数据相同,但由于主键值不同,所以也认为是两行不同的记录

  1. 单一主键:给一个字段添加主键约束(列级定义)
    mysql> create table t_user(
        -> id int(10) primary key,
        -> name varchar(32)
        -> );
    Query OK, 0 rows affected (0.07 sec)
    
  2. 复合主键(表级定义)
    mysql> create table t_user(
        -> id int(10),
        -> name varchar(32) not null,
        -> email varchar(128) unique,
        -> primary key(id,name)
        -> );
    Query OK, 0 rows affected (0.05 sec)
    
    

主键约束与“not null unique”区别

给某个字段添加主键约束之后,该字段不能重复也不能为空,效果和"not null unique"约束相同,但是本质不同。
键约束除了可以做到"not null unique"之外,还会默认添加"索引——index"

文章来源:https://xulinjie.blog.csdn.net/article/details/79655073


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM