学习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进行数据查询非常有帮助。通过灵活运用这些操作,我们可以用更少的代码实现复杂的数据查询任务。