一、数据库基础
# 什么是数据库
数据库的发展阶段:人工管理阶段、文件系统阶段、数据库系统阶段、高级数据库阶段
数据库3种层次:层次式数据库、网络式数据库和关系式数据库
数据库(Database, DB)是一个长期存储在计算机内的、有组织的、共享的、统一管理的数据集合
# 什么是表
数据库表是一系列二维数组的集合,用来存储数据和操作数据的逻辑结构
由纵向的列和横向的行组成,行被称为记录,是组织数据的单位
列被称为字段,每一列表示记录的一个属性,都有相应的描述信息,如数据类型、数据宽度等
# 数据类型
整数数据类型、浮点数数据类型、精确小数类型、二进制数据类型、日期/时间数据类型、字符串数据类型
# 主键
主键(Primary Key)又称主码,用于唯一地标识表中的每一条记录
可以定义表中的一列或多列为主键,主键列上不能有两行相同的值,也不能为空值
二、数据库的构成
数据库系统由硬件部分和软件部分共同构成,硬件主要用于存储数据库中的数据,包括计算机、存储设备等
软件部分则主要包括DBMS、支持DBMS运行的操作系统以及支持多种语言进行应用开发的访问技术等
# 数据库系统3个组成部分
数据库:用于存储数据的地方
数据库管理系统:用于管理数据库的软件
数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库的软件补充
数据库系统(Database System)
数据库管理系统(Database Management System, DBMS)
数据库应用程序(Database Application)
# SQL语言
对数据库进行查询和修改操作的语言叫作SQL,SQL的含义是结构化查询语言(Structured QueryLanguage)
SQL有许多不同的类型,有3个主要的标准:
ANSI(美国国家标准机构)SQL;
对ANSI SQL修改后在1992年采纳的标准,称为SQL-92或SQL2;
最近的SQL-99标准,从SQL2扩充而来并增加了对象关系特征和许多其他新功能
# SQL包含4个部分
(1)数据定义语言(DDL):DROP、CREATE、ALTER等语句
(2)数据操作语言(DML):INSERT(插入)、UPDATE(修改)、DELETE(删除)语句
(3)数据查询语言(DQL):SELECT语句
(4)数据控制语言(DCL):GRANT、REVOKE、COMMIT、ROLLBACK等语句
# 数据库访问接口
ODBC、JDBC、ADO.NET、PDO等
三、什么是MySQL
MySQL是一个小型关系数据库管理系统.MySQL规模小、功能有限,但是它体积小、速度快、成本低
# 客户机-服务器软件
主从式架构(Client-Server Model)或客户端-服务器(Client/Server)结构简称C/S结构,是一种网络架构,通常在该网络架构下,软件分为客户端(Client)和服务器(Server)
# MySQL版本
MySQL分为两个不同的版本
MySQL Community Server(社区版):该版本完全免费,但是官方不提供技术支持
MySQL Enterprise Server(企业版服务器):它能够以很高性价比为企业提供数据仓库应用,支持ACID事物处理,提供完整的提交、回滚、崩溃恢复和行级锁定功能。但是该版本需付费使用,官方提供电话技术支持
MySQL的命名机制由3个数字和1个后缀组成,例如MySQL-5.7.22
第1个数字(5)是主版本号,描述了文件格式,所有版本5的发行版都有相同的文件格式
第2个数字(7)是发行级别,主版本号和发行级别组合在一起便构成了发行序列号
第3个数字(22)是此发行系列的版本号,随每次新分发版本递增。通常选择已经发行的最新版本
# MySQL5.7 特性
性能大幅度提升
支持JSON
Performance Schema(监控策略)
SYS Schema
性能和可扩展性
改进复制以提高可用性的性能
提高安全
优化
透明的页级别压缩
本地分区
缓存保留
四、MySQL工具
# MySQL服务器端实用工具程序
(1)mysqld: SQL后台程序(MySQL服务器进程)。必须在该程序运行之后,客户端才能通过连接服务器访问数据库。
(2)mysqld_safe:服务器启动脚本。在UNIX和NetWare中推荐使用mysqld_safe来启动mysqld服务器。mysqld_safe增加了一些安全特性,例如当出现错误时重启服务器并向错误日志文件写入运行时间信息。
(3)mysql.server:服务器启动脚本。在UNIX中的MySQL分发版包括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)mysql import:使用LOAD DATA INFILE将文本文件导入相关表的客户程序。
(10)mysqlshow:显示数据库、表、列以及索引相关信息的客户程序。
(11)perror:显示系统或MySQL错误代码含义的工具。
MySQL Workbench web工具