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的left join无效及使用的注意事项说明
Jul 01 MySQL
MySQL query_cache_type 参数与使用详解
Jul 01 MySQL
MySQL深度分页(千万级数据量如何快速分页)
Jul 25 MySQL
MySQL定时备份数据库(全库备份)的实现
Sep 25 MySQL
mysql函数全面总结
Nov 11 MySQL
MySQL和Oracle批量插入SQL的通用写法示例
Nov 17 MySQL
MySQL学习之基础操作总结
Mar 19 MySQL
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
Apr 12 MySQL
MySQ InnoDB和MyISAM存储引擎介绍
Apr 26 MySQL
一文解答什么是MySQL的回表
Aug 05 MySQL
MySQL使用IF语句及用case语句对条件并结果进行判断 
Sep 23 MySQL
MySQL中dd::columns表结构转table过程及应用详解
Sep 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
收音机指标测试方法及仪器
2021/03/01 无线电
PHP 函数学习简单小结
2010/07/08 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
thinkphp实现图片上传功能分享
2014/03/04 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
2014/06/23 PHP
php常用字符串处理函数实例分析
2014/11/22 PHP
PHP实现的常规正则验证helper公共类完整实例
2017/04/27 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
javascript 模式设计之工厂模式学习心得
2010/04/27 Javascript
jquery.validate使用攻略 第二部
2010/07/01 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
2013/07/07 Javascript
jquery实现瀑布流效果分享
2014/03/26 Javascript
如何获取网站icon有哪些可行的方法
2014/06/05 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
2016/08/31 Javascript
jquery 动态增加删除行的简单实例(推荐)
2016/10/12 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
2017/08/23 jQuery
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
[53:52]OG vs EG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
[01:00:17]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第二场 1月25日
2021/03/11 DOTA
Python中str.join()简单用法示例
2018/03/20 Python
使用Python构造hive insert语句说明
2020/06/06 Python
win10安装python3.6的常见问题
2020/07/01 Python
Python生成并下载文件后端代码实例
2020/08/31 Python
html5 学习简单的拾色器
2010/09/03 HTML / CSS
AmazeUI在模态框中嵌入表单形成模态输入框
2020/08/20 HTML / CSS
Bose英国官方网站:美国知名音响品牌
2020/01/26 全球购物
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
JSF面试题:Jsf中导航的标签是什么
2013/04/20 面试题
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
婚庆司仪开场白
2015/05/29 职场文书
教师岗位说明书
2015/09/30 职场文书
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技