在PostgreSQL中,数据定义语言(DDL)脚本用于定义、修改或删除数据库的结构。DDL 操作包括创建表、修改表结构、删除表等。以下是几种常见的DDL操作示例以及如何在脚本中实现它们。
1. 创建表
CREATE TABLE employees (
employee_id SERIAL PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
email VARCHAR(100) UNIQUE,
hire_date DATE
);
2. 修改表结构
添加列
ALTER TABLE employees ADD COLUMN department_id INT;
修改列数据类型
ALTER TABLE employees ALTER COLUMN email TYPE VARCHAR(150);
重命名列
ALTER TABLE employees RENAME COLUMN email TO email_address;
删除列
ALTER TABLE employees DROP COLUMN department_id;
删除表
DROP TABLE employees;
创建索引
CREATE INDEX idx_employee_email ON employees (email_address);
修改索引(例如重命名索引)
DROP INDEX idx_employee_email;
CREATE INDEX idx_new_employee_email ON employees (email_address);
创建序列和主键序列自动增长(对于自增字段)
CREATE SEQUENCE employee_id_seq;
ALTER TABLE employees ALTER COLUMN employee_id SET DEFAULT nextval('employee_id_seq');
ALTER TABLE employees ALTER COLUMN employee_id SET DEFAULT nextval('employee_id_seq'); -- 如果序列已存在,则需要手动设置默认值,因为 SERIAL 自动处理序列的创建和默认值设置。通常,使用 SERIAL 会自动处理这些。
添加外键约束
ALTER TABLE employees ADD CONSTRAINT fk_department FOREIGN KEY (department_id) REFERENCES departments(department_id);
删除外键约束(和索引等其他约束)
ALTER TABLE employees DROP CONSTRAINT fk_department; -- 外键约束名可能需要根据具体情况调整。
或者通过索引名删除外键约束(不推荐,除非你知道索引名):
DROP INDEX fk_department;