SQL联结 - 内联结

阅读:445

上节我们讲到联结表,本节开始讲解SQL内联结。

1. 给字段和表取别名

当字段名和表名遇到如下情况时,我们需要给表或字段取别名(alias):

  • 命名不规范
  • 名字太长
  • 重名

 

使用AS关键字给他们取别名,当然AS关键字可以省略,但是一般不建议省略,这个是SQL规范。实际SQL书写中,字段后的AS关键字我们一般不省略,表后面的关键字一般省略。

比如如下SQL:

SELECT title AS t, name AS n FROM t_course c, t_category tc WHERE c.categ
ory_id = tc.id;

 

2. 内联结

内联结(INNER JOIN),也叫做等值联结。联结条件用ON子句,不是用WHERE子句。INNER关键字可以省略。

我们现在通过内联结,查询出课程名称和该课程所属分类的名称。SQL如下:

SELECT title, name FROM t_course c INNER JOIN t_category tc ON c.category_id = tc.id;

输出结果如下:

+-------------------------------------------------+-----------+
| title                                           | name      |
+-------------------------------------------------+-----------+
| Java教程:核心技术一网打尽                      | 后端      |
| Java面试教程                                    | 后端      |
| redis基础教程                                   | 中间件    |
| 深入理解MySQL底层原理                           | 中间件    |
| kafka教程                                       | 中间件    |
| Spring Cloud基础教程                            | 后端      |
| 架构师教程                                      | 架构      |
| git教程                                         | 后端      |
| 深入剖析Java虚拟机                              | 后端      |
| SQL教程                                         | 中间件    |
| 设计模式:GOF的23种设计模式全剖析               | 后端      |
| HTML教程                                        | 前端      |
| HTML5教程                                       | 前端      |
| CSS教程                                         | 前端      |
| JavaScript教程                                  | 前端      |
| HTTP协议                                        | 前端      |
| Tomcat教程                                      | 中间件    |
| Servlet教程                                     | 后端      |
| Jsp教程                                         | 前端      |
| Ajax教程                                        | 前端      |
| JQuery教程                                      | 前端      |
| Maven教程                                       | 后端      |
| Linux教程                                       | 后端      |
| JDBC教程                                        | 后端      |
| Spring教程                                      | 后端      |
| Spring MVC教程                                  | 后端      |
| Spring boot教程                                 | 后端      |
| MyBatis教程                                     | 后端      |
| ActiveMQ教程                                    | 中间件    |
| ZooKeeper教程                                   | 中间件    |
| dubbo教程                                       | 中间件    |
+-------------------------------------------------+-----------+
31 rows in set (0.00 sec)

 

这里注意,内联结是把符合ON条件的输出,不符合不输出。

 

总结:

  • 内联结是把符合ON子句的数据输出。
  • 表名和字段名在需要时都可以取别名。

赞赏支持


精彩留言

发表评论