创建和使用表
表是用于存储信息的基本数据库对象。 创建表后,可以定义列,创建索引以及添加触发器和约束。 可以使用 CREATE TABLE 语句来创建表,定义表中列的物理属性以及定义约束以限制表中允许的值。
创建表时,需要了解空值和缺省值的概念。 null 值 指示行缺少列值。 它与零或全部空白的值不同。 这意味着未知。 空值不等于任何值,甚至不等于其他空值。 如果列不允许空值,那么必须将缺省值或用户提供的值指定给该列。
将行添加到表时,会将 缺省值 分配给列,并且不会为该列指定任何值。 如果没有为列定义特定的缺省值,那么将使用系统缺省值。
您将创建一个表以维护有关业务当前库存的信息。 此表包含有关库存中保留的项目,其成本,当前库存数量,上次订购日期和上次订购的数量的信息。 项目编号是必需值。 它不得为 null。 商品名称,现有数量和订单数量具有用户提供的缺省值。 上次订购日期和订购数量允许空值。
您还需要创建第二个表。 此表包含有关库存项目的供应商,他们提供的项目以及来自该供应商的项目成本的信息。
- 创建第一个名为 INVENTORY_LIST 的表:
- 在 "输入 SQL 语句" 屏幕上,输入CREATE
TABLE并按 F4 (提示)。 显示以下屏幕 (输入区域尚未填充)。
Specify CREATE TABLE Statement Type information, press Enter. Table . . . . . . . . . INVENTORY_LIST______ Name Collection . . . . . . SAMPLECOLL__ Name, F4 for list Nulls: 1=NULL, 2=NOT NULL, 3=NOT NULL WITH DEFAULT Column FOR Column Type Length Scale Nulls ITEM_NUMBER_______ ____________ CHAR___________ 6____ __ 2 ITEM_NAME_________ ____________ VARCHAR________ 20___ __ 3 UNIT_COST_________ ____________ DECIMAL________ 8____ 2_ 3 QUANTITY_ON_HAND__ ____________ SMALLINT_______ _____ __ 1 LAST_ORDER_DATE___ ____________ DATE___________ _____ __ 1 __________________ ____________ _______________ _____ __ 3 Bottom Table CONSTRAINT . . . . . . . . . . . . . N Y=Yes, N=No Distributed Table . . . . . . . . . . . . N Y=Yes, N=No F3=Exit F4=Prompt F5=Refresh F6=Insert line F10=Copy line F11=Display more attributes F12=Cancel F14=Delete line F24=More keys
- 在 表 和 集合 提示中输入表名 INVENTORY_LIST 和模式名 SAMPLECOLL ,如下所示。
- 要为表定义的每个列都由显示的下半部分的列表中的一个条目表示。 对于每个列,输入列的名称,列的数据类型,其长度和小数位以及空属性。
- 按 F11 (显示更多属性) 以查看可以为列指定的更多属性。 这是可以指定缺省值的位置。
Specify CREATE TABLE Statement Type information, press Enter. Table . . . . . . . . . INVENTORY_LIST______ Name Collection . . . . . . SAMPLECOLL__ Name, F4 for list Data: 1=BIT, 2=SBCS, 3=MIXED, 4=CCSID Column Data Allocate CCSID CONSTRAINT Default ITEM NUMBER_______ _ _____ _____ N __________________ ITEM NAME_________ _ _____ _____ N '***UNKNOWN***'___ UNIT_COST_________ _ _____ _____ N __________________ QUANTITY_ON_HAND__ _ _____ _____ N NULL______________ LAST_ORDER_DATE___ _ _____ _____ N __________________ ORDER_QUANTITY____ _ _____ _____ N 20________________ __________________ _ _____ _____ _ __________________ Bottom Table CONSTRAINT . . . . . . . . . . . . . N Y=Yes, N=No Distributed Table . . . . . . . . . . . . N Y=Yes, N=No F3=Exit F4=Prompt F5=Refresh F6=Insert line F10=Copy line F11=Display more attributes F12=Cancel F14=Delete line F24=More keys
注: 输入列定义的另一种方法是按 F4 (提示) ,将光标放在列表中的某个列条目上。 将显示用于定义单个列的所有属性的屏幕。 - 输入所有值后,按 Enter 键以创建表。 将再次显示 "输入 SQL 语句" 屏幕,其中包含一条指示已创建表的消息。
注: 您可以在 "输入 SQL 语句" 屏幕上输入此 CREATE TABLE 语句,如下所示:CREATE TABLE SAMPLECOLL.INVENTORY_LIST (ITEM_NUMBER CHAR(6) NOT NULL, ITEM_NAME VARCHAR(20) NOT NULL WITH DEFAULT '***UNKNOWN***', UNIT_COST DECIMAL(8,2) NOT NULL WITH DEFAULT, QUANTITY_ON_HAND SMALLINT DEFAULT NULL, LAST_ORDER_DATE DATE, ORDER_QUANTITY SMALLINT DEFAULT 20)
- 在 "输入 SQL 语句" 屏幕上,输入CREATE
TABLE并按 F4 (提示)。 显示以下屏幕 (输入区域尚未填充)。
- 创建名为供应商的第二个表。 您可以使用两种方法:
- 直接在 "输入 SQL 语句" 屏幕上输入以下命令。
- 按 F4 (提示) 以使用交互式 SQL 屏幕来创建定义。
CREATE TABLE SAMPLECOLL.SUPPLIERS (SUPPLIER_NUMBER CHAR(4)NOT NULL, ITEM_NUMBER CHAR(6) NOT NULL, SUPPLIER_COST DECIMAL(8,2))