mysql中的 inner join和left join在一对一和一对多的时候
时间: 2023-11-30 22:43:13 浏览: 122
以下是MySQL中Inner Join和Left Join在一对一和一对多情况下的演示:
假设我们有两个表,一个是学生表(students),另一个是课程表(courses),它们之间的关系是一个学生可以选修多门课程,而一门课程也可以被多个学生选修。
1. 一对一情况下的Inner Join:
假设我们有两个表,一个是订单表(orders),另一个是客户表(customers),每个订单只属于一个客户,每个客户也只有一个订单。
```sql
SELECT *
FROM orders
INNER JOIN customers
ON orders.customer_id = customers.customer_id;
```
上述SQL语句将返回一个包含订单和客户信息的表,其中每一行都是一个订单和它所属的客户的信息。
2. 一对多情况下的Inner Join:
假设我们有两个表,一个是学生表(students),另一个是课程表(courses),它们之间的关系是一个学生可以选修多门课程,而一门课程也可以被多个学生选修。
```sql
SELECT *
FROM students
INNER JOIN courses
ON students.course_id = courses.course_id;
```
上述SQL语句将返回一个包含学生和课程信息的表,其中每一行都是一个学生和他所选修的课程的信息。如果一个学生选修了多门课程,那么他的信息将在结果集中出现多次。
3. 一对一情况下的Left Join:
假设我们有两个表,一个是订单表(orders),另一个是客户表(customers),每个订单只属于一个客户,每个客户也只有一个订单。
```sql
SELECT *
FROM customers
LEFT JOIN orders
ON customers.customer_id = orders.customer_id;
```
上述SQL语句将返回一个包含所有客户信息和他们的订单信息的表,其中每一行都是一个客户和他的订单的信息。如果一个客户没有订单,那么他的信息也会在结果集中出现,但是订单信息将会是NULL。
4. 一对多情况下的Left Join:
假设我们有两个表,一个是学生表(students),另一个是课程表(courses),它们之间的关系是一个学生可以选修多门课程,而一门课程也可以被多个学生选修。
```sql
SELECT *
FROM courses
LEFT JOIN students
ON courses.course_id = students.course_id;
```
上述SQL语句将返回一个包含所有课程信息和选修该课程的学生信息的表,其中每一行都是一门课程和选修该课程的学生的信息。如果一门课程没有学生选修,那么它的信息也会在结果集中出现,但是学生信息将会是NULL。
阅读全文