(一)连接查询
连接是把不同表的记录连到一起的最普遍的方法,通过连接查询可将多个表作为一个表进行处理。连接查询分为内连接和外连接。
1.内连接
内连接是使用比较运算符对两个表中的列组合在一起,产生新的结果表。内连接分为3种:交叉连接,相等连接,自然连接。
内连接语法:SELECT fieldlist FROM table1 JOIN table2 ON table1.column1=table2.column2【where condition】
语法说明如下:
(1)fieldlist:table1表和table2表中的字段列。若取所有列,则用“*”。
(2)table1 JOIN table2:将table1表与table2表进行内连接。
(3)table1.column1=table2.column2:连接条件,其中column1和column2为table1表与table2表的关系列。
(4) "where condition"可省略,它为查询条件表达式。
a.查询每件商品的商品名和分类名
结果示例
分析:商品表goods与分类表type存在一个依据列--typeID。连接这两张表,使用内连接并采用商品名和分类名作为字段列表,SQL语句如下:
SELECT goodsName AS 商品,typeName as 分类 from goods JOIN type on goods.typeid=type.typeName
(二)多表连接查询
如果查询的信息来源于多张表,则可通过两两相连的方式建立多表连接查询。
三表连接查询的语法:SELECT fieldlist FROM table1 JOIN table2 ON table1.colum1=table2.column2_1 JOIN table3 ON table2.column2_2=table3.column3【where condition】
语法说明如下:
(1)table1与table2和table3两两相连。
(2)三表以上连接查询的方法与三表连接查询的方法一样,均是通过两两相连的方式实现。
b.查询每个订单是谁买的,什么时候买的,买了什么,买了多少个(花了多少钱)
结果示例
SQL语句如下:orderdetails JOIN goods ON orderdetails.goodsID=goods.goodsID JOIN orders ON orderdetails.orderID=order.orderID JOIN user ON order.userID=user.userID
2.外连接
根据不同的外连接形式,外连接所生成的结果集中不仅包含符合条件的数据记录,还包含左表或右表或左右表中的所有数据记录。
外连接语法:SELECT 字段名称 FROM 表名1 LEFT|RIGHT|FULL[OUTER] OIN 表名2 ON 表名1.字段名1=表名2.字段名2
(1)左外连接:LEFT OUTER JOIN
总结:在查询的时候,以left join这个关键字左边的表为主表,会将这个表中的数据全部查询出来,如果右表中没有这条数据,则用NULL字段表示。
(2)右外连接:RIGHT OUTER JOIN
SELECT *FROM A right outer join B on条件;
总结:在查询的时候,会以right join这个关键字右边的表为主,然后将符合条件的查询出来,左表中没有的字段,使用NULL进行补充。