实验五:Oracle中的SQL使用

本文介绍了SQL语言中的常用系统函数,如字符处理、日期、转换及统计函数,并通过示例解释了它们的使用。同时,解释了DUAL表在SQL查询中的作用,以及如何使用保存点进行事务回滚操作。此外,还涉及了SQL在HR模式下对EMPLOYEES和DEPARTMENTS表的操作,包括添加、更新和删除记录。最后,探讨了子查询和多表查询的应用,展示了如何在SCOTT用户的emp和dept表中进行复杂查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 实验目的

1.掌握SQL语言中常用系统函数;

2.掌握SQL语言的应用。

  • 实验内容

1. 查询SQL中如下常用函数的使用,并举例说明(完成格式参考Length)。

  1. 字符< LtrimReplaceRtrimSubstrTrim>
  2. 日期< Sysdatenext_day>
  3. 转换< To_charto_dateto_number>
  4. 统计函数< SumAvgMaxMinCount>

例如:Length

函数形式Length(X)  

函数说明:返回字符串X的长度

举例select length(‘hello world’) from dual;

运行结果

LENGTH('HELLOWORLD')

--------------------       

      

函数形式

函数说明

举例&运行结果

Ltrim

Ltrim(x[,trim_string])

删除字符串左边的字符,默认情况下删除左边空格;可以选择使用trim_string指定将要被删除的字符(不是字符串),

停止条件:字符串第一个字符不在trim_string

Replace

Relace(‘x’,’search_string’,’replace_string’)

在字符串x中查找search_string,找到后将替换成replace_string

Rtrim

Rtrim(x[,trim_string])

删除字符串右边的字符,默认情况下删除右边空格;可以选择使用trim_string指定删除将要被删除的字符

Substr

Stbstr(x,start[,length])

返回字符串的子串,从start开始(从1开始),可选的length 表示子串的长度(空格也算一位)

Trim

Trim([trim_char] from x)

删除字符串左右两边的字符,默认情况下删除空格;可以选择使用trim_string指定删除将要被删除的字符

Sysdate

Sysdate()

返回当前系统的日期

next_day

Next_day(date,’day’)

获取指定日期到下一个星期几的日期,date为指定日期,day参数为下一个星期几(数字:1-7星期日~星期一)(字符串:Monday~Sunday

当第二个参数传的星期数比现有星期数小的时候,会返回下一个星期的日期;当第二个参数所传的星期数比 现有的星期数大的时候,则会返回本周的相应星期日期。

To_char

To_char(x[,fmt])

将指定表达式转化成字符串

to_date

To_date(c[,]fmt)

将字符串转换成日期;c必须大于0且小于5378484fmt’J’表示公元转换

to_number

To_number(c[,fmt])

将字符串转换成数值,与to_char作用相反,

Sum

Sum(x)

汇总值

Avg

Avg(x)

平均数

Max

Max(x)

最大值

Min

Min(x)

最小值

Count

Count(x)

统计数量

2. 在使用SQL的内置函数时,经常用到关键词dual,查询dual的含义,并举例说明其使用方法。

答:

  1. 含义:dual是一个Orcale中的一个虚表,利用这个虚表可以数值或查看序列,或者调用一些内置得函数。
  2. 使用方法:select 字段名/函数from dual;

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%;

  • 删除操作⑥中新增加的那条记录。

实验五附加:SQL语句基础(子查询、多表查询应用)

    • 实验目的
  1. 掌握子查询的使用;
  2. 掌握检索多表中的数据。
    • 实验内容

SQL语言的应用(以scott用户下empdept表为例,根据题目写出执行正确的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  )行,并写出运行结果。

  1. 运行如下语句后:

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  )。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值