《深入浅出Mysql》——第二章 SQL基础
修改表名:
在 MySQL 中,update 命令可以同时更新多个表中数据,语法如下
注意:多表更新的语法更多地用在了根据一个表的字段,来动态的更新另外一个表的字段
例如,要 emp表中统计公司的总人数
在此基础上,要统计各个部门的人数
更细一些,既要统计各部门人数,又要统计总人数:
统计人数大于 1 人的部门:
最后统计公司所有员工的薪水总额、最高和最低薪水:
当需要同时显示多个表中的字段时,就可以用表连接来实现这样的功能。 从大类上分,表连接分为内连接和外连接,它们之间的最主要区别是內连接仅选出两张表中 互相匹配的记录,而外连接会选出其他不匹配的记录。我们最常用的是内连接。
左连接:
此时两个表:
右连接:
例如,从 emp表中查询出所有部门在 dept 表中的所有记录:
如果子查询记录数唯一,还可以用=代替 in:
某些情况下,子查询可以转化为表连接,例如:
转换为表连接后:
UNION 和 UNION ALL 的主要区别是 UNION ALL 是把结果集直接合并在一起,而 UNION 是将 UNION ALL 后的结果进行一次 DISTINCT,去除重复记录后的结果。
来看下面例子,将 emp和 dept 表中的部门编号的集合显示出来: