MySQL约束超详解


Posted in MySQL onSeptember 04, 2021

MySQL约束操作

概念:对表中的数据进行限定,保证数据的正确性,有效性和完整性。

分类:

  • 主键:primary key
  • 非空约束:not null
  • 唯一约束:unique
  • 外键约束:foreign key

1.非空约束

not null,值不能为空。

创建表时添加非空约束:

CREATE TABLE stu(
 id INT,
 NAME VARCHAR(20) NOT NULL
);

创建表完后,添加非空约束

ALTER TABLE stu 
MODIFY NAME VARCHAR(20) NOT NULL;

删除非空约束

ALTER TABLE stu 
MODIFY NAME VARCHAR(20);

2.唯一约束

unique,值不能重复。

创建表时添加唯一约束

CREATE stu(
 id INT;
 phone_number VARCHAR(20) UNIQUE
);

注意:mysql中,唯一约束限定的列的值可以有多个null

删除唯一约束

ALTER TABLE stu
DROP INDEX phone_number;

创建表完后,添加唯一约束

ALTER TABLE stu 
MODIFY phone_number VARCHAR(20) UNIQUE;

3.主键约束

primary key,

  • 非空且唯一。
  • 一张表只能有一个字段为主键。
  • 主键就是表中记录的唯一标识。

创建表时添加主键约束

CREATE TABLE stu( 
 id INT PRIMARY KEY,
 NAME VARCHAR(20)
);

删除主键

ALTER TABLE stu 
DROP PRIMARY KEY;

创建表完后,添加主键

ALTER TABLE stu 
MODIFY id INT PRIMARY KEY ;

这里补充一个知识点:自动增长

概念:如果某一列是数值类型的,使用auto_increment可以来完成自动增长。

例子:

在创建表时,添加主键约束,并且完成主键自动增长

CREATE TABLE stu(
 id INT PRIMARY KEY AUTO_INCREMENT,
 NAME VARCHAR(20)
);
#自动增长会根据当前列的最后一行的值往后增加。

删除自动增长

ALTER TABLE stu
MODIFY id INT;
#这样只会删除自动增长,主键删不掉。

创建表完后,在添加自动增长

ALTER TABLE stu
MODIFY id INT AUTO_INCREMENT;

4.外键约束

foreign ley,让表与表产生关系,从而保证数据的正确性。

在创建表时,可以添加外键

CREATE TABLE 表名(
 ...
 外键列
 CONSTRAINT 外键名称 FOREIGN KEY (外键列名称) REFERENCES 主表名称(主表列名称)
);

删除外键

ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

创建表之后,添加外键

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

5、级联

添加级联操作

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 
FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称)
ON UPDATE CASCADE ON DELETE CASCADE  ;

级联删除

ON UPDATE CASCADE

到此这篇关于MySQL约束超详解的文章就介绍到这了,更多相关MySQL约束内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL创建索引需要了解的
Apr 08 MySQL
Mysql基础之常见函数
Apr 22 MySQL
正确使用MySQL update语句
May 26 MySQL
MySQL 外键约束和表关系相关总结
Jun 20 MySQL
MySQL系列之十二 备份与恢复
Jul 02 MySQL
Mysql使用全文索引(FullText index)的实例代码
Apr 03 MySQL
MySQL创建管理RANGE分区
Apr 13 MySQL
sql查询语句之平均分、最高最低分及排序语句
May 30 MySQL
mysql字段为NULL索引是否会失效实例详解
May 30 MySQL
MySQL实现字段分割一行转多行的示例代码
Jul 07 MySQL
mysql序号rownum行号实现方式
Dec 24 MySQL
mysql数据库如何转移到oracle
Dec 24 MySQL
MySQL中的隐藏列的具体查看
Sep 04 #MySQL
Mysql实现简易版搜索引擎的示例代码
Aug 30 #MySQL
详细聊聊MySQL中慢SQL优化的方向
Aug 30 #MySQL
MySQL8.0的WITH查询详情
Aug 30 #MySQL
Prometheus 监控MySQL使用grafana展示
Aug 30 #MySQL
MySQL命令无法输入中文问题的解决方式
Aug 30 #MySQL
mysql 索引合并的使用
Aug 30 #MySQL
You might like
教你如何开启shopnc b2b2c 伪静态
2014/10/21 PHP
php利用smtp类实现电子邮件发送
2015/10/30 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
window.showModalDialog使用手册
2007/01/11 Javascript
JQuery 绑定事件时传递参数的实现方法
2009/10/13 Javascript
基于jquery的图片的切换(以数字的形式)
2011/02/14 Javascript
jQuery数据缓存功能的实现思路及简单模拟
2013/05/27 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
2015/09/05 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
AngularJs Injecting Services Into Controllers详解
2016/09/02 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
jQuery实现手机版页面翻页效果的简单实例
2016/10/05 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
jQuery实现表单动态加减、ajax表单提交功能
2018/06/08 jQuery
jQuery实现网页拼图游戏
2020/04/22 jQuery
[01:39]2014DOTA2国际邀请赛 Newbee经理CU专访队伍火力全开
2014/07/15 DOTA
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
Python实现的列表排序、反转操作示例
2019/03/13 Python
详解python中的线程与线程池
2019/05/10 Python
基于MATLAB和Python实现MFCC特征参数提取
2019/08/13 Python
怎么快速自学python
2020/06/22 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
试述DBMS的主要功能
2016/11/13 面试题
中间件分为哪几类
2012/03/14 面试题
宾馆总经理岗位职责
2014/02/14 职场文书
校企合作协议书
2014/04/16 职场文书
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
佛光寺导游词
2015/02/10 职场文书
推荐信范文大全
2015/03/27 职场文书