数据库管理系统:MySQL
第一章 数据库系统概论
数据库基本概念
信息与数据及数据处理
1.信息(Information)
(1)信息的定义
在不同的领域中,信息的含义有所不同。一般认为,信息是关于现实世界事物的存在方式或运动状态反映的综合。
(2)信息的特征
①信息依附于物质载体和能量。
②信息是可以感知的。
③信息是可存储、加工、传递和再生的。
2.数据(Data)
(1)数据的定义
数据是用来记录信息的可识别的符号,是信息的具体表现形式。
(2)数据的表现形式
数据有多种表现形式,不仅包含数字和文字,还包括图形、图像、声音、语言等。
3.数据与信息的联系
数据是信息的符号表示或载体,信息则是数据的内涵,是对数据的语义解释,数据与其语义是不可分的。
如”80″是一个数据,可以是一个学生的某门课程的成绩,也可以是某个人体重,还可以是某个人的年龄包含数字和文字,还包括图形、图像、声音、语言等。
4.数据处理
数据处理是指对各种形式的数据进行收集、存储、传播、检索、分类、加工或计算,打印各类报表或输出各种需要的图形。
数据处理的目的一是借助计算机科学地保存和管理大量复杂的数据,以便人们方便而充分地利用这些信息资源;二是从大量的原始数据抽取并推导出对人们有价值的、有意义的信息,为进一步的活动提供决策的依据。可用下式直观地表示信息、数据与数据处理的关系:
信息=数据+数据处理
数据库、数据库管理系统及数据库系统
1.数据库
(1)数据库的定义
数据库(Database,简称DB)是长期储存在计算机内、有组织的、可共享的大量数据的集合。
(2)数据库的基本特征
数据按一定的数据模型组织、描述和储存;
可为各种用户共享;冗余度较小;
数据独立性较高;易扩展。
广义:数据库是存储数据的东西
狭义:数据库是存储在计算机内,结构化的表格
2.数据库管理系统
(1)什么是DBMS
位于用户与操作系统之间的一层数据管理软件。是基础软件,是一个大型复杂的软件系统
(2) DBMS的用途
科学地组织和存储数据、高效地获取和维护数据
(3) DBMS的主要功能
数据定义功能:
提供数据定义语言(DDL);
定义数据库中的数据对象。
数据组织、存储和管理:
分类组织、存储和管理各种数据;
确定组织数据的文件结构和存取方式;
实现数据之间的联系;
提供多种存取方法提高存取效率。
数据操纵功能:
提供数据操纵语言(DML)
实现对数据库的基本操作(查询、插入、删除和修改)。
数据库的事务管理和运行:
数据库在建立、运行和维护时由DBMS统一管理和控制;
保证数据的安全性、完整性、多用户对数据的并发使用;发生故障后的系统恢复。
3.数据库系统
数据库系统(Database System,简称DBS)在计算机系统中引入数据库后的系统构成。
数据管理技术的产生和发展
数据管理技术的发展动力
应用需求的推动
计算机硬件的发展
计算机软件的发展
数据库系统的特点
- 面向全组织的复杂的数据结构
- 数据的共享性高,冗余度低,易扩充
- 有较高的数据和程序的独立性
- 统一的数据控制功能
数据模型
数据抽象的过程
信息是对客观事物及其关系的描述,数据是信息的具体化、形象化,是表示信息的一种符号。数据、信息、物质三者之间互为联系,自成一体。而从事物的状态到表示该状态的数据,经历了三个不同的世界:现实世界、信息世界(即观念世界)和数据世界(即计算机世界)。
数据模型及组成要素
数据模型
(1) 概念模型
也称信息模型,它是按用户的观点来对数据和信息建模,用于数据库设计。
(2) 逻辑模型
主要包括网状模型、层次模型、关系模型、面向对象模型等,按计算机系统的观点对数据建模,用于DBMS实现。
(3) 物理模型
是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法。
组成要素
数据模型是严格定义的一组概念的集合。这些概念精确地描述了系统的静态特性、动态特性和完整性约束条件。因此数据模型通常由数据结构、数据操作和数据的完整性约束条件三部分组成。
(1) 数据结构
数据结构描述的是数据库的组成对象以及对象之间的联系,是对系统静态特性的描述。
(2) 数据操作
数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则,是对系统动态特性的描述。
(3) 数据的完整性约束条件数据的完整性约束条件是一组完整性规则,是对系统静态特性的描述。
第二章 关系模型
用二维表格的形式表示实体以及实体间联系的数据模型称为关系模型,这个二维表被称为关系,这是一种非形式化的定义。
关系模型是建立在集合代数理论的基础上的,因此,这里从集合论角度给出关系的形式化定义。首先引入域和笛卡尔积的概念。
域
域是一组具有相同数据类型的值的集合,又称为值域,用D表示。域中所包含的值的个数称为域的基数,用m表示。例如:
D2=性别集合={男,女},m2=2;
在关系模型中用域来表示属性的取值范围,在上面例子中,D2为域名,表示学生关系中性别的集合。
笛卡尔积
笛卡尔积可表示为一个二维表,表中的每行对应一个元组,表中的每列对应一个域
关系
笛卡尔积D1×D2× … ×Dn的子集称为定义在域D1,D2,…, Dn上的关系,表示为R(D1,D2,…,Dn),R表示关系的名字,n称为关系的目或度(Degree)
当n=1时,称该关系为单元关系
当n=2时,称该关系为二元关系
(1) 如果一个关系的元组个数是无限的,则称该关系是无限关系;如果一个关系的元组个数是有限的,则称该关系是有限关系。一般仅处理有限关系。
(2) 关系是笛卡尔积的有限子集,所以关系也是一个二维表,表中的每行对应一个元组,表中的每列对应一个域。
(3) 由于表中的列可以是相同的域,为了加以区别,每列必须起一个名字,称为属性,n目关系必须有n个属性,属性的名字惟一,属性的取值范围D(i=1,2,…,n)称为值域。
三类关系
(1) 基本关系(基本表或基表)
实际存在的表,是实际存储数据的逻辑表示
(2) 查询表
查询结果对应的表
(3) 视图表
由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
关系的基本性质
在关系模型中,对关系作了种种限制,关系具有如下性质
(1) 每一个分量都必须是不可再分的数据项。
(2) 每一列中的分量必须是同一类型的数据,来自同一个域。
(3) 每列必须有不同的属性名,不同的列可以来自同一个域。
(4) 列的顺序可以是任意,
(5) 任意两个元组不能完全相同。
(6) 行的顺序可以是任意。
码
(1) 候选码:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码
(2) 全码:关系模式的所有属性组是这个关系模式的候选码,称为全码
(3) 主码:若一个关系有多个候选码,则选定其中一个为主码
(4) 主属性:候选码的诸属性称为主属性,不包含在任何侯选码中的属性称为非主属性或非码属性
例子:
在学生实体中,“学号”是能唯一的区分学生实体的,同时又假设“姓名”、“班级”的属性组合足以区分学生实体,那么{学号}和{姓名,班级}都是候选码。
候选码就是可以被选为主码的属性或属性组。当一个关系有N个属性或属性组可以唯一标识时,则说明该关系有N个候选码,可以选定其中一个作为主码。
关系模型的三级体系结构
关系模式
关系模式是对关系的描述,关系模式是型,关系是值。关系模式的形式化定义为 R(U,D, dom,F)
关系模式通常可以简记为 R(U)或 R(A1,A2,… An)
R:关系名
U:组成该关系的属性名集合
D:属性组4属性所来自的域
DOM:属性向域的映象集合
F:属性间的数据依赖关系集合
A1,A2,……,An:属性名
关系子模式
关系子模式是用户所需或感兴趣数据的结构的描述,其中包括这些数据来自哪些模式和应满足哪些条件。
例如,在学生选课数据库中,学生最关心自己所选课程的成绩、学分等信息。这时就需要用到成绩子模式(学号,姓名,课程名,成绩,学分)子模式对应的数据来源于学生关系、选课关系和课程关系,在构造时应满足学生关系和选课关系的元组在学号上的值相等,选课关系和课程关系的元组在课程号上的值相等。
存储模式
存储模式描述了关系是如何在物理存储设备上存储的。
关系数据库
关系数据库采用的是关系模型,所有关系模式的集合构成了关系数据库的式,即关系数据库型的描述。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常称之为关系数据库。
关系代数
关系代数运算符
传统的集合运算
(1) 并:R∪S
(2) 差:R−S = R−(R∩S)
(3) 交:R∩S
(4) 笛卡尔积:R×S
专门的关系运算
相关文章: 《关系数据库:专门关系运算》 -目睹整个事件的易先生的文章 -CSDN
(1) 投影:π
从R中选择出若干属性列组成新的关系
(2) 选择:σ
(3) 连接:⋈
(4) 除:÷
第三章 关系型数据库标准语言SQL
SQL语言特点
- 一体化
- 高度非过程化
- 面向集合的操作方式
- 提供多种使用方式
- 功能强大、简洁易用
相关概念
- 基本表:本身独立存在的表;SQL中一个关系就对应一个基本表;一个(或多个)基本表对应一个存储文件;一个表可以带若干索引。
- 视图:从一个或几个基本表导出的表;数据库中只存放视图的定义而不存放视图对应的数据,
视图是一个虚表;用户可以在视图上再定义视图。 - 存储文件:逻辑结构组成了关系数据库的内模式;物理结构是任意的,对用户透明。
基本数据类型
SQL分类
数据定义
SQL的数据定义功能:模式定义、表定义、视图和索引的定义
模式的定义和创建
模式的创建:在SQL中,一个模式由模式名和模式的拥有者的用户名来确定
CREATE SCHEMA<模式名>AUTHORIZATION<用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]
CREATE SCHEAM Study AUTHORIZATION 张明
CREATE TABLE Study(
......
);
模式的删除:
DROP SCHEMA<模式名><CASCADE|RESTRICT>;
其中CASCADE和RESTRICT两者必选其一。
CASCADE(级联):删除该模式中所有的数据库对象。
RESTRICT(限制):如果该模式中已经定义了下属的数据库对象,则拒绝该删除语句的执行。
DROP SCHEMA Study CASCADE
基本表的定义、删除和修改
定义基本表
CREATE TABLE<表名>(
<列名> <数据类型> [<列级完整性约束性条件>],
<列名> <数据类型> [<列级完整性约束性条件>],
......
[<表级完整性约束条件>]
);
修改基本表
ALTER TABLE <表名>
[ALTER COLUMN <列名> <新数据类型>] |
[ADD [COLUMN] <列名> <数据类型>] |
[DROP COLUMN <列名>] |
[ADD PRIMARY KEY (列名[,...n])] |
[ALTER FOREIGN KEY <列名> REFERNECES 表名 (列名)];
删除基本表
RESTRICT: 如果存在被其他表的约束引用,则不能被删除
CLUSTER:无视依赖,并把相关依赖对象直接删除
DROP TABLE <表名> [RESTRICT | CASCADE];
索引的创建和删除
#创建索引 次序:ASC(升序) DESC(降序)
CREATE [UNIQUE]|[CLUSTER] INDEX <索引名> ON [表名](<列名>[<次序>],...)
#删除索引
DROP INDEX <索引名>
数据查询
单表查询
1.查询指定列
SELECT `NAME`,`ID`,`PWD` FROM USERS;
2.查询全部列
SELECT * FROM USERS;
3.查询经过计算的列 (算数表达式、字符串常量、函数、列别名)
SELECT `PWD` AS `密码` FROM USERS;
SELECT CONCAT(`姓名 = `,`NAME`) FROM USERS;
4.消除取值重复行
SELECT DISTINCT `ID` FROM USERS;
#————————————————————————
5.比较大小 =,<,>,<=,>=,!=
SELECT 'BIRTH' FROM USERS WHERE `BIRTH`> '2000-01-01';
6.确认范围 between and,not between and
SELECT `ID` FROM USERS WHERE `ID` BETWEEN 1 AND 10;
7.确认集合 in, not in
SELECT `NAME` FROM USERS WHERE `BIRTH` IN('2000-01-01','2024-01-01');
8.字符匹配 like, not like %匹配0或多个任意字符, _匹配任意一个字符
SELECT * FROM USERS WHERE `NAME` LIKE '张三'; #查询张三信息
SELECT * FROM USERS WHERE `NAME` LIKE '张%'; #查询姓张的
SELECT * FROM USERS WHERE `NAME` LIKE '张_'; #查询张某(两字)
9.is null, is not null 'is'不能用'='替换
SELECT `NAME` FROM USERS WHERE `PWD` IS NULL;
10.多重条件查询 and, or and>or(优先级)
#————————————————————————
11.对结果进行排序 ORDER BY 次序:ASC(升序) DESC(降序) 默认值为升序
SELECT * FROM USERS ORDER BY `ID` DESC;
#————————————————————————
12.聚集函数 COUNT()、SUM()、AVG()平均值、MAX()、MIN()
SELECT COUNT(*) FROM USERS #查询人数
#————————————————————————
13.分组查询 GROUP BY [HAVING] 通过以某列进行分组 再做聚集函数计算
SELECT region, SUM(population), SUM(area)
FROM bbc
GROUP BY region
HAVING SUM(area)>1000000
#在这里,我们不能用where来筛选超过1000000的地区,因为表中不存在这样一条记录。相反,having子句可以让我们筛选成组后的各组数据
多表连接查询
嵌套查询
集合查询
存储查询结果到表中
基于派生表的查询