欢迎投稿

今日深度:

teradata 查看 表定义_teradata建表DDL,FALLBACK是T

teradata 查看 表定义_teradata建表DDL,FALLBACK是T


●是否允许重复记录

❍SET 不允许记录重复

CREATE SET TABLE table1 ...

❍MULTISET 允许记录重复

CREATE MULTISET TABLE table1 ...

●数据保护

数据保护要结合FALLBACK和JOURNAL (流水或日志)。

FALLBACK是Teradata的一种数据保护机制,数据表的每一条记录都同时存放两份,而且位于不同的AMP所控制的存储单元中;当数据发生问题或者AMP失败 时,可以利用存放在其他AMP上的数据保证对数据表的访问。

-FALLBACK 使用FALLBACK保护机制

-NO FALLBACK 不使用FALLBACK保护机制

日志有BEFORE和AFTER两种,分别保存了一条记录变化前后的状态。当系统出错时,可以利用日志进行恢复。

存储空间选项

DATABLOCKSIZE用来指定数据块大小,最小的数据块为6144字节,最大的数据块是32256字节。

FREESPACE用来定义在每个磁盘柱面上保留的空间(0-75%)。

例:

CREATE MULTISET TABLE table_1

, FALLBACK, NO JOURNAL

, FREESPACE = 10 PERCENT

, DATABLOCKSIZE = 16384 BYTES

(field1 INTEGER);

字段数据类型属性。可定义如下属性:

DEFAULT 当字段无数据时用默认值来替代NULL

WITH DEFAULT 用字段的系统默认值替换NULL

FORMAT 缺省的显示格式

TITLE 缺省的列标题

NOT NULL 不允许空值

CASESPECIFIC 字母大小写敏感

UPPERCASE 字母大小写不敏感,内部用大写字母存储

例:

CREATE TABLE emp_data

(employee_number INTEGER NOT NULL

,last_name CHAR(20) NOT NULL WITH DEFAULT

,street_address VARCHAR (30) TITLE ''Address'

,city CHAR (15) DEFAULT ''Boise'

,state CHAR (2) WITH DEFAULT

,birthdate DATE FORMAT''mm/dd/yyyy'

,salary_amount DEC(10,2)

,sex CHAR (1) UPPERCASE

);

数据存储属性。包括下面各项:

COMPRESS 压缩值为NULL的字段存储空间为0

COMPRESS NULL 同上

COMPRESS 压缩值为NULL和指定值的字段存储空间为0

例:

CREATE TABLE emp_data (employee_number INTEGER

,department_number INTEGER COMPRESS

CREATE TABLE bank_account_data (customer_id INTEGER

,account_type CHAR(10) COMPRESS ''SAVINGS'

Ÿ 字段约束定义。Teradata 支持字段级约束,即限制字段的值满足某些条件,如某个字段取值是否唯一、是否为主键或外键等。对字段的约束总结如下:

CONSTRAINT name 约束名称--可选

PRIMARY KEY 非空,无重复值

UNIQUE 无重复值

CHECK 指定合法值的范围

REFERENCES 与其他字段的相关性(外键)

例:

CREATE TABLE employee_badge (emp_id INTEGER NOT NULL

CONSTRAINT primary_1 PRIMARY KEY

,id_badge_number INTEGER

CONSTRAINT unique_1 UNIQUE

,salary INTEGER

CONSTRAINT check_1 CHECK (salary>0)

,job_code INTEGER

CONSTRAINT ref_1 REFERENCES job (job_code)

);

如在上面的例子中,最后一项定义了在EMPLOYEE_BADGE表中的

JOB_CODE必须和JOB表中的JOB_CODE对应,即前一个表中该字段的值必须在第二个表中有对应的项。这实际上是一种所谓的参照完整性。另外要注意的是,具有主键(Primary Key)约束的字段一定要定义为非空(NOT NULL)。

11.² 删除表

可以使用DROP TABLE语句删除表,该语句将删除表中的所有数据和在数据字典中的表结构定义。

例:

删除前面例子中创建的雇员数据表。

DROP TABLE emp_data;

删除了表emp_data中的所有数据,并删除了emp_data在数据字典中的定义。如果希望在使用这个表,必须重新创建。

例:

DELETE FROM emp_data;

DELETE emp_data;

删除了表emp_data中的所有数据。表定义仍然存在,可以增加数据。

11.3修改表

当一个表已经创建后,可以使用ALTER TABLE语句来修改其定义。表定义的一些属性是不可修改的(如PI),如果要改变这些属性,常用方法是建立一个满足新属性的新表,然后使用Insert-Select语句把数据从原来的表转移到新表,然后再修 改新表的名称。

ALTER TABLE完整的语法可参见Teradata SQL手册,这里通过几个例子来加以说明。

例:增加或删除字段

ALTER TABLE emp_data

ADD educ_level CHAR(1), ADD insure_type SMALLINT;

ALTER TABLE emp_data

DROP educ_level, DROP insure_type;

例:修改已有字段的属性

ALTER TABLE emp_data

ADD birthdate FORMAT 'mmmBdd,Byyyy'';

例:对没有FALLBACK的表建立FALLBACK保护

ALTER TABLE emp_data, FALLBACK;

例:同时修改表的多个属性

ALTER TABLE emp_data

, NO FALLBACK

DROP insure_type

, ADD educ_level CHAR(1);

例:修改约束定义

增加约束

ALTER TABLE emp_data ADD CONSTRAINT

CHECK (sex = 'F' OR sex = 'M');

修改约束:

ALTER TABLE emp_data

MODIFY CONSTRAINT sal_range

CHECK ( salary_amount > 0 AND salary_amount < 1000000);

注意:表中已有数据如果不符合新的约束条件,约束的增加或修改不能成

功。

删除约束:

ALTER TABLE emp_data

DROP CONSTRAINT sal_range;

www.htsjk.Com true http://www.htsjk.com/teradata/45710.html NewsArticle teradata 查看 表定义_teradata建表DDL,FALLBACK是T ●是否允许重复记录 ❍SET 不允许记录重复 CREATE SET TABLE table1 ... ❍MULTISET 允许记录重复 CREATE MULTISET TABLE table1 ... ●数据保护 数据保护要结...
评论暂时关闭