第三章 数据管理
一、关系数据库的建立
1.创建数据库和数据表
数据库是长期存储于计算机内、有组织的、可共享的数据集合。数据库中的数据以一定的数据模型组织、描述和存储在一起,具有尽可能小的冗余度、较高的数据独立性和易扩展性的特点,并可在一定范围内为多个用户共享。这种数据集合具有如下特点:①尽可能不重复,以最优方式为某个特定组织的多种应用服务;②其数据结构独立于使用它的应用程序;③对数据的增加、修改、删除、查询由统一软件管理和控制。数据表是数据库最重要的组成部分之一。目前几乎所有的主流数据管理系统都支持关系数据模型。
创建关系数据库一般包括两个步骤:①创建数据库;②在数据库创建数据表:确定数据表中各字段的名称→设置各个字段的属性,包括字段的数据类型、字段说明和对字段的约束条件等→确定数据表的主键。
2.修改表的结构
一般的数据库管理系统软件都允许用户在创建好数据表后,甚至输入数据后再对表的结构进行修改。一般修改数据表的结构包括添加、删除、移动和改变字段类型等操作。需要注意的是,在创建完数据库和数据表后,如果要继续修改数据表,必须先打开数据库和数据表。
3.建立表之间的联系
数据库是多个数据表的集合,而数据表并不是相互孤立的,有些表之间是有一定联系的。表之间建立联系的方法有很多,最常见的办法是通过建立外键的办法使其和其他表之间产生关联。
4.数据库事务的处理
● 增加记录:记录的增加包括直接输入记录数据;通过设置字段的查阅方式输入记录数据;选择参照另一个数据表的输入方式输入数据;导入格式数据。
● 删除记录:直接在数据视图中删除数据;通过删除命令删除。
● 修改记录:直接在数据视图中修改;通过修改命令修改。
● 插入记录:直接在数据视图中插入;通过插入命令插入。
二、数据的查询
数据的基本查询方法
数据查询的方法有很多,包括了数据的选择、投影、排序、统计等。通常可以按选择查询字段→确定字段所在表/视图→设定结束条件等→运行、保存的顺序来创建一个查询。
(1)选择查询
选择查询是从一个关系中找出满足给定条件的记录的操作,是从行的角度进行的运算,选出满足条件的那些记录构成原关系的一个子集。在查询视图中,使用Select语句进行查询,如selcet * from student,意思是查询“student”表中所有记录,再如select * from student where 性别=
男
,意思是从“student”表中查询所有男生的记录。
(2)投影查询
投影查询是从一个关系中选出若干指定字段的值的操作,是从列的角度进行的运算,所得到的字段个数通常比原来关系中少或排序不同。如select 姓名,总分 from student,意思是从“student”表中查询所有学生的姓名和总分,再如select 姓名,总分 from student where 性别=
男
,意思是从“student”表中查询所有男生的姓名和总分。
(3)排序查询
查询检索得到的数据如果没有排序,数据通常按照底层表中的顺序显示。若要为查询检索到的数据添加排序,则需要在查询中添加“order by”选项。例如,select
姓名
,
总分
from student where 性别=
男
order by
总分
desc(desc为降序,asc为升序)。
(4)统计查询
数据统计的目的是将表的记录予以分组后,再加以计算。汇总功能的部分选项内容的功能如下:
group by:分组;sum:合计;avg:求平均;min:求最小值;max:求最大值,count:计算记录条数。
查询语言SQL用于查询数据:select。
数据操纵语言DML用于增、删、改数据:insert、delete、update。
数据定义语言DDL用于定义、撤销和修改数据库、表、视图及索引等:create、drop、alter。
数据控制语言DCL用于数据访问权限的控制:grant、revoke。
【例1】显示学生表中总分为优秀的所有学生的姓名、性别、学校名称。
select 姓名,性别,学校名称 from 学生表 where 总分=
优秀
【例2】从单项成绩表中找出单项得分为80~90的学生的学籍号和项目编号。
select 学籍号,项目编号,单项得分 from 单项成绩表 where 单项得分 between 80 and 90
【例3】统计每个项目中各等级的人数。
select count(学籍号)as 人数,项目编号,单项等级 from 单项成绩表 group by 项目编号,单项等级 order by 项目编号 desc
【例4】使用inner join(内联接)使表与表之间产生联系。
select 学生表.姓名,单项成绩表.项目编号,单项成绩表.单项等级 from 学生表 inner join 单项成绩表 on 学生表.学籍号=单项成绩表.学籍号
三、数据的备份与恢复
1.数据丢失的原因
数据丢失的原因包括人为原因、自然原因、软件原因、硬件原因。
2.常见的数据备份与恢复
数据备份就是将数据加以保留,保存数据的副本到备份设备,以便在系统遭受破坏或其他特定情况下,重新加以利用进行系统恢复的一个过程。数据恢复就是将数据恢复到事故之前的状态,数据恢复是与备份相对应,实际上可以将其看作备份操作的逆过程。备份是恢复的前提,恢复是备份的目的,无法恢复的备份是没有意义的。数据备份并非简单的文件复制,多数是指数据库备份,是数据库结构和数据的复制,以便在数据库遭到破坏时进行恢复。备份内容包括用户数据库和系统数据库内容。
数据备份的类型有完全备份、增量备份、差异备份。


数据恢复技术是指当计算机存储介质损坏,导致部分或全部数据不能访问读出时,通过一定的方法和手段将数据重新找回,使信息得以再生的技术。数据恢复技术不仅可恢复已丢失的文件,还可以恢复物理损伤的磁盘数据,以及不同操作系统的数据。数据恢复是计算机存储介质出现问题之后的一种补救措施,它既不是预防措施,也不是备份。所以,在一些特殊情况下数据将很难恢复,如数据被覆盖、低级格式化、磁盘盘片严重损伤等。数据库系统往往自身就非常复杂,有自己的一套完整的保护措施,一般情况下都可以靠自身冗余保证数据安全,备份与还原是其常用的手段。
随堂练习
一、单项选择题
1.在HeidiSQL中,可以通过添加( )的方法为数据表建立关联。
A.键 B.主键 C.外键 D.关键字
2.在数据库中查询数据时,可以通过以下步骤来进行:①设定约束条件;②确定字段所在的表/视图;③保存、运行;④选择查询字段。排序正确的是( )。
A.①②③④ B.④①②③ C.④②①③ D.②①④③
3.在数据库数据查询中,投影查询是从一个关系中选出若干指定( )的值的操作。
A.记录 B.字段 C.表 D.主键
4.下列关于关系数据库中数据表的每一列数据的说法,不正确的是( )。
A.都有相同的数据类型 B.都有共同的字段名
C.每一个值必须不同 D.每一个值属于不同的记录
5.若要为查询检索到的数据分组,则需要在查询中添加( )选项。
A.GROUP BY B.WHERE C.ORDER BY D.FROM
6.在SQL查询中,用于查询某个班的学科平均分,要用( )函数。
A.COUNT B.AVG C.MIN D.SUM
7.结构化查询语言(SQL)是关系数据库的标准语言,下列关于SQL特征的说法不正确的是( )。
A.数据描述、操纵、控制等功能一体化 B.两种使用方式,统一的语法结构
C.高度的过程化 D.语言简洁,易学易用
8.在SQL语言中,关键词“select”属于( )。
A.查询语言 B.数据操纵语言
C.数据定义语言 D.数据控制语言
9.以下不属于数据库备份的方法是( )。
A.完全备份 B.差异备份 C.文件复制 D.增量备份
10.备份时间长,恢复时间最短、最可靠,且操作方便,描述的是( )。
A.增量备份 B.差异备份 C.时间复制 D.完全备份
二、判断题
11.人们经常说的数据库,一般是指计算机中运行的数据库软件,如Access、MySQL等。
( )
12.在创建完数据库和数据表后,如果要修改数据表,必须先打开数据库和数据表。( )
13.结构化查询语言(SQL)是关系数据库的标准语言,可用于所有类型的关系数据库 系统。( )
14.选择查询是指在一个关系中找出若干指定字段的值的操作。( )
15.排序查询中,降序用DESC,升序用ASC,若没有指明,则是降序查询。( )
16.删除数据库中的某一个数据表,可以用撤销删除的方法找回该数据表。( )
17.硬盘格式化会造成数据的丢失。( )
18.增加数据库中的记录,只能通过直接输入记录的方式来进行。( )
19.差异备份在恢复数据时,需要两份数据,一份是上一次的完全备份,另一份是最新的差异备份。( )
三、填空题
20. 是长期存储在计算机内、有组织的、可共享的数据集合。
21.建立关系数据库一般分为两个步骤:①建立数据库;② 。
22.若要为查询检索到的数据按某一字段降序排列,应使用语句 字段 。
23.在学生情况表和成绩表中进行多表查询,需要查询张三的总分成绩,请将下列代码补充完整:(“姓名”字段在学生情况表,“总分”字段在成绩表)
SELCECT 学生情况表.姓名,
FROM 学生情况表 成绩表
on 学生情况表.学籍号=成绩表.学籍号
WHERE
24.在SQL的数据操纵语言中,增加数据要用到关键词 。
四、应用题
25.简述数据查询的步骤。
26.下图是某校学生管理系统数据库的“学生成绩表”,请按要求写出代码。

(1)在该表中,查询等级是“优秀”的学生记录。
(2)在该表中,查询信息技术成绩在120~130的学生姓名和信息技术成绩。
(3)在该表中,将所有男生的语文成绩降序排列。
(4)在该表中,查询“学生108”的记录。
(5)在该表中,统计4班的通用技术平均分。
(6)统计查询该表中各个班级的人数。
27.下图是HeidiSQL中某个数据库及数据表的内容,回答问题。

(1)该数据库名是 ,数据表名是 。
(2)在该数据表中,可以将字段 作为主键。
(3)在数据表中,查询“学生135”的记录,请写出代码。
28.某校初一年级根据管理需要,现在要在Heidi SQL中为全年级400余人创建一个关于学生信息和成绩管理的数据库,在数据库中初步创建了数据表“学生信息表”和“学生成绩表”,请根据要求回答问题。
学生信息表

学生成绩表

(1)在为“学生信息表”中的身份证号码设置数据类型时,应设置为 类型。
(2)需要查询该年级3班所有学生的基本信息,请写出相应的SQL语句。
(3)将初一年级所有学生的成绩按语文学科降序排列,请写出相应的SQL语句。
(4)需要按班级统计各班的人数,查询结果的格式如下,请写出相应的SQL语句。
