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 05 MySQL
Mysql基础之常见函数
Apr 22 MySQL
浅谈mysql增加索引不生效的几种情况
Jun 23 MySQL
mysql 索引合并的使用
Aug 30 MySQL
Mysql关于数据库是否应该使用外键约束详解说明
Oct 24 MySQL
mysql函数全面总结
Nov 11 MySQL
SQL语法CONSTRAINT约束操作详情
Jan 18 MySQL
Mysql存储过程、触发器、事件调度器使用入门指南
Jan 22 MySQL
MySQL创建管理KEY分区
Apr 13 MySQL
MySQL提取JSON字段数据实现查询
Apr 22 MySQL
sql注入报错之注入原理实例解析
Jun 10 MySQL
jdbc中自带MySQL 连接池实践示例
Jul 23 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
ThinkPHP中自定义错误页面和提示页面实例
2014/11/22 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
yii2缓存Caching基本用法示例
2016/07/18 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
AngularJS中实现显示或隐藏动画效果的方式总结
2015/12/31 Javascript
AngularJS基础 ng-paste 指令简单示例
2016/08/02 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
2016/08/29 Javascript
原生javascript实现读写CSS样式的方法详解
2017/02/20 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
Vue2.0 多 Tab切换组件的封装实例
2017/07/28 Javascript
对Vue- 动态元素属性及v-bind和v-model的区别详解
2018/08/27 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
2019/03/27 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
2019/12/01 Javascript
vue中echarts引入中国地图的案例
2020/07/28 Javascript
Element InputNumber 计数器的实现示例
2020/08/03 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
Vue实现省市区三级联动
2020/12/27 Vue.js
[15:56]Heroes18_暗影萨满(完美)
2014/10/31 DOTA
[53:49]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python函数的周期性执行实现方法
2016/08/13 Python
Python 异常处理的实例详解
2017/09/11 Python
Python二叉树定义与遍历方法实例分析
2018/05/25 Python
python抓取网页内容并进行语音播报的方法
2018/12/24 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
2020/07/20 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
视光学专业毕业生推荐信
2013/10/28 职场文书
护理专科毕业生自荐书范文
2014/02/19 职场文书
《最后的姿势》教学反思
2014/02/27 职场文书
色戒观后感
2015/06/12 职场文书
创业计划书之网吧
2019/10/10 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
解决python存数据库速度太慢的问题
2021/04/23 Python
小程序实现悬浮按钮的全过程记录
2021/10/16 HTML / CSS
MySQL 原理与优化之Update 优化
2022/08/14 MySQL