Managing Tables (DDL)
Data Definition Language (DDL) commands are used to define the database schema. This includes creating, modifying, and destroying tables.
CREATE TABLE
The CREATE TABLE statement is used to create a new table. You must define the table name, column names, and their data types.
CREATE TABLE employees (
id SERIAL PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
hire_date DATE DEFAULT CURRENT_DATE
);Explanation of the syntax:
SERIAL: A PostgreSQL pseudo-type that creates an auto-incrementing integer.PRIMARY KEY: Automatically enforces uniqueness and NOT NULL.VARCHAR(50): A string with a maximum length of 50 characters.NOT NULL: A constraint ensuring the column cannot be empty.DEFAULT CURRENT_DATE: If no value is provided during an insert, PostgreSQL uses the current date.
ALTER TABLE
The ALTER TABLE statement is used to add, delete, or modify columns in an existing table.
Adding a Column
ALTER TABLE employees ADD COLUMN department VARCHAR(50);Dropping a Column
ALTER TABLE employees DROP COLUMN department;Modifying a Column's Type
ALTER TABLE employees ALTER COLUMN first_name TYPE VARCHAR(100);PostgreSQL Default
When you use ALTER TABLE, PostgreSQL often requires an exclusive lock on the table. While adding a column with no default value is virtually instantaneous, rewriting a table (e.g., changing a column type that requires data casting) can block all read/write operations on large tables.
DROP TABLE
The DROP TABLE statement removes a table and all its data permanently.
DROP TABLE employees;To prevent an error if the table doesn't exist, use IF EXISTS:
DROP TABLE IF EXISTS employees;If other tables depend on this table (via Foreign Keys), the standard DROP TABLE will fail. You can force the drop of the table and all dependent objects using CASCADE:
DROP TABLE employees CASCADE;CAUTION
CASCADE is extremely dangerous in a production environment as it will silently drop foreign key constraints (and sometimes whole views) in other parts of your database.
