select * from emp;
select * from dept;
select * from emp_grade;
--连接
select * from emp,dept,emp_grade where emp.deptno=dept.deptno(+) and emp.grade_id=emp_grade.id(+);
select * from emp left join dept on emp.deptno=dept.deptno
right join emp_grade on emp.grade_id=emp_grade.id
--笛卡尔成绩
select * from emp,dept order by empno;
--等值连接
select * from emp,dept where emp.deptno=dept.deptno;
--左连接 右连接(显示主表的所有信息) (+)在哪侧的表是匹配表
--(+)操作符只能用于实现左外连接和右外连接,而不能用于实现完全外连接。
--显示所有员工的部门信息
select * from emp,dept where emp.deptno=dept.deptno(+);
--显示所有部门的员工信息
select * from dept,emp where emp.deptno(+)=dept.deptno;
--左外连接(左边的表不加限制)
--右外连接(右边的表不加限制)
--全外连接(左右两表都不加限制)
-- 左外连接( tb1 LEFT OUTER JOIN/ LEFT JOIN tal2 on tbl1.id=tabl2.id)
--右外连接( tb1 RIGHT OUTER JOIN/RIGHT JOIN tal2 on tbl1.id=tabl2.id)
--全外连接(tb1 FULL OUTER JOIN/FULL JOIN tal2 on tbl1.id=tabl2.id)
--左外连接
select * from emp left join dept on emp.deptno=dept.deptno;
--右外连接
select * from emp right join dept on emp.deptno=dept.deptno;
-- 全连接
select * from emp full join dept on emp.deptno=dept.deptno;
--子查询 (单行子查询 多行子查询) in()
-- 只要出现聚合函数,除聚合函数外还有其他列的时候,其他列必须放在group by
--聚合函数max() min() sum() avg()对列 count()行记录数统计
-- group by 先进行分组,再进行统计
-- 单行子查询 > < =(单个值)
--查询薪资最低的员工信息
select * from emp where sal=(select min(sal) from emp)
--查询工资高于部门20中所有员工的雇员信息。
select * from emp where sal>(select max(sal) from emp where deptno=20)
select * from emp where sal>all(select sal from emp where deptno=20)
--in all 多行子查询
select * from emp where sal in(select sal from emp where deptno=20)
-- 多列子查询
--查询各部门中工资最低的雇员信息。
select * from emp,(select deptno,min(sal) min_sal from emp group by deptno)e
where emp.deptno=e.deptno and emp.sal=e.min_sal;
select * from emp where (deptno,sal) in(select deptno,min(sal) min_sal from emp group by deptno)
-- 表自连接
select * from stu_grade;
--即参加计算机又参加英语考试的学生信息
select * from stu_grade A,stu_grade B where A.Id=B.id and A.COURSE_NAME='计算机' and B.Course_Name='英语'
select * from dept;
select * from emp_grade;
--连接
select * from emp,dept,emp_grade where emp.deptno=dept.deptno(+) and emp.grade_id=emp_grade.id(+);
select * from emp left join dept on emp.deptno=dept.deptno
right join emp_grade on emp.grade_id=emp_grade.id
--笛卡尔成绩
select * from emp,dept order by empno;
--等值连接
select * from emp,dept where emp.deptno=dept.deptno;
--左连接 右连接(显示主表的所有信息) (+)在哪侧的表是匹配表
--(+)操作符只能用于实现左外连接和右外连接,而不能用于实现完全外连接。
--显示所有员工的部门信息
select * from emp,dept where emp.deptno=dept.deptno(+);
--显示所有部门的员工信息
select * from dept,emp where emp.deptno(+)=dept.deptno;
--左外连接(左边的表不加限制)
--右外连接(右边的表不加限制)
--全外连接(左右两表都不加限制)
-- 左外连接( tb1 LEFT OUTER JOIN/ LEFT JOIN tal2 on tbl1.id=tabl2.id)
--右外连接( tb1 RIGHT OUTER JOIN/RIGHT JOIN tal2 on tbl1.id=tabl2.id)
--全外连接(tb1 FULL OUTER JOIN/FULL JOIN tal2 on tbl1.id=tabl2.id)
--左外连接
select * from emp left join dept on emp.deptno=dept.deptno;
--右外连接
select * from emp right join dept on emp.deptno=dept.deptno;
-- 全连接
select * from emp full join dept on emp.deptno=dept.deptno;
--子查询 (单行子查询 多行子查询) in()
-- 只要出现聚合函数,除聚合函数外还有其他列的时候,其他列必须放在group by
--聚合函数max() min() sum() avg()对列 count()行记录数统计
-- group by 先进行分组,再进行统计
-- 单行子查询 > < =(单个值)
--查询薪资最低的员工信息
select * from emp where sal=(select min(sal) from emp)
--查询工资高于部门20中所有员工的雇员信息。
select * from emp where sal>(select max(sal) from emp where deptno=20)
select * from emp where sal>all(select sal from emp where deptno=20)
--in all 多行子查询
select * from emp where sal in(select sal from emp where deptno=20)
-- 多列子查询
--查询各部门中工资最低的雇员信息。
select * from emp,(select deptno,min(sal) min_sal from emp group by deptno)e
where emp.deptno=e.deptno and emp.sal=e.min_sal;
select * from emp where (deptno,sal) in(select deptno,min(sal) min_sal from emp group by deptno)
-- 表自连接
select * from stu_grade;
--即参加计算机又参加英语考试的学生信息
select * from stu_grade A,stu_grade B where A.Id=B.id and A.COURSE_NAME='计算机' and B.Course_Name='英语'