SQL Practice Logo

SQLPractice Online

Constraints & Integrity: Functions

Module: Schema Design & Advanced DDL

## Complete Constraint Syntax

**Table-level constraints (defined after columns):**

```sql

CREATE TABLE example (

id SERIAL,

email VARCHAR(255),

age INT,

-- Primary key

CONSTRAINT pk_example PRIMARY KEY (id),

-- Unique

CONSTRAINT uq_example_email UNIQUE (email),

-- Check

CONSTRAINT chk_example_adult CHECK (age >= 18),

-- Foreign key

CONSTRAINT fk_example_parent FOREIGN KEY (parent_id)

REFERENCES parent_table(id)

ON DELETE CASCADE

ON UPDATE CASCADE

);

```

**Column-level constraints (defined with column):**

```sql

CREATE TABLE example (

id SERIAL PRIMARY KEY, -- Column-level primary key

email VARCHAR(255) UNIQUE NOT NULL, -- Column-level unique and not null

age INT CHECK (age >= 18), -- Column-level check

parent_id INT REFERENCES parent_table(id) -- Column-level foreign key

);

```

**Foreign key with all options:**

```sql

FOREIGN KEY (column_name)

REFERENCES parent_table(parent_column)

ON DELETE [CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION]

ON UPDATE [CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION]

```

**Composite constraints:**

```sql

-- Composite primary key

PRIMARY KEY (column1, column2)