AS400 DDL SQL 添加具有短字段名和长字段名的新列的语法

AS400 DDL SQL Syntax for Adding a new column with short and long field name

AS400 SQL DDL 向现有 table 添加列的语法是什么?我还需要指定长字段名和短字段名。

(SQL - 结构化查询语言) (DDL - 数据定义语言:这是SQL改变table的结构或者可以修改数据库的设置)

ALTER TABLE Student ADD StaffId_Advisor FOR COLUMN Advisor VARCHAR(21)

您不会在 sysibm.SQLColumns 中看到名为 STAFF00001 的字段,而是会看到 Advisor。

这是我用来描述 tables 的一些代码:

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 的 table。在这个 table 中,我有一个名为 StaffId 的主键。教职员 table 包含教授、助理、秘书、兼职教员、学生顾问、保安人员等...一个学生可能有多个字段与教职员 table 有外键约束。为了避免混淆(并在我看来遵守 1NF),我使用主键 table 的字段名称后跟字段的用途来命名字段。这可确保其他开发人员了解此字段的用法。除了单一用途值之外,我认为 1NF 还需要字段的唯一命名,并且在使用该字段的任何地方名称都应该相同。虽然这是一个隐含的定义,但我认为它应该是一个重要的区别。在这种情况下,修饰符用于阐明字段的用途。

添加新列:

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关键字区分