在前面的文章,章郎虫学习介绍了SQL的单表查询。因为单表查询很简单,相信朋友们一定都学会了。 接下来就总结下多表查询中应该注意的要点。
以下是内连接:
多表查询:标准SQL语法内连接总结 | ||
简单等连接 | select name,city from salesreps join offices on rep_office=office; |
通过基于字段对间的精确匹配来匹配相关的字段,形成记录对。 |
显示等连接 | select name,city from salesreps inner join offices on rep_office=office; |
使用关键字INNER JOIN来替代简单的JOIN的语法变化 |
父子查询 | select city,name,title from offices join salesreps on mgr=empl_num; |
将一个表中的主键与另一个表中的相应外键匹配的等连接 |
记录选择规则 | select city,name,title from offices join salesreps on mgr=empl_num where target>600000; |
通过添加一个WHERE谓词来从查询结果中过滤掉不想要的记录 |
多个匹配字段 | select order_num,amount,description from orders join products on mfr=mfr_id and product=product_id; |
多字段主键和外键要求多个记录与连接谓词匹配 |
三表连接 | select order_num,amount,company,name from orders join customers on cust=cust_num join salesreps on rep=empl_num where amount>25000; |
通过添加额外的JOIN字句来将多个表连接在一起 |
不等连接 | select name,quota,target from salesreps join offices on quota>target; |
连接谓词中的比较运算符是非符号(=)的其他符号 |
自然连接 | select order_num,amount,description from orders natural join products; |
基于所有在连接表间共享相同名称来匹配记录的等连接 |
使用USING子句连接 | select order_num,amount,description from orders join products using (mfr,product); |
基于显示标识的字段名(在连接表中共享相同名称)的等连接 |
自连接 | select emps.name,mgrs.name from salesreps emps join salesreps mgrs on emps.manager=mgrs.empl_num; |
一个表至其自身的等连接,其每条记录与同一个表中的其他记录匹配 |