#emp (empno, ename,job,mgr,hiredate,scal,comm,deptno) 注释#dept (deptno,dname,loc)/* salgrade(grade int , -- 注释
losal int,
hisal int); */-- 左连接-- 实际生活中的正常连接方式
select * from emp right join dept on emp.deptno = dept.deptno;-- 右连接
select * from emp left join dept on emp.deptno = dept.deptno;-- 内连接
select * from emp inner join dept on emp.deptno = dept.deptno ;-- 特殊的连接情况 自连接 inner join 有时也可以只写join 作用:一表多用 as 起别名
#方式一 一表中的某个字段连接
# 将相同的数据表进行重命名,选取经理的姓名 与职员相同的 e1.mgr=e2.empno
select e1.ename 经理 ,e1.ename 职员 from emp e1, emp e2 where e1.mgr = e2.empno ;
#方式二 自己与自己连接 自连接
select e1.ename 经理 ,e2.ename 职员 from emp e1 inner join emp e2 where e1.mgr =e2.empno;-- 交叉连接 cross join
# 来统计部门表与员工表连接后的所有行数
select count(*) from dept cross join emp;
例题:--3、查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息
select s.*,s1.c_id ,s2.c_id from student s
join score s1 on s1.s_id=s.s_id and s1.c_id ='01' #学生信息表内连接成绩表,选取课程编号为01的学生信息
join score s2 on s2.s_id=s.s_id and s2.c_id ='02'; # 再内连接成绩表,选取课程号为02的学生信息
#达到了学过课程编号为01且学过课程编号为02的学生信息
a连接b,b连接c,c连接d的形式
desc student; #s_id
desc score ; #s_id c_id
desc course; #c_id t_id
desc teacher; #t_id t_name
-- 查询学过"张三"老师授课的同学的信息
select s.* from student s
left join score sc on s.s_id=sc.s_id
left join course c on sc.c_id=c.c_id
left join teacher t on c.t_id=t.t_id
where t_name='张三';