文章目录
MySQL数据库基础
数据库的概念
数据库是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库的使用优于简单的文件存储,因为它提供了更好的安全性、数据查询和管理的功能,并更容易控制和存储海量数据。
主流数据库
下面列举了几个主流的数据库:
- SQL Server:微软的产品,适用于中大型项目。
- MySQL:甲骨文产品,全球最受欢迎的数据库,适用于电商、SNS、论坛等简单业务。
- Oracle:甲骨文产品,适合大型项目和复杂的业务逻辑。
- PostgreSql:加州大学伯利克分校开发的关系型数据库。
- SQLite:轻型数据库,适用于嵌入式设备。
- H2:Java开发的嵌入式数据库。
基本使用
连接服务器
连接MySQL服务器的方式:
mysql -h127.0.0.1 -P3306 -uroot -p
服务器管理
停止服务器:
systemctl stop mysqld
启动服务器:
systemctl start mysqld
重启服务器:
systemctl restart mysqld
数据库服务器,数据库,表关系
数据库服务器、数据库和表的关系如下:
说明一下:
图中的Client对应的就是mysql命令,MySQL对应的就是mysqld服务。
DB(database)表示的是mysqld管理的多个数据库,而每一个DB下会包含多张表。
使用案例
数据存储路径
MySQL创建的数据库和表结构会以文件的形式存储,数据存储路径可以在配置文件中查看。
创建数据库
连接MySQL服务器后,通过create语句创建数据库:
sql
CREATE DATABASE helloworld;
使用数据库
使用数据库:
sql
USE helloworld;
创建数据库表
通过create语句创建一个名为student的表:
sql
CREATE TABLE student (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
age INT
);
表中插入数据
通过insert语句向表中插入数据:
sql
INSERT INTO student (name, age) VALUES ('John', 25);
INSERT INTO student (name, age) VALUES ('Jane', 28);
查询表中的数据
通过select语句查看表中的数据:
sql
SELECT * FROM student;
数据逻辑存储
数据的逻辑存储以二维表格的形式进行,每行为一条记录,每列代表一个属性。
MySQL架构
MySQL是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如Unix/Linux、Windows、Mac和Solaris。MySQL架构主要可分为如下四层:
-
连接层: 完成连接处理、授权认证及相关的安全方案。
-
服务层: 在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的。包括权限判断、SQL接口、SQL解析、SQL分析优化、缓存查询的处理以及部分内置函数执行等。各个存储引擎提供的功能都集中在这一层,如存储过程、触发器、视图等。
-
引擎层: 由多种可拔插的存储引擎共同组成。真正负责MySQL中数据的存储和提取。每个存储引擎都有自己的优点和缺陷,例如InnoDB支持事务、行级锁和外键等,MyISAM则支持全文索引和压缩等特性。
-
存储层: 将数据存储在裸设备的文件系统之上,完成存储引擎的交互。
MySQL客户端是通过MySQL服务器来执行数据库操作的。MySQL服务器会收到MySQL客户端发来的SQL语句,并根据SQL语句执行对应的操作。MySQL客户端不仅指连接MySQL时使用的mysql命令,还包括语言接口客户端。MySQL提供了多种语言接口,如C/C++、Python、Java和PHP等。
SQL分类
SQL(Structured Query Language,结构化查询语言)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
SQL语句可分为以下三类:
-
DDL(Data Definition Language): 数据定义语言,用于维护存储数据的结构,包括create语句用于创建数据库、表等;drop语句用于删除数据库、表等;alter语句用于修改数据库、表等的结构。
-
DML(Data Manipulation Language): 数据操作语言,用于对数据进行操作,包括insert语句用于向表中插入数据;delete语句用于从表中删除数据;update语句用于修改表中的数据。
-
DCL(Data Control Language): 数据控制语言,主要用于权限管理和事务控制,包括grant语句用于授权给用户访问数据库或表的权限;revoke语句用于收回已授权的权限;commit语句用于提交事务。
此外,DML中又单独分了一个DQL(Data Query Language)数据查询语言,包括select语句用于查询表中的数据、from语句用于指定要查询的表等。
存储引擎
存储引擎是数据库管理系统如何存储数据、如何为存储的数据建立索引、如何更新数据、如何查询数据等技术的实现方法。MySQL中的存储引擎是插件式的存储引擎,它可以支持多种存储引擎。
查看存储引擎
通过show语句可以查看MySQL支持的存储引擎。在MySQL客户端中执行以下命令:
sql
SHOW ENGINES;
其中MySQL默认使用的存储引擎是InnoDB,该存储引擎支持事务、行级锁、外键等。其他常用的存储引擎还包括MyISAM、MEMORY和CSV等。
存储引擎的选择要根据具体的业务需求和数据特点进行,不同的存储引擎有不同的特性和适用场景。例如,InnoDB适用于事务处理和并发读写较多的场景,MyISAM适用于读操作频繁、写操作较少的场景,MEMORY适用于对速度要求较高、数据量不大、对数据持久性要求不高的场景。