sql-create-database
SQL - 创建和管理数据库
Section titled “SQL - 创建和管理数据库”数据库是应用程序的持久层——一个用于高效存储、管理和检索数据的结构化系统。虽然存在许多图形工具,但理解数据库管理的核心 SQL 命令是任何开发人员的基本技能。
CREATE DATABASE 语句
Section titled “CREATE DATABASE 语句”CREATE DATABASE 语句是数据定义语言(DDL)命令,用于创建一个新的空数据库。它是构建新数据驱动应用程序的第一步。
基本语法很简单,但现代最佳实践涉及包含其他选项。
CREATE DATABASE [IF NOT EXISTS] database_name [CHARACTER SET charset_name] [COLLATE collation_name];IF NOT EXISTS: 这是编写安全、可重复运行脚本的关键补充。它防止在数据库已存在时发生错误。CHARACTER SET: 指定数据库的默认字符集。强烈建议使用utf8mb4,因为它支持所有 Unicode 字符,包括表情符号,这对于现代全球化应用程序至关重要。COLLATE: 定义字符串的排序和比较规则。像utf8mb4_unicode_ci这样的排序规则为各种语言提供了良好的排序规则,并且不区分大小写(_ci)。
以下是为 Web 应用程序创建新数据库的一个健壮示例:
CREATE DATABASE IF NOT EXISTS my_webapp_db CHARACTER SET = 'utf8mb4' COLLATE = 'utf8mb4_unicode_ci';常见陷阱:权限
Section titled “常见陷阱:权限”如果你收到“Access denied”(访问被拒绝)错误,这意味着你的数据库用户没有创建数据库所需的权限。这是一种常见的安全措施。你通常需要管理员访问权限,或具有 CREATE 权限的用户才能执行此操作。
实用的数据库管理
Section titled “实用的数据库管理”要查看服务器上的数据库列表,不同的系统有不同的命令:
- MySQL/MariaDB:
SHOW DATABASES; - PostgreSQL:
\l(在psql命令行工具中) - 标准 SQL: 查询
INFORMATION_SCHEMA,这是一个在大多数关系型数据库管理系统(RDBMS)中可用的标准元数据模式。SELECT schema_name FROM INFORMATION_SCHEMA.SCHEMATA;
选择默认数据库
Section titled “选择默认数据库”USE 语句(例如,USE my_webapp_db;)在命令行工具和脚本中很常见,用于设置后续命令的默认数据库。然而,在应用程序代码中,你通常直接在连接字符串中指定数据库名称,这是一种更健壮和明确的方法。
现代工作流:版本控制和迁移工具
Section titled “现代工作流:版本控制和迁移工具”在专业的软件开发中,你很少在生产服务器上手动运行 CREATE DATABASE。相反,数据库模式更改通过结构化、自动化的过程进行管理:
- 版本控制(Git): 你的所有
CREATE TABLE、ALTER TABLE和其他模式定义脚本都应存储在像 Git 这样的版本控制系统中。这提供了数据库结构每次更改的历史记录。 - 数据库迁移工具: 像 Flyway、Liquibase 或 Django 和 Rails 等框架中的迁移功能可以自动化将这些版本控制脚本应用到数据库的过程。它们跟踪哪些脚本已运行,并按顺序应用新的脚本,确保你的数据库模式在开发、测试和生产环境中始终处于正确状态。
关于云环境的说明
Section titled “关于云环境的说明”当在 AWS RDS、Google Cloud SQL 或 Azure SQL 等云平台上使用托管数据库服务时,数据库通常通过平台的 Web 控制台、命令行界面(CLI)或使用基础设施即代码(IaC)工具(如 Terraform)进行配置。尽管底层引擎仍然会创建一个数据库,但初始设置通常是在基础设施级别处理的,而不是通过运行直接的 SQL 命令。