《06 第五章,数据库技术.ppt》由会员分享,可在线阅读,更多相关《06 第五章,数据库技术.ppt(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第五章 数据库技术5.1 数据库基本概念 本章将从应用出发,介绍有关数据库技术的基本概念,数据库设计的基本方法,并着重介绍数据库语言SQL。5.1.1 数据库技术与数据库系统1、数据库管理技术 数据的管理大致经历了 人工管理文件管理数据库管理 这三个阶段a)人工管理 在计算机发展初期,主要用于科学计算。科学家在使用计算机进行计算之前,手动的把相关数据录入计算机。b)文件管理 随着计算机技术的发展,出现了大容量外部存储器(硬盘),计算机开始用于经济领域,许多数据需要长久保存。这时候的数据主要以“文件”的形式存放在外部存储器上,由程序来共享使用。缺点:数据冗余大、数据与程序的耦合度太深,缺乏对数据
2、的控制。c)数据库管理 数据库的管理具有如下特点:(1)数据是结构化的,提高了访问效率,减少了不一 致性。(2)数据具有独立性。当数据的物理结构发生变化时,无需修改程序,只需要在DBMS中进行修改。(3)保证了数据的完整性、安全性和并发性 因为所有对数据的访问都要经过DBMS来处理,因此,在DBMS层面,可以对访问行为进行诸多限制。2、数据库管理系统 DBMS是在操作系统的支持下,对数据进行管理,保障数据的独立性、完整性、安全性。他负责数据库中所有数据的存储、检索、修改以及安全保护等,数据库内的所有活动都在其控制下进行。其主要功能如下:(1)定义数据库,包括逻辑定义,存储定义,保密定义等等(2
3、)管理数据库,包括数据的增加、删除、修改 以及安全性、并发性控制(3)建立和维护数据库,包括数据库的建立、数据更新、数据库的备份和恢复、性能监视等等。(4)数据通信,提供与操作系统的相关接口 DBMS提供的一个非常主要的功能是SQL语言,使用这个语言可以对数据库进行非常多的操作。根据功能的不同,SQL语言又分为3类:1、数据描述语言(DDL),主要对数据库进行定义,如定义表,定义视图、定义索引 2、数据操纵语言(DML),主要对数据进行操作,如插入、查询、修改、删除DBMS还应该具有系统运行控制功能(1)系统总控制,集中调度各模块(2)访问控制,核对用户权限(3)并发控制,协调多个用户同时访问
4、(4)保密控制,提供加密功能(5)数据完整性控制(6)数据访问,对实际的物理文件进行访问(7)通信控制,与用户程序进行通信按模块划分:(1)数据装入模块,把其他形式的数据导入 数据库(2)工作日志模块,提供日志功能(3)性能监督模块,对数据库的运行状态进行 检测,便于DBA对数据库进行调优(4)系统恢复模块,支持数据库的备份、恢复(5)重新组织模块,对数据库结构进行更改3、数据库系统的构成5.1.2 数据描述1、信息的存在形态 (1)现实世界 世界上客观存在的各种信息 (2)观念世界 在人们的大脑中对信息进行规范整理 实体、属性 (3)数据世界 将信息转化为便于计算机处理的形式 表、记录、字段
5、、键2、实体间的联系 实体与实体并不是完全割裂的,他们之间是有联系的。可以分为3类:(1)1:1的联系 实体“人”之间有“夫妻”关系。一个男人只能拥有一个妻子,一个女人也只能拥有一个丈夫。1对1关系在现实中非常少见。“学生”和“学号”之间是不是1:1的关系?(2)1:n 的联系 实体“学院”和实体“专业”之间的“所属”关系。一个学院可以拥有多个专业,一个专业只能属于一个学院。这种关系很常见。(3)m:n 的联系 实体“学生”和实体“课程”之间的“修习”关系。一个学生可以修习多门课程,一门课程可以被多名学生修习。5.1.3 数据模型 数据模型是对客观事物及其联系的数据描述,它反映了实体内部以及实
6、体与实体之间的联系。因此,数据模型是数据库设计的核心。1、层次模型(已淘汰)2、网状模型(已淘汰)3、关系模型 关系模型用二维表来表示一个关系。每一行称为一个记录,每一列称为一个属性。关系模型的优点:(1)数据结构简单,都用表来表示 (2)具有很高的数据独立性,数据模型与物理存储无关。(3)可以直接处理多对多的关系 (4)有坚实的理论基础5.2 关系代数1、并运算2、差运算3、交运算4、笛卡尔积(全连接)5、选择运算 根据给定条件,得出原关系的子集6、投影运算7、连接运算 将2个关系进行笛卡尔积,然后按给定条件进行选择和投影 通过以上若干种运算,就可以在关系数据库中找到我们感兴趣的数据例5.9
7、 设有关系T(教师)和P(课程),使用关系运算得出讲授课程G1的教师姓名、所在系、职称。5.3 数据库设计5.3.1 数据库设计的基本概念 一般来说,数据库的设计过程要经历3个大的阶段,即可行性分析、系统设计,实施运行。常用数据库系统:Oracle 大型商业数据库,绝对主流MS SQL 中小型数据库,微软公司出品MySQL 开源数据库,应用广泛,一般配合 JAVA,PHP使用PowerBuilder、Visual Foxpro 单机应用Access 用于学习、练习5.4 SQL语言 SQL语言是结构化查询语言,通过简单的语法,能够对数据库进行非常灵活的操作。SQL语言只是一个标准,各个数据库厂
8、商在实现它的时候,或多或少的会有些不同,大型数据库(如Oracle)都会增加一些自己的“方言”。1、SQL语言的功能与特点一体化两种使用方式(联机交互、嵌入到编程语言中),统一的语法结构高度非过程化语言简洁、易学易用2、SQL的数据类型 定长字符串:CHAR 变长字符串:VARCHAR 整型:INTEGER 浮点型:DOUBLE 日期型:DATE3、SQL的语句结构 动词开始,有结束符4、SQL的命令分类查询数据操纵(增、删、改)数据定义(建立表、视图、索引)数据控制(授权)5.4.2 数据库的定义创建表、视图、索引修改表,视图5.4.3 数据查询 例5.13 查询所有学生的详细资料 例5.1
9、4 查询学生的学号和姓名 例5.15 查询学生的年龄 例5.16 在学生表查询结果中增加一列,字 段名为“状态”,值为“在校生”练习:教师职工号,教师姓名,职称利用where子句对结果进行筛选 例 5.17 找出所有男学生 例 5.18 找出年龄在2123岁之间的学生 例 5.19 找出21岁和23岁的学生 IN OR 补充:在stu_info表中查找所有姓王的同学 例5.20 在stu_info表中查找“火车终点站”信 息为空的学生 练习:在stu_info表中查找来自于“机电“类 院校,火车终点站不为空,的男同学,的信息使用子查询 5.21 用IN 子句查询有不及格成绩的学生 5.22 用
10、existsexists子句查询有不及格成绩的学生练习:用in 或 exist 查询“拥有超过130人的专业的院系”例5.24 左连接 left join on 连接条件 在student表和course表中,查询“电气工程及其自动化s”中专业选了软件技术基础这门课程的学生信息例5.23 自连接 在表stu_info中查询交谊舞分组情况,查询结果如下聚集函数对多行数据进行运算的一类函数。使用聚集函数时都要对数据进行分组,对每组进行聚集。在查询结果中,只能包含分组字段和聚集函数字段。使用 group by 子句进行分组使用 having子句对聚集结果进行筛选SUM AVG MIN MAX COU
11、NT 例5.25 在zhuanye表中统计我校2011级共有多少个专业例5.30 在stu_info表中统计男生和女生各有多少人练习:在stu_info表中统计每个班男生、女生各有多少人 提示:left(字段名,长度)可以对某字段的内容进行截取在student表中查询2011级电气工程及其自动化s专业的学生每个人选了多少门课在student表中查询2011级电气工程及其自动化s专业的学生中选了17门课的学生学号和姓名综合练习1、查询“01”课程比“02”课程成绩高的学生的信息及课程分数 我们给出的答案并不完美,对于没学过02课程的学生,查不出来2、查询平均成绩大于等于60分的学生编号和学生姓名
12、和平均成绩 3、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩 将null处理为0 isnull(score,0)ifnull(score,0)4、查询学过“张三”老师授课的学生的信息5、查询没学过张三老师授课的同学的信息 6、查询学过编号为“01”并且也学过编号为“02”的课程的同学的信息 思路1:先查询出学过01课程的学号,再拿这些学号去sc表中查询,看看是否存在学过02课的记录 思路2:查找学过01课或者学过02课的学生信息,然后根据学号分组,若某学号下记录数为2条,则该生是既学过01也学过027、查询没有学全所有课程的学生的信息 思路:先查询课程表,看看一共有多少门课。然后查询选课表,凡是数量少于总数的,即没有学全8、查询至少有一门课与学号为“01”的同学所学相同的同学的信息 思路:先看看01学生都选了哪些课,然后其他同学所学的课程中,如果课程代码位于上述集合中,则显示出来。注意去除重复记录9、查询和“01”号的同学学习的课程完全相同的其他同学的信息 思路:把每个学生和01学生学过的共同的课都列出来,然后统计数目,如果数目等于01学生学过的所有课,则认为是符合条件的。10、查询没学过“张三”老师讲授的任一门课程的学生姓名 思路:先把学过张三老师课程的学生找出来,在用not in进行筛选11、查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩