GBase 8a数据库创建基本表或临时表

本文介绍了在GBase 8a数据库中创建基本表和临时表的语法,通过示例展示了如何创建customer、orders和items表,并详细解释了列级完整性约束,如非空、唯一和主键约束,以及表级完整性约束,如外键和检查约束,强调了数据表间的关系和数据验证的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.创建基本表或临时表

在 GBase 8a 中,创建表的语法格式为:

CREATE [TEMP] TABLE <表名>

(

<列名 1> <数据类型> [列级完整性约束],

<列名 2> <数据类型> [列级完整性约束],

[表级完整性约束 1],

[表级完整性约束 2],

) [IN “<表的存放路径>”];

其中 TEMP 表示建的表是临时表;表名要唯一,字段要唯一;CONNECT 权限的用户只能创建这样的临时表(这样的临时表可以有索引,也可以没有索引),并可以用它进行存取,但不可以进行 ALTER 和 DROP 操作。

创建基本表时需要指定表名、表中每个列的定义以及完整性约束情况。可以将创建基本表想象为搭建一个用于容纳数据的框架。描述这个框架本身的数据被称为元数据(Metadata),即关于数据的数据,例如,表名、列名和列的数据类型等。

例 1.5 创建 Stores5 数据库的顾客表:

create table customer (

customer_num

SERIAL,

cname CHAR(15) not null,

company CHAR(20),

address CHAR(20),

state CHAR(20),

phone CHAR(18) not null,

primary key (customer_num) constraint PK_CUSTOMER

);

上面的语句在数据库中创建了基本表 customer。客户表 customer 由 7 列组成,每个列的定义必须指明列名和数据类型,然后是可选的列级完整性约束。考虑到客户名称和联系电话列不为空,因此为 cname 和 phone 添加非空约束 NOT NULL。除非空约束外,列级完整性约束还可以选择添加唯一约束(Unique)。本表的表级完整性约束设置了一个名为PK_CUSTOMER 的主键约束(Primary Key Constraint),将 customer_num 列定义为主键。由于主键默认含有非空和唯一约束,因此不必为 customer_num 定义 NOT NULL。

例 1.6 创建 Stores5 数据库的订单表:

create table orders (

order_num SERIAL,

customer_num INTEGER,

order_date DATE not null,

ship_date DATE,

paid_date DATE,

primary key (order_num) constraint PK_ORDERS,

foreign key (customer_num) references customer (customer_num) constraint

FK_RELATIO_CUSTOMER

);

在创建 orders 表时,除了设置了一个主键约束,由于其 customer_num 列是由 customer表的主键 customer_num 引用而来的,所以设置了一个名为 FK_RELATIO_CUSTOMER 的引用约束(Referential Constraint),也叫外键约束)。引用约束用来表示数据表之间或数据表内的关系。一个数据表的主键可以被同一个数据表或其他数据表引用。主键被引用的数据表被称为父表(Parent Table),引用了父表的主键的数据表被称为子表(Child Table)。

例 1.7 创建 Stores5 数据库的订单明细表:

create table items (

item_num SERIAL,

order_num INTEGER,

ship_name CHAR(20),

ship_price MONEY(6,2),

quantity

SMALLINT,

check (quantity >0 and quantity <10000) constraint CK_QUANTITY,

primary key (item_num) constraint PK_ITEMS

);

除了在列后定义列级完整性约束后,有时需要对输入的数据按照设置的逻辑进行检查,这就需要检查约束(Check Constraint)。在向表中添加数据时,这个约束会对输入的数据按照设置的逻辑进行检查。在本 items 表中,由于厂商仓库的容量大小限制,定义的 quantity列的值应该是 0~10000 的整数,所以定义了检查约束 CK_QUANTITY ,以检查数据是否满足条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值