使用 CREATE TABLE

使用 CREATE TABLE 语句来创建您在数据模型中所设计的每个表。此语句具有复杂的格式,但它基本上是表列的列表。对于每个列,提供下列信息:
  • 列的名称
  • 数据类型(来自您创建的域列表)
该语句还可包含下列其中一个或多个约束:
  • 主键约束
  • 外键约束
  • NOT NULL 约束(或 NULL 约束,允许 NULL 值)
  • 唯一约束
  • 缺省约束
  • 检查约束
简而言之,CREATE TABLE 语句是您在图 3 的数据模型图中所绘制的表的映像。以下示例显示了电话号码簿数据模型的语句:
CREATE TABLE name
   (
      rec_num  SERIAL PRIMARY KEY,
      lname    CHAR(20),
      fname    CHAR(20),
      bdate    DATE,
      anniv    DATE,
      email    VARCHAR(25)
   );

CREATE TABLE child
   (
      child    CHAR(20),
      rec_num    INT,
      FOREIGN KEY (rec_num) REFERENCES NAME (rec_num)
   );

CREATE TABLE address 
   (
      id_num    SERIAL PRIMARY KEY,
      rec_num    INT,
      street    VARCHAR (50,20),
      city      VARCHAR (40,10),
   state     CHAR(5) DEFAULT 'CA',
      zipcode   CHAR(10),
      FOREIGN KEY (rec_num) REFERENCES name (rec_num)
   );

CREATE TABLE voice 
   (
      vce_num    CHAR(13) PRIMARY KEY,
      vce_type   CHAR(10),
      rec_num    INT,
      FOREIGN KEY (rec_num) REFERENCES name (rec_num)
   );

CREATE TABLE fax
   (
      fax_num    CHAR(13),
      oper_from  DATETIME HOUR TO MINUTE,
      oper_till  DATETIME HOUR TO MINUTE,
      PRIMARY KEY (fax_num)
   );

CREATE TABLE faxname 
   (
      fax_num    CHAR(13),
      rec_num    INT,
      PRIMARY KEY (fax_num, rec_num),
      FOREIGN KEY (fax_num) REFERENCES fax (fax_num),
      FOREIGN KEY (rec_num) REFERENCES name (rec_num)
   );

CREATE TABLE modem 
   (
      mdm_num    CHAR(13) PRIMARY KEY,
      rec_num    INT,
      b_type     CHAR(5),
      FOREIGN KEY (rec_num) REFERENCES name (rec_num)
   ); 

在上述每个示例中,由于 CREATE TABLE 语句没有指定存储选项,所以表数据存储在您为数据库指定的数据库空间中。可以对表指定与数据库的存储位置不同的数据库空间,也可以将表分段存放到多个数据库空间中。有关 GBase 8s 数据库服务器支持的不同存储选项的信息,请参阅 GBase 8s SQL 指南:语法 中的 CREATE TABLE 语句。下一节阐述一种将表分段存放到多个数据库空间中的方法。