• 数据库的备份和还原


    命令行:

    备份:

              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;

    事务四大特征:

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

    事务的隔离级别

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

  • 相关阅读:
    记一次生产数据库"意外"重启的经历
    我爬了链家青岛市北3000套二手房得出一个结论
    我用Python实现了一个小说网站雏形
    Linux下安装 Python3
    Lepus搭建企业级数据库慢查询分析平台
    Lepus搭建企业级数据库全方位监控系统
    shell浅谈之九子shell与进程处理
    shell中测试命变量是否已经定义
    getline数据来源你的三种方式
    awk中的system和getline的用法
  • 原文地址:https://www.cnblogs.com/cy2268540857/p/14300048.html
Copyright © 2020-2023  润新知