精通数据库系列之入门-基础篇2_MySQL-mysql教程
作者:robinqianqcs521 | 来源:互联网 | 2017-05-12 16:09
数据库系统的产生和发展众所周知,数据库系统并不是在计算机产生的同时就出现的,而是随着计算机技术的不断发展,在特定的历史时期、特定的需求环境下出现的。人类在1946年发明了世界上的第一台计算机到20世纪60年代这漫长的20年里,计算机操作系统还主要局限于文件的
数据库系统的产生和发展
众所周知,数据库系统并不是在计算机产生的同时就出现的,而是随着计算机技术的不断发展,在特定的历史时期、特定的需求环境下出现的。人类在1946年发明了世界上的第一台计算机到20世纪60年代这漫长的20年里,计算机操作系统还主要局限于文件的操作,同样,对数据的管理也主要是通过文件系统来实现。进行计算所需要的各种数据存放在各自的文件里面。当要使用这些数据的时候,将文件打开,读取文件中的数据到内存中。当计算完毕后,将计算结果仍旧写入到文件中去。
虽然这种在文件中存放数据的方式目前在很多系统中还在使用,但是,这样的数据存放方式在三四十年前的当时,就已经显示出了非常明显的不足。这些不足主要集中在无法对数据进行有效的统一管理。具体表现在这样几个方面:
程序员编写应用程序非常不方便。应用程序的设计者需要对程序所使用的文件的逻辑结构和物理结构都了解的非常清楚。而计算机操作系统只提供将文件打开、关闭、保存等非常低级的操作,而对数据的修改、查询操作则需要应用程序来解决,如果程序所需要的数据存放在不同的文件里,而且这些文件的存储格式又迥然不同。这样就给应用程序的开发带来了巨大的麻烦,程序员要为程序中所用到的每一个文件都写好相应的接口,而且不同的文件格式相差很大,这样就大大的增加了编程的工作量,从而使得在文件级别上开发应用程序的效率非常低下,严重影响应用软件的发展。
文件结构的每一处修改都将导致应用程序的修改,从而使得应用程序的维护工作量特别大。编过程序的人都有这种体会,就是每当自己开发完毕的程序需要修改的时候,又不得不将源程序重新修改、编译、链接。其麻烦程度可想而知。因为有人戏称编程人员为“老改”人员,个中滋味,外人恐怕很难体会到的。
计算机操作系统中的文件系统一般不支持对文件的并发访问。而在现代计算机系统中,为了充分发挥计算机系统的资源使用效率,一般都允许多个程序“同时”运行,即并发性。对数据库系统同样有并发性的要求,现在比较大型的数据库都有非常强的并发访问机制,这样可以充分利用数据库服务器的软、硬件资源,避免浪费。
由于基于文件系统的数据管理缺乏整体性、统一性,在数据的结构、编码、表示格式等诸多方面不能做到标准化、规范化,不同的操作系统有风格迥异的表示方式,因此在一定程度上造成了数据管理的混乱。另外,基于文件系统的数据管理在数据的安全性和保密性发面难以采取有效的措施,在一些对安全性要求比较高的场合,这种安全上的缺陷是完全不允许的。
针对文件系统的这些重要缺点,人们逐步发展了以统一管理数据和共享数据为主要特征的系统,这就是数据库系统。数据库系统就是在这样的背景下发展起来了。1964年,美国通用电气公司开发成功了世界上的第一个数据库系统——IDS(Integrated Data Store)。IDS奠定了网状数据库的基础,并且得到了广泛的发行和应用,成为数据库系统发展史上的一座丰碑。1969年,美国国际商用机器公司(IBM)也推出世界上第一个层次数据库系统IMS(Information Management System),同样在数据库系统发展史上占有重要的地位。
七十年代初,E.F.Codd在总结前面的层次、网状数据库优缺点的基础上,提出了关系数据模型的概念。他提出了关系代数和关系演算(直到今天,在E.F.Codd的这些基本理论还在左右这数据库系统的发展,也依然是高校计算机专业课堂上所要讲述的重要内容)。在整个七十年代,关系数据库系统无论从理论上还是实践上都去的了丰硕的成果。在理论上,确立了完整的关系模型理论、数据依赖理论和关系数据库的设计理论(在后面将重点讲述这些关系数据库的基本理论);在实践上,世界上出现了很多著名的关系数据库系统,比较著名的如System R,INGRES,Oracle等。
和文件系统相比,数据库系统有一系列的特点,具体表现在以下几个方面:
数据库系统向用户提供高级的接口。在文件系统中,用户要访问数据,必须了解文件的存储格式、记录的结构等。而在数据库系统中,这一切都不需要了。数据库系统为用户处理了这些具体的细节,向用户提供非过程化的数据库语言(即通常所说的SQL语言),用户只要提出需要什么数据,而不必关心如何获得这些数据。对数据的管理完全由数据库管理系统(DBMS: Database Management System)来实现。
查询的处理和优化。查询通常指用户向数据库系统提交的一些对数据操作的请求。由于数据库系统向用户提供了非过程化的数据操纵语言,因此对于用户的查询请求就由DBMS来完成,查询的优化处理就成了DBMS的重要任务。
并发控制。前面曾经提到,文件系统一般不支持并发操作,这样大大的限制了系统资源的有效利用。在数据库系统中,情况就不一样了。现代的数据库系统都有很强的并发操作机制,多个用户可以同时访问数据库,甚至可以同时访问同一个表中的不同记录。这样极大的提高了计算机系统资源的使用效率。
数据的完整性约束。凡是数据都要遵守一定的约束,最简单的一个例子就是数据类型,例如定义成整型的数据就不能是浮点数。由于数据库中的数据是持久的和共享的,因此对于使用这些数据的单位来说,数据的正确行显得非常重要。在关系数据库系统中,比较重要的完整性约束有实体完整性、域完整性、参照完整性和用户自定义的完整性等,在后面的文章中将有重点讲述。
进入二十世纪八十年代之后,计算机硬件技术有了飞速的提高。计算机技术的提高促使计算机应用不断深入,产生了许多新的应用领域,例如计算机辅助设计、计算机辅助制造、计算机辅助教学、办公自动化、智能信息处理、决策支持等。这些新的领域对数据库系统提出了新的要求。但是由于应用的多元化,不能设计出一个统一的数据模型来表示这些新型的数据及其相互关系,因而出现了百家争鸣的局面,产生了演绎数据库、面向对象数据库、分布式数据库、工程数据库、时态数据库、模糊数据库等新型数据库的研究和应用。
不过到目前为止,在世界范围内得到主流应用的还是经典的关系数据库系统,比较知名的如Sybase,Oracle,Informix,SQL Server,DB2等。在本系列专题文章中,我们也将根据数据库系统的实际应用情况,重点介绍关系数据库系统。其他的数据库系统,也将作简单的介绍。
推荐阅读
-
自SQL Server 2005以来,微软的这款数据库产品逐渐崭露头角,成为企业级应用中的佼佼者。本文将探讨SQL Server 2008的革新之处及其对企业级数据库市场的影响。 ...
[详细]
蜡笔小新 2024-12-12 18:36:20
-
本文详细探讨了Apache SkyWalking中的SQL注入漏洞(CVE-2020-9483),特别是其影响范围、漏洞原因及修复方法。Apache SkyWalking是一款强大的应用性能管理工具,广泛应用于微服务架构中。然而,该漏洞使得未经授权的攻击者能够通过特定的GraphQL接口执行恶意SQL查询,从而获取敏感信息。 ...
[详细]
蜡笔小新 2024-12-12 17:16:40
-
-
一面问题:MySQLRedisKafka线程算法mysql知道哪些存储引擎,它们的区别mysql索引在什么情况下会失效mysql在项目中的优化场景 ...
[详细]
蜡笔小新 2024-12-12 09:34:47
-
本文详细探讨了Java中的关键字static、单例模式、main()方法、代码块、final关键字、抽象类与方法、模板方法设计模式、接口、内部类等内容,旨在帮助读者深入理解和掌握Java面向对象编程的核心概念。 ...
[详细]
蜡笔小新 2024-12-12 16:41:55
-
导入大csv文件到mysql(CSV导入) ...
[详细]
蜡笔小新 2024-12-12 15:01:40
-
本文详细介绍了如何为笔记本电脑配置无线网络连接,确保其安全性和稳定性,适合初学者快速上手。 ...
[详细]
蜡笔小新 2024-12-12 13:49:13
-
本文档详细介绍了2017年8月31日关于MySQL数据库备份与恢复的教学内容,包括MySQL日志功能、备份策略、备份工具及实战演练。 ...
[详细]
蜡笔小新 2024-12-12 13:25:48
-
介绍一个基于区块链技术的分布式存储项目,其提供的网盘服务速度远超传统网盘,如百度网盘,最高可达5倍之多。 ...
[详细]
蜡笔小新 2024-12-12 12:41:40
-
本文详细介绍了Zookeeper中的ZAB协议、节点类型、ACL权限控制机制、角色分工、工作状态、Watch机制、常用客户端、分布式锁实现、默认通信框架以及消息广播和领导选举的流程。 ...
[详细]
蜡笔小新 2024-12-12 12:41:06
-
在使用EasyCVR视频融合平台过程中,用户常遇到关于端口设置的问题,尤其是TCP和UDP模式的区别。本文将详细介绍这两种模式在GB28181协议下的具体应用及差异。 ...
[详细]
蜡笔小新 2024-12-12 11:57:36
-
本文将详细介绍如何在Linux操作系统中使用Bitnami Redmine安装包快速搭建Redmine项目管理平台,帮助读者轻松完成环境配置。 ...
[详细]
蜡笔小新 2024-12-12 10:58:24
-
本文深入解析了PHP中输出缓冲(Output Buffering)的原理及其在Web开发中的应用,特别是如何通过输出缓冲技术有效管理HTTP头部信息,提高代码的灵活性与健壮性。 ...
[详细]
蜡笔小新 2024-12-12 10:37:27
-
本文深入探讨了服务器的主要作用,包括加速访问、增强安全性和绕过访问限制等,并详细介绍了如何正确配置代理服务器。 ...
[详细]
蜡笔小新 2024-12-12 10:17:56
-
本文提供了一套实用的方法论,旨在帮助开发者构建能够应对高并发请求且易于扩展的Web服务。内容涵盖了服务器架构、数据库管理、缓存策略以及异步处理等多个方面。 ...
[详细]
蜡笔小新 2024-12-12 10:13:02
-
本文探讨了即使实现了财务自由,为何仍有许多人选择继续职场拼搏的原因,以及这种选择背后的深层心理与职业动力。阅读大约需要4分钟。 ...
[详细]
蜡笔小新 2024-12-12 09:10:37
-
robinqianqcs521
这个家伙很懒,什么也没留下!