Mysql中的SQL约束Constraint有哪几种

 更新时间:2024年01月16日 09:58:53   作者:加油当当  
这篇文章主要介绍了Mysql中的SQL约束Constraint有哪几种,约束是为了使表中的数据有效,常见的约束有非空约束、唯一性约束、主键约束、外键约束、检查约束,需要的朋友可以参考下

常用约束

  • 非空约束(not null):约束的字段不能为NULL;只有列级约束,没有表级约束(也就是说,只能约束某个字段值不为空);
  • 唯一约束(unique):约束的字段不能重复;既有列级约束,也有表级约束;
  • 主键约束(primary key):约束的字段既不能为NULL,也不能重复(简称PK);既有列级约束,也有表级约束;
  • 外键约束(foreign key):...(简称FK);
  • 检查约束(check):注意Oracle数据库有check约束,但是mysql没有,目前mysql不支持该约束;

not null

只有列级约束,没有表级约束(也就是说,只能约束某个字段值不为空)

create table t_student(
student_name         varchar(25) not null,    
)

unique

既有列级约束,也有表级约束; unique约束修饰的字段具有唯一性,不能重复。 但可以是NULL,NULL不是值,所以多个NULL不是重复

列级约束

create table t_user(
id int,
username varchar(255) unique
);

多个字段联合起来添加1个约束unique 【表级约束】

create table t_user(
id int,
usercode varchar(255),
username varchar(255),
unique(usercode,username) 
);

主键约束

primary key:既有列级约束,也有表级约束; 主键相关的术语?                 

主键约束 : primary key

主键字段 : id字段添加primary key之后,id叫做主键字段

主键值 : id字段中的每一个值都是主键值。

主键特点:不能为NULL,也不能重复 一张表的主键约束只能有一个; 有表级约束也有列级约束

表级约束

create table t_user(
id int,
username varchar(255),
primary key(id)                  
);

列级约束

create table t_student()
student_id          int(10)  primary key,    
student_name         varchar(20) not null,
sex                char(2)  default  'm',
birthday        date,
email                varchar(30)  ,
classes_id        int(3)        
)

主键值自增

drop table if exists t_user;
create table t_user(
id int primary key auto_increment, 
username varchar(255)
);

外键约束

关于外键约束的相关术语:

  • 外键约束: foreign key
  • 外键字段:添加有外键约束的字段
  • 外键值:外键字段中的每一个值。

外键可以为NULL;

如果表中某个字段为外键字段,则该字段的值必须来源参照表的主键;

外键主要是维护表之间的关系的,主要是为了保证参照完整性,如果表中的某个字段为外键字段,那么该字段的值必须来源于参照的表的主键。

顺序要求:

  • 删除数据的时候,先删除子表,再删除父表。
  • 添加数据的时候,先添加父表,在添加子表。
  • 创建表的时候,先创建父表,再创建子表。
  • 删除表的时候,先删除子表,在删除父表。
create table t_class(
cno int,
cname varchar(255),
primary key(cno)
);
create table t_student(
sno int,
sname varchar(255),
classno int,
primary key(sno),
foreign key(classno) references t_class(cno)
);
  1. 级联更新与级联删除 父表中的数据更改,子表中的数据也会跟着变动。
  2. 父表中的数据删除,子表中的数据也会删除。

到此这篇关于Mysql中的SQL约束Constraint有哪几种的文章就介绍到这了,更多相关Mysql的Constraint约束内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MYSQL无法连接 提示10055错误的解决方法

    MYSQL无法连接 提示10055错误的解决方法

    这篇文章主要介绍了MYSQL无法连接 提示10055错误的解决方法,需要的朋友可以参考下
    2016-12-12
  • MySQL必备的常见知识点汇总整理

    MySQL必备的常见知识点汇总整理

    这篇文章主要介绍了MySQL必备的常见知识点,结合实例形式汇总整理了mysql各种常见知识点,包括登录、退出、创建、增删改查、事务等知识点与操作注意事项,需要的朋友可以参考下
    2020-05-05
  • mysql之TIMESTAMP(时间戳)用法详解

    mysql之TIMESTAMP(时间戳)用法详解

    这篇文章主要介绍了mysql之TIMESTAMP(时间戳)用法,需要的朋友可以参考下
    2014-07-07
  • Mysql插入带有引号的字符串数据最佳实践

    Mysql插入带有引号的字符串数据最佳实践

    在MySQL中可以使用单引号或双引号来包裹字符串,下面这篇文章主要给大家介绍了关于Mysql插入带有引号的字符串数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • 快速了解MySQL 索引

    快速了解MySQL 索引

    这篇文章主要介绍了MySQL 索引的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • Mysql数据库清理binlog日志命令详解

    Mysql数据库清理binlog日志命令详解

    这篇文章主要给大家介绍了Mysql数据库清理binlog日志命令的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Mysql具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • Ubuntu与windows双系统下共用MySQL数据库的方法

    Ubuntu与windows双系统下共用MySQL数据库的方法

    ubuntu系统和windows系统双系统共用是用户喜欢使用的方式之一,而MySQL是一个小型关系型数据库管理系统,在Windows平台中常以WAMP方式搭配使用,在Linux平台中常以LAMP组合形式出现,下面的方法可以使得Ubuntu平台共用Windows平台中的MySQL数据库
    2012-01-01
  • mysql添加索引方法详解(Navicat可视化加索引与sql语句加索引)

    mysql添加索引方法详解(Navicat可视化加索引与sql语句加索引)

    索引用来快速地寻找那些具有特定值的记录,如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录,表里面的记录数量越多,代价就越高,下面这篇文章主要给大家介绍了关于mysql添加索引的相关资料,需要的朋友可以参考下
    2022-11-11
  • 使用SQL将多行记录合并成一行实例代码

    使用SQL将多行记录合并成一行实例代码

    今天同事问了一个需求,就是将多行数据合并成一行进行显示,查询了一些资料,这篇文章主要给大家介绍了关于使用SQL将多行记录合并成一行的相关资料,需要的朋友可以参考下
    2022-09-09
  • linux系统ubuntu18.04安装mysql 5.7

    linux系统ubuntu18.04安装mysql 5.7

    这篇文章主要为大家详细介绍了linux系统ubuntu18.04安装mysql 5.7,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09

最新评论