news 2026/7/26 9:17:49

MySQL基础篇——约束和事务

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL基础篇——约束和事务

事务与隔离级别比较常考

1、MySQL约束

约束作用于表中字段,在创建/修改表时使用

非空约束,唯一约束,主键约束,默认约束,检查约束,外键约束

create table user( id int primary key auto_increment comment '主键', --主键且自动增长 name varchar(10) not null unique comment '姓名', --非空且唯一 age int check (age>0 and age<=120) comment '年龄', --检查约束0-120岁范围 status char(1) default '1' comment '状态', --默认值为1 gender char(1) comment '性别' )comment '用户表'; --插入数据 insert into user(name, age, status, gender) values('tom1', 19, '1', '男'),('tom2', 22, '0', '男');

外键约束(两张表之间数据一致性)

父表的主键id——关联——子表的外键字段(如dept_id)

--已有表添加外键 alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表(主表列名); alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id); --将emp表dept_id与dept表的id字段关联 --新增表添加外键 create table student_course( id int primary key auto_increment comment '主键', studentid int not null comment '学生ID', courseid int not null comment '课程ID', constraint fk_courseid foreign key (courseid) references course(id), constraint fk_studentid foreign key (studentid) references student(id) )comment '学生课程中间表'; --删除外键 alter table 表名 drop foreign key fk_emp_dept_id; --外键删除更新行为 no action/restrict(默认值 不允许更改)、cascade(对应修改)、set null alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表(主表列名)on update cascade on delete cascade;

2、多表查询

多表关系:多对一(添加外键),多对多(新增中间表添加外键),一对一(添加外键且唯一约束)

--自连接 select a.name, b.name from emp a left join emp b on a.managerid=b.id; -- 必须有别名 --联合查询union、union all(上下合并查询结果) select * from a union [all] select * from b; --union 合并去重,union all只合并,字段列数必须相同 --子查询 select * from emp where (salary, managerid)= (select salary, managerid from emp where name ='tom') --一行多列数据

3、事务操作

事务是一组操作的集合,全部成功/全部失败

--MySQL默认事务自动提交 select @@autocommit; --查看事务提交方式,1自动提交,0手动提交 set @@autocommit=0; --设置事务提交方式 commit; --提交事务 rollback; --回滚事务(回到初始状态) start transaction 或 begin; --开启事务 create table account( id int primary key auto_increment comment '主键ID', name varchar(10) comment '姓名', money int comment '余额' )comment '账户表'; insert into account(name,money) values ('a',2000),('b',2000); --转账操作(手动提交) select @@autocommit; set @@autocommit=0; --1、查询a用户余额 select * from account where name ='a'; --2、将a账户余额减去1000 update account set money = money - 1000 where name ='a'; --3、将b账户余额加上1000 update account set money = money + 1000 where name ='b'; commit; rollback; --如果执行出错; --若为自动提交的事务(比较常用) start transaction; ... commit; rollback; --如果执行出错;

事务四大特性 ACID

原子性A:事务是不可分割的最小操作单元,要么全部成功,要么全部失败;

一致性C:事务完成时,必须使所有数据都保持一致状态;

隔离性I:数据库系统提供的隔离机制,保证不同事务不受外部并发操作影响的独立环境下运行;

持久性D:事务一旦提交,它对数据库中数据的改变是永久的,哪怕数据库发生故障;

并发事务问题

1、脏读:一个事务读到另一个事务还没有提交的数据;

2、不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同;Update / Delete

3、幻读:一个事务按照条件查询数据时,没有对应的数据行,但是插入数据时又发生这行数据已经存在;Insert

事务的隔离级别

select @@transaction_isolation; --查看事务隔离级别 set [session|global] transaction isolation level read uncommitted; --设置事务隔离级别 --session当前会话,global全局

1、read uncommitted:三种问题都会出现;

2、read committed:有不可重复读和幻读问题;

3、repeatable read(MySQL默认):有幻读问题;

4、serializable:串行化均无问题,隔离级别最高,数据最安全,性能最差;

这是理论情况,实际应用有一些变化,在锁的部分会讲解。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/26 9:10:57

NVIDIA Profile Inspector完全攻略:释放显卡隐藏性能

NVIDIA Profile Inspector完全攻略&#xff1a;释放显卡隐藏性能 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款能够深度挖掘NVIDIA显卡性能的利器。与官方控制面板相比…

作者头像 李华
网站建设 2026/7/23 1:54:48

腾讯用“LLM+GNN“双剑合璧,广告推荐GMV暴涨2.8%!小白也能学会的冷启动解决方案

摘要 传统的广告召回单一模型往往难以有效平衡“语义精准”与“关系覆盖”、“冷启动”与“实时性”之间的结构性矛盾。为应对这一挑战&#xff0c;腾讯广告技术团队提出了融合 LLM 与 GNN 的创新方案&#xff0c;采用“GNN挖掘关系、LLM解析语义”的协同机制。 该方案既保留了…

作者头像 李华
网站建设 2026/7/26 3:25:29

B站视频智能转文字工具:让视频内容轻松变文本

B站视频智能转文字工具&#xff1a;让视频内容轻松变文本 【免费下载链接】bili2text Bilibili视频转文字&#xff0c;一步到位&#xff0c;输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 还在为手动记录视频内容而烦恼吗&#xff1f;每天面…

作者头像 李华
网站建设 2026/7/26 23:08:00

Wan2.2-T2V-A14B已被纳入高校数字艺术课程教学案例库

Wan2.2-T2V-A14B已被纳入高校数字艺术课程教学案例库 在数字内容创作门槛不断降低的今天&#xff0c;一个学生只需输入“敦煌飞天在星空中起舞&#xff0c;衣袂飘飘如云卷云舒”&#xff0c;几秒钟后就能看到一段流畅、细腻、极具东方美学意境的视频片段——这不再是科幻场景&a…

作者头像 李华
网站建设 2026/7/23 22:51:54

GPT-5.2:人工智能的创造力,能否超越人类的想象力?

AI与人类创作的对比 随着GPT-5.2的发布&#xff0c;人工智能在创作领域的表现让人惊叹不已。从写作到设计&#xff0c;再到音乐和艺术创作&#xff0c;GPT-5.2的能力不断扩展&#xff0c;令人不禁思考&#xff1a;人工智能的创造力&#xff0c;真的能够超越人类的想象力吗&…

作者头像 李华
网站建设 2026/7/25 17:55:57

R语言量子计算模拟资源稀缺曝光:仅剩5个开源包可实战,别再错过

第一章&#xff1a;R语言量子计算模拟的现状与挑战随着量子计算研究的不断深入&#xff0c;传统编程语言在模拟量子系统中的作用日益凸显。R语言作为统计计算与数据可视化的主流工具&#xff0c;近年来也被尝试用于量子态模拟和基础量子算法实现。尽管其并非专为高性能数值计算…

作者头像 李华