数据库基础内容

数据库

1.1数据库概述

广义上来讲,数据库就是"数据的仓库",计算机系统经常用来处理各种各样大量的数据,比如使用计算机系统收集一个地区的人口信息、检索符合某些条件的当地人口信息、当 一个人去世后还要从系统中删除此人的相关信息。我们可以自定义一个文件格式,然后把人 口数据按照这个格式保存到文件中,当需要对已经存入的数据进行检索或者修改的时候就重 新读取这个文件然后进行相关操作。这种数据处理方式存在很多问题,比如需要开发人员熟 悉操作磁盘文件的函数、开发人员必须编写复杂的搜寻算法才能快速的把数据从文件中检索 出来、当数据格式发生变化的时候要编写复杂的文件格式升级程序、很难控制并发修改。

 Charles W.Bachman,他也因此获得了 1973 年的图灵奖。IBM 的 Ted Codd 则首先提出了关系数据库 理论,并在 IBM 研究机构开发原型,这个项目就是 R 系统,并且使用 SQL 做为存取数据表 的语言,R 系统对后来的 Oracle、Ingres 和 DB2 等关系型数据库系统都产生了非常重要的影 响

1.1.1 “数据库”与“数据库管理系统"

数据库就是“数据的仓库”,我们还需要一套系统来帮助我们管理这些数 据,比如帮助我们查询到我们需要的数据、帮我们将过时的数据删除,这样的系统我们称之 为数据库管理系统(Database Management System,DBMS)。有时候很多人也将 DBMS 简称 为“数据库”,但是一定要区分“数据库”的这两个不同的意思。
数据库管理系统是一种操纵和管理数据库的系统软件,是用于建立、使用和维护数据库。 它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过 DBMS 访 问数据库中的数据,数据库管理员也通过 DBMS 进行数据库的维护工作。它提供多种功能, 可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。它使 用户能方便地定义和操纵数据,维护数据的安全性和完整性,以及进行多用户下的并发控制 和恢复数据库。通俗的说,DBMS 就是数据库的大管家,需要维护什么数据、查找什么数 据的话找它告诉他了,它会帮你办的干净利落

1.1.2 数据库能做什么

数据库能够帮助你储存、组织和检索数据。数据库以一定的逻辑方式组织数据,当我们 要对数据进行增删改查的时候数据库能非常快速的完成所要求的操作;同时数据库隐藏了数 据的组织形式,我们只要对数据的属性进行描述就可以了,当我们要对数据库中的数据进行 操作的时候只要告诉“做什么”(What to do)就可以了,DBMS 会决定一个比较好的完成操 作的方式,也就是我们无需关心“怎么做”(How to do),这样我们就能从数据存储的底层 中脱身出来,把更多精力投入到业务系统的开发中。
数据库允许我们创建规则,以确保在增加、更新以及删除数据的时候保证数据的一致性; 数据库允许我们指定非常复杂的数据过滤机制,这样无论业务规则多么复杂,我们都能轻松 应对;数据库可以处理多用户并发修改问题;数据库提供了操作的事务性机制,这样可以保 证业务数据的万无一失。

1.1.3 主流数据库管理系统介绍

目前有许多 DBMS 产品,如 DB2、Oracle、Microsoft SQL Server、Sybase SQLServer、 Informix、MySQL 等,它们在数据库市场上各自占有一席之地。下面简要介绍几种常用的 数据库管理系统。
DB2
DB2 第一种使用SQL 的数据库产品。DB2 于 1982 年首次发布,现在已经可以用 在许多操作系统平台上,它除了可以运行在 OS/390 和 VM 等大型机操作系统以及中等规模 的 AS/400 系统之外,IBM 还提供了跨平台(包括基于 UNIX 的 LINUX,HP-UX,Sun Solaris, 以及 SCO UnixWare;还有用于个人电脑的 Windows 2000 系统)的 DB2 产品。应用程序可 以通过使用微软的 ODBC 接口、Java 的 JDBC 接口或者 CORBA 接口代理来访问 DB2 数据 库。

Oracle
Oracle 是和 DB2 同时期发展起来的数据库产品,也是第二个采用 SQL 的数据库产品。 Oracle 从 DB2 等产品中吸取到了很多优点,同时又避免了 IBM 的官僚体制与过度学术化, 大胆的引进了许多新的理论与特性,所以 Oracle 无论是功能、性能还是可用性都是非常好 的。

Microsoft SQL Server
Microsoft SQL Server 是微软推出的一款数据库产品。Microsoft SQL Server 的可用性做的非常好,提供了很多了外围工具来帮助用户对数据库进行管理,用户甚至无需直接执行任何 SQL 语句就可以完成数据库的创建、数据表的创 建、数据的备份/恢复等工作;Microsoft SQL Server 的开发者社区也是非常庞大的,因此有 众多可以参考的学习资料,学习成本非常低,这是其他数据库产品都不具有的优势;同时从 Microsoft SQL Server 2005 开始开发人员可以使用任何支持.Net 的语言来编写存储过程,这 进一步降低了 Microsoft SQL Server 的使用门槛。

MySQL
MySQL 是一个小型关系型数据库管理系统,开发者为瑞典 MySQL AB 公司。目前 MySQL 被广泛地应用在中小型系统中,特别是在网络应用中用户群更多。MySQL 没有提 供一些中小型系统中很少使用的功能,所以 MySQL 的资源占用非常小,更加易于安装、使 用和管理。

数据库的基础概念

要想使用数据库,我们必须熟悉一些基本概念,这些概念包括:表、列、数据类型、记录、主键以及表关联等等。

1.2.1 表(Table)

虽然我们已经将不同用途的物品保存在不同的仓库中了,但是在同一个仓库中数据的保 存仍然存在问题。比如食品分为熟食、生肉、大米等,如果把他们随意的堆放在一起,就会 造成我们无法很容易的对这些食品进行管理,当要对大米进行提货的话就必须在一堆的食品 中翻来翻去。解决这个问题的方法就是将仓库划分为不同的区域,熟食保存在熟食区,生肉 保存在生肉区,而大米则保存在大米区。
DBMS 中也存在类似的问题,虽然我们将核心业务数据保存在 BIZ 数据库中了,但是 核心业务数据也有很多不同类型的数据,比如客户资料、商品资料、销售员资料等,如果将 这些数据混杂在一起的话将会管理起来非常麻烦,比如我们要查询所有客户资料的话就必须 将所有数据查询一遍。解决这个问题的方法就是将不同类型的资料放到不同的“区域”中, 我们将这种区域叫做“表”(Table)。客户资料保存到 Customers 表中,将商品资料保存在 Goods 表中,而将销售员资料保存在 SalesMen 表中,这样当需要查找商品的时候只要到 Goods 表中查找就可以了。

1.2.2 列(Column)

在数据库的表中保存的数据有这样一个问题,如果不规定格式的话,表中的数据也会非常不方便阅读。
如果一个员工的资料在表中保存的内容为:2003年5月入职,是产品开发部的,姓名马小虎
另外一个员工的资料在表中保存的内容为:王二小,技术支持部,入职是 2005 年 7月。
通常,以这种不标准的格式保存造成数据十分混乱,想要从数据库中取出合适的数据仍 然非常麻烦。为了解决这个问题,我们规定下面这种标准的格式:
这里的“姓名”、“部门”和“入职时间”就被称为员工表的列(Column),有时候也叫做字段(Field), 每个列描述了数据的一个特性

1.2.3 数据类型(DataType)

上面我们为员工表规定了“姓名”、“部门”和“入职时间”三个列,这样只要按照这个格式进行数据填写就可以了,但是这里仍然有一个问题,那就是我们没法限定用户向表中填写什么数据,比如用户填写成下面的格式:
显然姓名不应该为一个数字 33;不可能有一个名称为“12.3”的部门;入职时间更不可能是“信息中心”。因此我们必须规则每一列中填写的数据的格式:姓名必须填写汉字,最短 2 个汉字,最长 5 个汉字;部门必须填写“产品开发部”、“技术支持部”、“产品实施部”、“人力资源部”中的一个;入职时间必须填写为正确的时间格式。这里就规定了各个列的数据类型(DataType),数据类型规定了一个列中能填写什么类型的数据,减少了不规范数据出现的几率。
除了可以对数据进行规范之外,数据类型还有下面的作用:

  • 提高效率。对不同的数据赋予不同的类型能够使得数据库更好的对数据进行存储和管 理,从而减少空间占用并且提供数据的访问速度。比如,如果将数字 123454321 以文本 类型存储的话将会占用 9 字节的存储空间,而以整数类型保存的话将只需要占用 4 字节 的存储空间。

  • 能够确定对数据进行操作所需要的正确处理方式。比如如果是整数类型,那么 123+234 被解释为两个整数的加法运算,所以其结果是 357;如果是文本类型,那么 123+234 则 会被解释为两个字符串的相连操作,所以其结果是 123234。

1.2.4 记录(Record)

记录有可以被称为行(Row),可以通俗的认为它是数据表中的一行数据。记录有可以被称为行(Row),可以通俗的认为它是数据表中的一行数据。以员工表为例,一个公司的员工表中的数据是这样的:略
这里每一行数据就代表一个员工的资料,这样的一行数据就叫做一条记录。表是由行和列组成的一张二维表,这就是关系数据库中最基本的数据模型。
这里每一行数据就代表一个员工的资料,这样的一行数据就叫做一条记录。表是由行和列组成的一张二维表,这就是关系数据库中最基本的数据模型。

1.2.5 主键(PrimaryKey)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值