【问题标题】:AS400 DDL SQL Syntax for Adding a new column with short and long field name用于添加具有短字段名称和长字段名称的新列的 AS400 DDL SQL 语法
【发布时间】:2015-09-08 14:57:19
【问题描述】:

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

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

【问题讨论】:

    标签: sql db2 ibm-midrange alter


    【解决方案1】:

    添加新列:

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

    【讨论】:

    • 太棒了!从现在开始,我一定会使用 LABEL ON COLUMN。
    【解决方案2】:
    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 还要求字段的唯一命名,并且在使用该字段的任何地方,名称都应该相同。虽然这是一个隐含的定义,但我认为这应该是一个重要的区别。在这种情况下,修饰符用于阐明字段的用途。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2022-01-03
      • 2017-01-15
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      相关资源
      最近更新 更多