关联,事务

关联查询,联合查询

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

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

  • 内连接:INNER JOIN 、CROSS JOIN

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

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

说明:

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

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

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

关联条件

表连接的约束条件可以有三种方式:WHERE, ON, USING

  • WHERE:适用于所有关联查询

  • ON:只能和JOIN一起使用,只能写关联条件。虽然关联条件可以并到WHERE中和其他条件一起写,但分开写可读性更好。

  • USING:只能和JOIN一起使用,而且要求两个关联字段在关联表中名称一致,而且只能表示关联字段值相等

内连接

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

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

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

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

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

外连接

外连接分为:

左外连接(LEFT OUTER JOIN),简称左连接(LEFT JOIN)

右外连接(RIGHT OUTER JOIN),简称右连接(RIGHT JOIN)

全外连接(FULL OUTER JOIN),简称全连接(FULL JOIN)

where条件查询

​ 从原表中的记录中进行筛选

group by 分组查询

​ 很多情况下,用户都需要进行一些汇总操作,比如统计整个公司的人数或者统计每一个部门的人数

having 筛选

having与where类似,可筛选数据

having与where不同点

  • where针对表中的列发挥作用,查询数据;having针对查询结果中的列发挥作用,筛选数据
  • where后面不能写分组函数,而having后面可以使用分组函数
  • having只用于group by分组统计语句

order by 排序

  • 按一个或多个字段对查询结果进行排序

    用法:order by col1,col2,col3...

    说明:先按col1排序如果col1相同就按照col2排序,依次类推

    col1,col2,col3可以是select后面的字段也可以不是

  • 默认是升序,也可以在字段后面加asc显示说明是升序,desc为降序

  • order by 后面除了跟1个或多个字段,还可以写表达式,函数,别名等

事务

DCL用来控制数据库的访问,包括如下SQL语句:

  • GRANT:授予访问权限
  • REVOKE:撤销访问权限
  • COMMIT:提交事务处理
  • ROLLBACK:事务处理回退
  • SAVEPOINT:设置保存点
  • LOCK:对数据库的特定部分进行锁定

事务的ACID特性

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

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

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

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

posted @ 2020-10-21 21:05  藍色的泡泡  阅读(126)  评论(0)    收藏  举报