文章目录
1. 什么是数据库
-
MySQL是一套提供了数据存取的服务的网络程序:
- MySQL是一个关系型数据库管理系统(RDBMS),它提供了一套完整的数据存取服务。作为一个网络程序,MySQL允许客户端通过网络连接到服务器,执行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 数据库名;
3.3.2 数据库删除
DROP DATABASE [IF EXISTS] db_name;
执行该语句后的效果:
一般不要轻易删除数据库,非要删除的话,做好备份
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 ... > 数据库存放路径
4.5 查看连接情况
show processlist