1.2 DDL:CREATE、ALTER、DROP
DDL 是 Data Definition Language,负责定义数据库对象的结构。最常见的三个词是:
CREATE:创建对象。ALTER:修改对象结构。DROP:删除对象。
对象可以是表、索引、视图、函数等。本节先关注表。
CREATE TABLE
sql
CREATE TABLE courses (
course_id INTEGER PRIMARY KEY,
title VARCHAR(100) NOT NULL,
level VARCHAR(30) NOT NULL,
published_on DATE
);这段写法尽量保持通用:整数、字符串、日期、主键、非空约束都是关系型数据库里常见概念。
数据类型不是完全统一
常见类型包括:
- 整数:
INTEGER。 - 小数:
DECIMAL(p, s)。 - 字符串:
VARCHAR(n)。 - 日期:
DATE。 - 时间戳:
TIMESTAMP。 - 布尔:
BOOLEAN,但某些产品内部实现不同。
注意
产品差异提醒:
TEXT、BOOLEAN、DATETIME、TIMESTAMP WITH TIME ZONE 等类型在 MySQL、PostgreSQL、SQLite、SQL Server 中细节不同。建表前应查当前产品的数据类型文档。正在加载概念检查...
ALTER TABLE
sql
ALTER TABLE courses
ADD published_on DATE;这表示给已有表增加一列。不同数据库支持的 ALTER 能力差别较大,例如改列类型、重命名列、添加约束的写法可能不同。
注意
产品差异提醒:
ALTER TABLE ... RENAME COLUMN ... 在现代 PostgreSQL、MySQL 8+、SQLite 3.25+ 中可用,但旧版本或其他产品可能不同。迁移脚本不要只凭记忆写。DROP TABLE
sql
DROP TABLE courses;DROP 删除的是对象本身,不只是清空数据。真实项目中执行前要确认:
- 当前连接的是不是正确环境。
- 是否有备份。
- 是否有视图、外键、函数、报表依赖这张表。
- 是否需要先通知使用方。
正在加载交互实验...
正在加载概念检查...
自增主键的常见差异
通用设计可以先写成:
sql
course_id INTEGER PRIMARY KEY但“自动生成 ID”的语法明显有产品差异。
产品差异示例:
- MySQL 常见:
course_id INTEGER PRIMARY KEY AUTO_INCREMENT - PostgreSQL 常见:
course_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY - SQL Server 常见:
course_id INT IDENTITY PRIMARY KEY - SQLite:对
INTEGER PRIMARY KEY有自己的 rowid 行为。
正在加载本节练习...