游乐游手机版
首页/数据库/文章详情

MySQL删除数据库DROP DATABASE语句详解

时间:2026-06-26 07:06
在MySQL里,删除数据库是个基础操作,但也不是随手一敲就能完事的——有语法、有权限、还有两个不能碰的系统库。下面就来把这个细节彻底说清楚。 语法 当需要移除一个已有的数据库时,使用DROP DATABASE语句,标准格式如下: DROP DATABASE [IF EXISTS] 各部分的含义: :

在MySQL里,删除数据库是个基础操作,但也不是随手一敲就能完事的——有语法、有权限、还有两个不能碰的系统库。下面就来把这个细节彻底说清楚。

语法

当需要移除一个已有的数据库时,使用DROP DATABASE语句,标准格式如下:

MySQL之删除数据库(DROP DATABASE语句)

DROP DATABASE [IF EXISTS] <数据库名>

各部分的含义:

  • <数据库名>:指定要删除的数据库名称。
  • IF EXISTS:可选项,用于防止当数据库不存在时抛出错误。加了它,即使删一个不存在的库也不会报错。
  • DROP DATABASE:会删除数据库中所有的表格,同时将数据库本身也一并移除。执行这条语句需要拥有数据库的DROP权限。

特别需要注意:MySQL安装后会自动创建information_schemamysql这两个系统数据库,里面存放着数据库运行的核心信息。如果手滑把它们删了,MySQL将无法正常工作。所以操作前一定要确认目标库是不是系统库。

例子

先用CREATE DATABASE TEST_DEL;创建一个测试数据库,再用SHOW DATABASES;查看当前已有数据库:

mysql> CREATE DATABASE TEST_DEL;
Query OK, 1 row affected (0.00 sec)

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test1              |
| test2              |
| test3              |
| test4              |
| test5              |
| test6              |
| test_del           |
| tset               |
+--------------------+
12 rows in set (0.03 sec)

现在用DROP DATABASE TEST_DEL;将该数据库删除,再次查看所有数据库,会发现test_del已经消失了:

mysql> DROP DATABASE TEST_DEL;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test1              |
| test2              |
| test3              |
| test4              |
| test5              |
| test6              |
| tset               |
+--------------------+
11 rows in set (0.04 sec)

如果此时再次尝试删除同一个数据库,程序就会报错:

mysql> DROP DATABASE TEST_DEL;
1008 - Can't drop database 'test_del'; database doesn't exist

这时前面提到的IF EXISTS就派上用场了。加上它之后再执行,即使数据库不存在也不会报错:

mysql> DROP DATABASE IF EXISTS TEST_DEL;
Query OK, 0 rows affected (0.00 sec)

一个干净利落的无错误返回。所以日常操作中,养成加IF EXISTS的习惯是一个好办法,尤其当删除操作在脚本里自动执行时,可以有效避免因数据库不存在而中断流程。

来源:https://blog.csdn.net/qq_38523616/article/details/100015186
上一篇轻量级本地数据库.db:极简高效的本地数据存储方案 下一篇一篇文章讲透数据仓库与数据库的核心区别
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
为什么SQL中 NOT IN 子查询遇到 NULL 会导致 JOIN 逻辑完全崩溃失效
数据库 · 2026-07-21

为什么SQL中 NOT IN 子查询遇到 NULL 会导致 JOIN 逻辑完全崩溃失效

SQL的NOTIN子查询若结果包含NULL,三值逻辑会使整行判断为UNKNOWN,WHERE仅保留TRUE,导致所有行被过滤,返回空集。推荐使用NOTEXISTS替代,它不比较值,只判断子查询是否返回行,天然规避NULL问题。LEFTJOIN+ISNULL易写错,COALESCE或加ISNOTNULL仅权宜之计,可能掩盖数据问题。

完整Redis集群架构图及搭建步骤详解,新手必看
数据库 · 2026-07-21

完整Redis集群架构图及搭建步骤详解,新手必看

一、简介 Redis集群功能从3 0版本开始引入,到5 0 14版本已经相当成熟。本文就来聊聊如何搭建一个最简单的集群,以及常用的集群管理命令。版本锁定在5 0 14,所有操作均基于此版本。 二、架构图 先来看一个最基础的集群架构,一目了然: 三、搭建集群 3 1、下载 这里是在一台Linux服务器

SQL存储过程结合XML数据类型的高性能解析技巧
数据库 · 2026-07-21

SQL存储过程结合XML数据类型的高性能解析技巧

直接用 nodes() + value(),别碰 OPENXML 从 SQL Server 2005 起,OPENXML 就应该被淘汰了。它需要手动调用 sp_xml_preparedocument 和 sp_xml_removedocument,一旦遗漏后者就会引发内存泄漏;而且整个过程基于临

SQL窗口函数生成带层级结构的财务流水号技巧
数据库 · 2026-07-21

SQL窗口函数生成带层级结构的财务流水号技巧

财务流水号按业务类型分组连续编号,需用ROW_NUMBER()OVER(PARTITIONBYbusiness_typeORDERBYcreate_time)生成,避免先GROUPBY致明细丢失。日期前缀和补零拼接需注意数据库差异。多级嵌套结构需在PARTITIONBY中增加额外分类字段,并发环境下窗口函数无法保证唯一性,需结合序列或锁机制。

SQL中COALESCE函数优雅处理NULL值技巧与最佳实践全面指南
数据库 · 2026-07-21

SQL中COALESCE函数优雅处理NULL值技巧与最佳实践全面指南

COALESCE函数从左到右返回首个非NULL值,参数顺序决定兜底是否生效;类型不兼容时PostgreSQL和SQLServer报错,需显式CAST对齐;运算前需对每个可能为NULL的项单独包裹,否则表达式整体为NULL;避免在WHERE或JOIN条件中使用,否则导致语义错乱或索引失效;不处理空字符串,需嵌套NULLIF。