雇员表(EMP)
No.字段类型描述
1EMPNONUMBER(4)雇员编号,唯一2EMPNAMEVARCHAR2(10)表示雇员姓名3JOBVARCHAR2(9)表示工作职位4MGRNUMBER(4)雇员的领导名称5HIREDATEDATE表示雇佣日期6SALNUMBER(7,2)表示月薪、工资7COMMNUMBER(7,2)表示奖金8DEPNONUMBER(2)部门编号
奖金表(BONUS)
No.字段类型描述
1EMPNONUMBER(4)雇员编号,唯一2EMPNAMEVARCHAR2(10)雇员姓名3JOBVARCHAR2(9)雇员工作4SALNUMBER雇员工资5COMMNUMBER雇员奖金
列出了表emp中所有数据
select * from emp;
取出表emp中job列所有数据
select job from emp;
取出表emp中job列不同的数据,也就是相同的数据只留一个
select distinct job from emp;
显示sal大于2000的人员信息
select * from emp where sal > 2000;
sal大于3000或sal在1000和2000之间的人员名称
select ename from emp where sal > 3000 or (sal > 1000 and sal < 2000);
这是列出job是CLERK的人员信息
select * from emp where job in 'CLERK';
列出job是CLERK和ANALYST的人员信息
select * from emp where job in ('CLERK','ANALYST');
列出日期在这个范围的人员
select * from emp where hiredate between '20-2月-81' and '03-12月-81';
列出job名带AN的job
select distinct job from emp where job like '%AN%';
从小到大排列sal
select sal from emp order by sal asc;
按sal排,如果相同再按hiredate从大到小排
select sal, hiredate from emp order by sal asc, hiredate desc;
加上where条件
select ename,job,sal from emp where sal > 2000 order by sal asc;
函数:AVG (平均)、COUNT (计数)、MAX (最大值)、MIN (最小值)、SUM (总合)
求所有sal的和
select sum(sal) from emp;
求有多少个人
select count(ename) from emp;
求有多少种job,这就要去掉重复的job项
select count(distinct job) from emp;
多少人有comm奖金
select count(ename) from emp where comm is not null;
给函数设定条件用having,岗位sal和大于5000的岗位
select job,sum(sal) from emp group by job having sum(sal) > 5000;
起别名,先给sum(sal)起名为SUM,别名的本身名中间一个空格
select sum(sal) "SUM" from emp;
给表也起个别名
select t.job "JOBS", sum(sal) "SUM" from emp t group by job;
把不同栏的内容连在一起,在Oracle中可以用concat也可以用||,不过concat最多两个元素,||可以多个
select concat(empno, empname) from emp;
select empno || empname "newname" from emp;
select empno || '-' || empname from emp; //中间有-分隔
取某个栏信息的一段字符串,substr
select substr(empname,3,2) from emp;
去掉开头或结尾的某个字符,一般就是空格。
select ltrim(job) from emp;
select rtrim(job) from emp;