MySQL库的操作

目录

  • [1. 创建数据库](#1. 创建数据库)
  • [2. 创建数据库案例](#2. 创建数据库案例)
  • [3. 认识系统编码以及字符集和校验规则](#3. 认识系统编码以及字符集和校验规则)
  • [4. 操纵数据库](#4. 操纵数据库)
    • [4.1 查看数据库](#4.1 查看数据库)
    • [4.2 显示创建语句](#4.2 显示创建语句)
    • [4.3 修改数据库](#4.3 修改数据库)
    • [4.4 数据库的删除](#4.4 数据库的删除)
    • [4.5 备份和恢复](#4.5 备份和恢复)
    • [4.6 查看连接情况](#4.6 查看连接情况)

1. 创建数据库

(1)语法:

sql 复制代码
create database db_name;
create database [IF NOT EXISTS] db_name [create_specification ...]

create_specification:
	[DEFAULT] CHARACTER SET charset_name
 	[DEFAULT] COLLATE collation_name

(2)说明:

  • 大写的表示关键字。
  • \]是可选项。

  • COLLATE:指定数据库字符集的校验规则。

2. 创建数据库案例

(1)创建名为db1的数据库

sql 复制代码
create database db1;

(2)说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ ci。

3. 认识系统编码以及字符集和校验规则

(1)创建数据库时,有两个编码集:

  • 数据库编码集(数据库未来存储数据)。
  • 数据库校验集(支持数据库,进行字段比较的编码,本质也是一种读取数据库中数据的采用的编码格式)。

数据库无论对数据做任何操作,都必须保证操作和编码必须是编码一致的。

(2)查看系统默认字符集以及校验规则

sql 复制代码
show variables like 'character_set_database';
sql 复制代码
show variables like 'collation_database'; 

(3)查看数据库支持的字符集

sql 复制代码
show charset;
  • 字符集主要是控制用什么语言,比如 utf8 就可以使用中文。

(4)查看数据库支持的字符集校验规则

sql 复制代码
show collation;

(5)校验规则对数据库的影响:

  • 不区分大小写:创建一个数据库,校验规则使用utf8_ general_ ci[不区分大小写]。
sql 复制代码
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');
  • 区分大小写:创建一个数据库,校验规则使用utf8_ bin[区分大小写]。
sql 复制代码
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');
  • 不区分大小写的查询以及结果:
sql 复制代码
mysql> use test1;
mysql> select * from person where name='a';
+------+
| name |
+------+
| a    |
| A    |
+------+
2 rows in set (0.01 sec)
  • 区分大小写的查询以及结果:
sql 复制代码
mysql> use test2;
mysql> select * from person where name='a';
+------+
| name |
+------+
| a    |
+------+
2 rows in set (0.01 sec)
  • 不区分大小写的排序以及结果:
sql 复制代码
mysql> use test1;
mysql> select * from person order by name;
+------+
| name |
+------+
| a    |
| A    |
| b    |
| B    |
+------+
  • 区分大小写的排序以及结果:
sql 复制代码
mysql> use test2;
mysql> select * from person order by name;
+------+
| name |
+------+
| A    |
| B    |
| a    |
| b    |
+------+

(6)指定编码创建数据库。创建一个使用 utf8 字符集的 db2 和 db3 数据库(两种写法):

4. 操纵数据库

4.1 查看数据库

(1)语法:

sql 复制代码
show databases;

4.2 显示创建语句

(1)语法:

sql 复制代码
show create database 数据库名;

(2)示例:

sql 复制代码
mysql> show create database mytest;
+----------+----------------------------------------------------------------+
| Database | Create Database 												|	
+----------+----------------------------------------------------------------+
| mysql    | CREATE DATABASE `mytest` /*!40100 DEFAULT CHARACTER SET utf8 */|
+----------+----------------------------------------------------------------+

(3)说明:

  • MySQL 建议我们关键字使用大写,但是不是必须的。
  • 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字。
  • /*!40100 default... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话。

4.3 修改数据库

(1)语法:

sql 复制代码
ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

(2)说明:

  • 对数据库的修改主要指的是修改数据库的字符集,校验规则。

(3)实例: 将 mytest 数据库字符集改成 gbk。

sql 复制代码
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 */ |
+----------+----------------------------------------------------------------+

4.4 数据库的删除

(1)语法:

sql 复制代码
drop database [IF EXISTS] db_name;
  • 本质就是删除目录。

(2)执行删除之后的结果:

  • 数据库内部看不到对应的数据库。
  • 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删。

(3)注意:不要随意删除数据库。

4.5 备份和恢复

(1)备份:

  • 语法:
sql 复制代码
mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
  • 示例:将mytest库备份到文件(退出连接)
sql 复制代码
mysqldump -P3306 -u root -p123456 -B mytest > D:/mytest.sql
  • 这时,可以打开看看 mytest.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。

(2)还原:

  • 语法:
sql 复制代码
mysql> source D:/mysql-5.7.22/mytest.sql;

(3)注意事项:

  • 如果备份的不是整个数据库,而是其中的一张表,怎么做?
sql 复制代码
mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql
  • 同时备份多个数据库:
sql 复制代码
mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
  • 如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。

4.6 查看连接情况

(1)语法:

sql 复制代码
show processlist

(2)示例:

sql 复制代码
mysql> show processlist;
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host 		| db   | Command | Time | State | Info 			   |
+----+------+-----------+------+---------+------+-------+------------------+
| 2 | root | localhost  | test | Sleep   | 1386 |       | NULL 			   |
| 3 | root | localhost  | NULL | Query   | 0    | NULL  | show processlist |
+----+------+-----------+------+---------+------+-------+------------------+
相关推荐
一只大袋鼠13 分钟前
Redis 安装+基于短信验证码登录功能的完整实现
java·开发语言·数据库·redis·缓存·学习笔记
Anastasiozzzz14 分钟前
深入研究Redis的ZSet底层数据结构:从 Ziplist 的级联更新到 Listpack 的完美救场
数据结构·数据库·redis
菠萝蚊鸭17 分钟前
x86 平台使用 buildx 基于源码构建 MySQL Wsrep 5.7.44 镜像
数据库·mysql·galera·wsrep
沙漏无语3 小时前
(二)TIDB搭建正式集群
linux·数据库·tidb
姚不倒3 小时前
三节点 TiDB 集群部署与负载均衡搭建实战
运维·数据库·分布式·负载均衡·tidb
隔壁小邓3 小时前
批量更新方式与对比
数据库
数据知道3 小时前
MongoDB复制集架构原理:Primary、Secondary 与 Arbiter 的角色分工
数据库·mongodb·架构
人道领域3 小时前
苍穹外卖:菜品新增功能全流程解析
数据库·后端·状态模式
修行者Java3 小时前
(七)从 “非结构化数据难存储” 到 “MongoDB 灵活赋能”——MongoDB 实战进阶指南
数据库·mongodb