目录
什么是数据库
数据: 描述事物的符号记录, 可以是数字、 文字、图形、图像、声音、语言等,数据有多种形式,它们都可以经过数字化后存入计算机。
数据库: 存储数据的仓库,是长期存放在计算机内、有组织、可共享的大量数据的集合。数据库中的数据按照一定数据模型组织、描述和存储,具有较小的冗余度,较高的独立性和易扩展性,并为各种用户 共享,即数据库包含两层含义:保管数据的“仓库”,以及数据管理的方法和技术。总结为以下几点:
1、数据结构化
2、数据的共享性高、冗余度低、易扩充
3、数据独立性高
4、数据由DBMS统一管理和控制(安全性、完整性、并发控制、故障恢复)
数据库原理
数据库(Database)是一些相关数据的集合,我们可以用一定的原则与方法添加、编辑和删除数据的内 容,进而对所有数据进行搜索、分析及对比,取得可用的信息,产生所需的结果。
每一个数据表都由一个个字段组合起来,例如,在产品数据表中,可能会有产品编号、产品名称和产品 价格等字段,只要按照一个个字段的设置输人数据,即可完成一个完整的数据库。
数据库管理系统(DBMS)
数据库系统成熟的标志就是数据库管理系统的出现。数据库管理系统(DataBase Managerment System,简称DBMS)是管理数据库的一个软件,它充当所有数据的知识库,并对它的存储、安全、一致 性、并发操作、恢复和访问负责。是对数据库的一种完整和统一的管理和控制机制。数据库管理系统不 仅让我们能够实现对数据的快速检索和维护,还为数据的安全性、完整性、并发控制和数据恢复提供了 保证。数据库管理系统的核心是一个用来存储大量数据的数据库。
DBMS是所有数据的知识库,并对数据的存储、安全、一致性、并发操作、恢复和访问负责。DBMS有一个数据字典(有时被称为系统表),用于贮存它拥有的每个事物的相关信息,例如名
字、结构、位置和类型,这种关于数据的数据也被称为元数据(metadata)
数据库与文件系统的区别
文件系统:
- 文件系统是操作系统用于明确存储设备(常见的是磁盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理 系统,简称文件系统。
数据库系统:
- 数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称 DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。
对比区别:
- 管理对象不同: 文件系统的管理对象是文件,并非直接对数据进行管理,不同的数据结构需要使用不同的文件类型进行保存(举例: txt 文件和 doc 文件不能通过修改文件名完成转换) ;而数据库直接对数据进行存储和管理2.
- 调用数据的方式不同:文件系统使用不同的软件打开不同类型的文件;数据库系统由 DBMS 统一调用和管理。
- 存储方式不同:文件系统使用不同的文件将数据分类(.docx/.mp4/.jpg) 保存在外部存储上;数据库系统使用标准统一的数据类型进行数据保存(字母、 数字、符号、时间)
优缺点总结:
- 由于 DBMS 的存在,用户不再需要了解数据存储和其他实现的细节,直接通过 DBMS 就能获取数据,为数据的使用带来极大便利。
- 具有以数据为单位的共享性,具有数据的并发访问能力。 DBMS 保证了在并发访问时数据的一致性。
- 低延时访问,典型例子就是线下支付系统的应用,支付规模巨大的时候,数据库系统的表现远远优 于文件系统。
- 能够较为频繁的对数据进行修改,在需要频繁修改数据的场景下,数据库系统可以依赖 DBMS 来对数据进行操作且对性能的消耗相比文件系统比较小。
- 对事务的支持。 DBMS 支持事务,即一系列对数据的操作集合要么都完成, 要么都不完成。在
DBMS上对数据的各种操作都是原子级的。
数据库技术构成
数据库系统
数据库系统有3个主要的组成部分。数据库:用于存储数据的地方。
数据库管理系统:用于管理数据库的软件。
数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库的软件补充。
SQL语言
SQL语言包含以下4个部分。
- 数据定义语言(DDL):DROP、CREATE、ALTER等语句。
- 数据操作语言(DML):INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。
- 数据查询语言(DQL):SELECT语句。
- 数据控制语言(DCL):GRANT、REVOKE、COMMIT、ROLLBACK等语句。
⚫数据库访问技术
不同的程序设计语言会有各自不同的数据库访问技术,程序语言通过这些技术,执行SQL语句,进行数 据库管理。主要的数据库访问技术有:
- ODBC
- JDBC
- ADO.NE
- PDO
数据库的发展史
初始阶段 人工管理:人力手工整理存储数据
萌芽阶段 文件系统:使用磁盘文件来存储数据
初级阶段 第一代数据库:出现了网状模型、层次模型的数据库
中级阶段 第二代数据库:关系型数据库和结构化查询语言
高级阶段 新一代数据库:“关系-对象”型数据库
常见的数据库有哪些
关系型数据库
关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中 的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。 简单说,关系型数据库是由多张能互相联接的二维行列表格组成的数据库。
关系模型就是指二维表格模型, 因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL、浪潮K-DB 、武汉达梦、南大通用、人大金仓等。
实体关系模型简称 E-R 模型,是一套数据库的设计工具,他运用真实世界中事物与关系的观念,来解释数据库中的抽象的数据架构。实体关系模型利用图形的方式(实体-关系图)来表示数据库的 概念设计,有助于设计过程中的构思及沟通讨论
非关系型数据库
非关系型数据库: 又被称为 NoSQL(Not Only SQL ),意为不仅仅是 SQL, 是一种轻量、开源、不兼容 SQL 功能的数据库, 对 NoSQL 最普遍的定义是“非关联型的”,强调 Key-Value 存储和文档数据库的优点,而不是单纯地反对 RDBMS(关系型数据库管理系统)
MySQL
⚫创始人
Monty Widenius
MySQL最早可以追溯到1979年
⚫1996年10月MySQL 1.0 发布
⚫2001年MySQL 3.23发布
最早在生产环境使用的版本
MySQL 3.23.49
⚫MySQL是一个中型关系数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被sun公司10亿美金收购。2009年,SUN又被Oracle以74亿美金收购。
⚫目前MySQL被广泛地应用在Internet上的中小型网站中。由于体积小、速度快、总体拥有成本低,尤 其是开放源代码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据 库。
MySQL的特性
- 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。
- 支持AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、NetBSD、OpenBSD、OS/2 Wrap、Solaris、SunOS、Windows等多种操作系统。
- 为多种编程语言提供了API。这些编程语言包括C、C++、C#、Delphi、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。
- 支持多线程,充分利用CPU资源,支持多用户。
- 优化的SQL查询算法,有效地提高查询速度。
- 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的 软件中。
- 提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。
- 提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
- 提供用于管理、检查、优化数据库操作的管理工具。
- 可以处理拥有上千万条记录的大型数据库。
MySQL企业级环境应用
9 of 10 top web sites in the world
Embedded by 8 of the top 10 ISVs
#1 database in the Cloud
Integrated W/Hadoop in 80% of Big Data platform
MySQL获取
针对不同用户,MySQL分为2个不同的版本:
⚫MySQL Community Server,社区版,该版本完全免费,但是官方不提供技术支持。
⚫MySQL Enterprise Server,企业版服务器,它能够搞性价比的为企业提供数据仓库应用。
版本介绍:
- Alpha版:开发版,公司内部使用
- Beta版:完成开发后,用户体验版
- RC版:生产环境发布之前的一个小版本或称候选版
- GA版:正式发布版本
MySQL获取:MySQL
- 从官方网站下载安装包
- 从官方网站下载源代码包
- 从官方网站下载二进制包
- 从发行版本光盘中获取安装包
MySQL 常见版本
- MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。
- MySQL Enterprise Edition 企业版本,需付费,可以试用 30 天。
- MySQL Cluster 集群版,开源免费。可将几个 MySQL Server 封装成一个 Server。
- MySQL Cluster CGE 高级集群版,需付费
MySQL分支版本
为什么需要分支版本的开发?
MySQL相应功能缺失
MySQL性能还能进一步提升空间
面向企业级应用的功能定制
Oracle MySQL的不确定性