前言
在之前的文章中,我们深入钻研了MySQL的基础知识点,为大家搭建了扎实的理论框架。当下,我们将目光聚焦于MySQL中最为基础且至关重要的操作之一——数据库层面的数据定义语言(DDL)操作,这是每一位数据库开发者与管理者必须熟练掌握的技能。
库级别的DDL操作是构建和管理数据库系统的基石,它涉及数据库对象的创建、修改以及删除。通过本文,我们将细致讲解如何高效地开展数据库的管理工作,具体包含:
-
创建数据库的基本语法与注意事项
-
选择和切换数据库的正确方法
-
修改数据库的字符集与校对规则
-
安全有效地删除数据库
接下来,我们逐步揭开MySQL库操作的神秘面纱,助力读者全面掌握这些核心技能。
1.创建数据库
我们从数据库的创建入手,相信看过上篇文章的读者对常见数据库已有初步了解,上篇仅为让大家快速入门,今日才是对其的正式讲解。下面先来看创建数据库的语法。
1.1.语法
CREATE DATABASE [IF NOT EXISTS] db_name #[]表示可选内容
[create_specification [,create_specification] ...]
#create_specification:
#[DEFAULT] CHARACTER SET charset_name
#[DEFAULT] COLLATE collation_name 此为后续会涉及的字符集相关内容
或许不少读者看到该语法会觉得有些晦涩,小编当初学习时也有类似感受,所以我们先从创建数据库的简单形式开始。
1.2.创建最简数据库
create database boke_1; #最简单的情况,需留意mysql语句末尾要加分号,如同编写C++代码。
这条命令用于创建名为boke_1的数据库。然而,这样写并不规范,存在一个隐患:若text_1此前已被创建,服务器会直接报错,若用于自动化部署脚本,会导致脚本中断,这是较为严重的问题,所以创建数据库时,利用第一个[]内的内容可设置第一道防护。
1.3.第一道防护:安全保障——IF NOT EXISTS
设想你在编写可反复运行的初始化脚本,必然不希望每次运行都因数据库已存在而失败。这时,我们的第一个“助力者”登场啦:IF NOT EXISTS。因此我们可对之前的代码进行完善。
CREATE DATABASE IF NOT EXISTS boke_1;
该语句的作用是:若boke_1数据库已存在,便不会执行创建操作,避免因重复创建数据库引发错误;若数据库不存在,mysql
会创建该数据库。如此可确保脚本多次执行时不会因数据库已存在而中断。
1.4.第二道防护:明确语言环境——设置字符集与校对规则
虽然目前我们能安全创建一个数据库,但若对数据存储的语言和排序规则有要求,比如要存储中文、支持多语言,或期望比较字符串时不区分大小写,那么就不能忽视另一个关键参数——字符集(Character Set)与校对规则(Collation) 。
1.4.1.为何设置字符集
字符集决定了数据库存储字符的方式,例如使用utf8可支持几乎所有语言的字符(包括emoji
表情😄),而latin1仅适用于英文或西欧语言。
校对规则会影响字符的比较方式,比如是否区分大小写、如何排序。例如:
-
utf8mb4_general_ci
:不区分大小写(ci = case-insensitive) -
utf8mb4_bin
:区分大小写(bin = binary)
1.4.2.包含字符集与校对规则的写法
现在完善之前的数据库创建语句。
CREATE DATABASE IF NOT EXISTS boke_1
DEFAULT CHARACTER SET utf8
COLLATE utf8mb4_general_ci;
此语句达成以下几点:
-
若
boke_1
不存在则进行创建; -
采用
utf8mb4
字符集存储数据; -
以不区分大小写的方式比较和排序字符串。
这样的写法既安全又规范,是生产环境中较为推荐的做法,不过我后续写博客时,通常不会写后面的字符集和校验准则,会选择使用系统默认的,实际上就是上述所写,我早已在配置mysql时将默认的字符集和校对规则调整好了。【不会配置的可参考我上一篇文章】。
2.字符串与校验规则
尽管之前对字符串和校验规则进行了简要介绍,但我们进一步来看看mysql默认的字符串和校验规则有哪些。
2.1.查看系统默认字符集与校验规则
输入下述代码可查看系统默认的字符集。
show variables like 'character_set_database';

可看到系统当前字符集的设置,此处显示为utf8。
输入下述代码可查看系统默认的校验规则。
show variables like 'collation_database';

可看到系统默认的校验规则。
2.2.查看数据库支持的字符集
或许很多读者好奇数据库支持多少种字符集,输入下述代码即可查看支持的字符集,种类较为丰富。
show charset;

支持的字符集较多,不过我还是建议大家使用默认的utf8,因其具备较好的通用性,使用起来较为便捷。
2.3.查看数据库支持的字符集校验规则
在了解了数据库可支持的字符集后,我们也不能忽视字符集校验规则,同样,一行代码就能知晓。
show collation;

上述为截取的部分内容,实际上数据库支持的字符校验规则十分多样,不过我依旧秉持观点,使用默认的即可,除非遇到特殊情形,再进行相关设置。
3.操作数据库
接着我们继续开展数据库相关的基本操作。当创建了多个数据库后,有时需要查看当前系统中已有的数据库数量。此时,我们会用到数据库操作中的第一条指令——查看数据库。
3.1.查看数据库
show databases;
上述指令用于查看当前的数据库,如同下图所示。

3.2.显示创建语句
有时想了解某个表的创建细节,可输入下述语句查看创建语句的详情。
show create database 数据库名;

3.3.修改数据库
有时想修改数据库的字符集或校验规则,输入下述指令即可进行修改。
ALTER DATABASE 数据库名 CHARACTER SET 字符集名 COLLATE 校验规则名;
例如,若要将数据库mydb的字符集修改为utf8mb4,校验规则修改为utf8mb4_general_ci,可执行以下命令。
ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
需要注意的是,修改字符集和校验规则可能会对数据库中已有的数据产生影响,尤其是涉及排序和比较的操作时。因此建议在操作前备份数据库,并确认修改后的字符集和校验规则是否契合当前数据需求。
3.4.删除数据库
有时之前创建的数据库不再适用,需要将其删除(不过一般不建议轻易删除,存在一定风险),不过很多读者可能想了解该指令,所以我还是进行讲解。
drop database [if exists] 数据库的名字;
[]内的内容功能与创建数据库时相同,用于确保不会删除不存在的数据库,若没有该内容且删除不存在的数据库,系统会报错,有了该内容可降低自动化脚本的风险。
3.5.查看数据库的连接情况
有时可能有多个用户访问我们的mysql,输入下述指令可知晓当前有哪些用户连接到服务器,若发现某个用户并非正常登陆,很可能数据库已被入侵。日后大家发现数据库运行缓慢时,可使用该指令查看连接情况。
show processlist;

4.小结
在本文中,我们深入探究了MySQL中数据库库级别的基本操作,包括数据库的创建、字符集与校对规则的配置、以及数据库的管理与操作。通过一系列实际操作示例,我们掌握了如何:
-
运用简单语法创建数据库,并通过
IF NOT EXISTS
避免重复创建错误; -
配置数据库的字符集与校对规则,以确保数据库能支持多语言和特定的字符比较需求;
-
使用基本的查询和修改语句,查看数据库信息、修改数据库的字符集与校对规则、以及删除数据库;
-
在数据库管理中规避潜在错误,保障操作的安全性与稳定性。
掌握这些基础操作不仅有助于提升日常数据库开发与维护的效率,还为后续更高级的数据库优化与管理奠定了坚实基础。在实际工作中,需根据具体需求灵活运用这些操作,尤其是构建自动化脚本和管理多个数据库时,更要确保操作的精准性与安全性。希望本文的分享能为您的MySQL数据库操作提供助力与指导。学习的时光总是短暂的,各位大佬们,咱们下篇文章再见!
