数据库是有组织的数据集合,用于存储、管理和检索信息。在MySQL中,数据库是表的容器,每个数据库包含多个相关的表。
范式是数据库设计的规范,用于减少数据冗余和提高数据一致性。常见的范式包括:
注意: 虽然高范式可以减少数据冗余,但在实际应用中,为了性能考虑,有时会适当反范式化。
使用 CREATE DATABASE 语句创建新数据库:
-- 创建数据库
CREATE DATABASE mydb;
-- 创建数据库并指定字符集
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 如果不存在则创建
CREATE DATABASE IF NOT EXISTS mydb;
-- 创建数据库并指定存储引擎默认值
CREATE DATABASE mydb
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_unicode_ci;
-- 创建数据库并设置注释
CREATE DATABASE mydb
COMMENT '这是一个示例数据库';
-- 查看数据库的完整创建语句
SHOW CREATE DATABASE mydb;
MySQL安装后会包含几个系统数据库:
-- 查看所有数据库(包括系统数据库)
SHOW DATABASES;
-- 查看数据库的详细信息
SELECT * FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME = 'mydb';
-- 查看数据库创建语句
SHOW CREATE DATABASE mydb;
-- 查看数据库大小和表数量
SELECT
table_schema AS '数据库',
COUNT(*) AS '表数量',
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS '大小(MB)'
FROM information_schema.tables
GROUP BY table_schema;
在操作表之前,需要先选择要使用的数据库:
-- 选择数据库
USE mydb;
-- 查看当前使用的数据库
SELECT DATABASE();
-- 在连接时直接指定数据库
mysql -u root -p mydb
-- 在SQL语句中显式指定数据库
SELECT * FROM mydb.table_name;
USE database_name;明确指定数据库使用ALTER DATABASE可以修改数据库的属性:
-- 修改数据库字符集
ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 修改数据库注释
ALTER DATABASE mydb COMMENT '修改后的数据库描述';
-- 查看修改后的数据库信息
SHOW CREATE DATABASE mydb;
ALTER TABLE-- 删除数据库
DROP DATABASE mydb;
-- 如果存在则删除
DROP DATABASE IF EXISTS mydb;
-- 删除前确认数据库内容
SHOW TABLES FROM mydb;
SELECT COUNT(*) FROM information_schema.tables
WHERE table_schema = 'mydb';
-- 备份数据库(命令行)
mysqldump -u root -p mydb > mydb_backup.sql
-- 恢复数据库
mysql -u root -p mydb < mydb_backup.sql
-- 备份所有数据库
mysqldump -u root -p --all-databases > all_databases_backup.sql
ecommerce 的数据库,使用utf8mb4字符集SHOW DATABASES 查看是否创建成功USE ecommerce 选择该数据库SELECT DATABASE() 确认当前数据库SHOW CREATE DATABASE ecommerce 查看数据库创建语句information_schema 数据库中的表结构test_backup 数据库用于备份测试mysqldump 备份数据库可能原因: 权限不足、数据库名冲突、字符集不支持
解决方案: 检查用户权限、确认数据库名唯一性、验证字符集支持
可能原因: 客户端字符集不匹配、数据库字符集设置错误
解决方案: 统一字符集设置、使用utf8mb4字符集、检查连接参数
可能原因: 权限不足、数据库正在被使用、存在锁定
解决方案: 检查权限、终止相关连接、重启MySQL服务