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 07 MySQL
详解MySQL多版本并发控制机制(MVCC)源码
Jun 23 MySQL
MySQL系列之三 基础篇
Jul 02 MySQL
MySQL系列之十 MySQL事务隔离实现并发控制
Jul 02 MySQL
MySQL中datetime时间字段的四舍五入操作
Oct 05 MySQL
mysql中varchar类型的日期进行比较、排序等操作的实现
Nov 17 MySQL
mysql 联合索引生效的条件及索引失效的条件
Nov 20 MySQL
MySQL七大JOIN的具体使用
Feb 28 MySQL
MySQL 主从复制数据不一致的解决方法
Mar 18 MySQL
mysql使用instr达到in(字符串)的效果
Apr 03 MySQL
MySQL数据库Innodb 引擎实现mvcc锁
May 06 MySQL
MySql按时,天,周,月进行数据统计
Aug 14 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
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
php intval函数用法总结
2019/04/14 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
window.location.href的用法(动态输出跳转)
2014/08/09 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
js实现点击切换TAB标签实例
2015/08/21 Javascript
快速掌握Node.js模块封装及使用
2016/03/21 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
BootStrap入门教程(一)之可视化布局
2016/09/19 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
NodeJs实现简单的爬虫功能案例分析
2018/12/05 NodeJs
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
python网络编程学习笔记(10):webpy框架
2014/06/09 Python
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
Python自动发邮件脚本
2017/03/31 Python
python实现word 2007文档转换为pdf文件
2018/03/15 Python
解决python升级引起的pip执行错误的问题
2018/06/12 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
2019/09/28 Python
python 实现在无序数组中找到中位数方法
2020/03/03 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
Python安装第三方库攻略(pip和Anaconda)
2020/10/15 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
美国著名手表网站:Timepiece
2017/11/15 全球购物
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
Python里面如何拷贝一个对象
2014/02/17 面试题
领导干部考察材料
2014/02/08 职场文书
意向书范本
2014/07/29 职场文书
团员自我评价范文
2015/03/10 职场文书
国庆节新闻稿
2015/07/17 职场文书
大学生党课心得体会
2016/01/07 职场文书
Python爬虫基础之简单说一下scrapy的框架结构
2021/06/26 Python
继承Win10缺点!教你关闭Win11烦人的网络搜索
2021/11/23 数码科技