关联,事务
关联查询,联合查询
作用:从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):当事务提交完成后,其影响应该保留下来,不能撤消

浙公网安备 33010602011771号