美文网首页
003 多表查询, 事务和DCL.

003 多表查询, 事务和DCL.

作者: 你挺ne呀 | 来源:发表于2021-02-25 18:59 被阅读0次

    多表查询


    • 多表查询: 笛卡尔积.
      内连接查询

      1. 隐式内连接 : 使用where.

        eg: select * from emp,dept where emp.'dept_id' = dept.'id';
        //可以用from来定义表的别名.

      2. 显式内连接 :

        select 字段列表 from 表名1 inner join 表明2 on 条件.

      3. 前提: 确定表,查询条件,查询字段.
        外连接查询

      • 左外连接

        select 字段 from 表1 left [outer] join 表2 on 条件.

      • 右外连接

        select 字段 from 表1 right [outer] join 表2 on 条件.

      子查询
      > 查询中嵌套查询.
      1. 子查询的结果是单行单列的:
      * 子查询的结果作为条件.
      2. 子查询的结果是多行单列的:
      * 多行单列使用运算符IN.
      > SELECT * FROM department WHERE id IN (SELECT id FROM department WHERE dep_location='成都' OR dep_name='法务');
      3. 子查询的结果是多行多列的:
      * 子查询可以作为一张虚拟表.


    事务


    1. 操作
      * start transaction
      * commit
      * rollback

       > mysql中, 事务默认提交事务.
      
    2. 事务的四大特征
      * 原子性
      * 持久性
      * 隔离性
      * 一致性

    3. 事务的隔离级别
      * 多个事务之间相互独立.
      * 问题:
      1. 脏读
      2.不可重复读
      3. 幻读
      * 级别

       1. read uncommit: 读取为提交.  产生问题: 脏读, 不可重复读, 幻读.
       2. read commited: 读取已提交:  产生问题: 不可重复读, 幻读
       3. repeatable read: 可重复读:  产生问题: 幻读
       4. serializable : 串行化: 可解决所有问题
       * 隔离级别从小到大.
      

    DCL


    1. 管理用户
      1.1 查询用户
      1.2 创建用户
      CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
      1.3 删除用户
      DROP USER '用户名'@'主机名' ;
      1.4 修改密码
      UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名';
      set password for '用户名'@'主机名' = password('新密码');
    2. 授权
      1. 查询权限
        show grants for '用户名'@'主机名';
      2. 授予权限
        grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
      3. 撤销权限
        revoke 权限列表 on database_name.table_name to 'username'@'host_name';

    OTHER


    • 忘记root密码
    1. 停止mysql服务
    2. 使用无验证方式启动mysql服务: mysqld --skip-grant-tables.

    相关文章

      网友评论

          本文标题:003 多表查询, 事务和DCL.

          本文链接:https://www.haomeiwen.com/subject/kmiufltx.html