第9天-mysql创建高级联结

一、使用表别名

在sql中,除了可以使用列别名之外,也可以使用表别名,这样做有两个理由

缩短sql语句
允许在单个select语句中使用相同的表

例子:

SELECT name, age, sex
FROM students as s, courses as c, course_selection as cs
WHERE cs.student_id = s.id
AND c.course_teacher = 'zhang'
AND c.course_id = cs.course_id;

上面的语句使用了表别名,缩短了sql语句的长度。

二、使用不同类型的联结

目前为止我们使用的都是内部联结,sql中还存在其他三种类型的联结:

自联结
自然联结
外部联结

1、自联结

假设我们想在students表中找出和学生jyjxycgw分数相同的所有学生的信息。

编写查询语句如下:

SELECT id, name, sex, age, score
FROM students
WHERE score = 
(
    SELECT score
    FROM students
    WHERE name = 'jyjxycgw'
);

输出为:

+-----+----------+--------+-----+-------+
| id  | name     | sex    | age | score |
+-----+----------+--------+-----+-------+
|   2 | jyjxycgw | male   |  44 |    27 |
| 121 | ibtzfqzo | female |  34 |    27 |
| 126 | hjvgmryx | female |  21 |    27 |
| 170 | jaqzptez | male   |  53 |    27 |
| 194 | kuxvtxwd | female |  17 |    27 |
| 427 | iuuludyb | male   |  52 |    27 |
| 432 | dhhmommn | female |  40 |    27 |
| 455 | kkhiunlf | male   |  90 |    27 |
| 463 | jnlnrezu | female |  61 |    27 |
| 489 | zurgnibf | male   |  55 |    27 |
| 653 | tkpkhbhq | male   |  43 |    27 |
| 879 | kvprpaph | female |  11 |    27 |
| 908 | atydodkc | female |   4 |    27 |
+-----+----------+--------+-----+-------+

上面使用了一个简单的select子查询,我们还可以使用联结达到同样的效果:

SELECT a.id, a.name, a.sex, a.age, a.score
FROM students as a, students as b
WHERE a.score = b.score
AND b.name = 'jyjxycgw';

输出完全相同。

与其等价的join语法:

SELECT a.id, a.name, a.sex, a.age, a.score
FROM students as a JOIN students as b
on a.score = b.score
AND b.name = 'jyjxycgw';

2、自然联结

无论何时对表进行联结,应该至少有一个列出现在不止一个表中(被联结的列)。这样在使用标准联结(前面提到的内部联结)的时候,重复的列会不止出现一次。

而所谓自然联结是排除了那些重复的列,使得重复的列只出现一次的联结。

系统没有这样的功能,需要我们自己指定,方法是指定从各个表中指定要select的列。

这不是废话吗?

3、外部联结

许多联结将一个表中的行与另一各表中的行相关联。但有时候需要包含没有关联行的那些行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值