第4章 数据库的查询和视图
更新时间:2023-08-11 11:45:01 阅读量: 教育文库 文档下载
- 第4章一元一次方程推荐度:
- 相关推荐
4.1 4.2 4.3 4.4
关系运算 数据库的查询 视图 游标
1. 选择(Selection)选择是单目运算,其运算对象是一个表。该运算按给定的条件,从表中选出 满足条件的行,形成一个新表,作为运算结果。 选择运算的记号为 F(R)。其中, 是选择运算符,下标F是一个条件表达式,R 是被操作的表。 例如,若要在T表(表4.1)中找出T1<20的行形成一个新表,则运算式为 F(T) 上式中F:T1<20,该选择运算的结果如表4.2所示。 表4.1 T表T1 1 2 3 5 20 100 T2 A1 B1 A2 D F A3 T3 3 2 12 10 1 2 T4 3 0 12 24 4 8 T5 M N O P Q N
表4.2 F(T)T1 1 T2 A1 T3 3 T4 3 T5 M
23 5
B1A2 D
212 10
012 24
NO P
2. 投影(Projection)投影也是单目运算,该运算从表中选出指定的属性值组成一个新表,记为 ΠA(R)。其中,A是属性名(即列名)表,R是表名。 例如,在T表中对T1、T2和T5投影,运算式为 T1,T2,T5(T) 该运算得到如表4.3所示的新表。 表4.3 T1,T2,T5(T)T1 1 T2 A1 T5 M T1 5 T2 D T5 P
2 3
B1 A2
N O
20 100
F A3
Q N
3. 连接(JOIN)连接是把两个表中的行按照给定的条件进行拼接而形成新表,记为 。其中,R、 S是被操作的表,F是条件。 例如,若表A和B分别如表4.4和表4.5所示,则 如表4.6 A B 所示,其中,F为 F T1=T3。 表4.4 A表T1 T2 T1 T2 T1 T2
1
A
6
F
2
B
表4.5 B表T3 1 T4 3 T5 M T3 2 T4 0 T5 N
表4.6 A B FT11 2
T2A B
T31 2
T43 0
T5M N
数据库应用中最常用的是“自然连接”。进行自然连接运算要求两个表有共同 属性(列),自然连接运算的结果表是在参与操作的两个表的共同属性上进行等值 连接后,再去除重复的属性后所得的新表。自然连接运算记为 ,其中,R和S是参与 运算的两个表。 例如,若表A和B分别如表4.7和表4.8所示,则 如表4.9所示。 表4.7 A表T1 T2 T3 T1 T2 T3 T1 T2 T3
10
A1
B1
5
A1
C2
20
D2
C2
表4.8 B表T1 1 100 T4 100 2 T5 A1 B2 T6 D1 C1 T1 20 5 T4 0 10 T5 A2 A2 T6 D1 C2
表4.9 A BT1 5 20 T2 A1 D2 T3 C2 C2 T4 10 0 T5 A2 A2 T6 C2 D1
当用户登录到SQL Server后,即被指定一个默认数据库,通常是master数据库。 使用USE database_name语句可以选择当前要操作的数据库。其中,database_name 是要选为当前数据库的数据库名。例如,要选择PXSCJ为当前数据库,可以使用如下 语句实现: USE PXSCJ GO下面介绍SELECT语句,它是T-SQL的核心。语法格式如下: [ WITH <common_table_expression>] 果集*/ SELECT [ ALL | DISTINCT ] [ TOP expression [ PERCENT ] [ WITH TIES ] ] <select_list> /*指定要选择的列及其限定*/ [ INTO new_table ] /*INTO子句,指定结果存入新表*/ [ FROM table_source ] /*FROM子句,指定表或视图*/ [ WHERE search_condition ] 句,指定查询条件*/ [ GROUP BY group_by_expression] /*指定临时命名的
结
/*WHERE子
/*GROUP BY子句,指
通过SELECT语句的<select_list>项组成结果表的列。语法格式如下:<select_list> ::= { * /*选择当前表或视图的所有列*/ | { table_name | view_name | table_alias }.* /*选择指定的表或视图的所有列*/ | { column_name | [ ] expression | $IDENTITY | $ROWGUID } /*选择指定的列*/ | udt_column_name [ { . | :: } { { property_name | field_name } | method_name(argument [,...n] ) } ] /*选择用户定义数据类型的属性、方法和字段*/ | expression [ [ AS ] column_alias ] /*AS子句,定义列别名*/ | column_alias = expression /*选择指定列并更改列标题*/ } [ ,...n ]
1.选择所有列使用“*”表示选择一个表或视图中的所有列。 【例4.1】 查询PXSCJ数据库中XSB表的所有数据。 USE PXSCJ GO SELECT * FROM XSB GO 执行完后SQL Server Management Studio的结果窗口中将显示XSB表的所有数据。
2.选择一个表中指定的列使用SELECT语句选择一个表中的某些列,各列名之间要以逗号分隔。其中, $IDENTITY表示选择标识列,$ROWGUID表示选择ROWGUIDCOL属性的全局标识列。 如果在FROM子句中有多个表具有ROWGUIDCOL属性,则必须用特定的表名限定 $ROWGUID,如T1.$ROWGUID。 【例4.2】 查询PXSCJ数据库的XSB表中各个同学的姓名、专业和总学分。 USE PXSCJ GO SELECT 姓名,专业,总学分 FROM XSB GO SQL Server 2008中还能一次执行多个查询。
【例4.3】 查询XSB表中计算机专业同学的学号、姓名和总学分,查询XSB表中 所有列。 SELECT 学号, 姓名, 总学分 FROM XSB WHERE 专业 = '计算机' GO SELECT * FROM XSB
执行后在结果窗口中将分别列出两个查询语句的结果,如图4.1所示:
图4.1 一次执行多个查询
3.定义列别名当希望查询结果中的某些列或所有列显示时使用自己选择的列标题时,可以 在列名之后使用AS子句来更改查询结果的列标题名。其中,column_alias是指定的 列别名。 【例4.4】 查询XSB表中计算机系同学的学号、姓名和总学分,结果中各列的 标题分别指定为number、name和mark。 USE PXSCJ GO SELECT 学号 AS number, 姓名 AS name, 总学分 AS mark FROM XSB WHERE 专业= '计算机'
执行结果如下:
更改查询结果中的列标题也可以使用column_alias=expression的形式。例如, SELECT number= 学号, name = 姓名, mark = 总学分 FROM XSB WHERE 专业= '计算机' 该语句的执行结果与上例的结果完全相同。 当自定义的列标题中含有空格时,必须使用引号将标题括起来。例如, SELECT 'Student number' = 学号,姓名 AS 'Student name', mark = 总学分 FROM XSB WHERE 专业= '计算机'
4.替换查询结果中的数据在对表进行查询时,有时希望对所查询的某些列得到的是一种概念而不是具 体的数据。例如,查询XSB表的总学分,希望知道的是学习
的总体情况,这时,就 可以用等级来替换总学分的具体数字。 要替换查询结果中的数据,则要使用查询中的CASE表达式,格式为 CASE WHEN 条件1 THEN 表达式1 WHEN 条件2 THEN 表达式2 …… ELSE 表达式 END
【例4.5】 查询XSB表中计算机系各同学的学号、姓名和总学分,对其总学分 按以下规则进行替换:若总学分为空值,则替换为“尚未选课”;若总学分小于 50,则替换为“不及格”;若总学分在50与52之间,则替换为“合格”;若总学 分大于52,则替换为“优秀”。列标题更改为“等级”。 USE PXSCJ GO SELECT 学号, 姓名, 等级= CASE WHEN 总学分 IS NULL THEN '尚未选课' WHEN 总学分 < 50 THEN '不及格' WHEN 总学分 >=50 and 总学分<=52 THEN '合格' ELSE '优秀' END FROM XSB WHERE 专业= '计算机' GO
执行结果如下:
5.计算列值使用SELECT对列进行查询时,在结果中可以输出对列值计算后的值,即 SELECT子句可使用表达式作为结果,格式为 SELECT expression [ , expression ] 【例4.6】 按120分计算成绩并显示学号为081101的学生的成绩情况。 USE PXSCJ GO SELECT 学号, 课程号, 成绩120=成绩*1.20 FROM CJB WHERE 学号= '081101' 执行结果如下:
6.消除结果集中的重复行对表只选择其某些列时,可能会出现重复行。例如,若对PXSCJ数据库的XSB 表只选择专业和总学分,则出现多行重复的情况。可以使用DISTINCT关键字消除结 果集中的重复行,其格式是 SELECT DISTINCT | ALL column_name [ , column_name…+ 关键字DISTINCT的含义是,对结果集中的重复行只选择一个,保证行的唯一性。 【例4.7】 对PXSCJ数据库的XSB表只选择专业和总学分,消除结果集中的重复 行。 USE PXSCJ GO SELECT DISTINCT 专业,总学分 FROM XSB 执行结果如下:
7.限制结果集返回行数如果SELECT语句返回的结果集的行数非常多,那么可以使用TOP选项限制其返 回的行数。TOP选项的基本格式为 [ TOP expression [ PERCENT ] [ WITH TIES ] ] 指示只能从查询结果集返回指定的第一组行或指定的百分比数目的行。 expression可以是指定数目或百分比数目的行。若带PERCENT关键字,则表示返回 结果集的前expression%行。TOP 子句可以用于 SELECT、INSERT、UPDATE 和 DELETE 语句中。 【例4.8】 对PXSCJ数据库的XSB表选择姓名、专业和总学分,返回结果集的前 6行。 SELECT TOP 6 姓名,专业,总学分 FROM XSB
正在阅读:
第4章 数据库的查询和视图08-11
资产租赁管理制度01-02
数电课程设计--耿泽浩 - 图文06-18
在WINCC中使用WinSock控件进行TCP - IP通讯的例程06-17
市场营销试题及答案11-25
2018-2019年高中地理湖南高考质量检测试卷含答案考点及解析03-07
建筑施工手册-9_《钢筋工程》04-08
欠平衡钻井技术研究与应用05-27
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 视图
- 数据库
- 查询
- 二手房买卖合同样本
- 九寨沟简介
- 泛海三江JB-FSD-981消防主机使用说明书
- 小企业报表编制工具(由T字帐自动生成资产负债表+损益(利润)表+科目汇总表)
- 高校软件定义数据中心建设与优化策略研究
- 会计科目英文翻译
- 2018年201X年体校党支部书记述职报告-word范文模板 (1页)
- 2013南京财经大学考试题目及答案
- 12月25日《简单爱》主题婚礼主持稿
- 个人知识管理论文
- 升腾实业办公楼工程安监督交底会议纪要 2
- 压铸件表面判定规范 (2)
- 课后习题答案_叶见曙主编结构设计原理1-9章_
- 沙弥尼律仪要略
- 学习情境七 施工投标报价文件的编制
- 发改委 福州 南京 龙刚
- 新土耳其的缔造者凯末尔
- 盘点出国留学行李清单
- 9-10轻钢龙骨纸面石膏板隔墙施工工艺标准
- 无侧限抗压强度试验计算表