首页 > 编程语言 > 详细

java_day22

时间:2018-05-02 20:03:47      阅读:123      评论:0      收藏:0      [点我收藏+]

mysql多表查询,子查询

一.内连接

  1.关键字 INNER JOIN ON

  2.示例代码:

    SELECT * FROM tab1 INNER JOIN tab2 ON tab1.col1 = tab2.col1;

  3.内连接简写,ON变成WHERE

    SELECT * FROM tab1 , tab2 WHERE tab1.col1 = tab2.col1;

二.自连接

  1.自连接因为两张表都是自己,所以需要给表起别名,否则无法写条件

  2.示例代码:

    SELECT tab1.col1,tab2.col1 FROM table AS tab1 , table AS tab2; WHERE tab1.col1 = tab2.col1;

三.外连接

  1.分左外连接left join on和右外连接right join on

  2.左外连接中会将左表中所有数据,包括不符合条件的数据都显示出来,那么不符合的数据右表没有匹配的值,就用null来表示

  3.SELECT * FROM tab1 LEFT JOIN tab2 ON tab1.col = tab2.col1;

四.子查询

  1.子查询的条件是另一个查询的结果,那么这个结果是需要一列的

  2.示例代码:去重      
      DELETE FROM student
      WHERE name IN (SELECT *
                                FROM (SELECT name

                                           FROM student GROUP BY name

                                           HAVING COUNT(name) > 1) AS a)

                     AND sid NOT IN (SELECT *FROM

               (SELECT min(sid)FROM student GROUP BY name

               HAVING count(name) > 1) AS b);

五.事务

  1.关键字: BEGIN(开启事务),ROLLBACK(回滚),COMMIT(提交事务)

  2.当事务开启后,所有的sql要么全部生效,要么全部不生效

  3.之前写的sql语句都是自己单独在一个事务中,以后写sql尽量写在事务中,出现问题可以回滚

  4.示例代码:

    BEGIN: -- 开启事务

    DELETE FROM table; -- 执行SQL语句

    ROLLBACK; -- 回滚,也相当于commit了,也会关闭一个事务

    COMMIT; -- 提交事务

六.合并结果集

  1.合并展示不去重

   SELECT * FROM tab1 UNION ALL SELECT * FROM tab2 ;

  2.合并展示去重

   SELECT * FROM tab1 UNION SELECT * FROM tab2;

   SELECT DISTINCT * FROM tab2;

  

java_day22

原文:https://www.cnblogs.com/memo-song/p/8982052.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!