【发布时间】:2015-09-08 14:57:19
【问题描述】:
AS400 SQL DDL 向现有表添加列的语法是什么?我还需要指定长字段名和短字段名。
(SQL - 结构化查询语言) (DDL - 数据定义语言:这是改变表结构或可以修改数据库设置的 SQL)
【问题讨论】:
标签: sql db2 ibm-midrange alter
AS400 SQL DDL 向现有表添加列的语法是什么?我还需要指定长字段名和短字段名。
(SQL - 结构化查询语言) (DDL - 数据定义语言:这是改变表结构或可以修改数据库设置的 SQL)
【问题讨论】:
标签: sql db2 ibm-midrange alter
添加新列:
ALTER TABLE mytable
ADD long_column_name FOR COLUMN shortname VARCHAR(21)
BEFORE existing_column_name;
如果要在记录末尾添加列,则可以省略 BEFORE 子句。
大多数 IBM i 商店还希望定义列文本描述和列标题。
LABEL ON COLUMN mytable.colname TEXT IS '50 char description goes here';
LABEL ON COLUMN mytable.colname IS 'Heading Line 1 Heading Line 2 Heading Line 3';
列标题字符串最多由 3 个部分组成,每个部分 20 个字符,允许标题最多显示 3 行高。
定义列文本描述的语句使用TEXT关键字来区分。
【讨论】:
ALTER TABLE Student ADD StaffId_Advisor FOR COLUMN Advisor VARCHAR(21)
您将看到 Advisor,而不是在 sysibm.SQLColumns 中看到名为 STAFF00001 的字段。
这是我用来描述表格的一些代码:
SELECT table_name, system_column_name, column_text, Type_Name, column_Size
FROM sysibm.SQLColumns
WHERE table_schem IN ('UWSP_TEST', 'UWSP_PROD') -- Library Name
AND upper(table_name) like 'STUDENT' -- Table name make sure it is upper case
--order by system_column_name
关于我使用的字段命名约定:StaffId_Advisor 假设我有一张名为 Staff 的桌子。在此表中,我有一个名为 StaffId 的主键。 Staff 表包含教授、助理、秘书、兼职教员、学生顾问、保安人员等...一个学生可能有多个字段,其中包含 Staff 表的外键约束。为了避免混淆(并在我看来遵守 1NF),我使用主键表的字段名称来命名字段,然后是字段的用途。这可确保其他开发人员了解该字段的使用。除了单一用途的值之外,我认为 1NF 还要求字段的唯一命名,并且在使用该字段的任何地方,名称都应该相同。虽然这是一个隐含的定义,但我认为这应该是一个重要的区别。在这种情况下,修饰符用于阐明字段的用途。
【讨论】: