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分库分表与分区的入门指南
Apr 22 MySQL
MySQL创建高性能索引的全步骤
May 02 MySQL
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
Jun 18 MySQL
MySQL 十大常用字符串函数详解
Jun 30 MySQL
MySql 缓存查询原理与缓存监控和索引监控介绍
Jul 02 MySQL
Linux7.6二进制安装Mysql8.0.27详细操作步骤
Nov 27 MySQL
mysql使用 not int 子查询隐含陷阱
Apr 12 MySQL
MySQL查询日期时间
May 15 MySQL
MySQL GTID复制的具体使用
May 20 MySQL
mysql 排序失效
May 20 MySQL
MySQL聚簇索引和非聚簇索引的区别详情
Jun 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
基于数据库的在线人数,日访问量等统计
2006/10/09 PHP
据说是雅虎的一份PHP面试题附答案
2009/01/07 PHP
解析PayPal支付接口的PHP开发方式
2010/11/28 PHP
php中通过Ajax如何实现异步文件上传的代码实例
2011/05/07 PHP
php数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
如何用js控制css中的float的代码
2007/08/16 Javascript
Ext 表单布局实例代码
2009/04/30 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
20分钟打造属于你的Bootstrap站点
2016/07/27 Javascript
Vue实现web分页组件详解
2017/11/28 Javascript
vue通过style或者class改变样式的实例代码
2018/10/30 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
[02:31]《DAC最前线》之选手酒店现场花絮
2015/01/30 DOTA
python中for语句简单遍历数据的方法
2015/05/07 Python
Python Property属性的2种用法
2015/06/21 Python
python 对类的成员函数开启线程的方法
2019/01/22 Python
详解python pandas 分组统计的方法
2019/07/30 Python
K最近邻算法(KNN)---sklearn+python实现方式
2020/02/24 Python
python实现扑克牌交互式界面发牌程序
2020/04/22 Python
Python xlrd模块导入过程及常用操作
2020/06/10 Python
皇家道尔顿官网:Royal Doulton
2017/12/06 全球购物
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
伦敦著名的运动鞋综合商店:Footpatrol
2019/03/25 全球购物
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
旅游与酒店管理专业求职信
2014/07/21 职场文书
质量月活动总结
2014/08/26 职场文书
董存瑞观后感
2015/06/11 职场文书
学前教育见习总结
2015/06/23 职场文书
户外拓展训练感想
2015/08/07 职场文书
详解redis分布式锁的这些坑
2021/05/19 Redis
php去除deprecated的实例方法
2021/11/17 PHP
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers