数据库的备份和还原
命令行:
备份:
mysqldump -u用户名 -p密码 数据库名称> 保存路径a.sql文件
还原:
创建数据库->使用数据库-> source备份文件
准备sql:
create table dept(
id int primary key auto_increment,
name varchar(20)
);
insert into dept (name) values('开发部'),('市场部'),('财务部');
create table emp(
id int primary key auto_increment,
name varchar(10),
gender char(1),
salary double,
join_date date,
dept_id int,
foreign key (dept_id) references dept(id)
);
insert into emp(name,gender,salary,join_date,dept_id)values('孙悟空','男',7200,'2013-02-24',1);
insert into emp(name,gender,salary,join_date,dept_id)values('猪八戒','男',3600,'2013-12-02',2);
insert into emp(name,gender,salary,join_date,dept_id)values('唐僧','男',9000,'2008-04-08',2);
insert into emp(name,gender,salary,join_date,dept_id)values('白骨精','女',5000,'2020-01-14',3);
insert into emp(name,gender,salary,join_date,dept_id)values('猪猪精','女',4500,'2019-03-07',1);
多表查询分类:
内连接查询:
隐式内连接:
SELECT *FROM emp,dept WHERE emp.`dept_id`=dept.`id`;
方法一: SELECT emp.name,gender,salary,dept.`name` FROM emp,dept WHERE emp.`dept_id`=dept.`id`;
方法二:
SELECT
t1.`name`,t1.`gender`,t2.`name`
FROM
emp t1,dept t2
WHERE
t1.`dept_id`=t2.`id`;
显式内连接:
SELECT *FROM emp INNER JOIN dept ON emp.`dept_id`=dept.`id`;
SELECT * FROM emp JOIN dept ON emp.`dept_id`=dept.`id`;
外连接查询:
左外连接查询:(查询左表数据及其交集部分)
SELECT t1.*,t2.`name`
FROM emp t1 LEFT JOIN dept t2
ON t1.`dept_id`=t2.`id`;
右外连接查询:(查询右表数据及其交集部分)
SELECT t1.*,t2.`name`
FROM dept t2 RIGHT JOIN emp t1
ON t1.`dept_id`=t2.`id`;
子查询:
查询中嵌套查询,称嵌套查询为子查询
方法一:
SELECT MAX(salary) FROM emp;
SELECT *FROM emp WHERE emp.`salary`=9000;
方法二:
SELECT *FROM emp WHERE emp.`salary`=(SELECT MAX(salary) FROM emp);
查询市场部和财务部的所有员工信息
SELECT * FROM emp WHERE emp.`dept_id` IN (SELECT id FROM dept WHERE NAME='财务部' OR NAME='市场部');
查询2010-01-01以后入职的员工:
SELECT t1.*,t2.`name` FROM emp t1 LEFT JOIN dept t2 ON t1.`join_date`>'2010-01-01'WHERE t1.`dept_id`=t2.`id`;
事务:
事务提交的两种方式:
自动提交:
mysql就是自动提交的
一条DML语句会自动提交一次事务
手动提交:
需要开启事务,再提交
查看事务的默认提交方式:
select @@ autocommit 1表示自动0表示手动提交
修改提交方式:
set @@autocommit =0;
事务四大特征:
原子性(要么同时成功要么同时失败)、持久性(当事务提交或回滚后数据库会持久保存)、隔离性(多事务相互独立)、一致性(事务操作前后,数据总量不变)
事务的隔离级别
设置时需要关闭后重新打开才可以生效。