SQL连接查询语句(内、外、交叉和合并查询)
2018-01-05 16:39
423 查看
1、内连接 (INNER JOIN)
内连接也称自然连接,它是根据两个或多个表中的列之间的关系,从这些表中查询数据。注意: 内连接是从结果表中删除与其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。
重点:内连接,只查匹配行。
语法:(INNER可省略)[sql] view plain copy select dishname,dishcode,nums,catename from sn_dish_info inner join sn_dish_category on sn_dish_info.cateuuid=sn_dish_category.cateuuid
菜品类别表:
菜品表
结果表
这样我们就把两张表中我们想要的数据查出来了。但同时招牌菜这个的数据就丢失了!!不过这对于我们好像不影响我们。我们只要菜品类别下有菜品的数据。
2、外连接(左,右,全连接)
外连接分为三种:左外连接,右外连接,全外连接。对应SQL:LEFT/RIGHT/FULL OUTER JOIN。通常我们省略outer 这个关键字。写成:LEFT/RIGHT/FULL JOIN。在左外连接和右外连接时都会以一张表为基表,该表的内容会全部显示,然后加上两张表匹配的内容。如果基表的数据在另一张表没有记录。那么在相关联的结果集行中列显示为空值(NULL)。
(1)左连接
以左表为基准,结果集保留左表的所有行,对于右表只包含左表匹配的行。如果右表不存在与左表相对应的数据,就将查询结果集合对应的数据字段放入NULL值。
[sql] view plain copy Select dishname,dishcode,nums,sn_dish_category.catename as carename from sn_dish_info left join sn_dish_info.cateuuid sn_dish_category.cateuuid
结果:
(2)右连接
与左连接正好相反。
[sql] view plain copy Select dishname,dishcode,nums,sn_dish_category.catename as carename from sn_dish_info right join sn_dish_category on sn_dish_info.cateuuid=sn_dish_category.cateuui
结果:
(3)全连接
将左右两个表中的数据都查询出来,如果两个表中没有相对应的数据,就将该字段放入NULL值。
[sql] view plain copy Select dishname,dishcode,nums,sn_dish_category.catename as carename from sn_dish_info full join sn_dish_category on sn_dish_info.cateuuid=sn_dish_category.cateuuid
3、交叉连接(Cross join)
交叉连接也称笛卡尔积,是将两个表中的每一条数据都进行组合。例:a(a,1),b(2,3,4) 交叉连接后c{(a,2) ,(a,3),(a,4)(1,2),(1,3),(1,4)}
[sql] view plain copy Select dishname,dishcode,nums,sn_dish_category.catename as carename from sn_dish_info cross join sn_dish_category
他和用内连接进行查询的结果一样,就是太慢了,因为它得先进行组合,在进行筛选,导致查询的效率很低。
4、UNION
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。
当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
[sql] view plain copy SQL UNION 语法 SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2 注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。 SQL UNION ALL 语法 SELECT column_name(s) FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2
相关文章推荐
- SQL连接查询语句(内、外、交叉和合并查询)
- sql2005 内连接 外连接 交叉连接 查询 与联合查询(合并查询)
- sql语句查询结果合并union 和union all用法
- 2011.9.28 mysqli学习笔记 mysqli连接,multi_query多语句查询,SQL预处理stmt,事务处理
- sql语句查询结果合并union 和union all用法
- [导入]SQL 查询语句中交叉条件的应用!
- oracle 基础SQL语句 多表查询 子查询 分页查询 合并查询 分组查询 group by having order by
- sql:常用sql语句整理二 (连接查询)
- sql语句查询结果合并union 和union all用法
- 关于数据库查询语句SqlDataReader的连接释放问题的解决办法
- sql语句连接查询.
- 一句sql语句求助(有关两个交叉计数查询)
- 你必须掌握的一些常见的SQL语句,包含单表查询、高级查询(连接查询、复合条件查询、嵌套查询)
- Questions:连接两个表进行查询:可以输入或不输入查询条件的sql 语句
- sql语句实现2个表的查询(内连接)
- ACCESS JET SQL 分段或者交叉统计的查询语句怎么写?
- sql语句使用-插入列与连接查询
- SQL 多表查询(内连接、外连接和交叉连接,)
- SQL查询语句 group by后, 字符串合并
- SQL语句远程连接其他数据库查询表数据