当前位置: 首页 > 面试题库 >

识别Sybasetables, fields, keys, constraints

金子平
2023-03-14
问题内容

正在尝试设置一个Sybase查询,该查询将为我提供以下输出:

Table     KeyType      KeyNumber      Column
table1    PK           1              table1_id
table1    FK           2              table2_id    
table1    FK           3              table3_id
table1    FK           4              table4_id
table1    Unique       5              table1_abc
table1    Unique       5              table1_def

换句话说,我需要每个表的PK,它具有的每个外键以及每个唯一键(不是一个键具有多个元素(例如上面的唯一键)的地方,是通过具有相同的PK来标识的。键号)。

我猜我需要使用sysobject,syscolumns,syskeys和sysconstraints,但我似乎无法弄清楚它们如何相互链接。


问题答案:

这是一个开始:

SELECT 
    t.name, 
    CASE k.type 
        WHEN 1 THEN 'PK' 
        WHEN 2 THEN 'FK'
        WHEN 3 THEN 'Common'
    END,
    c.name
FROM 
    sysobjects t INNER JOIN 
    syscolumns c ON c.id = t.id INNER JOIN
    syskeys k ON k.id = t.id AND c.colid IN (k.key1, k.key2, k.key3, k.key4, k.key5, k.key6, k.key7, k.key8)
WHERE 
    t.type = 'U' AND k.type in (1,2)

它不包含键ID,因为我想您可能会以某种方式对非空表ID和keyN列进行哈希处理以产生键的唯一ID。

它还不包括唯一索引。为此,您需要采取UNION以下措施:

SELECT 
    t.name, 
    'Unique',
    c.name
FROM 
    sysobjects t INNER JOIN 
    syscolumns c ON c.id = t.id INNER JOIN
    sysindexes i ON i.id = t.id
WHERE t.type = 'U'


 类似资料:
  • 报告字段是元素,表示数据源和报告模板之间的数据映射。 可以在报表表达式中组合字段以获取所需的输出。 报告模板可以包含零个或多个元素。 声明报告字段时,数据源应提供与报告模板中定义的所有字段对应的数据。 实地宣言 现场声明如下所示 - <field name = "FieldName" class = "java.lang.String"/> 名称属性 “field”元素的name属性是必需的。

  • 什么是 Key Key 是一种允许对 DOM 元素进行重新排序的机制,把列表中的指定数据项映射到各自对应的 DOM 元素, 换句话说,key 表示 “这个 DOM 元素属于这个数据对象的这个ID”。 通常,key 属性应该数组中的唯一标识字段,即该字段的值不应产生重复。 var users = [ {id: 1, name: "John"}, {id: 2, name: "Mary

  • 描述 (Description) 此函数将HASH的所有键作为列表返回。 密钥以随机顺序返回,但实际上,它们与值和每个密钥使用的顺序相同。 语法 (Syntax) 以下是此函数的简单语法 - keys HASH 返回值 (Return Value) 此函数返回标量上下文中的哈希中的键数和列表上下文中的键列表。 例子 (Example) 以下是显示其基本用法的示例代码 - #!/usr/bin/p

  • KEYS pattern 查找所有符合给定模式 pattern 的 key 。KEYS * 匹配数据库中所有 key 。 KEYS h?llo 匹配 hello , hallo 和 hxllo 等。 KEYS h*llo 匹配 hllo 和 heeeeello 等。 KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。 特殊符号用 \ 隔开 警告 KEYS 的速

  • 返回地图中的键列表。 语法 (Syntax) 以下是语法。 (keys hmap) Parameters - 'hmap'是散列键和值的映射。 Return Value - 返回地图中的键列表。 例子 (Example) 以下是Clojure中键的示例。 (ns clojure.examples.example (:gen-class)) (defn example [] (def

  • 返回表示键的可迭代对象。 语法 (Syntax) Map.keys 例子 (Example) void main() { var details = {'Usrname':'tom','Password':'pass@123'}; print(details.keys); } 它将产生以下output - (Usrname, Password)