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,如果查出某个用户不是正常登陆的,很有可能数据库被入侵了。以后发现数据库比较慢时,可以用这个指令来查看数据库连接情况。

相关推荐
Wooden-Flute2 分钟前
五、查询处理和查询优化
服务器·数据库·oracle
曹牧3 分钟前
Delphi中实现批量插入数据
数据库·oracle
卷积殉铁子14 分钟前
SQL注入之联合查询注入
数据库
小屁孩大帅-杨一凡1 小时前
在 Oracle 中,创建不同类型索引的 SQL 语法
数据库·sql·oracle
西柚小萌新1 小时前
【大模型:知识图谱】--5.neo4j数据库管理(cypher语法2)
数据库·知识图谱·neo4j
艾醒(AiXing-w)1 小时前
探索大语言模型(LLM):RSE流程详解——从文档中精准识别高相关片段
数据库·人工智能·语言模型
AI.NET 极客圈2 小时前
.NET 原生驾驭 AI 新基建实战系列(六):Pinecone ── 托管向量数据库的向量数据库的云原生先锋
数据库·人工智能·.net
码农开荒路2 小时前
Redis底层数据结构之字典(Dict)
java·数据结构·数据库·redis
编程大全2 小时前
41道Django高频题整理(附答案背诵版)
数据库·django·sqlite
孙克旭_3 小时前
day028-Shell自动化编程-判断进阶
linux·运维·数据库·自动化