标签:
name:scott
password:12~y
数据插入:
insert into emp(empno,ename) values(1212,‘xiao_ming‘);
数据库的查询语言
select e.ename,e.sal,s.grade from
ename e join salgrade s
on e.sal between s.losal and s.hisal;
select e.ename,e.sal,d.deptno from
ename e join demp d
on e.deptno=d.deptno
and e.job=‘MANAGER‘;
自关联=“表的外键是参照自己的主键”//mgr表示上级
select worker.ename,manager.ename
from emp worker join emp manager
on worker.mgr=manager.empno;
//manager.empno表示表主键
内连接(忽略空值):等值连接/非等值连接(between 低值and 高值)/自连接
外连接:
select t1.c1,t1.c2,t2.c1,t2.c2
from t1 [ left | right | full outer join ] join t2
on t1.c1=t2.c2;
如:
select e.ename,d.dname
from emp e left outer join dept d
on e.deptno=d.deptno;
在外连接中,驱动表和匹配表位置不可换。调换位置查询结果不同
t1 left outer join t2 表示t1为驱动表t2表示匹配表
t1 right outer join t2 表示t2为驱动表t1表示匹配表
t1 full outer join t2 表示全外连接 所以无所谓匹配表和驱动表;结果都一样。结果=left外连接中+
right外连接-内连接;
如图:表示全外连接
外连接中的自连接
select worker.ename,manager.ename
from emp worker left outer join emp manager
on worker.mgr=manager.empno;
select worker.ename,manager.ename
from emp worker right outer join emp manager
on worker.mgr=manager.empno
where worker.empno is null;
组函数:max/min/avg/sum/count;组函数忽略空值
如:
select count(*) from emp;
select sum(sal) from emp;
select avg(sal) from emp;
select max(sal) from emp;
select min(sal) from emp;
sum 与avg只对数值操作
count()自动忽略空值
select avg(nvl(comm,0)) from emp;求平均值
计算员工分布在几个部门
select count(distinct deptno)from emp;
group by 表示分组
select deptno,sum(sal) from emp group by deptno;
select deptno,sum(sal) from emp
group by deptno/*表示按什么列分组*/
order by deptno;/*表示按什么列排序*/
select job ,avg(sal) from emp
group by job;
select job ,sum(sal) from emp;
select job ,sum(sal) from emp
group by job;
标签:
原文地址:http://www.cnblogs.com/wangshuile/p/5595483.html