【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来恢复。

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

相关推荐
雅客李3 小时前
2026云手机延迟数据测评 安卓云手机远程操控实测哪个最好
android·智能手机
GuWenyue3 小时前
放弃云端API!5套技术栈实战WebGPU端侧AI,前端独立跑本地大模型,省成本还保隐私
前端·数据库·人工智能
YM52e4 小时前
鸿蒙Flutter Card组件:Material设计风格卡片
android·学习·flutter·华为·harmonyos·鸿蒙
鸽芷咕5 小时前
MySQL/PostgreSQL 迁移金仓 KES:LEFT JOIN 丢数据排查与避坑指南
数据库·mysql·postgresql
love530love11 小时前
【笔记】AutoClaw NSIS 安装器卡死、进程杀不掉、目录删不了?我是这么解决的
人工智能·windows·笔记·agent
谙弆悕博士14 小时前
系统集成项目管理工程师教程(第3版)笔记——第2章:信息技术发展
笔记·计算机网络·信息安全·学习方法·业界资讯·软考·系统分析师
吃着火锅x唱着歌14 小时前
Effective C++ 学习笔记 条款37 绝不重新定义继承而来的缺省参数值
c++·笔记·学习
2401_8414956414 小时前
【数据结构】B+树
数据结构·数据库·c++·b+树·概念·结构·操作原理
风曦Kisaki15 小时前
# Linux笔记:操作系统优化与资源管理
linux·运维·服务器·笔记
阿米亚波15 小时前
【C++】流式数据输入处理(不完全整理)
开发语言·c++·笔记