5—单元5 数据查询与维护(6)

2019-08-30 18:07

时数的表达式为:

TA1909*TA1910 >(Select Avg(TA1909*TA1910) From TA19 ) 嵌套子查询语句如下。 Use Xsgl

Select TA1904 As '课程编码',TB0103 As '课程名', TB0302 As '班级名',

TC0102 As '类别',TC0202 As '课程性质', TC0302 As '考核标志', TA1908 As '起始周次',TA1909 As '教学周数', TA1910 As '周学时数',TA1909*TA1910 As '课时数'

From TA19

Join TB01 On TA1904=TB0101 Join TB03 On TA1901=TB0301 Join TC01 On TA1905=TC0101 Join TC02 On TA1906=TC0201 Join TC03 On TA1907=TC0301

Where TA1909*TA1910 >(Select Avg(TA1909*TA1910) From TA19 ) 语句执行后结果如图5-11所示。

图5-11 嵌套查询课时数高于平均课时数的课程信息

【例5-28】在学生成绩表XA05中,用嵌套子查询与连接查询两种方式查询选修“Java程序设计”的学生信息。

(1)嵌套子查询(要求显示学号、姓名与班级编码)

用嵌套子查询方式查询选修“Java程序设计”的学生信息,可按三步进行,第一步从课程编码表TB01中查询出“Java程序设计”的课程编码;第二步从学生成绩表XA05中查询出选修该课程编码的学生学号;第三步用In运算符找出这些学号的学生信息。具体过程如下。

第一步确定“Java程序设计”的课程编码。

Select TB0101 From TB01 Where TB0103='Java程序设计'

- 161 -

结果为:5058

第二步查找选修 “5058”课程的学生学号。

Select XA0501 From XA05 Where XA0506 ='5058' 结果:0000002744、0000002745、---------、0000002754

第三步查找上述学生的信息,由于第②步得到的结果不止一个,所以要用In表示取值范围。

Select XA0102,XA0104,XA0114 From XA01 Where XA0101 In () 综合三步查询,得到一个三层的嵌套查询语句如下。

Use Xsgl

Select XA0102 As '学生学号',XA0104 As '学生姓名',XA0114 As '班级编码' From XA01

Where XA0101 In (Select XA0501 From XA05

Where XA0506 =(Select TB0101 From TB01

Where TB0103='Java程序设计'))

语句执行结果如图5-12(a)所示。

(2)连接查询(要求显示班级名称、学号、姓名、课程名称) Use Xsgl

Select TB0302 As '班级名称',XA0102 As '学生学号',

XA0104 As '学生姓名',TB0103 As '课程名称'

From XA05

Join TB03 On XA0502=TB0301 Join TB01 On XA0506=TB0101 Join XA01 On XA0501=XA0101 Where TB0103='Java程序设计' 语句执行结果如图5-12(b)所示。

(a) 嵌套子查询

(b) 连接查询

图5-12查询选修“Java程序设计”的学生信息

【例5-29】 用Exists子查询,查询所有选修课程号为“5058”的学生学号与姓名。 在学生档案表XA01中取出第一条记录的学生编码XA0101,用相关子查询,在学生成绩

- 162 -

表XA05中查询选修课程号为“5058”的学生,并用Exists运算符判断查询结果是否非空,若非空则将该学生记录添加到父查询结果集合中去,否则放弃该学生记录。然后在XA01中取出第二条记录的学生编码XA0101,继续上述过程,直到XA01中最后一条记录为止。查询语句如下。

Select XA0102,XA0104 From XA01

Where Exists ( Select *

From XA05

Where XA0501=XA0101 And

XA0506='5058')

【例5-30】在班级编码表TB03中,查询满足下列要求的班级信息(系部编码、班级名称、班级人数)。

(1)查询机械系(代码为“10”)中所有班级信息。

Select TB0309 As '系部编码',TB0302 As '班级名称',TB0306 As '班级人数' From TB03 Where TB0309='10' 查询结果如图5-13所示。

图5-13 查询机械系所有班级信息

(2)用Any嵌套子查询,查询计算机系(代码为“30”)中,班级人数小于机械系(代码为“10”)某一班级人数的班级信息。

Use Xsgl

Select TB0309 As '系部编码',TB0302 As '班级名称',TB0306 As '班级人数' From TB03

Where TB0309='30' And

TB0306

From TB03 Where TB0309='10')

由图5-13可知机械系最大班级人数为48。因此查询结果应该是计算机系中任一班级人数小于48人的班级信息。如图5-14所示。

- 163 -

图5-14 查询计算机系班级人数小于48的班级信息

(3)用All嵌套子查询,查询管理系(代码为“40”)中,班级人数小于机械系(代码为“10”)所有班级人数的班级信息。

Select TB0309 As '系部编码',TB0302 As '班级名称',TB0306 As '班级人数' From TB03

Where TB0309='40' And

TB0306

From TB03 Where TB0309='10' )

由图5-13可知机械系最小班级人数为24人。因此查询结果应该是计算机系中所有班级人数小于24人的班级信息。如图5-15所示。

图5-15 查询管理系班级人数小于24班级信息

5.2 使用视图查询数据

在第1章中曾介绍过数据库系统的三级模式与两级映射的体系结构,三级模式是外模式、模式与内模式。其中外模式是用户与数据库系统的接口,以用户视图方式表示。不同用户可通过不同外模式(视图)访问数据库。事实上,所谓视图就是用户使用Select语句对数据表进行投影、选择与连接运算后得到局部数据表。在SQL语言中视图View可用Create语句创建,并在Select语句中使用。下面分别介绍视图的概念、创建语句与使用方法。

5.2.1 视图的概念

视图是由一个或多个数据基表导出的二维虚表,虚表的列与行来自于基表并由定义视图的查询语句产生。和表一样,视图也有定义的行和列,但是这些列和数据行并不实际地以视图存在于数据库中,而是存储于它所引用的基表当中。视图之所以称为虚表,是因为它并没有作为数据集存储在数据库中。

视图定义存储在数据库中,而用户所看到的数据并没有像表那样又在数据库中重新存储一

- 164 -

份,通过视图所看到的数据只是存放在基表中的数据。修改在视图中看到的数据时,实际上修改的是基表的数据。基表的数据变化自动反映在视图中。对视图的操作和对表的操作一样,可以对其进行查询、修改和删除操作。

5.2.2 建立视图

1.用Create View语句创建视图 (1)语句格式

Create View [数据库.][拥有者.]<视图名> [(列名1,…,列名n)] [With Encryption] As Select 语句 [With Check Option] (2)说明

? With Encryption可选项用于对视图结构进行加密;

? With Check Option保证修改数据在被提交前仍可通过视图看见;

? 视图中不允许使用Group By分组查询、Order By排序、Distinct、Into等关键字; ? 一个视图最多能定义1024列;

? 若基表结构改变(如删除某字段),则视图必须重建; ? 视图中的函数、表达式、常量等必须定义列名才能访问。

【例5-31】创建班级编码表TB03的视图View_TB03,能显示班级编码表TB03所有字段、专业名称、毕业标志、所属系部名称等信息。

Use Xsgl Go

Create View View_TB03 As

Select TB03.*,TB0402,TC0402,TB0602 From TB03

Join TB04 On TB0304 = TB0401 Join TC04 On TB0308 = TC0401 Join TB06 On TB0309=TB0601 2.用企业管理器建立视图

按【例5-31】的要求,用企业管理器建立视图View_TB03。创建的步骤如下: (1)在企业管理器中选择要创建视图的数据库Xsgl,右击“视图”,选择“新建视图”命令,会出现一个如图5-16所示的视图窗体。该对话框共分为表区、列区、SQL Script区和数据结果区4个区,此时4个区都是空白。

(2)右击表区,选择“添加表”命令。则出现对话框要求选择创建视图的基表或视图,

- 165 -


5—单元5 数据查询与维护(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:苏教版小学语文五年级阅读能力测试卷 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: