oracle数据库实训(1)⽤的是11g版本
--解锁
alter user scott account unlock
--设置密码
alter user scott identified by tiger
--授权
grant DBA to scott
⽤scott⽤户登录,利⽤已有的表进⾏实验
查询语句:
oracle四舍五入
1.员⼯的实发⼯资
--nvl(x,y) if x == null 则返回y
-
-nvl(null,0)
ame,nvl(e.sal,0)+nvl(em,0) as 实发⼯资 from emp e;
2.实发⼯资⼤于3000
ame, e.job from emp e
where nvl(e.sal,0)+nvl(em,0) > 3000;
tip:
--nvl(x,y) if x == null 则返回y
--nvl(null,0)
--round(x,n) x保留n位⼩数 四舍五⼊
--trunc(x,n) x保留n位⼩数 只舍
--ceil(x) 返回⼤于或等于x的最⼤整数
-
-floor(x) 返回等于或⼩于x的最⼤整数
3.⼯资⼤于等于1500⼩于等于3000的雇员全部信息
--1
select * from emp e
where e.sal+nvl(em,0) >= 1500 and e.sal+nvl(em,0) <= 3000;
--2
select * from emp e
where e.sal+nvl(em,0) between 1500 and 3000;
4.查询员⼯编号、员⼯姓名以及员⼯的⽇基本⼯资、⽉基本⼯资、年基本⼯资
pno, e.ename,
e.sal*12 as 年基本⼯资, e.sal as ⽉基本⼯资, round(e.sal/30,2) as ⽇基本⼯资, '¥' as 货币
from emp e;
5.把员⼯编号和员⼯姓名连接作为员⼯信息
select '雇员编号:' || e.empno || '雇员姓名:' || e.ename as 雇员信息 from emp e;
tip:Oracle 数据库⽤  ||  作为连接符
6.查询所有领取佣⾦的员⼯的完整信息
select * from emp e
where em is not null;
7.查询雇员编号是7369、7788、7566的员⼯的完整信息
--1
select * from emp e
pno = 7369 pno = 7788 pno = 7566;
-
-2
select * from emp e
pno in (7369,7788,7566);
8.--查询雇员编号是7369、7788、7566之外的的员⼯的完整信息
--1
select * from emp e
pno not in (7369,7788,7566);
--2
select * from emp e
where not (e.empno = 7369 pno = 7788 pno = 7566);
9.查询出姓名以S开头的所有员⼯信息
select * from emp e
ame like 'S%';
tip:like 模糊查询
%  匹配任意个任意字符
_  匹配⼀个任意字符
10.查询出姓名以S结尾的所有员⼯信息
select * from emp e
ame like '%S';
11.查询出姓名中第⼆个字符是m的所有员⼯信息
select * from emp e
ame like '_M%';
12.查询出姓名中有L的所有员⼯信息
select * from emp e
ame like '%L%';
13.查询⼯资⼤于1200的员⼯姓名和基本⼯资
ame, e.sal from emp e
where e.sal+nvl(em,0) > 1200;
14.查询员⼯号为7934的员⼯的姓名和部门号
ame, e.deptno from emp e
pno = 7934;
15.选择⼯资不在5000到12000的员⼯的姓名和⼯资
ame, e.sal from emp e
where e.sa+nvl(em,0)l < 5000 or
e.sal+nvl(em,0) > 12000;
16. 选择雇⽤时间在1981-02-01到1981-05-01之间的员⼯姓名,职位(job)和雇⽤时间,按从早到晚排序.
ame, e.job, e.hiredate from emp e
where e.hiredate between
To_Date('1981-02-01','yyyy-mm-dd')
and To_Date('1981-05-01','yyyy-mm-dd')
order by e.hiredate asc;
ame, e.job, e.hiredate from emp e
where to_char(e.hiredate,'yyyy-mm-dd') between '1981-02-01' and '1981-05-01'
order by e.hiredate asc;
tip:
to_date('x','b') x是要进⾏转化的字符串 b是要转换的格式
to_char(x,'b') x是date类型的⽇期 b是要转换的格式
b的格式: y表⽰年  y表⽰年的最后⼀位 yy表⽰年的最后两位 以此类推
mm表⽰⽉
dd表⽰⽉的第⼏天 ddd表⽰年的第⼏天 dy表⽰周的第⼏天
17.选择在20或10号部门⼯作的员⼯姓名和部门号
ame, e.deptno from emp e
where e.deptno in(10,20);
18.选择公司中没有管理者的员⼯姓名及job
ame, e.job from emp e
is null;
19.选择公司中有奖⾦ (COMM不为空,且不为0) 的员⼯姓名,⼯资和奖⾦⽐例,按⼯资逆排序,奖⾦⽐例逆排序.
ame, e.sal, em from emp e
where em is not null and em != 0
order by e.sal desc, em desc;
tip:
多个排序⽤逗号分隔
排序中列名可⽤as指定的别名排序默认升序

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。