1.6 经典习题与面试题
- 经典习题
(1)数据库技术发展经历了哪几个阶段?
答案:本小节将为读者介绍数据库技术经历的3个阶段,即层次数据库和网状数据库阶段、关系数据库技术阶段和后关系数据库技术阶段。
- 层次数据库和网状数据库技术阶段
层次数据库系统是较早研制成功的数据库系统,典型的是1968年由IBM研制的信息管理系统(Information Manager System,IMS)。1966年,美国国家航空航天(NASA)承包商北美航空希望能够开发一个计算机程序,用于追踪火箭队的数百万个部件,作为对这个需求的回应,IBM在1968年推出全球第一个商用数据库管理系统,该系统在1969年改名为信息管理系统。
网状数据库是处理以记录类型为节点的网状数据模型的数据库。世界上第一个网状数据库系统是美国通用电气Bachman等人在1964年开发成功的IDS(Integrated DataStore),IDS奠定了网状数据库的基础。
- 关系数据库技术阶段
1970年,IBM的研究院,有"关系数据库之父"之称的埃德加·弗兰克·科德博士首次提出了数据库的关系模型的概念,奠定了关系模型的理论基础。20世纪70年代,IBM公司的Sam Jose实验室研制的关系数据库问世。20世纪80年代以来,计算机厂商推出的数据库管理系统几乎都支持关系模型,数据库领域当前的研究工作大都以关系模型为基础。关系数据库技术的代表数据库管理系统为Oracle、DB2、SQL Server、MySQL、Sybase等。
- 后关系数据库技术阶段
后关系数据库实际上是在关系数据库的基础上融合了面向对象技术和Internet网络应用开发背景而发展起来的。它结合了传统数据库(如层次、网状和关系数据库)的一些特点,以及Java等编程工具环境,适用于以Internet Web为基础的应用,开创了关系数据库的新时代。从后关系数据库模型的提出到现在已经经历了20多年,随着后关系型数据库技术的发展,后关系型数据库产品已经不再停留在模型的基础阶段,例如美国InterSystems公司发布的Cache就是一个用于高性能事务应用的后关系型数据库管理系统,该系统具有面向对象的许多功能和一个事务型多维数据模型。
(2)当前常用的流行数据库有哪些?
答案:在当前主流的数据库中,商业数据库以甲骨文的Oracle数据库为主,另外还有IBM公司的DB2数据库、微软公司的SQL Server数据库,同时还有很多优秀的免费开源数据库,如PostgreSQL、MySQL等都深受欢迎。
(3)MySQL的数据库如何分类?
答案:
1979年Michael Widenius用BASIC设计了一个报表工具Unireg,这是一个很底层的面向报表的存储引擎,是存储引擎算法的前身,但不支持SQL。
1985年David Axmark、Allan Larsson和Micheal Widenlus成立了一家公司,就是MySQL AB的前身。他们设计了一个利用索引顺序存取数据的方法,也就是ISAM(Indexed Sequential Access Method)存储引擎的前身。
1996年Micheal Widenlus和David Axmark一起协作写出了MySQL的第一个版本,此时还只是小范围使用,几个月后直接发布了3.11版本。
1998年CK Datakonsult公司正式更名为MySQL AB公司,同年,MySQL官方网站完成建立(www.mysql.com)。
1999年MySQL与Sleepcat公司合作,MySQL提供了支持事务的Berkeley DB引擎。后来由于这个引擎的许多问题,MySQL5.1以后不对这个引擎提供支持了。
2000年ISAM华丽转身为MyISAM存储引擎,同年MySQL开放了自己的源代码,并且基于GPL许可协议。
2001年MySQL开始集成InnoDB引擎。
2003年MySQL发布4.0版本,与InnoDB正式结合。
2005年MySQL5.0发布,这是一个里程碑的版本,实现了许多功能特性。同年5月,Oracle收购了开发InnoDB存储引擎的Innobase Oy公司,预示着不久后对MySQL的收购。
2008年MySQL AB公司被Sun公司以10亿美金收购。
2009年Oracle公司以74亿美金收购Sun公司,自MySQL数据库进入Oracle时代。
2010年MySQL5.5发布,InnoDB存储引擎成为MySQL的默认存储引擎。
2013年MySQL5.6GA版本发布。
2015年MySQL5.7版本发布。
2016年9月MySQL发布里程碑版本MySQL8.0.0。
2018年4月MySQL8.0.11GA版本正式发布。
(4)简述数据库管理系统的基本组成。
答案:
本节将逐一介绍数据库、数据表、数据类型、主键以及数据库开发语言SQL,它们都是数据库管理系统的基本组成部分。
1.3.1 数据库
数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库,用户可以对文件进行中的数据进行新增、更改、查询和删除操作。
1.3.2 数据表
表是包含数据库中所有数据的数据对象,是组成数据库的基本元素,由若干字段组成,主要用来实现存储数据记录。表的操作包括创建表、查看表、删除和修改表。
表中的数据库对象包含列(Columns)、索引(Indexes)和触发器(Trigger)。
(1)列:也称属性列,在具体创建表时必须指定列的名字和数据类型。
(2)索引:是指根据指定的数据库表列建立起来的顺序,提供了快速访问数据的途径且可监督表的数据,使其索引所指向的列中的数据不重复。
(3)触发器:是指用户定义的事物命令的集合,当对一个表中的数据进行插入、更新或删除时,这组命令就会自动执行,可以用来确保数据的完整性。
1.3.3 数据库开发语言SQL
数据库管理系统通过SQL(Structured Query Language,结构化查询语言)来管理数据库中的数据。
SQL语言分为3个部分,即数据定义语言(Data Definition Language,DDL)、数据操作语言(Data Manipulation Language,DML)和数据控制语言(Data Control Language,DCL)。
- DDL语句
数据定义语言主要用于定义数据库、表、视图、索引和触发器等。其中包括CREATE语句、ALTER语句和DROP语句。
- DML语句
数据操纵语言主要用于插入数据、查询数据、更新数据和删除数据。其中包括INSERT语句、SELECT语句、UPDATE语句和DELETE语句。
- DCL语句
数据控制语言主要用于控制用户的访问权限。在应用程序中,也可以通过SQL语句来操作数据。例如,可以在Java语言中嵌入SQL语句,通过执行Java语言来调用SQL语句,这样即可在数据库中插入数据和查询数据。
- 面试题及解答
如何选择数据库?
Oracle、DB2、SQL Server数据库主要应用于比较大的管理系统中。
Access、MySQL、PostgreSQL属于中小型的数据库,主要应用于中小型的管理系统。
SQL Server、Access数据库只能在Windows系列的操作系统上运行。
Oracle、DB2、PostgreSQL、MySQL可以运行在UNIX、Linux和Mac OS X操作系统上。
Oracle和DB2比较复杂,MySQL和PostgreSQL非常易用但性能不如Oracle。
因此在选择数据库时,要根据运行的操作系统、项目的需求等综合考虑。