mysql学习day05—子查询 / CASH语句 / 连接查询

子查询

  • 单行子查询:返回单行单列

  • 多列子查询:返回单行多列(使用成对比较)

  • 多行子查询:返回多行单列

  • 相关子查询:子查询使用了外部SQL的某些表或列(但是外部SQL不可使用子查询中的表和列)

  • 嵌套子查询

  1. 关联子查询

    1. 查询 在 Asia工作的员工信息

      -- 方法1
      select id , first_name,title,salary
      from s_emp
      -- exists返回的是true 或者 false 所以select后面的可以随便写
      where EXISTS (
       select 200 from s_dept d join s_region r on d.region_id = r.id 
       where d.id = s_emp.dept_id 
       and r.name = 'Asia');
      
      -- 方法2
      select id , first_name,title,salary
      from s_emp
      where EXISTS (
       select 200 from s_dept d join s_region r on d.region_id = r.id 
       and r.name = 'Asia'
       where d.id = s_emp.dept_id 
      ); 
      ​
      +----+------------+----------------------+---------+
      | id | first_name | title                | salary  |
      +----+------------+----------------------+---------+
      | 14 | Mai        | Sales Representative | 1525.00 |
      | 23 | Radha      | Stock Clerk          |  795.00 |
      |  9 | Antoinette | Warehouse Manager    | 1300.00 |
      | 22 | Eddie      | Stock Clerk          |  800.00 |
      +----+------------+----------------------+---------+

    2. 嵌套子查询:在子查询内部可以继续嵌套子查询

      select id,first_name,title,salary
      from s_emp e
      where exists (select 1 from s_dept d
      where d.id = e.dept_id and d.region_id = (select id from s_region where name ='Asia'));

    3. DML语句 数据操纵语言

      1. DML语句涉及:INSERT / UPDATE / DELETE

      2. 查询事物提交方式:1为自动提交

        select @@autocommit;
        +--------------+
        | @@autocommit |
        +--------------+
        |            1 |
        +--------------+
      3. 关闭事物自动提交

        set autocommit = 0;

      4. 回滚事物:为了撤销删除的数据

        rollback;

CASH语句

  1. 语法

    CASE case_value
       WHEN when_value THEN statement_list
       [WHEN when_value THEN statement_list] ...
       [ELSE statement_list]
    END CASE

  2. 查询所有 将其性别翻译为 男(1) 或 女(2)

    select id,name 
    CASE when gender = 1 THEN '男'
    when gender = 2 THEN '女'
    else '未知' end  as 性别
    from table;

连接查询

  1. 内连接(全部都是满足连接条件的连接)

    select * from t_class c join t_major m on c.major_id = m.id;

  2. 左外连接(除了全部都是满足连接条件的连接,还有不满足条件的数据)

    join之前那张表中不满足条件的被保留下来
    select * from t_class c left outer join t_major m on c.major_id = m.id;

  3. 右外连接

    join之后那张表中不满足条件的被保留下来
    select * from t_class c left outer join t_major m on c.major_id = m.id;

  4. 全外连接(MYSQL不支持)

  5. 非标准写法

    select * from t_class c ,t_major m where m.id = c.major_id;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蔡霸霸i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值