SQL中一些谓语

来源:互联网 发布:php 目录是否存在 编辑:程序博客网 时间:2024/04/30 14:00

SQL中 Join 是纵向,union是横向

一、 SQL JOINS用于在两个或多个表中查询。

  1. INNER JOIN: 当两个表至少存在一个匹配项时返回行。

语法规则:

SELECT column_name(s)FROM table_name1INNER JOIN table_name2ON table_name1.column_name=table_name2.column_name

  1. LEFT JOIN: 即使在右表中没有匹配,仍返回左表中的所有行(返回左表中的所有行,以及右表中的匹配行)。

语法规则:

SELECT column_name(s)FROM table_name1LEFT JOIN table_name2ON table_name1.column_name=table_name2.column_name

  1. RIGHT JOIN: 即使在左表中没有匹配,仍返回右表中的所有行(返回右表中的所有行,以及左表中的匹配行)。

SELECT column_name(s)FROM table_name1RIGHT JOIN table_name2ON table_name1.column_name=table_name2.column_name

  1. FULL JOIN: 返回左表和右表中的所有行,即使两表没有匹配项。

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsFULL JOIN OrdersON Persons.P_Id=Orders.P_IdORDER BY Persons.LastName

二、UNION用于连接两个或多个SELECT语句

每一个SELECT语句需要返回相同的列数,每列的数据类型要相同。

  1. UNION: 返回连接查询的结果时,去掉重复值。

SELECT column_name(s) FROM table_name1UNIONSELECT column_name(s) FROM table_name2

  1. UNION ALL: 返回所有查询结果。

SELECT column_name(s) FROM table_name1UNION ALLSELECT column_name(s) FROM table_name


exists和in的区别

exists和in的用法对于SQL来说,大多数情况下都是逻辑上等价的;但是在执行效率上有较大差异。举例来说,in是判断一个集合中是否存在满足条件的元素,in如果数据库内部不做优化的话要遍历整个集合;而exists则不然,只要它找到匹配的,就意味着存在,就停止返回。当涉及表的数据量很大时,效率差异较大。

原创粉丝点击