DDL
4 methodsStatements that define or modify the database schema.
CREATE TABLE [IF NOT EXISTS] tbl (col type [constraints], ...)Creates a new table with the given columns and table-level constraints.
Parameters
| Name | Type | Description |
|---|---|---|
| tbl | identifier | Table name. |
| type | datatype | INT, VARCHAR(n), DATETIME, DECIMAL(p,s), etc. |
| constraints | constraint | NOT NULL, DEFAULT, AUTO_INCREMENT, PRIMARY KEY. |
Returns
void
Example
mysql
CREATE TABLE users (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(255) NOT NULL UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);ALTER TABLE tbl ADD [COLUMN] col type | DROP COLUMN col | MODIFY col typeAdds, removes or modifies columns and constraints on an existing table.
Parameters
| Name | Type | Description |
|---|---|---|
| tbl | identifier | Table to alter. |
| col | identifier | Column to add, drop or modify. |
Returns
void
Example
mysql
ALTER TABLE users
ADD COLUMN last_login DATETIME NULL,
MODIFY email VARCHAR(320) NOT NULL;CREATE [UNIQUE] INDEX name ON tbl (col, ...) [USING BTREE]Creates a secondary index on one or more columns to speed up lookups; UNIQUE enforces uniqueness.
Parameters
| Name | Type | Description |
|---|---|---|
| name | identifier | Index name. |
| tbl | identifier | Table to index. |
| col | column-list | Indexed columns. |
Returns
void
Example
mysql
CREATE UNIQUE INDEX idx_users_email ON users (email);CONSTRAINT name PRIMARY KEY|FOREIGN KEY|UNIQUE|CHECK (cols)Table-level constraint clause enforcing integrity rules on one or more columns.
Parameters
| Name | Type | Description |
|---|---|---|
| name | identifier | Optional constraint name. |
| cols | column-list | Columns the constraint applies to. |
Returns
void
Example
mysql
CONSTRAINT fk_orders_user
FOREIGN KEY (user_id) REFERENCES users(id)
ON DELETE CASCADE ON UPDATE RESTRICT