2. 库的操作

2.1 创建数据库

语法:
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]
create_specification:

DEFAULT\] CHARACTER SET charset_name # 字符集: 存储编码 \[DEFAULT\] COLLATE collation_name # 校验集: 比较/选择/读的编码规则 说明: * 大写的表示关键字。 * \[\] 是可选项。 * CHARACTER SET:指定数据库采用的字符集。 * COLLATE:指定数据库字符集的校验规则。 字符集规定了数据库中字符的编码规则,决定了能存储的字符种类及存储方式。 校验集为字符集提供了字符比较和排序的规则,用于规范文本数据在各种操作中的比较和排序方式。 ### **2.2 创建数据库案例** 1. 创建名为db1的数据库。 create database db1; 说明:当创建数据库没有指定字符集和校验规则时,系统使用默认字符集 utf8,校验规则是 utf8_general_ci。2. 创建一个使用 utf8字符集的 db2数据库。 create database db2 charset=utf8; 1. 创建一个使用utf8字符集,并带校对规则的db3数据库。 create database db3 charset=utf8 collate utf8_general_ci; ### **2.3 字符集和校验规则** #### **2.3.1 查看系统默认字符集以及校验规则** show variables like 'character_set_database'; show variables like 'collation_database'; #### **2.3.2 查看数据库支持的字符集** show charset; 字符集主要是控制用什么语言,比如 utf8就可以使用中文。 #### **2.3.3 查看数据库支持的字符集校验规则** show collation; #### **2.3.4 校验规则对数据库的影响 -\> 对比试验** 1. **不区分大小写** :创建一个数据库,校验规则使用utf8_general_ci(不区分大小写)。 create database test1 collate utf8_general_ci; use test1; create table person(name varchar(20)); insert into person values('a'); insert into person values('A'); insert into person values('b'); insert into person values('B'); 1. **区分大小写** :创建一个数据库,校验规则使用utf8_bin(区分大小写)。 create database test2 collate utf8_bin; use test2; create table person(name varchar(20)); insert into person values('a'); insert into person values('A'); insert into person values('b'); insert into person values('B'); 1. 进行查询 * 不区分大小写的查询以及结果 mysql\> use test1; mysql\> select \* from person where name='a'; \| name \| +------+ \| a \| \| A \| +------+ 2 rows in set (0.01 sec) * 区分大小写的查询以及结果 mysql\> use test2; mysql\> select \* from person where name='a'; \| name \| +------+ \| a \| +------+ 1 row in set (0.01 sec) 1. 结果排序 * 不区分大小写排序以及结果 mysql\> use test1; mysql\> select \* from person order by name; \| name \| +------+ \| a \| \| A \| \| b \| \| B \| +------+ - \*\*区分大小写排序以及结果\*\* mysql\> use test2; mysql\> select \* from person order by name; \| name \| +------+ \| A \| \| B \| \| a \| \| b \| +------+ ### **2.4 操纵数据库** #### **2.4.1 查看数据库** show databases; #### **2.4.2 显示创建语句** show create database 数据库名; 示例: mysql\> show create database mytest; \| Database \| Create Database \| +----------+----------------------------------------------------------------+ \| mytest \| CREATE DATABASE \`mytest\` /\*!40100 DEFAULT CHARACTER SET utf8 \*/ \| +----------+----------------------------------------------------------------+ 说明: * MySQL建议关键字使用大写,但不是必须的。 * 数据库名字的反引号\`\`,是为了防止使用的数据库名刚好是关键字。 * /\*!40100 default.... \*/ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话。 #### **2.4.3 修改数据库** 语法: ALTER DATABASE db_name \[alter_spacification \[,alter_spacification\]...

alter_spacification:

DEFAULT\] CHARACTER SET charset_name \[DEFAULT\] COLLATE collation_name 说明:对数据库的修改主要指的是修改数据库的字符集、校验规则。实例:将 mytest数据库字符集改成 gbk。 mysql\> alter database mytest charset=gbk; Query OK, 1 row affected (0.00 sec) mysql\> show create database mytest; \| Database \| Create Database \| +----------+----------------------------------------------------------------+ \| mytest \| CREATE DATABASE \`mytest\` /\*!40100 DEFAULT CHARACTER SET gbk \*/ \| +----------+----------------------------------------------------------------+ #### **2.4.4 数据库删除** DROP DATABASE \[IF EXISTS\] db_name; 执行删除之后的结果: * 数据库内部看不到对应的数据库。 * 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删。注意:不要随意删除数据库。 #### **2.4.5 备份和恢复 -- 放在最后** ##### **2.4.5.1 备份** 语法: mysqldump -P3306 -u root -p 密码 -B 数据库名 \> 数据库备份存储的文件路径 示例:将 mytest库备份到文件(退出连接)。 # mysqldump -P3306 -u root -p123456 -B mytest \> D:/mytest.sql 这时,可以打开看看 mytest.sql文件里的内容,其实把整个创建数据库、建表、导入数据的语句都装载这个文件中。 ##### **2.4.5.2 还原** 语法: mysql\> source D:/mysql-5.7.22/mytest.sql; ##### **2.4.5.3 注意事项** * 如果备份的不是整个数据库,而是其中的一张表,操作如下: # mysqldump -u root -p -B 数据库名 表名1 表名2 \> D:/mytest.sql * 同时备份多个数据库: # mysqldump -u root -p -B 数据库名1 数据库名2 ... \> 数据库存放路径 * 如果备份一个数据库时,没有带上-B参数,在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。 #### **2.4.6 查看连接情况** 语法:show processlist 示例: mysql\> show processlist; \| Id \| User \| Host \| db \| Command \| Time \| State \| Info \| +----+------+------+------+---------+------+-------+------+ \| 2 \| root \| localhost \| test \| Sleep \| NULL \| \| \| \| 3 \| root \| localhost \| NULL \| Query \| 0 \| NULL \| show processlist \| +----+------+------+------+---------+------+-------+------+ 该命令可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是正常登陆的,很有可能数据库被入侵了。以后发现数据库比较慢时,可以用这个指令来查看数据库连接情况。

相关推荐
马克Markorg3 小时前
常见的向量数据库和具有向量数据库能力的数据库
数据库
Coder_Boy_5 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
helloworldandy5 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
数据知道7 小时前
PostgreSQL 故障排查:如何找出数据库中最耗时的 SQL 语句
数据库·sql·postgresql
qq_12498707537 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
枷锁—sha7 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
Coder_Boy_7 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Gain_chance7 小时前
35-学习笔记尚硅谷数仓搭建-DWS层最近n日汇总表及历史至今汇总表建表语句
数据库·数据仓库·hive·笔记·学习
此生只爱蛋8 小时前
【Redis】主从复制
数据库·redis
马猴烧酒.8 小时前
【面试八股|JAVA多线程】JAVA多线程常考面试题详解
java·服务器·数据库