SQL语言

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;

 

posted on 2016-06-18 00:18  请叫我巴依老爷  阅读(221)  评论(0)    收藏  举报