ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL关联查询,联合查询,事务

2020-10-21 21:01:12  阅读:168  来源: 互联网

标签:事务 JOIN list cols 关联 MySQL 查询 连接 SELECT


关联查询,联合查询

  作用:从2张或多张表中,取出有关联的数据.

关联查询一共有几种情况:

  内连接:INNER JOIN 、CROSS JOIN

      有两种,显式的和隐式的,返回连接表中符合连接条件和查询条件的数据行

      隐式:SELECT [cols_list] from 表1,表2 where [condition]

      显式:select [cols_list] from 表1 INNER JOIN 表2 on sc.sid =student.sid;

      SELECT [cols_list] from 表1 CROSS JOIN 表2 ON [关联条件] where [其他筛选条件]

      SELECT [cols_list] from 表1 JOIN 表2 ON [关联条件] where [其他筛选条件]

  外连接:左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)、全外连接(FULL OUTER JOIN)

      SELECT [cols_list] from 表1 LEFT OUTER JOIN 表2 on Student.Sid=SC.Sid

      SELECT [cols_list] from 表1 RIGHT OUTER JOIN表2 on Student.Sid=SC.Sid

      SELECT [cols_list] from 表1 FULL OUTER JOIN 表2 on Student.Sid=SC.Sid

  自连接:当table1和table2本质上是同一张表,只是用取别名的方式虚拟成两张表以代表不同的意义

      SELECT [cols_list] from t_employee AS emp ,

                 t_employee AS mgr WHERE emp.mid = mgr.eid;

说明:

  连接 n个表,至少需要 n-1个连接条件。 例如:连接三个表,至少需要两个连接条件。

  当两个关联查询的表如果有字段名字相同,并且要查询中涉及该关联字段,那么需要使用表名前缀加以区分

  当如果表名比较长时,可以给表取别名,简化SQL语句

 

事务: 
  事务的ACID特性:

      1.原子性(Atomicity):原子意为最小的粒子,或者说不能再分的事物。数据库事务的不可再分的原则即为原子性。 组成事务的所有SQL必须:要么全部执行,要么全部取消(就像上面的银行例子)。

    2.一致性(Consistency):指数据的规则,在事务前/后应保持一致

    3.隔离性(Isolation):简单点说,某个事务的操作对其他事务不可见的.

    4.持久性(Durability):当事务提交完成后,其影响应该保留下来,不能撤消

  

  事务的用法:
      1.开启事务(start transaction)

    2.执行sql操作(普通sql操作)

    3.提交/回滚(commit/rollback)

  注意:

    - 建表的时候,选择** Innodb引擎**才支持事务****
    - 默认情况下,MySQL是自动提交事务,每次执行一个 SQL 语句时,如果执行成功,就会向数据库自动提交,而不能回滚。如果某一组操作需要在一个事务中,那么需要使用start transaction,一旦 rollback或commit就结束当次事务,之后的操作又自动提交。
    - 如果需要在当前会话(连接)的整个过程中都取消自动提交事务,进行手动提交事务,就需要设置set autocommit = false;或set autocommit = 0;那样的话每一句SQL都需要手动commit提交才会真正生效。rollback或commit之前的所有操作都视为一个事务,之后的操作视为另一个事务,还需要手动提交或回滚。
    - 和Oracle一样,DDL语句是不能回滚的,并且部分的DDL语句会造成隐式的提交,因此最好事务中不要涉及DDL语句。

 

标签:事务,JOIN,list,cols,关联,MySQL,查询,连接,SELECT
来源: https://www.cnblogs.com/aw123/p/13854668.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有