实验五:Oracle中的SQL使用
一、实验目的
1.掌握SQL语言中常用系统函数;
2.掌握SQL语言的应用。
二、实验内容
1. 查询SQL中如下常用函数的使用,并举例说明(完成格式参考Length)。
- 字符< Ltrim、Replace、Rtrim、Substr、Trim>
- 日期< Sysdate、next_day>
- 转换< To_char、to_date、to_number>
- 统计函数< Sum、Avg、Max、Min、Count>
例如:Length
函数形式:Length(X)
函数说明:返回字符串X的长度
举例:select length(‘hello world’) from dual;
运行结果:
LENGTH('HELLOWORLD')
--------------------
11
函数形式:Ltrim(X[,trim_string])
函数说明:删除字符串X左边的字符
举例: select ltrim('***hello world***','*') from dual;
运行结果:
LTRIM('***HELL
--------------
hello world***
2. 在使用SQL的内置函数时,经常用到关键词dual,查询dual的含义,并举例说明其使用方法。
含义:dual是Oracle中的一个伪表,利用这个伪表可以设置或查看序列,或者是调用一些内置的函数
使用方法:求系统当前时间
SELECT sysdate FROM daul
3. 练习SQL事务处理
(参见教材p112- p113中的示例内容,自己举例使用保存点进行事务回退操作,将练习所执行的SQL记录下来)
4. SQL语言的应用(根据题目的写出执行正确的SQL语句):
(1)解锁HR模式,对HR模式下的表进行操作(此操作不用记录);
(2)以HR身份登录数据库后进行如下操作:
- 查询HR.EMPLOYEES表的表结构;
- 查询EMPLOYEES表中每个雇员的姓名(要求将first_name,last_name字段连接在一起显示)、职位、工薪、部门编号;
- 查询HR.DEPARTMENTS表的表结构;
- 使用子查询查询属于某一部门员工的姓名、职位、工薪、部门编号的信息(已知的信息为部门名称,部门名称由用户自己给出);
- 统计某一部门的雇员的最高和最低工薪;
- 向EMPLOYEES表添加一组数据:
values(600,’LISI’,’lisi@163.com’,sysdate,’SH_CLERK’,1650)
通过SELECT查询语句,查看是否在EMPLOYEES表中添加了相应的记录;
- 使用UPDATE语句更新该记录的SALARY列,为部门编号80的员工上调工薪10%;
- 删除操作⑥中新增加的那条记录。
(1)
(2)
1、
2、
3、
4、
5、
6、
7、
8、
实验五附加:SQL语句基础(子查询、多表查询应用)
- 实验目的
1.掌握子查询的使用;
2.掌握检索多表中的数据。
- 实验内容
SQL语言的应用(以scott用户下emp、dept表为例,根据题目写出执行正确的SQL语句或运行结果):
1.列出每个部门的部门号,员工数量、员工平均工资
2.列出员工SCOTT所在部门的所有员工编号(empno)、姓名(ename)、部门编号(deptno)以及工资(sal)。
3.列出工资(sal)比SCOTT多的所有员工信息。
4.查询emp表中所有员工的编号(empno)、姓名(ename)、部门编号(deptno)、部门名称(dname)。
5.若已知emp,dept表数据如下图所示:
图1 emp表
图2 dept表
(1)运行如下语句后:
SQL> select e.empno, e.ename,d.deptno,d.dname
2 from emp e left join dept d
3 on e.deptno=d.deptno;
显示的结果数据应为( 14 )行,并写出运行结果。
(2)运行如下语句后:
SQL> select e.empno, e.ename,d.deptno,d.dname
2 from emp e right join dept d
3 on e.deptno=d.deptno;
显示的结果数据应为( 15 )行,并写出运行结果。
(3)运行如下语句后:
SQL> select e.empno, e.ename,d.deptno,d.dname
2 from emp e full join dept d
3 on e.deptno=d.deptno;
显示的结果数据应为( 15 )行。
(4)运行如下语句后:
SQL> select count(*) from emp, dept;
显示的统计结果为( 56 )。
关注我,了解更多精彩内容!