DDL 基础:CREATE、ALTER、DROP
CREATE TABLE
基本语法
sql
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
age INT CHECK (age >= 0),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);从查询创建表
sql
CREATE TABLE active_users AS
SELECT * FROM users WHERE status = 'active';临时表
sql
-- PostgreSQL / MySQL
CREATE TEMP TABLE temp_data (
id INT,
value TEXT
);
-- 会话结束时自动删除ALTER TABLE
添加列
sql
ALTER TABLE users ADD COLUMN phone VARCHAR(20);
ALTER TABLE users ADD COLUMN status VARCHAR(20) DEFAULT 'active';删除列
sql
ALTER TABLE users DROP COLUMN phone;修改列
sql
-- PostgreSQL
ALTER TABLE users ALTER COLUMN email TYPE VARCHAR(300);
ALTER TABLE users ALTER COLUMN age SET NOT NULL;
-- MySQL
ALTER TABLE users MODIFY COLUMN email VARCHAR(300);
ALTER TABLE users MODIFY COLUMN age INT NOT NULL;重命名
sql
-- 重命名列
ALTER TABLE users RENAME COLUMN name TO full_name;
-- 重命名表
ALTER TABLE users RENAME TO customers;DROP TABLE
sql
DROP TABLE users;
-- 如果存在则删除
DROP TABLE IF EXISTS users;
-- 级联删除(删除依赖对象)
DROP TABLE users CASCADE;实践建议
- 始终使用 IF EXISTS / IF NOT EXISTS
- 生产环境谨慎使用 DROP
- 先备份再修改
- 使用事务包装 DDL(PostgreSQL)
sql
BEGIN;
ALTER TABLE users ADD COLUMN phone VARCHAR(20);
-- 验证
ROLLBACK; -- 或 COMMIT练习
- 创建 products 表(id, name, price, stock)
- 添加 description 列
- 修改 price 为 DECIMAL(10,2)
- 重命名列和表
- 删除列
- 创建临时表
- 从查询创建表
- 练习 IF EXISTS / IF NOT EXISTS
完成练习后,打开本章答案页核对。
下一步
下一节学习数据类型:如何选择合适的数据类型。