数据库—多表查询、事务
1.多表查询:
例:
点击查看代码
# 创建部门表
CREATE TABLE dept(
did INT PRIMARY KEY AUTO_INCREMENT,
dname VARCHAR(20)
);
# 创建员工表
CREATE TABLE emp (
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10),
gender CHAR(1), -- 性别
salary DOUBLE, -- 工资
join_date DATE, -- 入职日期
dep_id INT,
FOREIGN KEY (dep_id) REFERENCES dept(did) -- 外键,关联部门表(部门表的主键)
);
-- 添加部门数据
INSERT INTO dept (dNAME) VALUES ('研发部'),('市场部'),('财务部'),('销售部');
-- 添加员工数据
INSERT INTO emp(NAME,gender,salary,join_date,dep_id) VALUES
('孙悟空','男',7200,'2013-02-24',1),
('猪八戒','男',3600,'2010-12-02',2),
('唐僧','男',9000,'2008-08-08',2),
('白骨精','女',5000,'2015-10-07',3),
('蜘蛛精','女',4500,'2011-03-14',1),
('小白龙','男',2500,'2011-02-14',null);
(1).多表查询——内连接、外连接
2.事务
(1)简介:
数据库的事务是一种机制,一个操作序列,包含了一组数据库操作命令。
事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即一组数据库命令要么同时成功,要么同时失败。
(2)事务操作语句:
(事务的操作是临时操作,只有当提交事务时之前的操作才会变为永久操作,否则回滚事务,之前的操作全部取消。)
点击查看代码
CREATE TABLE account(
id int PRIMARY KEY auto_increment,
name varchar(10),
money double(10,2)
);
-- 添加数据
INSERT INTO account(name,money) values('张三',1000),('李四',1000);
select * from account;
update account set money = 1000;
-- 转账操作
-- 开启事务
BEGIN;
-- 查询李四余额
select money from account where name = '李四';
-- 李四金额减500
update account set money = money - 500 where name = '李四';
-- 出错了...
-- 张三金额加500
update account set money = money + 500 where name = '张三';
-- 提交事务
commit;
-- 回滚事务
ROLLBACK;