数据库基础

数据库基础

什么是数据库

​ 数据库是由一堆数据构成的有序的集合,这些数据被存放在结构化的数据表里。数据表之间相互关联,反映了客观事物间的本质联系。数据库系统提供对数据的安全控制和完整性控制。

​ 数据库的概念诞生于60年前,其诞生和发展给计算机信息管理带来了一场巨大的革命。那么数据库发展至今呢,其种类大概分为三种:层次数据库网络式数据库关系式数据库,那么我们所学的MySQL就是一个关系型数据库管理系统。

​ 随着数据库历史的发展,普遍的观点认为,数据库(DataBase,DB)是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。它是一个按数据结构来存储和管理数据的计算机软件系统,即数据库包含两层含义:保管数据的“仓库”,以及数据管理的方法和技术。

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

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

authors表结构与记录

​ 上图中,这个表中,每个列包含所有作者的某个特定类型的信息,比如每个作者都有编号,名字,性别,专业等,这些属性被称之为字段;每一行,也就是记录,则包含了某个作者所有的特定信息,比如 张三的编号是100,性别为男,专业主修计算机。

数据类型

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

数据类型

主键

​ 主键(Primary Key)又被称之为主码,用于唯一地表示表中的每一条记录,可以理解为表中的一列或者多列被指定为主键时,主键列上不能有两行相同的值,也不能为空值!一旦出现相同的值,将提示错误,系统不能确定当你需要查询时,你究竟需要的是哪一条记录!生活中其实常常出现这样的情况,比如你的员工ID在同一家公司不可能相同、也不能为空,你的证书编号等等。

数据库技术构成

数据库系统

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

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

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

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

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

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

数据库系统

SQL语言

​ 对数据库进行查询和修改操作的语言叫做SQL。SQL的含义是结构化查询语言(Structured Query Language),SQL有许多不同的类型,有3个主要标准:ANSI(美国国家标准机构) SQL,对ANSI SQL修改后在1992年采纳的标准,称之为SQL-92或SQL2。另外,各大数据库厂商提供不同版本的SQL,这些版本的SQL不但能包括原始的ANSI标准,而且在很大程度上支持SQL-92 标准。

SQL包含以下4个部分:

  • 数据定义语言(DDL):DROP、CREATE、ALTER等语句。
  • 数据操作语言(DML):INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。
  • 数据查询语言(DQL):SELECT语句。
  • 数据控制语言(DCL):GRANT、REVOKE、COMMIT、ROLLBACK等语句。

数据库访问接口

​ 不同的程序设计语言会有各自不同的数据库访问接口,程序语言通过这些接口,执行SQL语句,进行数据库管理。

​ Python 标准数据库接口为 Python DB-API ,它为开发人员提供了数据库应用编程接口。那么Python 的数据库接口支持非常多的数据库,例如:GadFly、mSQL、MySQL、Oracle、Sybase、Interbase等

什么是MySQL

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

客户机-服务器软件

MySQL其实从本质上是一个主从式架构(Client-server model)或客户端-服务器(Client/Server)结构的一种软件,这是一种网络架构,通常在该网络架构下的软件分为客户端(Client)和服务端(Server)。

​ 服务器是整个应用系统资源的存储于管理中心,多个客户端则各自处理相应的功能,共同实现完整的应用。在C/S结构中,客户端用户的请求被传送到数据库服务器,数据库服务器进行处理后,将结果返回给用户,从而减少了网络数据传输量。

​ 用户使用应用程序时,首先启动客户端,通过有关命令告知服务器进行连接以完成各种操作,而服务器则按照此请示提供相应的服务。每一个客户端软件的实例都可以向一个服务器或应用程序服务器发出请求。

这种系统的特点就是,客户端和服务器程序不在同一台计算机上运行,这些客户端和服务器程序通常归属不同的计算机。服务器端一般使用高性能的计算机,并配合使用不同类型的数据库;而客户端需要安装专门的软件,比如专门开发的客户端工具浏览器等。

MySQL版本

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

  • MySQL Community Server(社区版):此版本完全免费,但是官方不提供技术支持。

  • MySQL Enterprise Server (企业版服务器):它能够以很高性价比为企业提供数据仓库应用,支持ACID事物处理,提供完整的提交、回滚、崩溃恢复和行及锁定功能。但是需要付费使用,官方提供电话支持。

    我们用社区版就可以了

MySQL优势

MySQL 的主要优势如下:

1. 速度:运行速度快
2. 价格:免费
3. 容易使用:复杂程度比较低,易于上手。
4. 可以执行:能够工作在众多不同的系统平台上,例如:Windows、Linux、Mac OS等
5. 丰富的接口:提供了用于C、C++、Java、Python、Ruby等语言的API
6. 支持查询语言:MySQL可以利用标准SQL语法和ODBC(开放式数据库连接)的应用程序
7. 安全性和连接性:十分灵活和安全的权限和密码系统,允许基于主机的验证。连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码安全。并且由于MySQL是网络化,因此可以在因特网上的任何地方访问,提高了数据共享的效率

MySQL 5.7 的新功能

和MySQL5.6相比,新功能主要包括以下几个方面:

  1. 从MySQL5.7.8版本开始,支持JSON。
  2. 性能和可扩展性,改进了InnoDB的可扩展性和临时表的性能,从而实现更快的网络和大数据加载等操作。
  3. 改进复制以提高可用性的性能
  4. 安全
  5. 优化
  6. GIS

MySQL 工具

​ MySQL数据库管理系统提供了许多命令行工具,这些工具可以用来管理MySQL服务器、对数据库进行访问控制、管理MySQL用户以及数据库备份和恢复工具等。而且MySQL提供了图形化的管理工具,这使得对数据库的操作更加简单。

MySQL命令行实用程序

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

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

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

  • mysql.server:服务器启动脚本。用于使用包含为特定级别的、运行启动服务的脚本的、运行目录的系统。(不知道有什么用)

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

  • myisamchk:用来描述、检查、优化和维护MyISAM表的实用工具。(不知道有什么用)

  • mysqlbug:MySQL缺陷报告脚本。他可以向MySQL邮件系统发送缺陷报告。

  • mysql_install_db:用默认权限创建MySQL授权表。通常只是在系统上首次安装MySQL时执行一次。

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

  • mysqldump:将MySQL数据库转储到一个文件的客户程序。

  • mysqlhotcopy:当服务器在运行时,快速备份MyISAM或ISAM表的工具
  • mysqlshow:显示数据库、表、列以及索引相关信息的客户程序。
  • perror:显示系统或者MySQL错误代码含义的工具。

MySQL Workbench

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

  • 数据库设计和模型建立
  • SQL开发
  • 数据库管理