数据库查询视图

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章数据的查询的视图

实验指导书

实验目标:

查询语句的编写和视图的创建。

第一部分练习指导(50分钟)

联系1:测试ROWID和ROWNUM伪列

问题:

用户表没有建立主键约束而插入了重复的记录,为了解决数据冗余问题,必须删除表中的重复记录,用户应用程序之、只关心查询结果集中的一部分,需要限制查询返回的行数。

分析:

Oracle 的RowID伪列可以唯一地标识表中的一行,可以利用ROWID删除表中重复的记录。ROWNUM伪列返回查询结果集中行的序号,可以通过ROWNUM限制查询返回的行数。

解决方案:

(1)启动 SQL *Plus,并登录到数据库。

(3)测试ROWID伪列。

可以看到每个行的ROWID值都是不同的。现在删除第三行。

在次执行查询语句,就可以看到第三条记录已经被删除。由此可见,即使不定义主键,Oracle也可以唯一区分表中的行,因为ROWID可以当作表的主键。(4)测试ROWNUM伪列。

上述命令返回两条记录。可以看出,使用ROWNUM 伪列可以实现类似SQL SERVER 中的TOP N功能。

练习2:使用select语句创建表

问题:

假如scott用户下的表emp要做比较大的调整。Select语句可以与其它表中的重要的记录做一个副本。

分析:

Select 语句可检索存储在数据库中的数据。Select 语句还可以与其它的DDL 和DML语句一起使用来执行各种操作,如创建表、插入记录和指定列的别名等。

解决方案:

(1)创建表emp表的副本,但不包含表中的记录。

(2)使用select 语句选择记录并插入到另一个表中。

练习3: 使用子查询

问题

编写sql语句,查询出工资比blake高的员工的信息。

解决方案

(1)先查询出blake的工资。

(2)利用where条件筛选出比blake的工资高的员工的信息。

(3)在sql提示符下输入一下命令,查看结果。

select * from emp where sal > (select sal from emp where ename='BLAKE');

第二部分练习(50分钟)

1.使用上一次练习中创建的三个表,查询出所有数学考试成绩都在60分以上的学生的名字和所在班级。

分析:

(1)在成绩表中查询出数学成绩在60分以上的学生。

(2)利用where语句在学生信息表中筛选出这些学上的信息。

2.利用学生信息表创建一个视图,只显示学生的姓名和年龄。

3.创建一个视图,显示学生的姓名和平均成绩,并按照分数升序排列。

提示:使用 A VG 函数和 ORDER BY 子句.

4. 编写语句以显示vendor_master表中vencode,venname 和venadd列,如果veradd列问空,则该语句显示venadd1,否则显示veradd2.

提示:使用NVL2函数

第三部分作业

1.按照第二部分练习1的要求创建一个视图。

2.编写一个sql语句,查询出所有平均分数在70和80分之间的学生信息。

3.编写一个sql语句,查询出某一个班所有课程的平均分数。

编写语句以显示order_master表中的订单的orderno,同时要显示系统日期与该订单的del_date的月份数差值,将该值四舍五入显示月份数。

相关文档
最新文档