sql连接查询

按功能分类:

内连接:

        等值连接、非等值连接、自连接

外连接:

        左外链接、左链接

        右外链接、右链接

        完全外链接

全连接

交叉连接

 

 

按年代分类

sql 92标准,又称sql2

sql 99标准【推荐】,又称sql3

交叉连接

--笛卡尔积(将两张表的数据拼接在一起,总记录数为两张表记录量的乘积 ( 表*表 )

select * from a,b;

内连接 INNER JOIN

等值连接

#92语法(查询A表人对应的妻子)
select * from a,b where a.wife = b.id;
#99语法
select * from a inner join b on a.wife = b.id;

 

 

非等值连接

#查询每个员工对应的工资等级
select e.ename, s.grade 
	from emp e 
inner join salgrade s
      on e.sal between s.losal and s.hisal;

 

 

自连接

#查询每个人的领导(一张员工表领导也是这个公司的员工)
select e1.ename,'上司是',e2.ename
	from emp e1
inner join emp e2
	on e1.mgr = e2.empno;

 

外连接:

左连接LEFT JOIN

select * from a left join b on a.wife = b.id;

 

右连接RIGHT JOIN

select * from a right join b on a.wife = b.id;

 

左外链接

select * from a left join b on a.wife = b.id where b.id is null;

 

 

右外链接

select * from a right join b on a.wife = b.id where a.id is null;

 

 

完全外链接

mysql不支持full join

select * from a left join b 
	on a.wife = b.id where b.id is null
	union all               #union all是将两个select语句的结果求并集
select * from a right join b 
	on a.wife = b.id where a.wife is null;

 

全连接

除了显示满足连接的条件的行外,还显示了join两侧表中所有满足检索条件的行

select * from a left join b 
	on a.wife = b.id
	union all
select * from a right join b 
	on a.wife = b.id;

 

 另附数据表

CREATE TABLE EMP
       (EMPNO int(4)  not null ,
	ENAME VARCHAR(10),
	JOB VARCHAR(9),
	MGR INT(4),
	HIREDATE DATE  DEFAULT NULL,
	SAL DOUBLE(7,2),
	COMM DOUBLE(7,2),
	primary key (EMPNO),
	DEPTNO INT(2) 
	)
	;

CREATE TABLE SALGRADE
      ( GRADE INT,
	LOSAL INT,
	HISAL INT );
#自行加数据
INSERT INTO DEPT ( DEPTNO, DNAME, LOC ) VALUES ( 
10, 'ACCOUNTING', 'NEW YORK'); 

INSERT INTO EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,
DEPTNO ) VALUES ( 
7369, 'SMITH', 'CLERK', 7902,  '1980-12-17'
, 800, NULL, 20);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值