Запрос SQL-сервера для получения списка столбцов в таблице вместе с типами данных NOT NULL и PRIMARY KEY, ограничениями Foreignkey на сервере SQL - PullRequest
0 голосов
/ 21 ноября 2019

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

Имя столбца |Тип данных |Длина |isnull |ПК |FK

Ответы [ 3 ]

0 голосов
/ 21 ноября 2019

Это должно делать то, что вы хотели

use [*MyDBName*]    
  Select Column_name, 
         data_type, 
         Character_maximum_length, 
         (Select Tab.Constraint_name 
          from INFORMATION_SCHEMA.TABLE_CONSTRAINTS Tab 
          left join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ColU on Tab.Constraint_name = colU.Constraint_name       
          where Tab.Table_name = Col.Table_name AND ColU.COLUMN_NAME = Col.Column_name  and Tab.CONSTRAINT_NAME like 'Pk[_]%'
         )  PK,
         (Select Tab.Constraint_name 
          from INFORMATION_SCHEMA.TABLE_CONSTRAINTS Tab 
          left join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ColU on Tab.Constraint_name = colU.Constraint_name       
          where Tab.Table_name = Col.Table_name AND ColU.COLUMN_NAME = Col.Column_name  and Tab.CONSTRAINT_NAME like 'Fk[_]%'
         )  FK
  FROM INFORMATION_SCHEMA.Columns Col
  WHERE Col.TABLE_NAME = '*MyTableName*'
0 голосов
/ 21 ноября 2019

Для столбцов конкретной таблицы

select COLUMN_NAME, DATA_TYPE, character_maximum_length, is_nullable from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'table_name'

Для всех столбцов таблиц

select COLUMN_NAME, DATA_TYPE, character_maximum_length, is_nullable from INFORMATION_SCHEMA.COLUMNS

Для ограничений

select * from INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE where table_name ='Table_name'
0 голосов
/ 21 ноября 2019

Все, что вы хотите, уже выполнено в sp_help.

Вы выполняете его, передавая ему table имя, подобное этому:

exec sp_help 'MyTable'

Если вы хотите иметь еще resultset Вы можете извлечь все queries из sp_help:

exec sp_helptext 'sp_help'

И настроить эти queries на свои нужды.

...