学习MySQL两表查询,掌握SQL连接操作(mysql两表查询的方法)

学习MySQL两表查询,掌握SQL连接操作

MySQL是一种流行的关系型数据库管理系统,用于存储和管理数据。在实际应用中,经常需要从多张数据表中获取数据。因此掌握MySQL两表查询操作是必不可少的。

通过SQL连接操作可以实现多个表的数据查询,连接操作分为内连接、左连接、右连接和全连接四种。其中内连接在两张表中仅返回符合条件的记录,左连接则返回左表中的全部记录,右连接则返回右表中的全部记录,全连接则返回两张表中的全部记录。下面我们来看看这4种连接操作的示例代码。

1.内连接

内连接可以通过JOIN关键字来实现,语法如下:

SELECT columns FROM table1 JOIN table2 ON condition;

例如我们有两个表:

users表:

id name age

1 Tom 20

2 Mary 25

3 John 30

orders表:

id name price

1 shirt 100

2 tie 50

3 jacket 200

我们想要查询所有购买过商品的用户id和姓名,可以使用内连接操作,代码如下:

SELECT users.id, users.name FROM users JOIN orders ON users.id = orders.id;

执行结果为:

id name

1 Tom

2.左连接

左连接可以通过LEFT JOIN关键字来实现,语法如下:

SELECT columns FROM table1 LEFT JOIN table2 ON condition;

例如我们有两个表:

users表:

id name age

1 Tom 20

2 Mary 25

3 John 30

orders表:

id name price

1 shirt 100

2 tie 50

3 jacket 200

4 pants 80

我们想要查询每个用户对应的订单信息,如果没有订单,也要包含在结果中,可以使用左连接操作,代码如下:

SELECT users.id, users.name, orders.name, orders.price FROM users LEFT JOIN orders ON users.id = orders.id;

执行结果为:

id name name price

1 Tom shirt 100

2 Mary tie 50

3 John jacket 200

NULL NULL pants 80

3.右连接

右连接可以通过RIGHT JOIN关键字来实现,语法如下:

SELECT columns FROM table1 RIGHT JOIN table2 ON condition;

例如我们有两个表:

users表:

id name age

1 Tom 20

2 Mary 25

3 John 30

orders表:

id name price

1 shirt 100

2 tie 50

3 jacket 200

4 pants 80

我们想要查询所有订单对应用户的姓名和年龄,如果没有用户对应,也要包含在结果中,可以使用右连接操作,代码如下:

SELECT users.name, users.age, orders.name, orders.price FROM users RIGHT JOIN orders ON users.id = orders.id;

执行结果为:

name age name price

Tom 20 shirt 100

Mary 25 tie 50

John 30 jacket 200

NULL NULL pants 80

4.全连接

全连接可以通过FULL OUTER JOIN关键字来实现,MySQL并没有直接支持全连接操作,但是可以通过union all语句将左连接和右连接的结果合并,语法如下:

SELECT columns FROM table1 LEFT JOIN table2 ON condition UNION ALL SELECT columns FROM table1 RIGHT JOIN table2 ON condition WHERE table1.id IS NULL;

例如我们有两个表:

users表:

id name age

1 Tom 20

2 Mary 25

3 John 30

orders表:

id name price

1 shirt 100

2 tie 50

3 jacket 200

4 pants 80

我们想要查询所有用户和订单的对应关系,可以使用全连接操作,代码如下:

SELECT users.id, users.name, orders.name, orders.price FROM users LEFT JOIN orders ON users.id = orders.id UNION ALL SELECT users.id, users.name, orders.name, orders.price FROM users RIGHT JOIN orders ON users.id = orders.id WHERE users.id IS NULL;

执行结果为:

id name name price

1 Tom shirt 100

2 Mary tie 50

3 John jacket 200

NULL NULL pants 80

总结:

以上就是MySQL两表查询中的四种连接操作,对于掌握SQL语言的开发人员来说,掌握这些操作对于使用MySQL进行数据查询非常有帮助。通过灵活运用这些操作,我们可以用更少的代码实现复杂的数据查询任务。


数据运维技术 » 学习MySQL两表查询,掌握SQL连接操作(mysql两表查询的方法)