表联结
1.MySQL别名
-
在使用过程中,我们可以创建计算字段来得到需要的显示结果,并使用别名来进行引用。也就是说,计算字段其实并不是表中的原有字段,而是为方便使用而创建的。
-
图一:select语句生成一个新字段,同时将其命名为name_sala。别名有时也叫导出列。
-
图二: 表别名,用来缩短SQL语句。
2.表联结
SQL最强大的功能之一就是能在数据查询的执行中联结(join)表。联结是利用 SQL的 SELECT能执行的最重要的操作,很好地理解联结及其语 法是学习 SQL的极为重要的部分。
将数据分解为多个表中便于存储的同时,查询起来也更麻烦,因此需要使用联结功能。
1)简单联结
注意:
- 当检索两张表中都有的字段时,需要明确字段来源,否则会报错;
- where语句给出匹配条件。否则,返回的结果为笛卡尔积, CROSS JOIN(形成行*行的复杂数据结果);
- 当然,除了上面的这种简单格式,我们也可以使用标准格式语句:
SELECT salary.id,sex,class
FROM salary INNER JOIN courses
ON salary.id=courses.id;
- 这里on语句的作用和where语句一致。
- 对多个表进行联结是,可以使用AND语句。
2)高级联结
自联结(self-join)
- 这里检索的是同一张表,将其分别命名为c1,c2。
- select语句需要明确指出表名,否则会报错。
- 自联结通常作为外部语句,用来替代从同一表中检索数据的子查询语句,因为这样查询速度更快。
外联结
-
联结包含了那些在相关表中没有关联行的行,这种联结称为外联结。
-
左外联结显示join左边表的全部内容,右外联结相反。
3)UNION
UNION关键字分隔两条或以上SELECT语句,并把输出组合成一个查询结果集。
- 使用规则
UNION必须由两条或两条以上的 SELECT语句组成,语句之间用关键字UNION分隔(因此,如果组合四条SELECT语句,将要使用三个UNION 关键字)。
UNION中的每个查询必须包含相同的列、表达式或聚集函数(不过,各个列不需要以相同的次序列出)。
列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含转换的类型(例如,不同的数值类型或不同的日期类型)。