Программирование >>  Преобразование значений null 

1 ... 35 36 37 [ 38 ] 39 40 41 ... 219


Решение

Следующие решения предполагают, что требуется представить список столбцов, их типов и порядковых номеров для таблицы EMP схемы

SMEAGOL.

Делаем запрос к SYSCAT.COLUMNS:

1 select colname, typename, colno

2 from syscat.columns

3 where tabname = EMP

4 and tabschema = SMEAGOL

Oracle

Делаем запрос к ALL TAB COLUMNS:

1 select column name, data type, column id

2 from all tab columns

3 where owner = SMEAGOL

4 and table name = EMP

PostgreSQL, MySQL и SQL Server

Делаем запрос к INFORMATION SCHEMA.COLUMNS:

1 select column name, data type, ordinal position

2 from information schema.columns

3 where table schema = SMEAGOL

4 and table name = EMP

Обсуждение

Каждый производитель предоставляет средства для получения подробной информации о столбцах. В приведенных выше примерах возвращаются только имена столбцов, их типы и порядковые номера. Кроме того, можно получить полезную информацию о длине столбца, возможности сохранения в нем значения NULL и его значениях по умолчанию.

Как получить список индексированных столбцов таблицы

Задача

Требуется получить список индексов, их столбцов и позиций столбцов (если такая информация доступна) в индексе для данной таблицы.



Решение

Во всех приведенных ниже специальных решениях для разных СУБД предполагается, что составляется список индексов таблицы EMP схемы SMEAGOL.

Делаем запрос к SYSCAT.INDEXES:

1 select a.tabname, b.indname, b.colname, b.colseq

2 from syscat.indexes a,

3 syscat.indexcoluse b

3 where a.tabname = EMP

4 and a.tabschema = SMEAGOL

5 and a.indschema = b.indschema

6 and a.indname = b.indname

Oracle

Делаем запрос к SYS.ALL IND COLUMNS:

select table name, index name, column name, column position

from sys.all ind columns where table name = EMP and table owner = SMEAGOL

PostgreSQL

Делаем запрос к PG CATALOG.PG INDEXES и INFORMATION SCHEMA.COLUMNS:

1 select a.tablename,a.indexname,b.column name

2 from pg catalog.pg indexes a,

3 information schema.columns b

4 where a.schemaname = SMEAGOL

5 and a.tablename = b.table name

MySQL

Используем команду SHOW INDEX:

show index from emp

SQL Server

Делаем запрос к SYS.TABLES, SYS.INDEXES, SYS.INDEX COLUMNS и SYS.COLUMNS:

1 select a.name table name,

2 b.name index name,

3 d.name column name,

4 c.index column id

5 from sys.tables a,

6 sys.indexes b,

7 sys.index columns c,



sys.columns d

where

a.ob]ect id =

b.ob]ect id

b.ob]ect id =

c.ob]ect id

b.index id =

c.index id

c.ob]ect id =

d.ob]ect id

c.column id =

d.column id

a.name =

Обсуждение

Делая запросы к таблице, важно знать, какие из ее столбцов проиндексированы, а какие - нет. Индексы могут обеспечить хорошую производительность запросов к столбцам, которые часто используются в фильтрах и к которым осуществляется много запросов. Индексы также полезны при объединении таблиц. Зная, какие столбцы индексированы, вы предупреждаете возможные проблемы с производительностью. Кроме того, может потребоваться информация о самих индексах: их глубине вложенности, количестве уникальных ключей в них, разветвленно-сти и т. д. Подобную информацию можно получить из представлений/ таблиц, запросы к которым показаны в решениях данного рецепта.

Как получить список ограничений, наложенных на таблицу

Задача

Требуется создать список ограничений, определенных для таблицы в некоторой схеме, и столбцов, на которые эти ограничения наложены. Например, стоит задача получить ограничения и столбцы, на которые они наложены, для таблицы EMP.

Решение DB2

Делаем запрос к SYSCAT.TABCONST и SYSCAT.COLUMNS:

1 select a.tabname, a.constname, b.colname, a.type

2 from syscat.tabconst a,

3 syscat.columns b

4 where a.tabname = EMP

5 and a.tabschema = SMEAGOL

6 and a.tabname = b.tabname

7 and a.tabschema = b.tabschema

Oracle

Делаем запрос к SYS.ALL CONSTRAINTS и SYS.ALL CONS CO-LUMNS:

1 select a.table name,

2 a.constraint name,



1 ... 35 36 37 [ 38 ] 39 40 41 ... 219

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика