一、基本概念
1、数据库
- 概念:按照数据结构来组织、存储和管理数据的仓库,数据库是一个数据的集合
- 英文:DataBase
- 本质:数据库是一个文件系统,以文件的方式,将数据保存在电脑上
2、数据库管理系统
- 概念:一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库
- 英文:DataBase Management System,简称 DBMS
- 普通用户通过DBMS访问数据库中的数据,数据库管理员通过DBMS进行数据库维护。DBMS允许多个应用程序或者多个用户使用不同的方法,在同一时刻或者不同时刻去建立、修改和访问数据库
- 由于直接操作数据文件非常麻烦,所以各数据库厂商在数据库(文件)之上进行了封装,形成了DBMS。MySQL是一种DBMS。我们平常说的某某数据库,其实是某某的DBMS,并不是指文件
- Oracle公司的Oracle和MySQL
- IBM公司的DB2
- Microsoft公司的Access和SQL Server
- 国产的如达梦,oceanbase,tidb等
3、数据库特定
- 数据存储方式的比较
存储方式 | 优点 | 缺点 |
---|---|---|
内存 | 速度块 | 容量有限,不能永久保存,数据是临时状态 |
文件 | 数据永久保存 | 少量数据直接打开获取数据,大量数据使用程序IO流操作文件,不方便;同一时间多人操作某一个文件可能出现问题 |
数据库 | 海量数据存储,提供不错的查询效率;数据永久保存;方便存储和管理数据;使用统一的方式操作数据库 | 占用资源(重型武器);部分数据库需要收费 |
4、数据库分类
4.1、关系型数据库
- 概念:可以使用SQL语言(语句)来操作的数据库
- 关系型数据库是创建在关系模型基础上的数据库
- 关系模型:有明确的行和列的二维表格模型
- 典型代表
- MySQL
- Oracle
- Microsoft SQL Server
- Access
- PostgreSQL
- DB2
4.2、非关系型数据库
- 概念:常规情况不能使用SQL进行操作的数据库
- 不适用关系模型
- 非关系型数据库也叫NoSQL数据库
- 典型代表
- Hbase
- MongoDB
- Redis(k/v)
- CouchDB
5、关系型数据库主要对象
- 由于关系型数据库是基于关系模型设计的,故使用大家都了解的EXCLE进行对比
- Excel:创建一个Excel文档–>创建一个Sheet–>在sheet中操作数据
- MySQL:创建一个数据库–>创建一个表–>在表中记录数据
- 表
- 表是包含数据库中所有数据的数据库对象,由行和列组成(二维表格模型,类似EXCEL中的Sheet),用于组织和存储数据
- 字段
- 表中每一列称为一个字段,字段有自己的属性,如字段类型、字段大小等。其中,字段类型是字段最重要的属性,他决定了字段能够存储哪种数据(类型于一整列的单元格属性)
- 与EXCEL不同,字段只是针对列,该列存储什么类型数据,长度多少需要提前进行定义
- 索引
- 索引是一个单独的、物理的数据库结构,它依赖于表建立,在数据库中使用索引,无须对整个表进行扫描,就可以找到需要的数据
- 视图
- 视图是从一张或者多张表中导出的表,也称虚拟表,是用户查看数据表中数据的一种方式
6、简易原理
- 关系型数据库是c/s架构
二、MySQL数据库
1、起源和发展
- MySQL是一个关系型数据库管理系统(RDBMS),由瑞典MySQLAB公司开发,属于Oracle旗下产品,MySQL是最好的RDBMS应用软件之一。
- 关系型数据库把数据保存在不同的表中,而不是所有数据都放在一个仓库内,这样就增加了速度并且提高了灵活性。所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,分社区版和商业版。由于体积小、速度快、总体拥有成本低,并且是开源这特点,所以一般中小型网站的开发都选择MySQL作为数据库。
- MySQL特性
- MySQL使用C和C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。
- 支持AIX、HP-UX、Linux、MacOS、OpenBSD、Solaris、Windows等多种操作系统。
- 为多种编程语言提供了API,包括C、C++、Python、Java、Perl、PHP、Ruby、.NET等。
- 支持多线程,充分利用CPU资源。
- 优化的SQL查询算法,有效地提高查询速度。
- 既可以作为单独的应用程序应用在客户端服务器网络环境中,也可以作为一个库嵌入到其他软件中。
- 提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
- 提供用于管理、检查、优化数据库操作的管理工具。
- 支持大型的数据库,可以处理拥有上万条记录的大型数据库。
- 支持多种存储引擎。
- MySQL是开源的,不需要支付费用。
- MySQL使用标准的SQL数据语言形式。
- MySQL对PHP有很好的支持,PHP是比较流行的web开发语言。
2、存储引擎
- 存储引擎是MySQL数据库的核心、心脏、发动机,他决定了数据如何存储,查询的时候如何搜索数据,索引如何创建等等
- MySQL 5.1版本之前默认的存储引擎是MyISAM,5.1版本之后默认是InnoDB
- 本质
- 对于数据库文件的一种存取机制,如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法。
- 常用存储引擎
- InnoDB
- 事务处理、回滚、崩溃修复能力和多版本并发控制
- 自增长AUTO_INCREMENT
- 外键
- 优势
- 提供良好的事务处理、崩溃修复能力和并发控制
- 缺点
- 读写效率较差
- 占据数据空间相对较大
- MyISAM
- 优势
- 占用空间小
- 处理速度快
- 缺点
- 不支持事务的完整性和并发性
- 优势
- Memory
- 数据全部放在内存中
- 哈希索引
- 缺点
- 数据存储在内存中,生命周期短,一般是一次性的
- InnoDB
3、数据类型
- 数值类型
- 整数型
- TINYINT:一个非常小的整数,可以带符号。如果有符号,允许范围是 -128~~127;如果没有符号,允许范围是0~255。
- INT:正常大小的整数,可以带符号。如果有符号,允许范围是-2147483648~~2147483647 ;如果没有符号,允许范围是0~4294967295。
- BIGINT:一个大的整数,可以带符号。如果有符号,允许范围是 -9223372036854775808~~9223372036854775807;如果没有符号,允许范围是0~18446744073709551615。
- 小数型
- FLOAT(M,D):无符号的浮点数字。可以定义显示长度(M)和小数位数(D)。这不是必需的,并且默认为10,2。其中2是小数点位数,10是数字长度(包括小数)。
- DOUBLE(M,D):无符号的双精度浮点数。可以定义显示长度(M)和小数位数(D)。这不是必需的,默认为16,4。其中4是小数点位数,16是数字长度(包括小数)。
- 整数型
- 字符串类型
- 普通类型
- CHAR:固定长度的字符串,长度为1~255之间字符长度,存储右空格填充到指定的长度。限定长度不是必需的,默认为1。例如:CHAR(5),长度为5的字符串。
- VARCHAR:可变长度的字符串,长度为1~255之间字符长度(高本版的MySQL超过255)。例如:VARCHAR(25),定义长度为25的字符串,当存入abcd时,则字符串长度变为4位。
- 可变类型
- TEXT:字段最大长度65535个字符。不区分大小写。不能指定长度。
- BLOB:二进制大对象,用来存储大的二进制数据,如图像或者其他类型的文件。区分大小写。不能指定长度。
- 日期和时间类型
- DATE:以YYYY-MM-DD格式的日期,在1000-01-01和9999-12-31之间。例如:2023年4月14日,被存储为2023-04-14。
- DATETIME:日期和时间组合,以YYYY-MM-DD HH:MM:SS格式的时间,在1000-01-01 00:00:00到9999-12-31 23:59:59之间。例如:2023年4月14日15点30分,被存储为2023-04-14 15:30:00 。
- TIMESTAMP:以1970年1月1日午夜跟某一时间的时间戳,到2037年的某时间。无需格式,只是个数字。
- TIME:存储时间在HH:MM:SS格式。
- YEAR(M):以2位或者4位数字格式来存储年份。当M为2时,即YEAR(2),年份范围从1970年至2069年(70~69);当M为4时,年份范围从1901年至2155年。默认M为4。
- 普通类型