网站如何做线上支付功能,微信浏览为网站的缓存怎么清理,深圳网站建设评价,网页设计模板素材简单文章目录 一. 内连接二. 外连接1. 左外连接2. 右外连接 一. 内连接
利用where子句对两种表形成的笛卡尔积进行筛选#xff0c;其实就是内连接的一种方式 另一种方式是inner join
select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件现在有如下表
mysql desc… 文章目录 一. 内连接二. 外连接1. 左外连接2. 右外连接 一. 内连接
利用where子句对两种表形成的笛卡尔积进行筛选其实就是内连接的一种方式 另一种方式是inner join
select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件现在有如下表
mysql desc emp;
---------------------------------------------------------------
| Field | Type | Null | Key | Default | Extra |
---------------------------------------------------------------
| empno | int(6) unsigned zerofill | NO | | NULL | |
| ename | varchar(10) | YES | | NULL | |
| job | varchar(9) | YES | | NULL | |
| mgr | int(4) unsigned zerofill | YES | | NULL | |
| hiredate | datetime | YES | | NULL | |
| sal | decimal(7,2) | YES | | NULL | |
| comm | decimal(7,2) | YES | | NULL | |
| deptno | int(2) unsigned zerofill | YES | | NULL | |
---------------------------------------------------------------mysql desc dept;
-------------------------------------------------------------
| Field | Type | Null | Key | Default | Extra |
-------------------------------------------------------------
| deptno | int(2) unsigned zerofill | NO | | NULL | |
| dname | varchar(14) | YES | | NULL | |
| loc | varchar(13) | YES | | NULL | |
-------------------------------------------------------------使用内连接查询方式显示员工名为SMITH的名字和部门名称
因为员工名在emp表中但部门名称在dept表中所以需要对两个表进行笛卡尔积也就是内连接
mysql-select ename,dname from emp,dept where emp.deptnodept.deptno and enameSMITHmysql-select ename,dname from emp inner join dept on emp.deptnodept.deptno and enameSMITH二. 外连接
外连接分为左外连接和右外连接
1. 左外连接
如果联合查询左侧的表完全显示就是左外连接
select 字段 from 表1 left join 表2 on 连接条件现在有两张表
mysql select * from su; //学生表
------------
| id | name |
------------
| 1 | jack |
| 2 | tom |
| 3 | kity |
| 4 | nono |
------------mysql select * from exam; //成绩表
-------------
| id | grade |
-------------
| 1 | 56 |
| 2 | 76 |
| 11 | 8 |
-------------可以看到不是所有学生都有成绩也不是所有成绩都有对应的学生
查询所有学生的成绩如果这个学生没有成绩也要将学生的个人信息显示出来
mysql select * from su left join exam on su.idexam.id;
-------------------------
| id | name | id | grade |
-------------------------
| 1 | jack | 1 | 56 |
| 2 | tom | 2 | 76 |
| 3 | kity | NULL | NULL |
| 4 | nono | NULL | NULL |
-------------------------su是左表其信息会被完整显示出来此时如果右表没有数据则会使用默认值
2. 右外连接
如果联合查询右侧的表完全显示我们就说是右外连接
select 字段 from 表1 right join 表2 on 连接条件还是上述表
对su表和exam表联合查询把所有的成绩都显示出来即使这个成绩没有学生与它对应也要显示出来
mysql select * from su right join exam on su.idexam.id;
-------------------------
| id | name | id | grade |
-------------------------
| 1 | jack | 1 | 56 |
| 2 | tom | 2 | 76 |
| NULL | NULL | 11 | 8 |
-------------------------和左外连接大抵相同