一、数据管理技术的产生和发展
1.使用数据库的必要性
从古至今,在我们的生产和生活当中,都会产生大量的信息和数据,这些数据都与我们的生活息息相关。随着人类文明的进步,每天产生的数据量越来越大,因此,如何能够高效地管理数据,也变成了一个非常重要的课题。在这样的背景下,数据库技术应运而生。数据库技术是一种非常先进地对数据进行管理的一种方式。(为了能够更有效地去处理海量的数据)
2.数据管理技术的发展阶段
(1)人工管理阶段(效率低,成本高)
特点:容易丢失数据;数据重复,冗余;难以查阅和使用;维护成本高。
(2)文件系统阶段
特点:易于存储;处理速度快;数据形式丰富;
(3)数据库系统阶段
特点:易于维护海量数据;更快的运算与处理;保证数据的安全性;使用编程语言管理数据;
二、关系型数据库中常用的概念
1.数据库、数据库管理系统
(1)数据库(DataBase):是按照数据结构来组织、存储和管理数据的仓库,随着信息技术和市场的发展,数据库不再仅仅用来存储和管理数据,而是提供用户所需的各种数据管理的方式。数据库的特点:数据结构化;数据的共享性高,冗余度低,易于扩充;数据的独立性高;数据由DBMS统一管理和控制。
(2)数据库管理系统(Database Management System)是一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。(它可使多个应用程序和用户用不同的方法同时或不同时刻去建立、修改和查询数据库。通过数据库管理系统可以对数据库当中的数据进行插入、更新、删除、检索等操作,因此数据库管理系统是介于人与数据库之间的一种保管员的角色。如:MySQL)
2.关系型数据库中常用的概念
(1)所谓的关系型数据库,是指采用了关系模型来组织数据的数据库。关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。简单的可以理解为二维数据库,即将数据以表格的形式进行存储。常用的关系型数据库有Oracle、SqlServer、Informix、MySQL等。
字段
课程编号 | 课程名称 | 学时 | 学期 | 平均成绩 |
J001 | 网络基础 | 36 | 1 | 78 |
J003 | C++语言 | 60 | 2 | 81 |
Z004 | Linux系统 | 44 | 3 | 67 |
X001 | 网页开发 | 40 | 4 | 66 |
元组:是关系数据库中的基本概念。关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性。在二维表里,元组也称为记录。
值:在数据库中存放在表行列交叉处的数据叫做值,它是数据库中最基本的存储单元,它的位置由这个表中的记录和字段定义。
行:表中的每一行叫做一条记录,每一条记录包含这行中的所有信息。(即一行数据就是一条记录)
(2)冗余:如果一个表当中可以有不存在的数据但它却真实的存在我们就称之为冗余。
学号 | 姓名 |
1 | 张辉 |
2 | 王五 |
3 | 李思 |
4 | 赵强 |
学号 | 成绩 | 姓名 |
1 | 89 | 张辉 |
2 | 76 | 王五 |
3 | 80 | 李思 |
4 | 67 | 赵强 |
以上两张表存在冗余的列就是姓名这一列。
(3)完整性:指的是数据的正确性(而不是每条数据都填写完整)。
学号 | 姓名 |
1 | 张辉 |
2 | 王五 |
3 | 李思 |
3 | 赵强 |
在这张学生信息表中,出现了两个3号,这样的数据是存在错误的,数据存在错误,在关系型数据库中,我们称之为失去了数据的完整性。(学号必须唯一)
(4)主键:也是一个字段或者是一列,其特点:
① 主键不能重复(为了能够唯一的去标识某一个实体,能够与其它的实体进行区分)
学号 | 姓名 | 课程 | 成绩 | 趋势 |
001 | 张辉 | 化学 | 89 | ↑ |
002 | 王五 | 物理 | 76 | ↓ |
003 | 张辉 | 历史 | 80 | ↓ |
004 | 赵强 | 物理 | 67 | ↓ |
上表中,只通过姓名这一列不能区分同名的张辉是不是同一个人,所以我们可以通过唯一的学号进行唯一的实体标识(即主键)
② 主键不能为空
学号 | 姓名 | 课程 | 成绩 | 趋势 |
001 | 张辉 | 化学 | 89 | ↑ |
002 | 王五 | 物理 | 76 | ↓ |
张辉 | 历史 | 80 | ↓ | |
004 | 赵强 | 物理 | 67 | ↓ |
在这张表中,我们发现某一行的数据没有学号的值,这样就出现了主键为空的现象。一旦主键为空或者是主键发生重复,我们称之为失去了实体完整性。(主键为空,失去了实体完整性)
(5)外键:如果说某一张表当中某一列上的数据来源于另外一张表的某一个列,那么我们就把这个列称之为外键列(即这个列的数据来源于其他的表)。作用是:用来和其他表建立联系用的,保证数据的完整性。
学生信息表
姓名 | 学号 |
张明 | 1 |
王东 | 2 |
李建 | 3 |
赵斌 | 4 |
钱文 | 5 |
孙胜 | 6 |
周颖 | 7 |
学生成绩表
学号 | 成绩 |
1 | 65 |
2 | 90 |
4 | 87 |
7 | 89 |
其中,学生成绩表中的学号这一列引用了学生信息表中的学号列的数据,这一列称之为外键列,在学生信息表中称之为主键列。
(6)失去引用完整性:指的是引用了不存在的数据。
学生信息表
姓名 | 学号 |
张明 | 1 |
王东 | 2 |
李建 | 3 |
赵斌 | 4 |
钱文 | 5 |
孙胜 | 6 |
周颖 | 7 |
学生成绩表
学号 | 成绩 |
1 | 65 |
2 | 90 |
9 | 87 |
7 | 89 |
一个表可以有多个外键,但只能有一个主键,外键的值可以重复,也可以为空。
(7)域完整性:我们可以从以下三个方面来检查是否失去了域完整性。
① 类型:姓名必须是字符型数据(不能是数值型)
② 范围:性别I必须是'男'或者'女'
③ 格式:身份证号码必须是18位数字
姓名 | 性别 | 身份证号码 |
张明 | 男 | 4329401984041123(失去了域完整性) |
刘娟 | 女 | 411561198303038892 |
李亮 | 男 | 104320199802349956 |
以上三种发生任意一种错误,我们就认为是失去了域完整性。
3.结构化查询语言SQL简介
(1)结构化查询语言(Structured Query Language),简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,是人与数据库管理系统交流的语言,遵循ANSI SQL标准。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户去了解具体的数据存放方式,所以具有完全不同底层结构的数据库系统可以使用相同的结构化查询语言作为数据输入与管理的接口。
(2)SQL语言包含4个部分
① 数据定义语言(DDL):如:CREATE、ALTER、DROP等
② 数据操纵语言(DML):如:增加(insert)、删除(delete)、更新(update)、和查询(select)等语句。
③ 数据控制语言(DCL):如:分配(grant)、回收(revoke)、拒绝(deny)、COMMIT、ROLLBACK等语言。
④ 数据查询语言(DQL):如:SELECT语言。
备注:
DML(Data Manipulation Language)
DDL(Data Definition Language)