MySQL7

数据库的备份与还原

  1  命令行

         语法 

                      备份  mysqldump -u用户名 -p密码 数据库名称 > 保存的路径

                      还原:

                            1  登录数据库

                            2  创建数据库

                            3  使用数据库

                            4  执行文件  source 文件路径

  2  图形化工具

 

 

多表查询

    查询语法

          select

                   列名列表

          from

                   表名列表

          where...

     多表查询的分类

           1  内连接查询

                  1  隐式内连接:使用where条件删除无用的信息

                             select * 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;

                                  

                  2  显式内连接

                          语法:select  字段列表 from 一个表名1 [inner] join 表名2 on 条件

                                     select * from emp inner join dept on emp.dept.id=dept.id;

                  3  内连接查询注意:

                           1  从哪些表中查询数据

                           2  条件是什么

                           3  查询哪些字段

           2  外连接查询

                  1  左外连接

                        语法: select 字段列表 from 表1 left [outer] join 表2 on 条件

                                    select t1.* ,t2.name from emp t1 left join dept t2 on t1.dept_id=t2.id;

                         查询的是左表所有数据以及其交集部分

                  2  右外连接

                        语法: select 字段列表 from 表1 right [outer] join 表2 on 条件

                         查询的是右表所有数据以及其交集部分

           3  子查询

                    概念:查询中嵌套查询,称嵌套查询为子查询

                             select * from emp where emp.salary=(select max(salary) from emp;);

      子查询不同情况

                       1  子查询的结果是单行单列:

         子查询可以作为条件,使用运算符去判断  >,<,>=,<=,=等

                             --查询员工工资小于平均工资的

                                 select * from emp where emp.salary < (select avg(salary) from emp);

                       2  子查询的结果是多行单列的:

         子查询可以作为条件,使用运算符in来判断

                              --查询财务部和市场部所有的员工信息

                                    select * from emp where dept_id in(select id from dept where name = '财务部' or name = '市场部');

                       3   子查询的结果是多行多列的:

                                   子查询可以作为一张虚拟表  

          --查询员工的入职日期是2011-11-11之后的员工信息和部门信息

                               select * from dept t1,(select * from emp where emp.join_date > '2011-11-11') t2

                               where t1.id=t2.dept_id;

  

 

事务

          1事务的基本介绍

      1  概念:

        如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败

                      2  操作:

        1  开启事务: start transaction;

        2  回滚  rollback;

        3  提交  commit;

        4  MySQL数据库中事务默认自动提交

               事务提交的两种方式

            自动提交

              一条DML(增删改)语句会自动提交一次事务

            手动提交

              Oracle数据库默认是手动提交

              需要先开启事务,再提交

          修改事务的默认提交方式

            查看事务的默认提交方式

              select @@autocommit;1代表自动提交,0代表手动提交

              修改默认提交方式:set @@autocommit=0或1;

     2事务的四大特征

      1  原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败

      2  持久性:如果事务一旦提交或者回滚,数据库会持久化的保存数据

      3  隔离性:多个事务之间,相互独立

      4  一致性:事务操作前后数据总量不变

     3事务的隔离级别

                 概念:多个事务之间是隔离的,相互独立的,但是如果多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别,就可以解决这些问题

       存在问题:

      ·  1  脏读:一个事务,读取到另一个事务中没有提交的数据

       2  不可重复读(虚读):在同一个事务中,两次读取到的数据不一样

          3  幻读:一个事务操作(DML)数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改

       隔离级别:

      1  read uncommitted:读未提交

        产生的问题:脏读,不可重复读,幻读

      2  read committed:读已提交  (Oracle)

        产生的问题:不可重复读,幻读

      3  repeatable read:可重复读   (MySQL默认)

        产生的问题:幻读

      4  serializable:串行化

        可以解决所有问题

      隔离级别从小到大安全性越来越高,但是效率越来越低

                     数据库设置隔离级别:

        set global transaction isolation level  级别字符串

posted @ 2021-10-10 20:30  Cuora  阅读(56)  评论(0)    收藏  举报