当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。