oracle.docx
- 文档编号:5234023
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:25
- 大小:27.06KB
oracle.docx
《oracle.docx》由会员分享,可在线阅读,更多相关《oracle.docx(25页珍藏版)》请在冰豆网上搜索。
oracle
1.查询员工表中所有员工的信息。
2.查询员工表中员工的员工号、姓名、每个员工涨工资100元以后的年工资(按12个月计算)。
3.查询员工first_name和last_name,要求结果显示为“姓last_name名first_name”格式。
4.查询所有员工所从事的工作有哪些类型(要求去掉重复值)。
select*fromemployees;
selectemployee_id员工号,first_name姓名,(salary+100)*12工资fromemployees;
selectlast_name姓,first_name名fromemployees;
selectlast_name||first_name姓名fromemployees;
selectdistinctjob_id职位名fromemployees;
--1.查询last_name是Chen的员工的信息。
select*
fromemployees
wherelast_name='Chen';
--2.查询参加工作时间在1997-7-9之后,并且不从事IT_PROG工作的员工的信息。
select*
fromemployees
wherehire_date>'09-7月-97'andjob_id<>'IT_PROG';
--3.查询员工last_name的第三个字母是a的员工的信息。
select*
fromemployees
wherelast_namelike'__a%';
--4.查询除了10、20、110号部门以外的员工的信息。
select*
fromemployees
wheredepartment_idnotin(10,20,110);
--5.查询部门号为50号员工的信息,先按工资降序排序,再按姓名升序排序。
select*
fromemployees
wheredepartment_id=50orderbysalarydesc,last_name;
--6.查询没有上级管理的员工(经理号为空)的信息。
select*
fromemployees
wheremanager_idisnull;
--7.查询员工表中工资大于等于4500并且部门为50或者60的员工的姓名(last_name),工资,部门号。
selectlast_name,salary,department_id
fromemployees
wheresalary>=4500anddepartment_idin(50,60);
--1.计算2000年1月1日到现在有多少月,多少周(四舍五入)。
/*ROUND(列名|表达式,n):
四舍五入函数。
TRUNC(列名|表达式,n):
截断函数。
MOD(m,n):
取余函数。
SYSDATE:
返回系统日期
MONTHS_BETWEEN:
返回两个日期间隔的月数
ADD_MONTHS:
在指定日期基础上加上相应的月数
NEXT_DAY:
返回某一日期的下一个指定日期
LAST_DAY:
返回指定日期当月最后一天的日期
ROUND(date[,'fmt'])对日期进行指定格式的四舍五入操作。
按照YEAR、MONTH、DAY等进行四舍五入。
TRUNC(date[,'fmt'])对日期进行指定格式的截断操作。
按照YEAR、MONTH、DAY等进行截断。
EXTRACT:
返回从日期类型中取出指定年、月、日*/
selectround(months_between(SYSdate,'01-1月-00')),
round((SYSDATE-to_date('01-1月-00','DD-MON-RR'))/7)fromdual;
--2.查询员工last_name的第三个字母是a的员工的信息(使用2个函数)
/*CONCAT(列1|表达式1,列2|表达式2):
字符串连接
SUBSTR(列名|表达式,m[,n]):
字符串截取
LENGTH(列名|表达式):
返回字符串长度
INSTR(列名|表达式,’string’,[,m],[n]):
返回一个字符串在另一个字符串中的位置。
LPAD(列名|表达式,n,‘string’):
左填充
RPAD(列名|表达式,n,‘string’):
右填充
TRIM([leading|trailing|both,]trim_characterFROMtrim_source):
去掉左右两边指定字符。
REPLACE(文本,查找字符串,替换字符串):
替换字符串
。
*/
select*
fromemployees
wheresubstr(last_name,3,1)='a';
select*
fromemployees
whereinstr(last_name,'a',3,1)=3;
select*
fromemployees
wherelast_namelike'__a%';
--3.使用trim函数将字符串‘hello’、‘Hello’、‘bllb’、‘hello’分别处理得到下列字符串ello、Hello、ll、hello。
---TRIM([leading|trailing|both,]trim_characterFROMtrim_source):
去掉左右两边指定字符
selecttrim('h'from'hello'),trim('HEllo'),trim('b'from'bllb'),trim('hello')fromdual;
4.将员工工资按如下格式显示:
123,234.00RMB
/*通常是在字符类型,日期类型,数字类型之间进行显性转换。
主要有3个显性函数:
TO_CHAR
TO_NUMBER
TO_DATE*/
select*fromemployees
selectSALARY,
to_char(SALARY,'999,999.00L')
fromemployees;
--5.查询员工的last_name及其经理(manager_id),要求对于没有经理的显示“NoManager”字符串。
/*与空值(NULL)相关的一些函数,完成对空值(NULL)的一些操作。
主要包括以下函数:
NVL
NVL2
NULLIF
COALESCE
条件处理函数:
CASE表达式
DECODE*/
selectlast_name,NVL(to_char(manager_id),'NoManager')
fromemployees;
--6.将员工的参加工作日期按如下格式显示:
月份/年份
selectto_char(hire_date,'MON/RR')fromemployees;
--7.在employees表中查询出员工的工资,并计算应交税款:
如果工资小于1000,税率为0,如果工资大于等于1000并小于2000,税率为10%,如果工资大于等于2000并小于3000,税率为15%,如果工资大于等于3000,税率为20%。
/*DECODE(字段|表达式,条件1,结果1[,条件2,结果2…,][,缺省值])*/
--trunc截断函数分布使用
selectlast_name,salary,
salary*DECODE(trunc(salary/10000),0,0,1,0.1,2,0.15,3,0.2)应交税款
fromemployees;
select*fromemployees;
select*fromjobs;
select*fromdepartments;
--1.查询员工的编号,姓名,以及部门名称(分别使用Oracle语法,自然连接,using子句,on子句)。
selectemployee_id,last_name,department_name
fromemployees,departments
wheredepartments.department_id=employees.department_id;
--2.查询部门名称为Shipping的员工的编号、姓名及所从事的工作。
selectemployee_id,last_name,job_id
fromemployees,departments
wheredepartment_name='Shipping';
--3.查询所有工资大于等于6000元的员工姓名及其直接领导人的姓名、工资。
要求查询结果中在员工和直接领导人之间加入字符串“worksfor”。
selectm.last_name||'worksfor'||w.last_name,w.salary
fromemployeesw,employeesm
wherew.employee_id=m.manager_idandw.salary>6000
--4.查询员工的编号,姓名,以及部门名称,包括没有员工的部门。
selectemployee_id,last_name,department_name
fromemployees,departments
whereemployees.department_id=departments.department_id(+);
--5.查询员工的编号,姓名,以及部门名称,包括不属于任何部门的员工
selectemployee_id,last_name,department_name
fromemployees,departments
whereemployees.department_id(+)=departments.department_id;
--6.显示比员工‘Abel’参加工作时间晚的员工姓名,工资,参加工作时间。
selecte.last_name,salary,hire_date
fromemployeese,job_historyj
wherestart_date<'Able.start_date';
select*fromemployees
select*fromjobs
select*fromdepartments
select*fromjob_history
--1.查询各部门平均工资在8000元以上的部门名称及平均工资。
selectdepartment_name,avg(salary)
fromemployeese,departmentsd
wheree.department_id=d.department_id
groupbyd.department_name
havingavg(salary)>8000;
--2.查询工作编号中不含有“SA_”字符串及平均工资在8000元以上的工作编号及平均工资,并按平均工资降序排序。
selectjob_id,avg(salary)
fromemployeese
wherejob_idnotlike'SA%'
groupbyjob_id
havingavg(salary)>8000
orderbyavg(salary)desc
--3.查询部门人数在4人以上的部门的部门名称及最低工资和最高工资。
selectdepartment_name,round(min(salary)),round(max(salary))
fromdepartmentsd,employeese
wheree.department_id=d.department_id
groupbydepartment_name
havingcount(employee_id)>4;
--4.查询工作不为AD_PRES,工资的和大于等于25000的工作编号和每种工作工资的和。
selectjob_id,sum(salary)
fromemployeese
wherejob_id<>'AD_PRES'
groupbyjob_id
havingsum(salary)>25000;
--5.显示经理号码,这个经理所管理员工的最低工资,不包括经理号为空的,不包括最低工资小于3000的,按最低工资由高到低排序。
selecte.manager_id,min(e.salary)
fromemployeese,employeesm
wherem.employee_id(+)=e.manager_id
groupbym.employee_id
havingmin(e.salary)>=3000
orderbymin(e.salary)desc;
--chap07
--1.查询工资高于编号为113的员工工资,并且和102号员工从事相同工作的员工的编号、姓名及工资。
selectlast_name,employee_id,salary
fromemployees
wheresalary>(selectsalaryfromemployeeswhereemployee_id='103')
anddepartment_id=(selectdepartment_idfromemployeeswhereemployee_id='102')
--2.工资最高的员工姓名和工资。
selectlast_name,salary
fromemployees
wheresalary=(selectmax(salary)fromemployees);
--3.查询部门最低工资高于100号部门最低工资的部门的编号、名称及部门最低工资。
selecte.department_id,department_name,min(salary)
fromemployeese,departmentsd
wheree.department_id=d.department_id
groupbye.department_id,department_name
havingmin(salary)>(selectmin(salary)fromemployeeswheredepartment_id='100')
--4.查询员工工资为其部门最低工资的员工的编号和姓名及工资。
selectemployee_id,last_name,salary
fromemployeese
where
salary=(
selectmin(salary)
fromemployees
wheree.department_id=department_id)
--5.显示经理是KING的员工姓名,工资。
selectlast_name,salary
fromemployeese
wheremanager_id=(selectemployee_idfromemployeeswherelast_name='KING')
select*fromemployees;
select*fromjobs;
select*fromdepartments
--chap08
--数据操作语言(DML:
DataManipulationLanguage)
主要包括以下语句:
INSERT
UPDATE
DELETE
MERGE
事务是一组相关的DML语句的逻辑组合。
事务控制主要包括下列命令:
COMMIT
ROLLBACK
--SAVEPOINT
--1.向departments表中的部门编号、部门名称、区域编号三列插入两条纪录,分别为:
300,‘QQQ’,1500和310,‘TTT’,1700。
观察执行结果。
insertintodepartments(department_id,department_name,location_id)values(300,'QQQ',1500)
insertintodepartments(department_id,department_name,location_id)values(310,'TTT',1700)
--2.使用两种方法完成向列操作,试在新部d门的管理者和工作地区编号还没有确定的情况下,向部门表中插入新部门信息如下:
部门编号320及330,部门名称F1及F2。
insertintodepartments(department_id,department_name)values(320,'F1')
insertintodepartments(department_id,department_name)values(330,'F2')
--3.按顺序执行下列操作:
--1、插入一个新的部门信息,开始事务。
部门编号350,名称人力资源管理者100区域编号1700。
insertintodepartmentsvalues(360,'人力资源',100,1700);
--2、建立保存点a
savepointa;
--3、查询插入的数据是否存在。
select*fromdepartments;
--4、删除所有部门编号大于200的部门。
deletefromdepartmentswheredepartment_id>200
--5、建立保存点b。
savepointb;
--6、查询还有哪些部门信息存在。
select*fromdepartments
--7、更新部门编号为10的部门的管理者的编号为110。
updatedepartmentssetmanager_id=110wheredepartment_id=10;
--8、查询当前部门信息。
select*fromdepartments
--9、执行回滚操作,但不回滚到事务的最开始,而是回滚到保存点b。
rollbacktoa
--10、提交事务,提交后事务已结束。
commit;
--11、查看最终数据修改结果。
select*fromdepartments
--chap09
--1.创建表date_test,包含列d,类型为date型。
试向date_test表中插入两条记录,一条当前系统日期记录,一条记录为“1998-08-18”。
createtabledate_test(ddate)
insertintodate_test(d)values(sysdate)
insertintodate_test(d)values('18-8月-1998')
deletefromdate_test
whered='18-8月-1998'
select*fromdate_test
--2.创建与departments表相同表结构的表dtest,将departments表中部门编号在200之前的信息插入该表。
createtabledtestasselect*fromdepartmentswheredepartment_id<200
select*fromdtest
--3.创建与employees表结果相同的表empl,并将其部门编号为前50号的部门的信息复制到empl表。
createtableemplasselect* fromemployeeswheredepartment_id<50
select*fromempl
--4.试创建student表,要包含以下信息:
--学生编号(sno):
字符型(定长)4位主键
--学生姓名(sname):
字符型(变长)8位唯一
--学生年龄(sage):
数值型非空
createtablestudent(
snochar(4)primarykey,
snamevarchar(8)unique,
sageintnotnull
)
select*fromstudent
--5.试创建sc表(成绩表),要包含以下信息:
--学生编号(sno):
字符型(定长)4位主键外键
--课程编号(cno):
字符型(变长)8位主键
--选课成绩(grade):
数值型
createtablese(
snochar(4)referencesstudent(sno),
cnovarchar(8)primarykey,
gradeint
)
--6.试为student增加一列学生性别默认值“女”
altertablestudentaddgenderchar
(2)default'女'
insertintostudent(sno,sname,sage)values(88,'aff',10)
select*fromstudent
--7.试修改学生姓名列数据类型为定长字符型10位。
altertablestudentmodifysnamechar(10)
--8.试修改学生年龄列允许为空。
altertablestudentmodifysnamenull
--9.试为选课成绩列添加校验(check)约束为1-100;
--10.试删除sc表中的外键约束。
altertablescdrop
select*fromemployees;
select*fromjobs;
select*fromdepartments
--1.试创建视图v_emp_80,包含80号部门的员工编号,姓名,年薪列。
createorreplaceviewv_emp_80
asselectemployee_id,last_name,salary
fromemployees
wheredepartment_id=20;
--2.从视图v_emp_80中查询年薪在12万元以上的员工的信息。
--3.创建试图v_dml,包含部门编号大于100号的部门的信息。
--4.从视图v_dml插入如下记录:
部门编号360,部门名称AAA,管理者编号101,区域编号1700
--5.从视图v_dml中删除300号以上的部门信息。
--6.给表employees创建同义词em。
--n7.使用同义词em统计各部门员工的人数。
select*fromemployees;
select*fromjobs;
select*fromdepartments;
select*fromlocations
select*fromsalgrades
PPT2
1.查询员工表中所有员工的信息。
2.查询员工表中员工的员工号、姓名、每个员工涨工资100元以后的年工资(按12个月计算)。
3.查询员工first_name和last_name,要求结果显示为“姓last_name名first_name”格式。
4.查询所有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle