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日期和时间的间隔计算实例分析

    mysql日期和时间的间隔计算实例分析

    这篇文章主要介绍了mysql日期和时间的间隔计算,结合实例形式分析了mysql日期和时间间隔计算的相关操作技巧与注意事项,需要的朋友可以参考下
    2019-12-12
  • MySQL报错:sql_mode=only_full_group_by的4种轻松解决方法(含举例)

    MySQL报错:sql_mode=only_full_group_by的4种轻松解决方法(含举例)

    今天学mysql函数的时候在自己服务器上的MySQL碰见了个奇怪的问题,下面这篇文章主要给大家介绍了关于MySQL报错:sql_mode=only_full_group_by的4种轻松解决方法,需要的朋友可以参考下
    2023-01-01
  • MYSQL清空表和截断表问题

    MYSQL清空表和截断表问题

    这篇文章主要介绍了MYSQL清空表和截断表问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • MySQL之my.cnf配置文件图文详解

    MySQL之my.cnf配置文件图文详解

    my.cnf是mysql启动时加载的配置文件,一般会放在mysql的安装目录中,用户也可以放在其他目录加载,下面这篇文章主要给大家介绍了关于MySQL之my.cnf配置文件的相关资料,需要的朋友可以参考下
    2022-09-09
  • MySQL触发器自动智能化的数据维护

    MySQL触发器自动智能化的数据维护

    这篇文章主要介绍了MySQL触发器自动智能化的数据维护,触发器,就是一种特殊的存储过程。触发器和存储过程一样是一个能够完成特定功能、存储在数据库服务器上的SQL片段
    2022-07-07
  • 如何修改MySQL字符集

    如何修改MySQL字符集

    这篇文章主要介绍了如何修改MySQL字符集,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2020-09-09
  • MySQL压测工具mysqlslap的介绍与使用

    MySQL压测工具mysqlslap的介绍与使用

    mysqlslap是mysql自带的一个性能压测工具,mysqlslap用于和其它的一些性能压测工具一样可以自己造数据进行压测。mysqlslap的报告比较简单主要体现在执行的时间方面,没有sysbench那样的tps、qps等更详细的包括。下面来一起看看关于mysqlslap的介绍和简单的使用示例。
    2016-09-09
  • Mysql如何查看表及字段信息

    Mysql如何查看表及字段信息

    这篇文章主要介绍了Mysql如何查看表及字段信息,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • MySQL5.7缺少my.ini文件的解决方法

    MySQL5.7缺少my.ini文件的解决方法

    my.ini是MySQL数据库中使用的配置文件,修改这个文件可以达到更新配置的目的。这篇文章主要介绍了MySQL5.7缺少my.ini文件的解决方法,需要的朋友可以参考下
    2018-03-03
  • mysql报错:MySQL server version for the right syntax to use near type=InnoDB的解决方法

    mysql报错:MySQL server version for the right syntax to use nea

    这篇文章主要介绍了mysql报错:MySQL server version for the right syntax to use near type=InnoDB的解决方法,涉及MySQL语句的使用技巧,需要的朋友可以参考下
    2016-01-01

最新评论