當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


PostgreSQL CREATE TABLE用法及代碼示例

在 PostgreSQL 中,顧名思義,CREATE TABLE 子句用於創建新表。

用法:
CREATE TABLE table_name (
    column_name TYPE column_constraint,
    table_constraint table_constraint
) INHERITS existing_table_name;

我們來分析一下上麵的語法:

  • 首先,在 CREATE TABLE 子句之後定義新表的名稱。 TEMPORARY 關鍵字用於創建臨時表。
  • 接下來,必須列出列名稱、其數據類型和列約束。一個表可以有多列用逗號 (, ) 分隔。列約束定義了列的規則,例如 NOT NULL。
  • 然後,在列列表之後,必須定義一個 table-level 約束,該約束為表中的數據定義規則。
  • 之後,設置一個現有表,新表繼承自該表。這意味著新表包含現有表的所有列和 CREATE TABLE 語句中定義的列。這是 PostgreSQL 對 SQL 的擴展。

現在讓我們進入一個例子。

例:
在這個例子中,我們將創建一個名為的新表account 具有以下列和相應的約束:

  • user_id - 主鍵
  • 用戶名 - 唯一且不為空
  • 密碼 - 不為空
  • 電子郵件 - 唯一且不為空
  • created_on - 不為空
  • last_login - 空

以下語句創建帳戶表:



CREATE TABLE account(
    user_id serial PRIMARY KEY,
    username VARCHAR (50) UNIQUE NOT NULL,
    password VARCHAR (50) NOT NULL,
    email VARCHAR (355) UNIQUE NOT NULL,
    created_on TIMESTAMP NOT NULL,
    last_login TIMESTAMP
);

以下語句創建由兩列組成的角色表:role_id role_name

CREATE TABLE role(
    role_id serial PRIMARY KEY,
    role_name VARCHAR (255) UNIQUE NOT NULL
);

以下語句創建account_roles 包含三列的表:user_idrole_id grant_date

CREATE TABLE account_role
(
  user_id integer NOT NULL,
  role_id integer NOT NULL,
  grant_date timestamp without time zone,
  PRIMARY KEY (user_id, role_id),
  CONSTRAINT account_role_role_id_fkey FOREIGN KEY (role_id)
      REFERENCES role (role_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT account_role_user_id_fkey FOREIGN KEY (user_id)
      REFERENCES account (user_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
);

讓我們更詳細地檢查上麵的語句。
的主鍵account_role 表由兩列組成:user_id role_id,因此我們必須使用主鍵 table-level 約束來定義主鍵,如下所示:

PRIMARY KEY (user_id, role_id)

因為user_id 列引用user_id 在 account 表中的列,我們需要為該列定義一個外鍵約束user_id 柱子:

CONSTRAINT account_role_user_id_fkey FOREIGN KEY (user_id)
      REFERENCES account (user_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION

role_idcolumn 引用role_id 角色表中的列,我們還需要為該列定義一個外鍵約束role_id 柱子:

CONSTRAINT account_role_role_id_fkey FOREIGN KEY (role_id)
      REFERENCES role (role_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION, 

輸出:

相關用法


注:本文由純淨天空篩選整理自RajuKumar19大神的英文原創作品 PostgreSQL – CREATE TABLE。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。