MySQL从入门到精通——数据库基础 数据库基础

本章导航:

  • 了解什么是数据库
  • 掌握什么是表、数据类型和主键
  • 熟悉数据库的技术构成
  • 熟悉什么是 MySQL
  • 掌握常见的 MySQL 工具
  • 了解如何学习 MySQL

  数据库由一批数据构成有序的集合,这些数据被存放在结构化的数据表里。数据表之间相互关联,反映了客观事物间的本质联系。

  数据库系统提供对数据的安全控制和完整性控制。

1.1、什么是数据库

  数据库的概念诞生于 60 年前,随着信息技术和市场的快速发展,数据库技术层出不穷,随着应用的扩展和深入,数据库的数量和规模越来也大,其诞生和发展给计算机信息管理带来了一场巨大的革命。

  数据库的发展大致划分为如下几个阶段:人工管理阶段、文件系统阶段、数据库系统阶段、高级数据库阶段。其种类大概有 3 种:层次式数据库、网络式数据库和关系型数据库。不同种类的数据库按不同的数据结构来联系和组织。

  对于数据库的概念,没有一个完全固定的定义,随着数据库历史的发展,定义的内容也有很大的差异,其中一种比较普遍的观点认为,数据库(DataBase,DB)是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。它是一个按数据结构来存储和管理的计算机软件系统。数据库包含两层含义:保管数据的“仓库”,以及数据管理的方法和技术。

  数据库的特点是:实现数据共享,减少数据冗余;采用特定的数据类型;具有较高的数据独立性;具有统一的数据控制功能。

1.2、表

  在关系数据库中,数据库表示一系列二维数组的集合,用来存储和操作数据的逻辑结构。它由纵向的列和横向的行组成。行被称为记录,是组织数据的单位;列被称为字段,每一列表示记录的一个属性,有相应的描述信息,如数据类型、数据宽度等。

  例如,一个有关作者信息的名为 authors 的表中,每列包含作者某个特定类型的信息,比如 "姓名",而每行则包含了某个特定作者的所有信息(编号、姓名、性别、专业):

MySQL从入门到精通——数据库基础
数据库基础

1.3、数据类型

  数据类型决定了数据在计算机中的存储格式,代表不同的信息类型。常用的数据类型有整数数据类型、浮点数数据类型、精确小数类型、二进制数据类型、日期/时间数据类型、字符串数据类型。

  表中的每一个字段就是某种指定数据类型。比如图中 "编号" 字段为整数数据,"性别" 字段为字符型数据。

1.4 主键

  主键(Primary Key)又称主码,用于唯一地标识表中的每一条记录。可以定义表中的一列或多列为主键,主键列上既不能有两行相同的值,也不能为空值。假如,定义 authors 表,该表给每一个作者分配一个 "作者编号",该编号作为数据表的主键。如果出现相同的值,将提示错误,系统不能确定查询的究竟是哪一条记录;如果把作者的 “姓名” 作为主键,则不能出现重复的名字,这与现实中的情况不符,因此 "姓名" 字段不适合作为主键。

 2.1 数据库技术构成

   数据库系统由硬件部分和软件部分共同构成。硬件主要用于存储数据库中的数据,包括计算机、存储设备等。软件部分主要包括 DBMS、支持 DBMS 运行的操作系统,以及支持多种语言进行应用开发的访问技术等。

  数据库系统有 3 个主要的组成部分:

  • 数据库:用于存储数据的地方。
  • 数据库管理系统:用于管理数据库的软件。
  • 数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库软件补充。

  数据库系统(Database System)提供了一个存储空间,用以存储各种数据,可以将数据视为一个存储数据的容器。一个数据库可能包含许多文件,一个数据库系统中通常包含许多数据库。

  数据库管理系统(Database Management System,DBMS)是用户创建、管理和维护数据库时候所使用的软件,位于用户与操作系统之间,对数据库进行统一管理。DBMS 能定义数据存储结构,提供数据的操作机制,维护数据库的安全性、完整性和可靠性。

  数据库应用程序(DatatBaseApplication)虽然已经有了 DBMS,但是在很多情况下,DBMS 无法满足对数据管理的要求。数据库应用程序的使用可以满足对数据管理的更高要求,还可以使数据管理过程更加直观和友好。数据库应用程序负责与 DBMS 进行通信,访问和管理 DBMS 中存储的数据,允许用户插入、修改、删除 DB 中的数据。

  数据库系统如下图所示:

MySQL从入门到精通——数据库基础
数据库基础

 2.2 SQL语言

  对数据库进行查询和修改操作的语言叫做 SQL。SQL 的含义是结构化查询语言(Structured Query Language)。SQL 有许多不同的类型,有 3 个主要的标准:ANSI(美国国家标准机构)SQL;对 ANSI SQL 修改后在 1992 年采纳的标准,成为 SQL-92 或 SQL2;最近的 SQL-99 标准,从 SQL2 扩充而来,并增加了对象关系特征和许多其他新功能。各大数据库厂商提供不同版本的 SQL,这些版本的 SQL 不但能包括原始的 ANSI 标准,而且在很大程度上支持 SQL-92 标准。

  SQL 语言包含以下 4 部分:

(1)数据定义语言(DDL):DROP、CREATE、ALTER 等语句。

(2)数据操作语言(DML):INSERT(插入)、UPDATE(修改)、DELETE(删除) 语句。

(3)数据查询语言(DQL):SELECT 语句。

(4)数据控制语言(DCL):GRANT、REVOKE、COMMIT、ROLLABCK 等语句。

2.3 数据库访问接口

  不同的程序设计语言会有各自不同的数据库访问接口,程序语言通过这些几口执行 SQL 语句,进行数据库管理。主要的数据库访问接口有 ODBC、JDBC、ADO.NET 和 PDO。

  1、ODBC

  ODBC(Open Database Connectivity,开放数据库连接)技术为访问不同的 SQL 数据库提供了一个共同的接口。ODBC 使用 SQL 作为访问数据的标准。这一接口提供了最大限度的互操作性:一个应用程序可以通过共同的一组代码访问不同的 SQL 数据库管理系统(DBMS)。

  2、JDBC

  JDBC(Java Data Base Connectivity,Java 数据库连接)用于 Java 应用程序连接数据库的标准方法,是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问,由一组用 JAVA 语言编写的类和接口组成。

  3、ADO.NET

  ADO.NET 是微软在 .NET 框架下开发设计的一组用于和数据源进行交互的面向对象类库。

  4、PDO

  PID(PHP Data Object)为PHP 访问数据库定义了一个轻量级的、一致性的接口,提供了一个数据访问抽象层。这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。

  针对不同的程序语言,在 MySQL 提供了不同数据库访问连接驱动,读者可以在下载页面(https://dev/MySQL.com/downloads/)下载相关驱动。

3.1 什么是 MySQL

  MySQL 是一个小型关系数据库管理系统。与其他大型数据库管理系统(例如 Oracle、DB2、SQL Server 等)相比,MySQL 规模小、功能有限,但是它体积小、速度快、成本低,并且提供的功能对稍微复杂的应用来说已经够用,这些特性使得 MySQL 成为世界上最受欢迎的开放源代码数据库。

3.2  客户端/服务器软件

  主从式架构(Client-Server Model)或客户端/服务器(Client/Server)结构(简称 C/S 结构),是一种网络架构,通常在该网络架构下的软件可分为客户端(Client)和服务器(Server)。

3.3 MySQL 版本

  针对不同用户,MySQL 分为两个不同的版本:

    • MySQL Community Server(社区版服务器):该版本完全免费,但是官方不提供技术支持。
    • MySQL Enterprise Server(企业版服务器):能够以很高的性价比为企业提供数据仓库应用,支持 ACID 事务处理,提供完成的提交、回滚、崩溃恢复和行级锁定功能。但是该版本需要付费使用,官方提供电话技术支持。
    • MySQL Cluster 主要用于架设集群服务器,需要在社区版或企业版基础上使用。

  MySQL 的命名机制由 3 个数字和 1 个后缀组成,例如:MySQL-8.0.13 版本。

(1)第 1 个数字(8)是主版本号,描述了文件格式,所有版本 8 的发行版都有相同的文件格式。

(2)第 2个数字(0)是发行级别,主版本号和发行级别组合在一起便构成了发行序列号。

(3)第 3 个数字(13)是在此发行系列的版本号,随每次新分发版本递增。通常选择已经发行的最新版本。

  在 MySQL 开发过程中,同时存在多个发布系列,每个发布处在成熟度的不同阶段。

(1)MySQL 8.0 是最新开发的稳定(GA)发布系列,是将执行新功能的系列,目前已经可以正常使用。

(2)MySQL 8.0 是比较稳定(GA)发布系列。只针对漏洞修复重新发布,没有增加会影响稳定性的新功能。

(3)MySQL 5.7 是前一稳定(产品质量)发布系列。只针对严重漏洞修复和安全修复重新发布,没有增加会影响该系列的重要功能。

 3.4 MySQL 的优势

(1)速度:运行速度快。

(2)价格:MySQL 对多数个人来说是免费的。

(3)容易使用:与其他大型数据库的设置和管理相比,其复杂程度较低,易于学习。

(4)可移植性:能够工作在众多不同的系统平台上,例如 Linux、Windows、mac 等。

(5)丰富的接口:提供了用于 C、C++、Java、Python、Ruby等语言的API。

(6)支持查询语言:MySQL 可以利用标准 SQL 语法和支持 ODBC 的应用程序。

(7)安全性和连接性:十分灵活和安全的权限和密码系统,允许基于主机的验证。连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码安全。由于 MySQL 是网络化的,因此可以在因特网上的任何地方访问,提高数据共享的效率。

4.1 MySQL 工具

  MySQL 数据库管理系统提供了许多命令行工具,这些工具可以用来管理 MySQL 服务器、对数据库进行访问控制、管理 MySQL 用户以及数据库备份和恢复工具等。

  MySQL 命令行使用程序:

  MySQL 服务器端实用工具程序如下:

(1) mysqld:SQL 后台程序(MySQL 服务器进程)。必须在该程序运行之后,客户端才能通过连接服务器来访问数据库。

(2) mysqld_safe:服务器启动脚本。在 UNIX 和 NetWare 中推荐使用 mysqld_safe 来启动 mysqld 服务器。mysqld_safe 增加了一些安全特性,例如当出现错误时重启服务器并向错误日志文件写入运行时间信息。

(3) mysql.server:服务器启动脚本。该脚本用于使用包含为特定级别的、运行启动服务的脚本的、运行目录的系统。它调用 mysqld_safe 来启动 MySQL 服务器。

(4) mysql_multi:服务器启动脚本,可以启动或停止系统上安装的多个服务器。

(5) myisamchk:用来描述、检查、优化和维护 MyISAM 表的实用工具。

(6) mysqlbug:MySQL 缺陷报告脚本。它可以用来向 MySQL 邮件系统发送缺陷报告。

(7) mysql_install_db:该脚本用默认权限创建 MySQL 授权表。通常只是在系统上首次安全 MySQL 时执行一次。

   MySQL 客户端实用工具程序如下:

(1) myisampack:压缩 MyISAM 表,以产生更小的只读表的一个工具。

(2) mysql:交互式输入 SQL 语句或从文件以批处理模式执行它们的命令行工具。

(3) mysqlaccess:检查访问主机名、用户名和数据库组合的权限的脚本。

(4) mysqladmin:执行管理操作的客户程序,例如创建和删除数据库、重载授权表、将表刷新到硬盘上以及重新打开日志文件。mysqladmin 还可以用来检索版本、进程,以及服务器的状态信息。

(5) mysqlbinlog:从二进制日志读取语句的工具。在二进制日志文件中包含执行过的语句,可用来帮助系统从崩溃中恢复。

(6) mysqlcheck:检查、修复、分析以及优化表的表维护客户程序。

(7) mysqldump:将 MySQL 数据库转储到一个文件(例如 SQL 语句或 tab 分隔符文本文件)的客户程序。

(8) mysqlhotcopy:当服务器在运行时,快速备份 MyISAM 或 ISAM 表的工具。

(9) mysqlimport:使用 LOAD DATA INFILE 将文本文件导入相关表的客户程序。

(10) mysqlshow:显示数据库、表、列以及索引相关信息的客户程序。

(11) perror:显示系统或 MySQL 错误代码含义的工具。

4.2 MySQL  Workbench

  MySQL Workbench 是下一代可视化数据库设计软件,为数据库管理员和开发人员提供了一整套可视化数据库操作环境,主要功能有:

  • 数据库设计和模型建立。
  • SQL 开发(取代 MySQL Query Browser)。
  • 数据库管理(取代 MySQL Administrator)。

  MySQL Workbench 有两个版本:

    • MySQL Workbench Community Edition(也叫 MySQL Workbench OSS,社区版),是在 GPL 证书下发布的开源社区版本。
    • MySQL Workbench Standard Edition(也叫 MySQL Workbench SE,商业版),是按年收费的商业版本。

5.1 如何学习 MySQL

  官网yyds(https://www.mysql.com/)