美文网首页
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