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新手入门的基本操作汇总
May 13 MySQL
MySQL 视图(View)原理解析
May 19 MySQL
MySQL注入基础练习
May 30 MySQL
MySql 缓存查询原理与缓存监控和索引监控介绍
Jul 02 MySQL
SQL之各种join小结详细讲解
Aug 04 MySQL
Mysql binlog日志文件过大的解决
Oct 05 MySQL
mysql函数全面总结
Nov 11 MySQL
面试中老生常谈的MySQL问答集锦夯实基础
Mar 13 MySQL
分享几个简单MySQL优化小妙招
Mar 31 MySQL
mysql的单列多值存储实例详解
Apr 05 MySQL
为什么MySQL8新特性会修改自增主键属性
Apr 18 MySQL
分享很少见很有用的SQL功能CORRESPONDING
Aug 05 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
php数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
php字符编码转换之gb2312转为utf8
2013/10/28 PHP
PHP中实现crontab代码分享
2015/03/26 PHP
PHP运行模式汇总
2016/11/06 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
js鼠标左右键 键盘值小结
2010/06/11 Javascript
基于prototype扩展的JavaScript常用函数库
2010/11/30 Javascript
JS解决url传值出现中文乱码的另类办法
2013/04/08 Javascript
Jquery选中或取消radio示例
2013/09/29 Javascript
js的2种继承方式详解
2014/03/04 Javascript
javascript日期验证之输入日期大于等于当前日期
2015/12/13 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
2016/09/01 Javascript
layui下拉框获取下拉值(select)的例子
2019/09/10 Javascript
swiper实现异形轮播效果
2019/11/28 Javascript
JavaScript canvas实现雪花随机动态飘落
2020/02/08 Javascript
js面试题之异步问题的深入理解
2020/09/20 Javascript
[03:42]2014DOTA2国际邀请赛 第三日比赛排位扑朔迷离
2014/07/12 DOTA
Python中字典的setdefault()方法教程
2017/02/07 Python
对pandas数据判断是否为NaN值的方法详解
2018/11/06 Python
pygame游戏之旅 python和pygame安装教程
2018/11/20 Python
用Python写一个模拟qq聊天小程序的代码实例
2019/03/06 Python
Python进程池Pool应用实例分析
2019/11/27 Python
Python实现上下文管理器的方法
2020/08/07 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
英国露营设备和户外服装购物网站:Simply Hike
2019/05/05 全球购物
英国折扣高尔夫商店:Discount Golf Store
2019/11/19 全球购物
预备党员转正考核材料
2014/06/03 职场文书
小学班级特色活动方案
2014/08/31 职场文书
学生实习证明范文
2014/09/28 职场文书
2014年小学体育工作总结
2014/12/11 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
教你使用TensorFlow2识别验证码
2021/06/11 Python
sql通过日期判断年龄函数的示例代码
2021/07/16 SQL Server
Nginx stream 配置代理(Nginx TCP/UDP 负载均衡)
2021/11/17 Servers
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
2022/04/11 Python
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python