-
mysql> select * from stu;
-
+------+--------+---------+
-
| sid | sname | sphonum |
-
+------+--------+---------+
-
| 1 | 张三 | 110 |
-
| 2 | 李四 | 120 |
-
| 3 | 王五 | 130 |
-
+------+--------+---------+
-
rows in set (0.00 sec)
-
-
mysql> select * from tea;
-
+------+-----------+---------+
-
| tid | tname | tphonum |
-
+------+-----------+---------+
-
| 1113 | 相老师 | 1111 |
-
| 1114 | 冯老师 | 1112 |
-
+------+-----------+---------+
-
rows in set (0.00 sec)
-
-
mysql> select * from course;
-
+------+--------+
-
| cid | cname |
-
+------+--------+
-
| 1 | linux |
-
| 2 | mysql |
-
| 3 | hadoop |
-
+------+--------+
-
rows in set (0.00 sec)
-
-
mysql> select * from xuanke;
-
+------+------+------+--------+
-
| sid | tid | cid | xuefen |
-
+------+------+------+--------+
-
| 1 | 1113 | 2 | 2 |
-
| 1 | 1114 | 1 | 4 |
-
| 1 | 1113 | 3 | 6 |
-
| 2 | 1113 | 2 | 2 |
-
| 2 | 1114 | 1 | 2 |
-
| 2 | 1113 | 3 | 2 |
-
+------+------+------+--------+
-
rows in set (0.00 sec)
1、内连接inner join
只返回两张表中所有满足连接条件的行,即使用比较运算符根据每个表中共有的列的值匹配两个表中的行。(inner关键字是可省略的)
①传统的连接写法:
在FROM子句中列出所有要连接的表的名字(进行表别名),以逗号分隔;
连接条件写在WHERE子句中;
注意:一旦给表定义了别名,那么原始的表名就不能在出现在该语句的其它子句中
mysql> select s.sname,c.cname,t.tname,x.xuefen
-> from stu s,tea t,course c,xuanke x
-> where s.sid=x.sid and t.tid=x.tid and c.cid=x.cid;
+--------+--------+-----------+--------+
| sname | cname | tname | xuefen |
+--------+--------+-----------+--------+
| 张三 | linux | 冯老师 | 4 |
| 李四 | linux | 冯老师 | 2 |
| 张三 | mysql | 相老师 | 2 |
| 李四 | mysql | 相老师 | 2 |
| 张三 | hadoop | 相老师 | 6 |
| 李四 | hadoop | 相老师 | 2 |
+--------+--------+-----------+--------+
rows in set (0.08 sec)
2、外连接outer join
使用外连接不但返回符合连接和查询条件的数据行,还返回不符合条件的一些行。
在MySQL数据库中外连接分两类(不支持全外连接):
左外连接、右外连接。(outer关键字可省略)。
共同点:都返回符合连接条件和查询条件(即:内连接)的数据行
不同点:
①左外连接还返回左表中不符合连接条件,但符合查询条件的数据行。(所谓左表,就是写在left join关键字左边的表)
②右外连接还返回右表中不符合连接条件,但符合查询条件的数据行。(所谓右表,就是写在right join关键字右边的表
https://www.cnblogs.com/geaozhang/p/6753190.html
阅读(1248) | 评论(0) | 转发(0) |