数据库的备份和还原

命令行:

备份:

          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;

事务四大特征:

原子性(要么同时成功要么同时失败)、持久性(当事务提交或回滚后数据库会持久保存)、隔离性(多事务相互独立)、一致性(事务操作前后,数据总量不变)

事务的隔离级别

 

 设置时需要关闭后重新打开才可以生效。

 

posted @ 2021-01-20 19:23  159566  阅读(55)  评论(0编辑  收藏  举报