您的位置:首页 > 数据库 > Oracle

oracle—day02

2012-10-16 14:01 120 查看
oracle two

Data Definition Language 数据定义语言:

create / drop / alter修改/ truncate截取。 对数据结构起作用。

Data Manipulation Language 数据操纵语言;

insert / update/ delete 对数据起作用。

Data Query Language 数据查询语言;

select /

事物控制语句;

commit; 确定提交。(对DML有效) rollback 回滚,回退到某时间点,该时间内操作全部取消。

一‘单表查询语句;

1.计算金额的四舍五入。(round四舍五入 trunc截取)

select ename,salary *0.1234567 s1,round(salary*0.1234567, 2)s2 from employee_m;

select ename,salary *0.1234567 s1,round(salary*0.1234567, 2)s2, round (salary*0.1234567,0 )s3 --零位小数 from employee_m;

select ename,salary *0.1234567 s1,round(salary*0.1234567, 2)s2, --2位小数 round (salary*0.1234567,0 )s3, --零位小数 trunc(salary*0.1234567,2)s4 --截取2位小数 from employee_m;

2, 系统时间; select SYSDATE from employee_m; --默认格式: DD-MON-RR 日期格式: DD-MON-RR

当前年: 2011 YY RR 99 2099 1999 05 2005 2005

当前年: 1998 99 1999 1999 05 1905 2005

select to_char(sysdate ,'yyyy-mm-dd hh24:mi:ss day am')from employee_m;

三天以前的时间

select sysdate - 3 from dual;

7天以后的 日期;

select sysdate+7from dual;

insert into employee_m(empno,ename,hiredate)values(1015,'amy','sysdate');

insert into employee_m(empno,ename,hiredate)values(1016,'amy2','10-OCT-11');

--实际入职时间

insert into employee_m(empno, ename, hiredate) values(5568, 'peter', to_date('12/31/2010','mm/dd/yyyy') );

显示员工姓名和入职时间,时间格式为: amy 2011-10-10;

select ename, to_char(hiredate,'yyyy-mm-dd') from employee_m;

set pagesize 50 --设置为50条数据。才换行显示,

3 计算机员工一共入职多少时间;

select ename,(sysdate-hiredate) days from employee_m;

6 根据员工职位加薪; Analyst;10% programmer:5% clerk : 2%; 其他不变;

select ename,salary,job, case job when 'analyst' then salary *1.1 when 'programmer' then salary *1.05 when 'clerk' then salary *1.02 else salary end new_salary from employee_m;

--等价于; decode select ename,salary,job, decode (job, 'analyst', salary *1.1, 'programmer', salary *1.05, 'clerk', salary *1.02, salary )new_salary from employee_m;

7 根据员工薪水, 由低到高排;( null 默认视为最大)

select ename,salary from employee_m order by salary;

由高到低排序;最尾巴 加 desc 倒序!

select ename,salary from employee_m order by salary desc;

8 由时间早晚排序

select ename,hiredate from employee_m order by hiredate;

select ename,hiredate from employee_m order by hiredate desc;

9 按照部门排序 然后由部分薪水高低排序

select ename,deptno,salary from employee_m order by deptno,salary desc;

--反之; select ename,deptno,salary from employee_m order by deptno desc ,salary desc ;

10 查看员工表,一共有多少条记录;

select count(*) from employee_m;

11 查看数据库一共有多少表

select *from user_tables;

12 查看数据库一共有多少emp表

select count(*)from user_tables where table_name like '%EMP%';

-- 大写 select count(*)from user_tables where table_name like '%MAJINYUN%';

13 入职时间不是null的数据总数

count select count(hiredate)from employee_m;

14 计算员工平均薪水,和薪水总和是多少

select avg (salary) avg_sal,

-- avg 平均

sum (salary) sum_sal from employee_m; --被评均 --判断逻辑上错误

--纠正 select sum (salary)/count(*) avg_sal, sum(salary) sum_sal from employee_m;

--+ select avg (nvl(salary,0)) avg_sal, sum(salary) sum_sal from employee_m;

15 计算机 员工最高 和最低薪水

select max (salary) max_sal, min (salary) min_sal from employee_m;

16 计算机员工最早。和最晚的入职时间;

select min(hiredate) min_hir, max(hiredate) max_hir from employee_m;

select ename,hiredate from employee_m order by hiredate;

17. 计算机每个部门,最高和最低薪水,分别是多少。

select deptno, max (salary) max_s, min (salary) min_s from employee_m group by deptno;

18 计算每个部门的 薪水总和 和 平均薪水;

select deptno, sum(salary) s_s, avg(salary) a_s from employee_m group by deptno;

19 每个部门的统计信息 格式;

select deptno,max(salary) max_s, min(salary) min_s, sum(salary) sum_s, avg(nvl(salary,0)) avg_s, count(*)emp_num from employee_m group by deptno;

20 按照职位分组

select job,max(salary) max_s, min(salary) min_s, sum(salary) sum_s, avg(nvl(salary,0)) avg_s, count(*)emp_num from employee_m group by job;

21平均薪水大于7500的部门

select deptno, avg (nvl(salary,0))avg_s from employee_m where deptno is not null group by deptno having avg(nvl(salary,0))>7500;

22 那些职位人数小于于3个人 select job, count(*)employee_m from employee_m where job is not null group by job having count(*) < 3 order by employee_m; 排列顺序按照这个规则

23 求 最高薪的人是谁

select max(salary) from employee_m; select ename from employee_m--主查询

where salary =(select max(salary)from employee_m);--子查询

select salary,job,ename from employee_m --主查询 where salary =(select max(salary)from employee_m);--子查询

24 修改 参数;

update employee_m set salary =4000 where ename='yuyu';

25 取模mod 取出工资 。除以1000 的结果 select mod (salary,1000) from employee_m;

goole 关键字 OCP ocjp 模拟题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: