【MySQL】 库的操作

欢迎拜访雾里看山-CSDN博客
本篇主题 :【MySQL】 库的操作
发布时间 :2025.1.23
隶属专栏MySQL

目录

库的创建

语法

sql 复制代码
create database  database1;
sql 复制代码
create database if not exists database1;

if not exists 在创建数据库的时候,可以加也可以不加。

他的目的是如果已经存在相应的数据库,则不会继续创建。

创建数据库的本质 :在/var/lib/mysql目录下创建的一个目录。

使用

在第二次创建的时候,报出的警告内容就是,已经存在相应的数据库,不在创建新的数据库

编码规则

认识编码集

创建数据库的时候,有两个编码集:

  1. 数据库编码集 --- 数据库未来存储数据
  2. 数据库校验集 --- 支持数据库,进行字段比较使用的编码,本质也是一种读取数据库中数据采用的编码格式

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

查看数据库默认的编码集和校验集

查看默认编码集的命令:

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

查看默认校验集的命令

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

查看数据库支持的编码集和校验集

查看支持编码集的命令:

sql 复制代码
show charset;

查看支持校验集的命令

sql 复制代码
show collation;

指定编码创建数据库

在库相应目录下有一个db.opt文件,存放的内容就是我们的编码集校验集

指定编码集创建文件:

sql 复制代码
create database db1 charset=utf8;

或者

sql 复制代码
create database db2 character set utf8;


同时指定编码集和校验规则

sql 复制代码
create database db3 charset=utf8 collate utf8_general_ci;

验证不同校验编码的影响

创建一个不区分大小写的数据库 (编码规则采用utf8_general_ci

  1. 创建库
sql 复制代码
create database test1 collate utf8_general_ci;
  1. 进入库
sql 复制代码
use test1;
  1. 创建表
sql 复制代码
create table person(name varchar(20));
  1. 插入数据
sql 复制代码
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');

创建一个区分大小写的数据库 (编码规则采用utf8_bin

  1. 创建库
sql 复制代码
create database test2 collate utf8_bin;
  1. 进入库
sql 复制代码
use test2;
  1. 创建表
sql 复制代码
create table person(name varchar(20));
  1. 插入数据
sql 复制代码
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');

查询时的不同

命令:

sql 复制代码
select * from person where name='a';

不区分大小写的查询结果:

区分大小写的查询结果:

排序时的不同

命令:

sql 复制代码
select * from person order by name;

不区分大小写的排序结果:

区分大小写的排序结果:

库的操作

查看数据库

sql 复制代码
show databases;

进入数据库

sql 复制代码
use test1;

查看我当前在哪个数据库

sql 复制代码
show databases;

显示创建语句

sql 复制代码
show create database test1;
  1. MySQL建议我们关键字使用大写,但不是必须的。
  2. 数据库名字的反引号``,是防止使用的数据库名字是关键字。
  3. /*!40100 default.... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话

修改数据库

sql 复制代码
alter database test1 charset=gbk collate gbk_chinese_ci;

数据库的删除

sql 复制代码
drop database test1;

或者

sql 复制代码
drop database if exists test1;

特别注意,一旦删除数据库,数据库里的表等内容会全部删除,这在实际应用中是一个很危险的事情,所以尽可能的不要删除数据库,非要删的话,做好备份以后再删除。

查看连接情况

sql 复制代码
show processlist;

可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。

库的备份和恢复

备份

在Linux下进行,命令:

bash 复制代码
mysqldump -P3306 -uroot -p -B test2 > test2.sql

vim编辑器查看test2.sql文件内容如下:

可见MySQL的备份不仅仅是把数据备份了,而且备份了关于数据库的所有操作。

恢复

在MySQL中进行

命令:source 备份文件的路径

sql 复制代码
source /home/ubuntu/mysql/test2.sql;

数据库会将你之前的所有操作再做一次。

注意

  1. 如果只备份一张表
    在Linux下进行,命令:
bash 复制代码
mysqldump -uroot -p  数据库名 表名1 表名2 ... > 存放路径
  1. 同时备份多个数据库
    在Linux下进行,命令:
bash 复制代码
mysqldump  -uroot -p -B 数据库名1 数据库名2 ... > 存放路径
  1. 如果备份数据库的时候,没有带上 -B 参数,在恢复数据时,需要先创建空数据库,然后使用数据库,再使用source来恢复。

⚠️ 写在最后:以上内容是我在学习以后得一些总结和概括,如有错误或者需要补充的地方欢迎各位大佬评论或者私信我交流!!!

相关推荐
2401_8979078623 分钟前
10天学会flutter DAY2 玩转dart 类
android·flutter
束照28 分钟前
noteboolm 使用笔记
笔记·notebooklm
m0_748233641 小时前
【PHP】部署和发布PHP网站到IIS服务器
android·服务器·php
安冬的码畜日常1 小时前
【Vim Masterclass 笔记23】第十章:Vim 缓冲区与多窗口的用法概述 + S10L42:Vim 缓冲区的用法详解与多文件编辑
笔记·vim·buffer·vim缓冲区·vim buffer·vim多文件编辑·vim多文件
兩尛1 小时前
订单状态定时处理、来单提醒和客户催单(day10)
java·前端·数据库
web2u1 小时前
MySQL 中如何进行 SQL 调优?
java·数据库·后端·sql·mysql·缓存
初九之潜龙勿用2 小时前
我的创作纪念日,纪念我的第512天
笔记
Yeats_Liao2 小时前
Spring 定时任务:@Scheduled 注解四大参数解析
android·java·spring
Elastic 中国社区官方博客2 小时前
使用 Elasticsearch 导航检索增强生成图表
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
小金的学习笔记2 小时前
RedisTemplate和Redisson的使用和区别
数据库·redis·缓存