SQL 连接
SQL连接子句
SQL 连接 子句用于在数据库中将两个或多个表的数据组合起来。当相关数据存储在多个表中时,连接帮助您使用它们的外键检索记录,将这些表的字段组合起来。
连接子句的一部分指定了来自两个或多个表的记录要连接的列,这部分通常与ON子句一起使用,并使用各种比较运算符,如<,>,<>,<=,>=,!=,BETWEEN,LIKE和NOT
等。我们还可以使用逻辑运算符AND,OR和NOT连接多个连接断言。
我们可以将连接与update和delete,SQL查询一起使用,从多个表中更新和删除记录。当您使用连接获取一个表时,所显示的结果表不会存储在数据库中。
语法
下面是SQL连接子句的基本语法:
示例
假设我们使用以下查询创建了一个包含组织客户详细信息的CUSTOMERS表:
现在使用以下的INSERT语句将值插入到这个表中:
CUSTOMERS表将如下创建−
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
下面是另一个表格ORDERS,其中包含了由客户创建的订单详情。
使用INSERT语句,将值按如下方式插入到该表中:
ORDERS表将按如下格式创建:
OID | DATE | CUSTOMER_ID | AMOUNT |
---|---|---|---|
102 | 2009-10-08 00:00:00 | 3 | 3000.00 |
100 | 2009-10-08 00:00:00 | 3 | 1500.00 |
101 | 2009-11-20 00:00:00 | 2 | 1560.00 |
103 | 2008-05-20 00:00:00 | 4 | 2060.00 |
以下查询在表CUSTMERS和ORDERS上执行连接操作 –
输出
通过执行上面的查询,显示的结果表包含了CUSTOMERS表的ID,NAME,AGE字段和ORDERS表的AMOUNT字段中的值。
ID | NAME | AGE | AMOUNT |
---|---|---|---|
3 | Kaushik | 23 | 3000 |
3 | Kaushik | 23 | 1500 |
2 | Khilan | 25 | 1560 |
4 | Chaitali | 25 | 2060 |
SQL中的连接类型
SQL提供了各种类型的连接,这些连接是根据多个表之间数据的连接方式进行分类的。它们列举如下:
内连接
内连接是默认连接,它检索两个表的交集。它将第一个表的每一行与第二个表的每一行进行比较。如果这些行的组合满足连接谓词,则它们被连接在一起。
外连接
外连接检索两个表中的所有记录,即使在另一个表中没有对应的行,与内连接不同。外连接进一步分为三个子类型:左连接、右连接和全连接。
以下是不同类型的外连接:
- 左连接 – 返回左表中的所有行,即使在右表中没有匹配。
-
右连接 – 返回右表中的所有行,即使在左表中没有匹配。
-
全连接 – 当一张表中存在匹配时返回行。
其他连接
除此之外还有两个连接:
-
自连接 – 将一张表与自身连接,就好像这张表是两张表,SQL语句中至少对一张表进行了临时重命名。
-
交叉连接 – 返回两个或多个连接表中记录的笛卡尔乘积。