数据库原理与应用(10)第10章 SQL高级应用

合集下载

第10章 SQL高级应用

第10章  SQL高级应用
第十章 SELECT高级查询
10.1.1 数据汇总查询
生成简单汇总报表的应用程序:
– CUBE或ROLLUP运算符。
– COMPUTE或COMPUTE BY运算符
1.聚合函数 聚合函数用来完成一定的统计功能。 •聚合函数仅在下列项中允许作为表达式使用: • SELECT语句的选择列表(子查询或外部查询)。 • COMPUTE或COMPUTE BY子句; • HAVING子句。
group by student.class,ame
with cube
使用rollup汇总
CUBE 和 ROLLUP 之间的区别: 1、CUBE 生成的结果集显示了所选列中值的所 有组合的聚合。 2、ROLLUP 生成的结果集显示了所选列中值的 某一层次结构的聚合。
使用rollup汇总
select student.class as '班号', ame as '课程', avg(score.degree) as '平均分'
from student,course,score
where student.sno=score.sno and o=o
else
begin rollback transaction
print '选修操作系统的人数已满,张三同学不能选修此课程!'
end
4.在事务内设置保存点 保存点定义如果有条件地取消事务的一部分,事务 可以返回的位置。 •语法格式为: SAVE TRAN[SACTION] {savepoint_name |
• 一致性(Consistency)——事务在完成时,必
须使所有的数据都保持一致状态。
•隔离性(Isolation)——由并发事务所作的修

第10章sql高级应用

第10章sql高级应用

第10章SQL高级应用CHAPTER 10练习题10参考答案1.数据检索时使用COMPUTE和COMPUTE BY产生的结果有何不同答使用COMPUTE子句和COMPUTE BY子句都能既浏览明细数据,又看到统计的结果。

只使用COMPUTE子句时,其查询的结果类似于总计;而使用COMPUTE BY子句时,其查询的结果将为带具体内容的分类进行统计。

2.进行连接查询时应注意什么答连接查询是指以指定表中的某个列或某些列作为连接条件,从两个或更多的表中查询关联数据的查询。

进行连接查询时应注意以下几点:一般而言,基于主键和外键指定查询条件,连接条件可使用“主键=外键”。

如果一个表有复合关键字,在连接表时,必须引用整个关键字。

应尽可能限制连接语句中表的数目,连接的表越多,查询处理的时间越长。

对于连接表的两个列应有相同或类似的数据类型。

不要使用空值作为连接条件,因为空值计算不会和其他任何值相等。

3.什么是交叉连接答交叉连接是两个表的笛卡尔积,即两个表的记录进行交叉组合。

4.内连接、外连接有什么区别答内连接是从结果中删除与其他被连接表中没有匹配行的所有行,因此内连接可能会丢失信息。

外连接会把内连接中删除原表中的一些行保留下来,保留哪些行由外连接的类型决定。

5.外连接分为左外连接、右外连接和全外连接,它们有什么区别答左外连接从结果中保留第一个表的所有行,但只包含第二个表中与第一个表匹配的行,第二个表相应的空行被放入NULL值。

右外连接从结果中保留第二个表的所有行,但只包含第一个表中与第二个表匹配的行,第一个表相应的空行被放入NULL值。

全外连接会把两个表所有行都显示在结果中,并尽可能多地匹配数据和连接条件。

6.什么是事务事务的特点是什么答事务是指一个操作序列,这些操作序列要么都被执行,要么都不被执行,它是一个不可分割的工作单元。

事务中任何一个语句执行时出错,系统都会返回到事务开始前的状态。

事务是并发控制的基本单元,是数据库维护数据一致性的单位。

第10章 数据完整性-数据库原理与应用教程(Oracle 12c版)-赵明渊-清华大学出版社

第10章 数据完整性-数据库原理与应用教程(Oracle 12c版)-赵明渊-清华大学出版社

例如,对于stsys数据库中student表,sno列作为主键,每一个学 生的sno列能唯一地标识该学生对应的行记录信息,通过sno列建立 主键约束实现student表的实体完整性。
3.参照完整性
参照完整性保证主表中的数据与从表中数据的一致性,又称为 引用完整性,参照完整性确保键值在所有表中一致,通过定义主键 (PRIMARY KEY)与外键(FOREIGN KEY)之间的对应关系实现参照 完整性。
Oracle使用完整性约束机制以防止无效的数据进入数据库的基 表,如果一个DML语句执行结果破坏完整性约束,就会回滚语句并 返回一个错误。通过完整性约束实现数据完整性规则有以下优点:
●完整性规则定义在表上,存储在数据字典中,应用程序的任何 数据都必须遵守表的完整性约束。
●当定义或修改完整性约束时,不需要额外编程。
主键(PRIMARY KEY):表中能唯一标识每个数据行的一个或 多个列。
外键(FOREIGN KEY):一个表中的一个或多个列的组合是另 一个表的主键。
数据库原理与应用教程
(Oracle 12c 版)
4
10.1 数据完整性概述
例如,将student表作为主表,表中的sno列作为主键,score表作为 从表,表中的sno列作为外键,从而建立主表与从表之间的联系实现参 照完整性,student表和score表的对应关系如表10.1、和表10.2所示。
● CHECK约束,检查约束,现域完整性。
● NOT NULL约束,非空约束,实现域完整性。
● PRIMARY KEY约束,主键约束,实现实体完整性。
● UNIQUE KEY约束,唯一性约束,实现实体完整性。
● FOREIGN KEY约束,外键约束,实现参照完整性。

sql数据库原理与应用

sql数据库原理与应用

sql数据库原理与应用SQL database, or structured query language database, is a type of database that is used to store and manage data in a structured manner. It is a powerful tool that allows users to create, retrieve, update, and delete data from a database. SQL is widely used in both small and large organizations for managing their data. It is an essential tool for businesses to store and manipulate their data efficiently. SQL databases are known for their scalability, reliability, and performance, making them an ideal choice for businesses of all sizes.SQL数据库,即结构化查询语言数据库,是一种用于以结构化方式存储和管理数据的数据库类型。

它是一种强大的工具,允许用户从数据库中创建、检索、更新和删除数据。

SQL在小型和大型组织中被广泛使用,用于管理其数据。

它是企业存储和高效操作数据的重要工具。

SQL数据库以其可扩展性、可靠性和性能而闻名,使其成为各种规模企业的理想选择。

One of the key characteristics of SQL databases is their ability to handle large amounts of data efficiently. With the use of indexing, querying, and optimization techniques, SQL databases can quicklyretrieve and manipulate data, even when dealing with massive datasets. This makes them suitable for businesses that need to process and analyze large volumes of data on a regular basis.SQL数据库的一个关键特点是其能够高效处理大量数据。

《数据库原理与应用》课程教学大纲

《数据库原理与应用》课程教学大纲

《数据库原理与应用》课程教学大纲一、课程基本信息(一)课程代码:(二)课程中文名称:数据库原理与应用(三)课程英文名称:Principle and Application of Database(四)课程性质:专业基础课程(五)适用专业:计算机科学与技术、软件工程、大数据与人工智能(六)开课单位:(七)教学时间安排:第 3学期(八)先修课程:计算机基础、高级语言程序设计(九)后续课程:网络程序开发、大数据技术原理及应用(十)学时、学分:32学时、2学分二、课程目标《数据库原理与应用》是计算机类各专业的必修课,是一门重要的专业基础课。

原理部分以数据库技术的实际应用为目标,重点讲述数据库的基础知识、基本原理和基本技术;应用部分以数据库应用开发为主,介绍数据库应用系统的设计方法、步骤和范例。

通过本课程学习,使学生在掌握数据库系统基本概念、原理的基础上,能熟练使用SQL语言在某一个具体的数据库管理系统上进行应用操作;掌握数据库原理、方法及步骤,具有数据库设计以及应用数据库管理系统的基本能力。

达成支撑专业学习成果相应的指标点。

课程目标对学生能力要求如下:课程目标1. 逐步掌握科学的学习方法,阅读并理解数据库相关教材、参考书和科技文献,不断地扩展知识面,增强独立思考的能力,更新知识结构。

课程目标2. 掌握关系代数语言的使用;能够熟练使用SQL语句进行数据操纵和数据定义。

课程目标3. 了解关系模型的基本概念;掌握关系数据库规范化理论,能够利用分解算法将关系模式进行合理的分解;掌握数据库设计方法和数据库系统维护的相关概念和应用。

课程目标4. 能够在MySQL平台环境和开发工具下使用SQL语句进行数据操纵和数据定义。

课程目标5. 具备良好的沟通、表达和团队协作能力。

三、教学内容与课程目标的关系第1章数据库系统的基本原理1.章节学时:1学时2.教学内容:(1)数据库系统概述(数据库系统概念;数据管理技术的产生和发展;数据库系统组成)。

数据库原理与应用教程NO10

数据库原理与应用教程NO10

2.3 )全局变量 全局变量全局变量由SQL Server系统提供 并赋值的变量,名字由@@符号开始。用户不 能建立全局变量,也不可能使用SET语句去修 改全局变量的值。通常应该将全局变量的值赋 给在同一个批中的局部变量,以便保存和处理。 全局变量分为两类: 与连接有关的全局变量,如:@@rowcount 影响的行数; 与 系 统 内 部 信 息 有 关 的 全 局 变 量 。 如 @@version SQL的版本号。 全局变量不可由用户定义、赋值
(6). 双字节字符串数据类型,unicode字符类型(N代表 国际语言National Language)一个字符/汉字占两个字节 定长字符串(nchar):,空间不足截断尾部,空间多余空 格填充; 变长字符串(nvarchar):空间不足截断尾部,多余空间不 填空格; 变长字符串(ntext):存储大小是所输入字符/汉字个数的 两倍(以字节为单位)。 (7). 二进制数据类型:存储Word文档、声音、图表、 图像(包括GIF、BMP文件)等数据。 在SQL Server中,除上述26种数据类型外,允许用户 在系统数据类型的基础上建立自己定义的数据类型。但值 得注意的是每个数据库中所有用户定义的数据类型名称必 须唯一。建立自己定义的数据类型则需要使用系统存储过 程sp_addtype来建立。
1.1) 数据类型
类型 名称 取值范围
整数
位型 货币型
bigint、 int、 smallint、 tinyint
Bit money、 smallmoney
(±922亿亿) 8 2^63 (±21亿) 4 2^31 (±32768) 2 2^15 (0-255) 1
由0和1表示真、假。 (±922万亿) (±21万),精确到万分之一。 ±1038-1,最大位数38位 (±1.79E+308) (±3.40E+38)

SQL高级应用

SQL高级应用

第10章 SQL 高级应用 10章
主讲人: 主讲人:朱晓丽
1、 聚 合 函 数 ( 1)
数据库的一个最大的特点: 数据库的一个最大的特点:将各种分散的数据按 照一定规律、条件进行分类组合,最后得出统计结果; 照一定规律、条件进行分类组合,最后得出统计结果; SQL Server 提供了聚合函数,用来完成一定的统 提供了聚合函数, 计功能; 计功能; 聚合函数对一组值执行计算并返回单一的值; 聚合函数对一组值执行计算并返回单一的值; 函数外, 除Count函数外,聚合函数忽略空值(Null) 函数外 聚合函数忽略空值( ) 聚合函数经常与 select 语句的 group by 子句一同 使用; 使用;
第10章 SQL 高级应用 10章
主讲人: 主讲人:朱晓丽
第10章 SQL 高级应用 10章
主讲人: 主讲人:朱晓丽
第10章 SQL 高级应用 10章
主讲人: 主讲人:朱晓丽
(2)比较 compute 和 group by
区别: 区别: – – group by 生成单个结果集: 生成单个结果集: compute 生成多个结果集; 生成多个结果集;
第10章 SQL 高级应用 10章
主讲人: 主讲人:朱晓丽
本人网站 欢迎访问
第10章 SQL 高级应用 10章
主讲人: 主讲人:朱晓丽
本 章 主 要 内 容
Transact-SQL 高级查询语句; - 高级查询语句; 事务处理; 事务处理; 游标; 游标; 数据锁定; 数据锁定; 分布式查询; 分布式查询;

子句中, 注:在 compute 或 compute by 子句中,不能包 数据类型; 含 ntext、text 或 image 数据类型; 、

《数据库原理》数据库技术与应用-文档资料

《数据库原理》数据库技术与应用-文档资料
第第22章章visualfoxpro60visualfoxpro60基础基础第第33章章项目管理器项目管理器第第44章章创建数据库和表创建数据库和表表的基本操作表的基本操作索引和排序索引和排序多表操作多表操作查询与视图查询与视图第第11章章数据库基本原理语言sqlsql第第1010章章报表设计报表设计第第1111章章程序设计基础程序设计基础第第1212章章程序设计程序设计第第1313章章表单设计表单设计第第1414章章菜单设计菜单设计第第1515章章应用程序的生成与发布应用程发展中所起的作用越来越大信息资源的开发和利用水平已成为衡量一个国家综合国力的重要标志之一
应用程序A1 应用程序A2 数据集S1 数据集S2
应用程序An

图1-1 数据的人工管理
数据集Sn

2019/3/15
2.文件系统阶段
20世纪50年代后期到20世纪60年代中期,出现了磁鼓、磁盘等直接存取数据的存 储设备。1954年出现了第一台商业数据处理的电子计算机UNIVACI,标志着计算机开 始应用于以加工数据为主的事务处理。人们得益于计算机惊人的处理速度和大容量的 存储能力,从而解脱了从大量传统纸张文件中寻找数据的困难,这种基于计算机的数 据处理系统也就从此迅速发展起来。 这种数据处理系统是把计算机中的数据组织成相互独立的数据文件,系统可以按 照文件的名称对其进行访问,对文件中的记录进行存取,并可以实现对文件的修改、 插入和删除,这就是文件系统。文件系统实现了记录内的结构化,即给出了记录内各 种数据间的关系。但是,文件从整体来看却是无结构的。其数据面向特定的应用程序, 因此数据共享性、独立性差,且冗余度大,管理和维护的代价也很大。

数据库技术

数据模型

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

【例10.5】 给出以下程序的执行结果。
USE school SELECT allocate.班号,allocate.课程号,teacher.姓名 FROM allocate JOIN teacher ON (allocate.教师编号=teacher.编号) ORDER BY allocate.班号

【例10.3】 给出以下程序的执行结果。
USE school SELECT student.班号,course.课程名,AVG(score.分数) AS '平均分' FROM student,course,score图10.3 程序执行结果 WHERE student.学号=score.学号 AND course.课程号=score.课程号 GROUP BY student.班号,course.课程名 WITH CUBE
COMPUTE BY子句可以用同一SELECT语句既查看明 细行,又查看汇总行。可以计算子组的汇总值,也可以计算 整个结果集的汇总值。COMPUTE 子句需要以下信息:
可选的BY关键字。该关键字可按对一列计算指定的 行聚合。 行聚合函数名称。例如,SUM、AVG、MIN、 MAX或COUNT。 要对其执行行聚合函数的列。
【例10.1】 给出以下程序的执行结果。
USE school SELECT 学号,课程号,分数 FROM score WHERE 学号 IN (103,105) ORDER BY 学号 COMPUTE SUM(分数)
解:该程序中SELECT语句使用简单COMPUTE子句生 成score表中分数列的求和总计。执行结果如下图所示。
(1)COMPUTE生成的结果集 COMPUTE所生成的汇总值在查询结果中显示为分离的结 果集。包括COMPUTE子句的查询的结果类似于控制中断报表, 即汇总值由指定的组来控制的报表。可以为各组生成汇总值, 也可以对同一组计算多个聚合函数。 当COMPUTE带有可选的BY子句时,符合SELECT条件的 每个组都有两个结果集:
第10章 SQL高级应用
10.1 SELECT高级查询
10.1.1 数据汇总 为决策支持系统生成聚合事务的汇总报表是一项复杂并 且相当消耗资源的工作。SQL Server 2005提供两个灵活且强 大的工具,即SQL Server 2005分析服务和报表服务。 但是对于生成简单汇总报表的应用程序,可使用以下运 算符: CUBE或ROLLUP运算符。均为GROUP BY子句 的一部分。 COMPUTE或COMPUTE BY运算符。均与 GROUP BY子句相关联。
在SQL Server 2005中,子查询还要受下面的条件限制: 通过比较运算符引入的子查询的选择列表只能包括一个 表达式或列名称(分别对SELECT *或列表进行EXISTS 和IN操作除外)。 如果外部查询的WHERE子句包括某个列名,则该子句 必须与子查询选择列表中的该列在连接上兼容。 子查询的选择列表中不允许出现ntext、text和image数据 类型。 由于不修改数据的比较运算符(指其后未接关键字IN、 ANY或ALL等)的引入,这类子查询必须返回单个值, 而且子查询中不能包括GROUP BY和HAVING子句。 包括GROUP BY的子查询不能使用DISTINCT关键字。 不能指定COMPUTE和INTO子句。
USE school
SELECT allocate.班号,allocate.课程号,teacher.姓名 FROM allocate INNER JOIN teacher ON (allocate.教师编号=teacher.编号) ORDER BY allocate.班号
2.外连接 仅当至少有一个同属于两表的行符合连接条件时,内连接 才返回行。内连接消除与另一个表中的任何行不匹配的行。而 外连接会返回FROM子句中提到的至少一个表或视图的所有行, 只要这些行符合任何WHERE或HAVING搜索条件。 将检索通过左外连接引用的左表的所有行,以及通过右外 连接引用的右表的所有行。全外连接中两个表的所有行都将返 回。 SQL Server 2005对在FROM子句中指定的外连接使用以下 关键字: LEFT OUTER JOIN或LEFT JOIN(左外连接) RIGHT OUTER JOIN或RIGHT JOIN(右外连接) FULL OUTER JOIN或FULL JOIN(全外连接)
(3)全外连接 若要通过在连接结果中包括不匹配的行保留不匹配信息, 可以使用全外连接。SQL Server 2005提供全外连接运算符 FULL OUTER JOIN,不管另一个表是否有匹配的值,此运算 符都包括两个表中的所有行。
【例10.8】 给出以下程序的执行结果。
USE school INSERT INTO allocate(班号,课程号) VALUES('1031','9-888') SELECT allocate.班号,allocate.课程号,teacher.姓名 FROM allocate FULL OUTER JOIN teacher ON (allocate.教师编号=teacher.编号) ORDER BY allocate.班号 DELETE allocate WHERE 班号='1031' AND 课程号='9-888'
【例10.2】 给出以下程序的执行结果。
USE school SELECT 学号,课程号,分数 FROM score WHERE 学号 IN (103,105) ORDER BY 学号 COMPUTE SUM(分数) BY 学号
解:该程序中的查询在COMPUTE子句中加入可选的BY 关键字,以生成每个组的小计。执行结果如下图所示。
10.1.2 复杂连接查询 通过连接,可以根据各个表之间的逻辑关系从两个或多个 表中检索数据。连接表示SQL Server 2005应如何使用一个表 中的数据来选择另一个表中的行。 可在FROM或WHERE子句中指定连接。连接条件与 WHERE和HAVING搜索条件组合,用于控制FROM子句引用 的基表中所选定的行。 在FROM子句中指定连接条件,有助于将这些连接条件与 WHERE子句中可能指定的其他搜索条件分开,指定连接时建 议使用这种方法。简单的子句连接语法如下: FROM 第一个表名 连接类型 第二个表名 [ON (连接条件)] 其中,连接类型有内连接、外连接或交叉连接。
(2)比较COMPUTE和GROUP BY的功能 COMPUTE和GROUP BY之间的区别汇总如下: GROUP BY生成单个结果集。每个组都有一个只包含分组 依据列和显示该组子聚合的聚合函数的行。选择列表只能 包含分组依据列和聚合函数。 COMPUTE生成多个结果集。一类结果集包含每个组的明 细行,其中包含选择列表中的表达式。另一类结果集包含 组的子聚合,或SELECT语句的总聚合。选择列表可包含 除分组依据列或聚合函数之外的其他表达式。聚合函数在 COMPUTE子句中指定,而不是在选择列表中。
(2)右外连接 右外连接简称为右连接,其结果中包括第二个命名表 (“右”表,出现在JOIN子句的最右边)中的所有行,不包括 左表中的不匹配行。
【例10.7】 给出以下程序的执行结果。
USE school INSERT INTO allocate(班号,课程号) VALUES('1031','9-888') SELECT allocate.班号,allocate.课程号,teacher.姓名 FROM allocate RIGHT JOIN teacher ON (allocate.教师编号=teacher.编号) ORDER BY allocate.班号 DELETE allocate WHERE 班号='1031' AND 课程号='9-888'
带ROLLUP参数会依据GROUP BY后面所列第一个字段 做汇总运算。 【例10.4】 给出以下程序的执行结果。图10.4 程序执行 结果
USE school SELECT student.班号,AVG(score.分数) AS '平均分' FROM student,course,score WHERE student.学号=score.学号 GROUP BY student.班号 WITH ROLLUP
(1)左外连接 左外连接简称为左连接,其结果包括第一个命名表(“左” 表,出现在JOIN子句的最左边)中的所有行,不包括右表中 的不匹配行。
【例10.6】 给出以下程序的执行结果。
USE school INSERT INTO allocate(班号,课程号) VALUES('1031','9-888') SELECT allocate.班号,allocate.课程号,teacher.姓名 FROM allocate LEFT JOIN teacher ON (allocate.教师编号=teacher.编号) ORDER BY allocate.班号 DELETE allocate WHERE 班号='1031' AND 课程号='9-888'
2.GROUP BY子句 GROUP BY子句的语法格式为:
[GROUP BY [ALL] 分组表达式 [,…n] [WITH {CUBE | ROLLUP }] ]
ALL。包含所有组和结果集,甚至包含那些任何行都不满 足WHERE子句指定的搜索条件的组和结果集。如果指定了 ALL,将对组中不满足搜索条件的汇总列返回空值。 CUBE。指定在结果集内,不仅包含由GROUP BY提供的 正常行,还包含汇总行。在结果集内返回每个可能的组和 子组组合的GROUP BY汇总行。GROUP BY汇总行在结果 中显示为NULL,但可用来表示所有值。 ROLLUP。指定在结果集内不仅包含由GROUP BY提供的 正常行,还包含汇总行。按层次结构顺序,从组内的最低 级别到最高级别汇总组。
相关文档
最新文档