SQL 连接

SQL 连接

SQL连接子句

SQL 连接 子句用于在数据库中将两个或多个表的数据组合起来。当相关数据存储在多个表中时,连接帮助您使用它们的外键检索记录,将这些表的字段组合起来。

连接子句的一部分指定了来自两个或多个表的记录要连接的列,这部分通常与ON子句一起使用,并使用各种比较运算符,如<,>,<>,<=,>=,!=,BETWEEN,LIKE和NOT等。我们还可以使用逻辑运算符AND,OR和NOT连接多个连接断言。

我们可以将连接与update和delete,SQL查询一起使用,从多个表中更新和删除记录。当您使用连接获取一个表时,所显示的结果表不会存储在数据库中。

语法

下面是SQL连接子句的基本语法:

SELECT column_name(s)
FROM table1
JOIN table2;

示例

假设我们使用以下查询创建了一个包含组织客户详细信息的CUSTOMERS表:

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),       
   PRIMARY KEY (ID)
);

现在使用以下的INSERT语句将值插入到这个表中:

INSERT INTO CUSTOMERS VALUES
(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 );

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,其中包含了由客户创建的订单详情。

CREATE TABLE ORDERS (
   OID INT NOT NULL,
   DATE VARCHAR (20) NOT NULL,
   CUSTOMER_ID INT NOT NULL,
   AMOUNT DECIMAL (18, 2)
);

使用INSERT语句,将值按如下方式插入到该表中:

INSERT INTO ORDERS VALUES 
(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);

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上执行连接操作 –

SELECT ID, NAME, AGE, AMOUNT 
FROM CUSTOMERS 
JOIN ORDERS 
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

输出

通过执行上面的查询,显示的结果表包含了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语句中至少对一张表进行了临时重命名。

  • 交叉连接 – 返回两个或多个连接表中记录的笛卡尔乘积。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程