云主机测评网云主机测评网云主机测评网

云主机测评网
www.yunzhuji.net

mysql的关联查询

MySQL关联查询是通过多个表之间的共同字段进行连接,从而获取所需数据的一种查询方式。

MySQL关联查询原理主要包括以下几个方面:

1、笛卡尔积

2、内连接(INNER JOIN)

3、左连接(LEFT JOIN)

4、右连接(RIGHT JOIN)

5、全连接(FULL JOIN)

6、子查询

7、自连接

下面分别详细介绍这些概念及其原理。

1、笛卡尔积

笛卡尔积是指在一个二维表中,将行与行进行组合,得到一个新的二维表,有两个表A和B,它们的结构如下:

表A:

id | name

1  | A
2  | B

表B:

id | age

1  | 18
2  | 20

A和B的笛卡尔积为:

id_A | id_B | name | age

1     | 1     | A    | 18
1     | 2     | A    | 20
2     | 1     | B    | 18
2     | 2     | B    | 20

2、内连接(INNER JOIN)

内连接是两个或多个表根据某个条件进行连接,返回满足条件的记录,有两个表A和B,它们的结构如下:

表A:

id | name

1  | A
2  | B

表B:

id | age

1  | 18
2  | 20

使用内连接查询A和B的记录,条件为A.id = B.id:

SELECT A.id, A.name, B.age
FROM A INNER JOIN B ON A.id = B.id;

结果为:

id | name | age

1  | A    | 18
2  | B    | 20

3、左连接(LEFT JOIN)

左连接是两个或多个表根据某个条件进行连接,返回满足条件的记录,如果某个表中没有满足条件的记录,则返回NULL,有两个表A和B,它们的结构如下:

表A:

id | name

1  | A
2  | B

表B:

id | age

1  | 18

使用左连接查询A和B的记录,条件为A.id = B.id:

SELECT A.id, A.name, B.age
FROM A LEFT JOIN B ON A.id = B.id;

结果为:

id | name | age

1  | A    | 18
2  | B    | NULL

可以看到,B表中没有满足条件的记录,所以返回NULL。

4、右连接(RIGHT JOIN)

右连接是两个或多个表根据某个条件进行连接,返回满足条件的记录,如果某个表中没有满足条件的记录,则返回NULL,与左连接相反,右连接会返回右边表中没有满足条件的记录,有两个表A和B,它们的结构如下:

表A:

SELECT id, name FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name, age (假设有age字段) FROM A; id, name
打赏
版权声明:主机测评不销售、不代购、不提供任何支持,仅分享信息/测评(有时效性),自行辨别,请遵纪守法文明上网。
文章名称:《mysql的关联查询》
文章链接:https://www.yunzhuji.net/internet/177656.html

评论

  • 验证码