前面已经学习了 MySQL 的 show databases、show tables、use 等命令,下面将仔细介绍如何操作数据库,以后在开发中大部分情况下一个应用对应一个数据库,足够我们使用了。但是对于那种大型项目、或者微服务项目,可能就是一个功能模块一个数据库,如用户模块、订单模块分别创建不同的数据库。
创建数据库使用 CREATE DATABASE 语句,语法如下:
-- 基本语法
CREATE DATABASE 数据库名;
-- 更完整的写法,指定字符集和排序规则
CREATE DATABASE 数据库名
CHARACTER SET 字符集
COLLATE 排序规则;示例:
-- 创建名为 shop 的数据库
mysql> create database shop;
Query OK, 1 row affected (0.00 sec)
-- 如果数据库不存在才创建(避免报错)
mysql> create database if not exists shop;
Query OK, 1 row affected, 1 warning (0.00 sec)
-- 查询已经存在的数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| shop |
| sys |
| testdb |
+--------------------+
6 rows in set (0.00 sec)注意,在实际工作中,我习惯在建库时就指定好字符集。utf8mb4 支持完整的 Unicode字符(包括 emoji 表情),utf8mb4_unicode_ci 是一种常用的排序规则,对中文排序比较友好。
这些命令在前面 MySQL 环境搭建章节已经介绍,下面一起复习一下:
(1)查看MySQL服务器上所有数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| shop |
| sys |
| testdb |
+--------------------+
6 rows in set (0.00 sec)(2)选择要操作的数据库
mysql> use shop;
Database changed
-- 选择要操作的数据库
USE shop;
-- 查看当前正在使用的数据库
SELECT DATABASE();
-- 查看创建数据库的SQL语句
SHOW CREATE DATABASE shop;查看当前正在使用的数据库,注意是 database() 不是 databases(),不是复数:
mysql> select database();
+------------+
| database() |
+------------+
| shop |
+------------+
1 row in set (0.00 sec)查看创建数据库的SQL语句:
mysql> show create database shop;
+----------+--------------------------------------------------------------------------------------------------------------------------------+
| Database | Create Database |
+----------+--------------------------------------------------------------------------------------------------------------------------------+
| shop | CREATE DATABASE `shop` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+--------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)注意:USE 命令本身不是 SQL 标准,而是 MySQL 的扩展。执行 USE shop 后,后续的所有操作(创建表、插入数据等)都会默认在这个数据库中进行,直到切换到另一个数据库。
数据库创建后,主要可以修改的是字符集和排序规则。均通过 alter database 进行修改,语法如下:
ALTER DATABASE 数据库名
CHARACTER SET 字符集
COLLATE 排序规则;示例,修改 shop 数据库的编码为 utf8mb4,排序为 utf8mb4_unicode_ci。
-- 修改数据库的字符集
ALTER DATABASE shop
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;注意:修改字符集不会影响已存在的表,只对后续新建的表生效。
删除数据库是一个非常高危的动作,删除前需要非常谨慎。语法如下:
-- 删除数据库(危险操作!数据不可恢复)
DROP DATABASE 数据库名;
-- 如果数据库存在,才进行删除,避免报错
DROP DATABASE IF EXISTS 数据库名;示例:
-- 删除 shop 数据库
mysql> drop database shop;
Query OK, 0 rows affected (0.00 sec)
-- 再次查看数据库,发现 shop 确实没有了
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| testdb |
+--------------------+
5 rows in set (0.01 sec)
-- 如果 shop 数据库存在,才进行删除
mysql> drop database if exists shop;
Query OK, 0 rows affected, 1 warning (0.00 sec)上面将 shop 数据库删除了,再执行 drop database if exists shop; 语句删除数据库没有抛出错误,因为数据库不存在,不会进行删除操作。
注意:drop database 命令会删除数据库及其中的所有表和数据,执行前务必确认。在生产环境中,这个操作通常需要严格的权限控制和审批流程。
更多知识请阅读后续章节……谢谢!!!