九江企业网站的建设微信开发公众号
2026/1/9 4:32:18 网站建设 项目流程
九江企业网站的建设,微信开发公众号,网站建设的合同条款,民治做网站公司事务与隔离级别比较常考1、MySQL约束约束作用于表中字段#xff0c;在创建/修改表时使用非空约束#xff0c;唯一约束#xff0c;主键约束#xff0c;默认约束#xff0c;检查约束#xff0c;外键约束create table user(id int primary key auto_increment comment 主键,…事务与隔离级别比较常考1、MySQL约束约束作用于表中字段在创建/修改表时使用非空约束唯一约束主键约束默认约束检查约束外键约束create table user( id int primary key auto_increment comment 主键, --主键且自动增长 name varchar(10) not null unique comment 姓名, --非空且唯一 age int check (age0 and age120) 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.manageridb.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 autocommit0; --设置事务提交方式 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 autocommit0; --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 / Delete3、幻读一个事务按照条件查询数据时没有对应的数据行但是插入数据时又发生这行数据已经存在Insert事务的隔离级别select transaction_isolation; --查看事务隔离级别 set [session|global] transaction isolation level read uncommitted; --设置事务隔离级别 --session当前会话global全局1、read uncommitted三种问题都会出现2、read committed有不可重复读和幻读问题3、repeatable readMySQL默认有幻读问题4、serializable串行化均无问题隔离级别最高数据最安全性能最差这是理论情况实际应用有一些变化在锁的部分会讲解。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询