# 内连接不区分主从表# 如果不使用where :A表中的每个数据都会匹配B中的数据,一共会出现A*B行数据;# 因为from是最先执行的,如果起了别名,以后都只能使用别名,类推order by的别名是最后的所以前面不用使用别名"查询两个表中的数据,数据互相有关系":使用where给定连接条件:两表的重叠部分
select name,boyName
from 表A AS A,表B AS B
where A.boyid = B.id;# 这是连接俩表的条件,必须要有联系
结果
name boyname
周芷若 张无忌
小昭 张无忌
赵敏 张无忌
热巴 鹿晗
Angelababy 黄晓明
非等值连接:
“查询工资级别为A级别的员工信息”:
"查询工资级别为A级别的员工信息":
select 员工信息
from A,B
where A.工资 between B.最底工资 and B.最高工资
and B.工资级别 ='A';
表B:
工资级别 最低工资 最高工资
A 10002000
B 20003000# 1.A中有数据对应着B中的数据,等值# 2.A中有数据与B中的数据有一定的条件关系,非等值
自连接:一张表多次使用,自己连自己
"查询员工id对应的上级id":上级也是员工
select A.员工id,A.上级员工id
from 表 as A;# 现在就是只有name和上级id的一个新的表"接着查询上级id对应的名字":A,B都是同一个表,使用两次,被当做了两个表
select A.员工id,A.上级员工id,B.员工id,B.name
from 表 as A,表 as B;where A.上级员工id = B.员工id;
表:
员工id name 上级员工id
100 K_ing null101 罗德是神 100102 De Haan 100103 Hunold 102104 Ernst 103105 Austin 103
如:
员工id=101的上级员工id=100
上级员工id=100,他的名字是K_ing
先找id是101的员工,10的员工的上级员工id是100,找到对应的员工id是9的员工,对应的名字是什么;