MySQL 数据库之库操作
文章目录
- 1. 什么是数据库
- 2. 基础概念
- 2.1 连接数据库
- 2.2 服务器,数据库,表关系
- 2.3 SQL分类
- 3. 库的操作
- 3.1 创建,选择,查看数据库
- 3.2 字符集和默认校验规则
- 3.3 操纵数据库
- 3.3.1 数据库查看
- 3.3.2 数据库删除
- 3.3.3 数据库修改
- 4. 其它
- 4.1 备份
- 4.2 还原
- 4.3 备份还原注意事项
- 4.5 查看连接情况
1. 什么是数据库
使用which mysql
和which mysqld
命令
mysql
是数据库服务的客户端mysql
是MySQL数据库的命令行客户端工具,用户可以通过它连接到MySQL服务器并与之交互。它允许用户执行SQL语句来查询、更新和管理数据库。mysql
客户端是用户与MySQL数据库进行通信的接口。
mysqld
是数据库服务的服务器端mysqld
是MySQL数据库服务器的守护进程(daemon),它是MySQL服务器的核心,负责处理客户端的连接请求、执行SQL语句、管理数据库文件等。mysqld
运行在后台,监听来自客户端的连接,并处理这些连接上的所有数据库操作。
- MySQL数据库是基于C(
mysql
)和S(mysqld
)模式的一种网络服务- MySQL遵循客户端/服务器(Client/Server,简称C/S)架构模式。在这种模式下,
mysql
客户端和mysqld
服务器端通过网络进行通信。客户端(如mysql
命令行工具或其他数据库管理工具)向服务器(mysqld
)发送请求,服务器处理这些请求并将结果返回给客户端。这种模式使得MySQL可以支持多用户同时访问和操作数据库,并且可以在不同的机器上运行客户端和服务器,通过网络进行数据交互。
- MySQL遵循客户端/服务器(Client/Server,简称C/S)架构模式。在这种模式下,
-
MySQL是一套提供了数据存取的服务的网络程序:
- MySQL是一个关系型数据库管理系统(RDBMS),它提供了一套完整的数据存取服务。作为一个网络程序,MySQL允许客户端通过网络连接到服务器,执行SQL语句来查询、更新和管理存储在数据库中的数据。 -
数据库一般指的是,在磁盘或者内存中存储的特定结构组织的数据,也就是将来在磁盘存储的一套数据库方案
- 数据库是长期存储在磁盘或内存中的、有组织的数据集合。它通常由数据库管理系统(如MySQL、PostgreSQL、Oracle等)来管理。数据库中的数据按照一定的数据模型(如关系模型、文档模型等)组织,以便于存储、检索和管理。
-
数据库服务一般指的是类似
mysqld
这样的程序- 这些服务程序负责处理来自客户端的请求,执行SQL语句,管理数据的存储和检索,以及维护数据库的完整性和安全性。数据库服务通常作为守护进程在后台运行,以确保数据库的持续可用性和性能。
一般的文件确实提供了数据的存储功能,但是文件并没有提供非常好的数据内容管理的能力(站在用户的角度上)。
将数据库理解为:是对数据存储的一套解决方案,客户端给服务端字段或者要求,服务端返回结果。
宏观上看,这一堆合起来是数据库
程序员操作的是mysql
2. 基础概念
2.1 连接数据库
mysql -h -P -u -p
// 例如
mysql -h 127.0.0.1 -P 3306 -u root -p 123456
-h
:后面跟着的是要连接的主机的IP地址。如果不填写,那么默认连接的是本机(localhost)。-P
:后面跟着的是端口号。如果不填写,那么默认使用的是3306端口,这是MySQL的默认端口。-u
:后面跟着的是用户名。-p
:后面跟着的是密码。注意,-p
后面不需要加空格,直接跟上密码,或者在-p
后面留有空格,然后紧接着输入密码(这样密码就不会显示在命令行历史中,增加安全性)。
2.2 服务器,数据库,表关系
- 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
- 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
- 数据库服务器、数据库和表的关系如下:
实际上,一个数据库是一个目录,一个表是一个文件
在/etc/my.cnf
写了默认数据存储位置
2.3 SQL分类
- DDL【data definition language】 数据定义语言,用来维护存储数据的结构代表指令:
create, drop, alter
- DML【data manipulation language】 数据操纵语言,用来对数据进行操作代表指令:
insert,delete
,- updateDML中又单独分了一个DQL,数据查询语言,代表指令:
select
- updateDML中又单独分了一个DQL,数据查询语言,代表指令:
- DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务代表指令:
grant,revoke,commit
3. 库的操作
3.1 创建,选择,查看数据库
创建数据库
如果你需要在创建数据库时指定特定的字符集和校对规则,可以使用以下命令:
CREATE DATABASE [IF NOT EXISTS] 数据库名字 [CHARACTER SET 编码集 COLLATE 校对规则];
-
[] 是可选项
-
数据库编码集(Character Set):
- 编码集定义了数据库中可以存储哪些字符。不同的编码集支持不同语言的字符,例如,
ASCII
编码集只支持英文字符,而UTF-8
编码集支持多种语言的字符,包括中文、日文、韩文等。 - 编码集决定了字符数据的存储方式和存储大小。例如,
UTF-8
编码的单个字符可以占用1到4个字节,而ASCII
编码的字符只占用1个字节。
- 编码集定义了数据库中可以存储哪些字符。不同的编码集支持不同语言的字符,例如,
-
数据库校验集(Collation):
- 校验集定义了字符数据的比较规则,包括大小写敏感性、大小写不敏感性、重音符号的处理等。
- 校验集是编码集的一个子集,它不仅包括编码集的所有字符,还包括了字符比较的规则。
- 例如,
utf8_general_ci
是一个大小写不敏感的校验集,而utf8_bin
是一个大小写敏感的校验集,它们都基于UTF-8
编码集。 - 校验集的选择会影响字符串比较和排序的结果。在多语言环境中,选择合适的校验集非常重要,以确保数据的正确性和一致性。
总的来说
- 编码集(Character Set):决定了数据库如何存储字符数据,即数据库中可以存储哪些字符。
- 校验集(Collation):决定了数据库如何比较和排序字符数据,即如何根据特定的规则读取和处理这些字符。
选择数据库
创建数据库后,你可能想要选择这个数据库以便在其上执行其他操作。可以使用USE
语句:
USE mydatabase;
查看数据库列表: 如果你想查看所有数据库,可以使用以下命令:
SHOW DATABASES;
可以看到一个数据库就是一个目录
3.2 字符集和默认校验规则
查看系统默认字符集以及校验规则
这里的字符集和默认校验规则就是2.1提到的编码集和校验集
show variables like 'character_set_database';
show variables like 'collation_database';
查看数据库支持的字符集 和 支持的字符集校验规则
show charset;
show collation;
3.3 操纵数据库
3.3.1 数据库查看
前面3.1介绍了SHOW DATABASES;
查看当前有多少个数据库,USE mydatabase;
可以使用该数据库
如果想知道当前正在使用哪个数据库,可以使用
select database();
想要显示创建语句,可以使用
show create database 数据库名;
- 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
/*!40100 default.... */
这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话
3.3.2 数据库删除
DROP DATABASE [IF EXISTS] db_name;
执行该语句后的效果:
- 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
mysqld
内部看不到对应的数据库
一般不要轻易删除数据库,非要删除的话,做好备份
3.3.3 数据库修改
ALTER DATABASE database_name CHARACTER SET charset_name COLLATE collation_name;
其中database_name
是你要修改的数据库名,charset_name
是新的字符集名称,collation_name
是新的校验集名称。
4. 其它
4.1 备份
mysqldump -u username -p -B 密码 database_name > backup_file.sql
username
是你的MySQL用户名。database_name
是你想要备份的数据库名。backup_file.sql
是备份文件的名称,可以指定路径。
可以看到,该文件里面是历史上写的sql语句
4.2 还原
mysql > source path
path
是4.1生成的文件的路径
4.3 备份还原注意事项
-
如果备份的不是整个数据库,而是其中的一张表
mysqldump -u root -p 数据库名 表名1 表名2 > backup_file.sql
-
同时备份多个数据库
mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
-
如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原
4.5 查看连接情况
show processlist