第一章 数据库入门
0 目标
- 掌握数据库、数据库系统、数据库管理系统的基本概念
- 了解数据库技术发展经历的三个阶段
- 掌握关系模型、SQL语言的基本概念
- 掌握MySQL的安装、配置、启动、登录等操作
- 了解常用图形化工具并使用
1.1数据库基础知识
1 数据库概述
数据库技术:是计算机领域重要的技术之一
应用场景:在互联网、银行、通讯、政府部门、企事业单位、科研机构等领域,都存在大量的数据。
数据库技术研究的意义:
- 如何对数据进行有效管理,包括如何组织和存储数据。
- 如何在数据库系统中减少数据存储冗余、实现数据共享、保障数据安全,以及高效地检索和处理数据。
理清下列名称的含义与关系:
- 数据库应用程序
- 数据库管理系统
- 数据
- 数据库
- 数据库系统
关系:
- 数据库系统包括数据库管理系统、数据库应用程序和用户
- 用户 -> 数据库应用程序 -> 数据库管理系统
- 数据库管理系统包含数据库
名词解释:
数据(Data):不仅包括普通意义上的数字,还包括文字、图像、声音等。也就是说,凡是在计算机中用来描述事物的信息都可称作数据
数据库(Database):是按照数据结构来组织、存储和管理数据的仓库
数据库管理系统(Database Management System):专门用于创建和管理数据库的一套软件,介于应用程序和操作系统之间,如MySQL、Oracle等。
数据库应用程序:在很多情况下,DBMS无法满足用户对数据库的管理。此时就需要使用数据库应用程序与DBMS进行通信、访问和管理DBMS中存储的数据。
数据库系统(Database System DBS):是指在计算机系统中引入数据库后的系统,除了数据库,还包括数据库管理系统、数据库应用程序等。
2 数据库技术的发展
主要分为三个阶段:
- 人工管理阶段
- 文件系统阶段
- 数据库系统阶段
人工管理阶段
时间:20世纪50年代中期以前
发展状况:
- 计算机主要用于科学计算
- 硬件方面没有磁盘等直接存取设备,只有磁带、卡片和纸带
- 软件方面没有操作系统和管理数据的软件
- 数据的输入、存取等,需要人工操作
- 人工管理阶段处理数据非常低效
特点:
- 数据不在计算机长期保存
- 没有专门的数据管理软件,数据需要由应用程序自己管理
- 数据是面向应用程序的,不同应用程序之间无法共享数据
- 数据不具有独立性,完全依赖于应用程序
文件系统阶段
时间:20世纪50年代后期到60年代中期
发展状况:
- 硬件方面有磁盘等直接存取设备
- 软件方面有操作系统,数据管理进入了文件系统阶段
- 数据以文件为单位保存在外存储器上,由操作系统管理,程序和数据分离,实现了以文件为单位的数据共享
特点:
- 数据在计算机外存设备上长期保存,可对数据反复进行操作
- 通过文件系统管理数据,文件系统提供了文件管理功能和存取方法
- 在一定程度上实现了数据独立和共享性,但非常薄弱
数据库系统阶段
时间:从20世纪60年代末开始
发展状况:
- 计算机应用广泛,管理的数据量不断增大,同时对多种应用程序之间的数据共享需求越来越强烈
- 文件系统的管理方式已经无法满足需求
- 为提高数据管理效率,解决多用户、多应用程序共享数据的需求,数据库技术应运而生,由此进入数据库系统阶段
特点:
- 数据结构化:数据库系统实现了整体数据的结构化,这是数据库的主要特征之一
- 数据共享:数据只需保存一份,其他软件都通过数据库系统存取数据
- 数据独立性高:数据的独立性包含逻辑独立性和物理独立性
- 数据统一管理与控制:包含安全控制、完整控制和并发控制
3 三级模式和二级映像
- SPARC在1971年公布的研究报告中提出了ANSI-SPARC体系结构
- 三级模式结构:指的是ANSI-SPARC体系结构,也称为三层体系
- ANSI-SPARC最终没有成为正式标准,但仍是理解数据库管理系统基础
三级模式
指数据库管理系统从三层次来管理数据
- 外部层(External Level)
- 概念层(Conceptual Level)
- 内部层(Internal Level)
三个层次分别对应三种不同类型的模式:
- 外模式(External Schema)
- 概念模式(Conceptual Schema)
- 内模式(Internal Schema)
二级映像
在外模式与概念模式之间,以及概念模式与内模式之间存在的映像
外模式
面向应用程序,描述用户的数据视图,可以为不同用户的需求创建不同的视图。
- 基本表中的数据是实际存储在数据库中的。
- 视图中的数据是查询或计算出来的
- 不同用户需求不同,数据显示方式也多种多样
- 一个数据库中会有多外模式,而概念模式和内模式则只有一个
概念模式
- 又称为模式、逻辑模式,面向数据库设计人员,描述数据的整体逻辑结构。
概念模式类似于表格标题,描述了商品表包含的信息
- 表的横向称为行,纵向称为列,第一行就是列标题,用来描述该列的数据表示什么含义
- 实际上,概念模式在数据库中描述的信息还有很多,如多张表之间的联系、表中的每一列的数据类型和长度等
内模式
又称为物理模式、存储模式,面向物理上的数据库,描述数据在磁盘中如何存储。
- 在将Excel表格另存为文件时,可以选择保存的文件路径、保存类型(xls,xlsx,csv等格式)等,这些与存储相关的描述信息相当于内模式。
- 在数据库中,内模式描述数据的物理结构和存储方式,如堆文件、索引文件、散列文件(hash)文件等。
为了使三级模式间产生关联,数据库管理系统在三级模式之间提供了二级映像功能。
二级映像是一种规则,它规定了映像双方如何进行转换。
通过二级映像,体现了逻辑和物理两个层面的数据独立性
外模式/概念模式映像
体现了逻辑独立性。
- 逻辑独立性是指当修改了概念模式,不影响其上一层的外模式。
- 逻辑独立性能够让使用视图的用户感觉不到基本表改变。
概念模式/内模式
体现了物理独立性。
- 物理独立性是指修改内模式,不影响其上层的概念模式和外模式。
- 在Excel中将xls文件另存为xlsx文件,虽然更换了文件格式,但是打开文件后显示的表格内容一般不会发生改变。
- 创建索引加快查询速度,内模式会发生改变。此时,只需改变概念模式/内模式映像,就不会影响到原有的概念模式。
- 用户不必了解数据库内部的存储原理,数据库管理系统会自动将用户的操作转换成物理级数据库的操作。
4 数据模型
数据库的类型通常按数据模型来划分。
数据模型是数据库系统的核心和基础。
数据模型是对现实世界数据特征的抽象,用来描述数据,可理解成一种数据结构。
基本数据模型
数据库发展过程中出现3种
- 层次模型
- 网状模型
- 关系模型
目前使用最多的数据模型是关系模型
建立在关系模型基础上的数据库称为关系型数据库(MySQL)
理解关系模型
数据建模
是对现实世界中的各类数据的抽象组织,以确定数据库的管辖范围、数据的组织形式等。
| 数据建模的三个阶段 | 数据建模的产物 |
|---|---|
| 概念建模 | 概念模型 |
| 逻辑建模 | 逻辑模型 |
| 物理建模 | 物理模型 |
概念模型的术语
在概念模型中可以通过一些术语来实现对现实世界进行抽象。
实体(Entity)
- 指客观存在并可相互区分的事物。(学生、班级、课程等)
属性(Attribute)
- 指实体所具有的的某一特性,一个实体可由若干个属性描述。
- 学生实体属性有学号、姓名和性别
属性由两部分组成,分别是属性名和属性值
- 学号和姓名是属性名,而”1、张三”这些具体值是属性值
联系(Relationship)
指实体与实体之间的联系,有一对一、一对多、多对多三种情况
- 每个学生都有一个学生证(一对一)
- 一个班有多个学生(一对多)
- 一个学生可以选修多门课程,一门课可以被多学生选修(多对多)
实体型(Entity Type)
- 实体类型,通过实体名及其属性名集合来抽象描述同类实体。
实体集(Entity Set)
- 指同一类型的实体集合(全校学生)
E-R图
称为实体-联系图(Entity Relationship Diagram)
E-R图是一种用图形表示的实体联系模型,由Peter Chen于1976年提出。
E-R图提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。
E-R图的通用表示方式:
- 实体:用矩形框表示,将实体名写在框内。
- 属性:用椭圆框表示,将属性名写在框内,用连线与实体连接。
- 联系:用菱型框表示,将联系名写在框内,用连线将相关的实体连接,并在连线旁标注类型(1:1, 1:n, n:m).
关系模型
由IBM公司研究员Edgar Frank Codd于1970年中发表的论文中提出。
目前最常用、最重要的模型之一
基本概念:
关系(Relation)
与数学领域有关,它是集合基础上的一个重要概念,用于反映元素之间的联系和性质。
- 从用户角度来看,关系模型的数据结构是二维表,即通过二维表来组织数据
- 一个关系对应一张二维表,表中数据包括实体本身的数据和实体间的联系
属性(Attribute)
- 二维表中的列称为属性,每个属性都有一个属性名。
元组(Tuple)
- 二维表中的每一行数据称为一个元组
域(Domain)
- 域是指属性的取值范围(性别属性的域为男、女)
关系模式(Relation Schema)
- 是关系的描述,通常可以简记为
关系名(属性1,属性2,...,属性n)。 - 学生(学号,姓名,性别,出生年月)
- 是关系的描述,通常可以简记为
键(Key)
- 在二维表中,唯一标识某一条记录,又称为关键字、码。
学生学号唯一,学号可作为学生实体的键。而学生姓名可能存在重名,不适合为键。
- 主键(Primary Key)
- 外键(Foreign Key)
关系模型完整性
为保证数据库中数据的正确性和相容性,需要对关系模型进行完整性约束。完整性通常包括实体完整性、参照完整性和用户自定义完整性。
实体完整性
- 要求关系中的主键不能重复,且不能为空。空是指不知道、不存在或无意义的值。
参照完整性
- 要求关系中的外键要么取空值,要么取被参照关系中的某个元组的主键值
用户自定义完整性
- 是用户针对具体应用环境定义的完整性约束条件,由DBMS检查用户自定义完整性。
5 关系运算
关系模型可以使用关系代数(Relational Algebra)来进行关系运算。
关系代数是指一种抽象的查询语言,是研究关系模型的数学工具。
关系代数运算符包括并、差、交、笛卡尔积、选择、投影、连接和除。
关系代数运算符
| 关系运算符 | 含义 | 关系运算符 | 含义 |
|---|---|---|---|
| ∪ | 并 | 选择 | |
| - | 差 | π | 投影 |
| ∩ | 交 | 连接 | |
| × | 笛卡尔积 | ÷ | 除 |
并(Union)、差(Difference)、交(Intersection)
- 并、差、交运算要求参与运算的两个关系具有相同数量的属性。
- 运算结果是一个具有相同数量属性的新关系。
设有关系R和S
- 表示合并两个关系的元组
- 表示找出属于R但不属于S的元组(R-S)
- 表示找出既属于R又属于S的元组
笛卡尔积(Cartesian Product)
设关系R有n个属性,关系S有m个属性
- R和S的笛卡尔积:元组的前n个属性来自R,后m个属性来自S
- 结果属性个数=n+m,结果元组总个数=R和S中的元组的乘积
选择(Selection)、投影(Projection)
选择是在一个关系中将满足条件的元组找出来,即水平方向筛选。
投影是在一个关系中去掉不需要的属性,保留需要的属性,即垂直方向筛选。
连接(Join)
- 连接是在两个关系的笛卡尔积中选取属性间满足一定条件的元组。
- 笛卡尔积运算结果可能会有很多没有意义的元组,相比之下连接运算更实用
常用连接方式有等值连接(Equal-join)和自然连接(Natural Join)
- 等值连接:是在R和S的笛卡尔积中选取A、B属性值相等的元组。
- 自然连接:是一种特殊的等值连接,要求R和S必须有相同的属性组,进行等值连接后再去除重复的属性组。
- 设有关系R和S,使用A和B分别表示R和S中数目相等且可比的属性组。
除(Division)
- 如果把笛卡尔积看作乘法运算,则除法是笛卡尔积的逆运算。
- 设有关系R和关系S,除运算需满足S的属性集是R属性集的真子集。
- R÷S的结果是R属性集减去S属性集的结果。
- R(A,B,C,D) ÷ S (C,D) 的结果由A和B两个属性构成
6 SQL语言
SQL由四部分组成
- 数据定义语言(Data Definition Language,DDL) 主要用于定义数据库、表等。(create,alter,drop等)
- 数据操作语言(Data Manipulation Language,DML) 主要用于对数据库进行添加、修改和删除操作。(insert,update,delete)
数据查询语言(Data Query Language,DQL) 主要用于查询数据。
- 使用select语句可以查询数据库中的一条数据或多条数据。
数据控制语言(Data Control Language,DCL) 主要用于控制用户的访问权限。
- grant,revoke,commit,rollback
SQL与三级模式挂钩
- 外模式对应视图或部分基本表
- 概念模式对应基本表
- 内模式对应存储文件
