表的内连接

内连接是利用where子句对两种表形成的笛卡尔积进行筛选。

select 字段 from1 inner join2 on 连接条件 and 其他条件;

inner可以省略
and可以换成where

例:显示SMITH的名字和部门名称
emp表:
表的内连接和外链接(左连接和右连接)
dept表:
表的内连接和外链接(左连接和右连接)

select ename,dname from emp,dept where emp.deptno=dept.deptno and ename ='SMITH';

select ename,dname from emp inner join  dept on emp.deptno=dept.deptno and ename ='SMITH';

select ename,dname from emp inner join  dept on emp.deptno=dept.deptno where ename ='SMITH';

select ename,dname from emp  join  dept on emp.deptno=dept.deptno where ename ='SMITH';

表的内连接和外链接(左连接和右连接)

外连接

左连接

左连接是把左边的表数据全部显示,而右边表数据会进行筛选。

当左边表和右边表没有匹配时,也会显示左边表的数据
select 字段名 from 表名1 left join 表名2 on 连接条件

首先建两张表person和hobby,对应的是个人喜欢的东西

mysql> create table person(
    -> id int,
    -> name varchar(11),
    -> sex varchar(3));

mysql> create table hobby(
    -> id int,
    -> favour varchar(10));
   
给person插入数据   
mysql> insert into person values(1,'pick','男'),(2,'sopha','女'),(3,'alice','女');

给hobby插入数据
mysql> insert into hobby values(1,'vollable'),(2,'run'),(24,'swing');

查询所有人的爱好,如果这个人没有爱好,也要将他个人信息显示出来:

//利用左连接
mysql> select * from person left join hobby on person.id=hobby.id;

表的内连接和外链接(左连接和右连接)

右连接

将右边表信息全部显示出来,左边表数据会进行筛选

select 字段 from 表名1 right join 表名2 on 连接条件;

查询有爱好的人信息:

mysql> select * from person right join hobby on person.id=hobby.id;

表的内连接和外链接(左连接和右连接)

相关文章: