select*from emp;
select*from dept;
select*from salgrade;
select*from bonus;
createtable emp(
empnonumber(4)primarykey,
enamevarchar2(10),
job varchar2(9),
mgr number(4),
hiredatedate,
sal number(7,2),
comm number(7,2),
deptnonumber(2)
);
insertinto emp values(0001,'Jany','Teacher',1006,to_date('2012-1-1 0:0:0','syyyy-mm-dd hh24:mi:ss'),3000,460,61);
insertinto emp values(0002,'张','Engi',1006,to_date('2012-1-1 0:0:0','syyyy-mm-dd hh24:mi:ss'),8000,15000,62);
insertinto emp values(0003,'方','Compu',1008,to_date('2014-1-1 0:0:0','syyyy-mm-dd hh24:mi:ss'),12000,6000,63);
insertinto emp values(0004,'Jonn','Bana',1009,to_date('2015-1-1 0:0:0','syyyy-mm-dd hh24:mi:ss'),50000,100,64);
insertinto emp values(0005,'Jack','Mana',1019,to_date('2017-1-1 0:0:0','syyyy-mm-dd hh24:mi:ss'),3100,null,64);
commit;
select*from emp;
createtable dept(deptno number(2)primarykey,dname varchar2(4),loc varchar2(3));
insertinto dept values(61,'csb','one');
insertinto dept values(62,'csb1','two');
insertinto dept values(63,'csb2','thr');
insertinto dept values(64,'csb3','fou');
commit;
select*from dept;
createtable salgrade(grade number,losal number,hisal number);
insertinto salgrade values(1,2700,6000);
insertinto salgrade values(2,6001,10000);
insertinto salgrade values(3,10001,20000000);
commit;
select*from salgrade;
createtable bonus(ename varchar2(10),job varchar2(9),sal number,comm number);
insertinto bonus values('Jany','Teacher',3000,460);
insertinto bonus values('张','Engi',8000,15000);
insertinto bonus values('方','Compu',12000,6000);
insertinto bonus values('Jonn','Bana',50000,100);
commit;
select*from bonus;
--高级排序
--1.随机返回5条记录
select*from(select ename,job from emp orderby dbms_random.value())whererownum<=5;
--2.排序
select*from emp orderby comm desc;
--3.查询跳过表中的偶数行
select ename from(select row_number()over(orderby ename) rn,ename from emp) x wheremod(rn,2)=1;
--4.查询最大值和最小值
select ename,sal,max(sal)over(),min(sal)over()from emp;
--5.连续求和
--sum(sal) over(order by ename)指的是连续求和,是以ename来排序的
select ename,sal,sum(sal)over(),sum(sal)over(orderby ename)from emp;
--6.分部门连续求和
select deptno,sal,sum(sal)over(partitionby deptno orderby ename)as s from emp;
--7.得到当前行上一行或者下一行的数据 3000上移无,sal 3100 上移-->aaa 3100,,sal.3000下移-->bbb.3000
select ename,sal,lead(sal)over(orderby sal) aaa,lag(sal)over(orderby sal) bbb from emp;
--8.根据子串分组
select to_char(hiredate,'yyyy'),avg(sal)from emp groupby to_char(hiredate,'yyyy');
--9.确定一年内的天数
select add_months(trunc(sysdate,'y'),12)-trunc(sysdate,'y')from dual;