CREATE TABLE

,, and

Syntax

CREATE TABLE [IF NOT EXISTS] table_name (
  column_name data_type [constraints],
  ...
  [INDEX | PRIMARY KEY | UNIQUE | FOREIGN KEY]
) [ENGINE=InnoDB] [DEFAULT CHARSET=utf8mb4];

Parameters

ParametersDescriptionExamplesLevel
PRIMARY KEY id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY Common
NOT NULL username VARCHAR(50) NOT NULL Common
DEFAULT status TINYINT DEFAULT 1 Common
UNIQUE email VARCHAR(100) UNIQUE Common
FOREIGN KEY FOREIGN KEY (user_id) REFERENCES users(id) Advanced
COMMENT status TINYINT COMMENT '0: 1:' Common

Examples

CREATE TABLE IF NOT EXISTS users ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE COMMENT '', email VARCHAR(100) NOT NULL UNIQUE COMMENT '', password_hash VARCHAR(255) NOT NULL COMMENT '', status TINYINT DEFAULT 1 COMMENT '0: 1:', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_email (email), INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='';
, and

()

CREATE TABLE orders ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, order_no VARCHAR(32) NOT NULL UNIQUE COMMENT '', user_id BIGINT UNSIGNED NOT NULL COMMENT 'ID', total_amount DECIMAL(10,2) NOT NULL DEFAULT 0.00, status TINYINT DEFAULT 0 COMMENT '0: 1: 2: 3:', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE RESTRICT, INDEX idx_user_id (user_id), INDEX idx_status_created (status, created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
, ON DELETE RESTRICT

DESC users;
SHOW CREATE TABLE users;
DESC, SHOW CREATE TABLE

CREATE TEMPORARY TABLE tmp_active_users AS
  SELECT id, username FROM users WHERE status = 1;

Common Errors

ERROR 1050 (42S01): Table 'users' already existsCREATE TABLE IF NOT EXISTS
ERROR 1215 (HY000): Cannot add foreign key constraintand ( UNSIGNED)

Tips

Related Commands