第5章 数据库高级查询
- 格式:ppt
- 大小:1.52 MB
- 文档页数:76
第1章数据库设计数据库设计是建立数据库及其应用系统的技术,信息系统开发和建设中的核心技术数据库设计的主要工作●需求分析明确系统功能和实体抽象●E-R图进行概念结构设计,完成的E- R图●转换数据模型相符合的逻辑结构●使用PowerDesigner工具生成数据库模型1.1数据需求分析数据需求分析的方法数据需求分析是整个数据库设计的基础,需收集数据库|用户的信息内容和处理要求,并加以规范化和分析。
需求分析的任务是通过详细调查现实世界要处理的对象,了解原系统(手工系统或计算机系统)的工作概况,明确用户各种需求,然后在此基础上确定新系统的功能。
数据需求分析中常用的调查方法数据需求分析的重点是调查收集和分析用户在数据管理过程中的信息要求、处理要求、安全性和完整性要求等。
(1)跟班作业(2 )开调查会(3)请“专人”介绍(4)询问(5)设计调查表,请用户填写(6)查阅记录椭圆表示数据处理,动态连接线表示数据的流向,双杠线表示数据存储。
1.2概念结构设计和E-R模型概念结构设计和E R模型概念模型反映了信息系统所对应的现实事件中各部门、各务的信息结构、信息流动情况、信息间的互相制约关系以及各门或各业务对信息存储、查询和加工的要求等。
核心内容是概念模型的表示方法最常用:“实体关系”方法,简称E-R图ER图中需要在实体联系的两端添加关联的个数1.3逻辑结构设计逻辑结构设计数据库的逻辑结构设计就是将在概念结构设计阶段设计完成的E-R图,转换为与所选用的DBMS产品所支持的数据模型相符合的逻辑结构。
将E-R图转换为关系模型的实质是:将实体、实体的属性和实体之间的联系转化为关系模式。
其中实体和联系都可以表示成关系E-R图中的属性可以转换为关系的属性。
逻辑结构设计一对一联系还可以是与联系的任意一端实体所对应的关系模式合并,此时需要在该关系模式的属性中加入另一个实体的主键和联系本身的属性。
一般情况下,-对多联系不转换为一个独立的关系模式,而是与多端实体所对应的关系模式合并。
5.1 名词解释(1)SQL模式:SQL模式是表和授权的静态定义。
一个SQL模式定义为基本表的集合。
一个由模式名和模式拥有者的用户名或账号来确定,并包含模式中每一个元素(基本表、视图、索引等)的定义。
(2)SQL数据库:SQL(Structured Query Language),即‘结构式查询语言’,采用英语单词表示和结构式的语法规则。
一个SQL数据库是表的汇集,它用一个或多个SQL模式定义。
(3)基本表:在SQL中,把传统的关系模型中的关系模式称为基本表(Base Table)。
基本表是实际存储在数据库中的表,对应一个关系。
(4)存储文件:在SQL中,把传统的关系模型中的存储模式称为存储文件(Stored File)。
每个存储文件与外部存储器上一个物理文件对应。
(5)视图:在SQL中,把传统的关系模型中的子模式称为视图(View),视图是从若干基本表和(或)其他视图构造出来的表。
(6)行:在SQL中,把传统的关系模型中的元组称为行(row)。
(7)列:在SQL中,把传统的关系模型中的属性称为列(coloumn)。
(8)实表:基本表被称为“实表”,它是实际存放在数据库中的表。
(9)虚表:视图被称为“虚表”,创建一个视图时,只把视图的定义存储在数据词典中,而不存储视图所对应的数据。
(10)相关子查询:在嵌套查询中出现的符合以下特征的子查询:子查询中查询条件依赖于外层查询中的某个值,所以子查询的处理不只一次,要反复求值,以供外层查询使用。
(11)联接查询:查询时先对表进行笛卡尔积操作,然后再做等值联接、选择、投影等操作。
联接查询的效率比嵌套查询低。
(12)交互式SQL:在终端交互方式下使用的SQL语言称为交互式SQL。
(13)嵌入式SQL:嵌入在高级语言的程序中使用的SQL语言称为嵌入式SQL。
(14)共享变量:SQL和宿主语言的接口。
共享变量有宿主语言程序定义,再用SQL 的DECLARE语句说明, SQL语句就可引用这些变量传递数据库信息。
目录第1部分课程的教与学第2部分各章习题解答及自测题第1章数据库概论1.1 基本内容分析1.2 教材中习题1的解答1.3 自测题1.4 自测题答案第2章关系模型和关系运算理论2.1基本内容分析2.2 教材中习题2的解答2.3 自测题2.4 自测题答案第3章关系数据库语言SQL3.1基本内容分析3.2 教材中习题3的解答3.3 自测题3.4 自测题答案第4章关系数据库的规范化设计4.1基本内容分析4.2 教材中习题4的解答4.3 自测题4.4 自测题答案第5章数据库设计与ER模型5.1基本内容分析5.2 教材中习题5的解答5.3 自测题5.4 自测题答案第6章数据库的存储结构6.1基本内容分析6.2 教材中习题6的解答第7章系统实现技术7.1基本内容分析7.2 教材中习题7的解答7.3 自测题7.4 自测题答案第8章对象数据库系统8.1基本内容分析8.2 教材中习题8的解答8.3 自测题8.4 自测题答案第9章分布式数据库系统9.1基本内容分析9.2 教材中习题9的解答9.3 自测题9.4 自测题答案第10章中间件技术10.1基本内容分析10.2 教材中习题10的解答10.3 自测题及答案第11章数据库与WWW11.1基本内容分析11.2 教材中习题11的解答第12章 XML技术12.1基本内容分析12.2 教材中习题12的解答学习推荐书目1.国内出版的数据库教材(1)施伯乐,丁宝康,汪卫. 数据库系统教程(第2版). 北京:高等教育出版社,2003(2)丁宝康,董健全. 数据库实用教程(第2版). 北京:清华大学出版社,2003(3)施伯乐,丁宝康. 数据库技术. 北京:科学出版社,2002(4)王能斌. 数据库系统教程(上、下册). 北京:电子工业出版社,2002(5)闪四清. 数据库系统原理与应用教程. 北京:清华大学出版社,2001(6)萨师煊,王珊. 数据库系统概论(第3版). 北京:高等教育出版社,2000(7)庄成三,洪玫,杨秋辉. 数据库系统原理及其应用. 北京:电子工业出版社,20002.出版的国外数据库教材(中文版或影印版)(1)Silberschatz A,Korth H F,Sudarshan S. 数据库系统概念(第4版). 杨冬青,唐世渭等译. 北京:机械工业出版社,2003(2)Elmasri R A,Navathe S B. 数据库系统基础(第3版). 邵佩英,张坤龙等译. 北京:人民邮电出版社,2002(3)Lewis P M,Bernstein A,Kifer M. Databases and Transaction Processing:An Application-Oriented Approach, Addison-Wesley, 2002(影印版, 北京:高等教育出版社;中文版,施伯乐等译,即将由电子工业出版社出版)(4)Hoffer J A,Prescott M B,McFadden F R. Modern Database Management. 6th ed. Prentice Hall, 2002(中文版,施伯乐等译,即将由电子工业出版社出版)3.上机实习教材(1)廖疆星,张艳钗,肖金星. PowerBuilder 8.0 & SQL Server 2000数据库管理系统管理与实现. 北京:冶金工业出版社,2002(2)伍俊良. PowerBuilder课程设计与系统开发案例. 北京:清华大学出版社,20034.学习指导书(1)丁宝康,董健全,汪卫,曾宇昆. 数据库系统教程习题解答及上机指导. 北京:高等教育出版社,2003(2)丁宝康,张守志,严勇. 数据库技术学习指导书. 北京:科学出版社,2003(3)丁宝康,董健全,曾宇昆. 数据库实用教程习题解答. 北京:清华大学出版社,2003 (4)丁宝康. 数据库原理题典. 长春:吉林大学出版社,2002(5)丁宝康,陈坚,许建军,楼晓鸿. 数据库原理辅导与练习. 北京:经济科学出版社,2001第1部分课程的教与学1.课程性质与设置目的现在,数据库已是信息化社会中信息资源与开发利用的基础,因而数据库是计算机教育的一门重要课程,是高等院校计算机和信息类专业的一门专业基础课。
第一章数据库的设计良好的数据库设计1、节省数据库的存储空间2、能够保证数据的完整性3、方便进行数据库应用系统的开发糟糕的数据库设计1、效率低下2、更新和检索数据时会出现许多问题设计数据库的步骤1、需求分析阶段分析客户的业务和数据处理需求⑴收集信息⑵标识对象(实体)⑶标识每个对象需要存储的详细信息⑷标识对象之间的关系2、概要设计阶段绘制数据库的E-R模型图(实体关系图)3、详细设计阶段将E-R图转换为多张表,进行逻辑设计,并应用数据库设计的三大规范进行设计4、代码编写阶段映射基数1一对一2一对多3多对一4多对多实体关系图矩形表示实体集椭圆形表示属性菱形表示关系集直线用来连接设计数据库问题1 信息重复2 更新异常3 插入异常(无法表示某些信息)4 删除异常(丢失有用的信息)数据库设计的三大规范理论一第一范式的目标是确保每列的原子性二第二范式的目标是确保表中的每列都和主键相关三第三范式的目标是确保每列都和主键直接相关,而不是间接相关(不能传递依赖)规范化和性能的关系在必要的情况下允许适当的数据冗余第二章数据库的实现一建库ues mastergoif exists (select * from sysdatabases where name ='数据库名字')drop database 数据库名--判断这个数据库名字是否存在,如果存在删除create database 数据库名on [primary](name='',filename='',size ='', 建立数据库的主文件如果需要建立次要文件(ndf) 用逗号隔开maxsize ='',filegrowth ='')log on(name ='',filename='',size ='', 建立日志文件如果建立多个日志文件在后面用逗号隔开maxsize ='',filegrowth ='')go -- 批处理二建表ues 数据库名字goif exists (select * from sysobjects where name ='表名')drop table 表名--判断是否有这个名字的表create table 表名(字段名数据类型列的特征如stuid int identity(1,1) not null --identity 表示是否为自动增长)go三加约束1 主键约束(primary key constraint) --constraint 约束alter table 表名add constraint 约束名(PK_***) primary key(约束的字段)2 唯一约束(unique constraint)alter table 表名add constraint 约束名(uq_***) unique(约束的字段)3 检查约束(check constraint)alter table 表名add constraint 约束名(ck_***) check(约束的条件)4 默认约束(default constraint)alter table 表名add constraint 约束名(df_***) default('默认值') for 约束的字段5 外建约束(foreign key constraint)alter table 表名add constraint 约束名(fk_***) foreign key(约束的字段) references 主表的表名(主表的字段)总结create database 建库create table 建表add constraint 加约束drop database 删库drop table 删表drop constraint 删约束use master select * from sysdatabases 判断是否有库名select * from sysobjects 判断是否有表名完整性1 实体完整性(保证数据是唯一的如主键\唯一键\标示列)2 引用完整性(保证两表数据一致如外键)3 域完整性(保证数据的准确性如检查约束\默认约束\非空)三层安全模型1 登陆帐号-- 决定登陆服务windows 身份验证exec sp_grantlogin 'windows域名\域帐户'sql 身份验证exec sp_addlogin '帐户名','密码'2 数据库用户--访问数据库use 数据库名goexec sp_grantdbaccess '登陆帐户',('数据库用户') 如果不写数据库用户默认为登陆帐号名3 权限--在数据库里的操作use 数据库名gogrant 权限(增,删,改,查,建表(create table)) on 表名to 用户名第三章T-SQL编成使用变量一局部变量declare @变量名类型赋值: 1、set @变量名= 值2、select @变量名=值二全局变量@@error 最后一个T-SQL错误的错误号@@identity 最后一次插入的标示值@@language 当前使用的语言的名称@@max_connections 可以创建的同时连接的最大数目@@rowcount 受上一个sql语句影响的行数@@servername 本地服务器的名称@@servicename 该计算机上的sql服务的名称@@timeticks 当前计算机上每刻度的微秒数@@transcount 当前连接打开的事物数@@version sql server 的版本信息输出语句1、print 局部变量或字符串2、select 局部变量as 自定义列名(查询语句的特殊应用)逻辑控制语句1、if(条件)begin -- 开头语句end --结束else --为可选begin -- 开头语句end --结束2、while (条件)语句[break]3、casewhen 条件1 then 结果1when 条件2 then 结果2[else 其他结果]end批处理语句以一条命令的方式来处理一组命令的过程称为批处理批处理的好处就是能够简化数据库的管理第四章高级查询一简单子查询select *** from 表1 where 字段1 >(子查询) 它等于一个等值内连接将子查询和比较运算符联合使用,必须保证子查询返回的值不能多与一个二in 和not in 子查询in 后面的子查询可以返回多条记录select *** from 表1 where 字段1 in(not in)(子查询)三exists not exists子查询if exists (子查询)语句如果子查询的结果非空,则exists(子查询) 将返回真(true) ,否则返回假(false)第五章事务、索引和试图一事务:是一个整体,要么都成功,要么都失败事务时作为单个逻辑工作单元执行的一系列操作。
课程设计户籍管理系统一、课程目标知识目标:1. 让学生理解户籍管理系统的基本概念和功能,掌握相关术语。
2. 使学生掌握数据录入、查询、修改和删除等基本操作。
3. 帮助学生了解数据库的设计原则,学会使用简单的数据库查询语句。
技能目标:1. 培养学生运用计算机软件进行户籍管理系统操作的能力。
2. 培养学生分析问题、解决问题的能力,学会根据需求设计简单的数据库查询。
3. 提高学生的团队协作能力和沟通能力。
情感态度价值观目标:1. 培养学生对信息技术课程的兴趣,激发他们主动学习的积极性。
2. 增强学生的社会责任感,让他们意识到户籍管理系统在现实生活中的重要性。
3. 引导学生养成严谨、细致的工作态度,提高他们的信息素养。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为信息技术课程,旨在让学生掌握户籍管理系统的基本操作,提高他们的实践能力。
2. 学生特点:学生为八年级学生,对计算机操作有一定的基础,具备一定的信息素养。
3. 教学要求:课程内容要与实际应用紧密结合,注重培养学生的动手操作能力和问题解决能力。
1. 独立完成户籍管理系统的基本操作,如数据录入、查询、修改和删除。
2. 使用数据库查询语句,根据需求进行简单的数据查询。
3. 与团队成员协作,共同解决实际问题,提高团队协作能力。
4. 养成严谨、细致的工作态度,提高信息素养,为将来的学习和社会生活打下良好基础。
二、教学内容1. 引入户籍管理系统概念,介绍其功能和在实际生活中的应用。
- 教材章节:第一章 计算机与社会应用- 内容:户籍管理系统的定义、作用、发展历程及其在政府部门的应用。
2. 数据库基础知识,学习数据表的设计与创建。
- 教材章节:第三章 数据库基础知识- 内容:数据表的概念、字段类型、主键设置,以及使用数据库软件创建数据表。
3. 户籍管理系统操作,包括数据录入、查询、修改和删除。
- 教材章节:第四章 数据库操作- 内容:数据录入方法、简单查询与高级查询、修改和删除数据的操作步骤。
第6章 ⾼级数据查询 1[单选题]设在某SELECT语句的WHERE⼦句中,需要对Grade列的空值进⾏处理。
下列关于空值的操作中,错误的是__________。
A.Grade IS NOT NULL B.Grade IS NULL C.Grade = NULL D.NOT (Grade IS NULL) 参考答案:C 2[单选题]若要求查找姓名中第⼆个字为‘阳’字的学⽣的学号和姓名,下列SQL语句中,哪⼀个(些)是正确的? Ⅰ.SELECT S#,SNAME FROM S WHERE SNAME=‘_阳%’ Ⅱ.SELECT S#,SNAME FRQM S WHERE SNAME LIKE‘_阳%’ Ⅲ.SELECT S#,SNAME FROM S WHERE SNAME LIKE‘%阳%’A.只有ⅠB.只有ⅡC.只有ⅢD.都正确 参考答案:B 参考解析:第(2)~(5)题基于“学⽣—选课—课程”数据库中的3个关系: S(S#,SNAME,SEX,AGE), SC(S#,C#,GRADE),C(C#,CNAME,TEACHER),它们的主码分别是S#、(S#,C#)、C# 3[填空题]SQL语⾔⽀持查询结果的并、交、差运算分别采⽤下列运算符:( ) 、( ) 、( ) 参考解析:UNION,INTERSECT,EXCEPT 4[单选题]数据库管理系统为提⾼数据查询效率,可能会采⽤如下索引技术: Ⅰ.有序索引Ⅱ.聚集索引 Ⅲ.树型索引Ⅳ.散列(哈希)索引 其中,将属性值作为参数,不采⽤索引键值⽐较,⽽是采⽤⼀定的计算⽅法定位数据的有( )A.仅ⅠB.仅Ⅰ、Ⅱ和ⅢC.仅ⅣD.都 参考答案:C 5[单选题]现要利⽤Student表查询年龄最⼩的学⽣的姓名和年龄。
下列实现此功能的查询语句中,正确的是__________。
A.SELECT Sname, MIN(Sage) FROM Student B.SELECT Sname, Sage FROM Student WHERE Sage = MIN(Sage) C.SELECT 1 Sname, Sage FROM Student D.SELECT 1 Sname, Sage FROM Student ORDER BY Sage 参考答案:D 6[单选题]下列关于保持数据完整性的叙述中,不正确的是( )。