Что такое команда SQL для возврата имен полей таблицы?

Скажем, у меня есть таблица под названием myTable. Что такое команда SQL, чтобы вернуть все имена полей этой таблицы? Если ответ специфичен для базы данных, мне нужен SQL Server прямо сейчас, но он будет также заинтересован в решении других систем баз данных.

Ответы

Ответ 1

MySQL 3 и 4 (и 5):

desc tablename

который является псевдонимом для

show fields from tablename

SQL Server (с 2000 года) и MySQL 5:

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME = 'tablename'

Завершение ответа: как указано ниже, в SQL Server вы также можете использовать хранимую процедуру sp_help

exec sp_help 'tablename'

Ответ 2

Стандарт SQL-92 определяет INFORMATION_SCHEMA, которые соответствуют требованиям rdbms, например, MS SQL Server. Следующие работы для MS SQL Server 2000/2005/2008 и MySql 5 и выше

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'myTable'

Спецификация сервера MS SQl:

exec sp_help 'myTable'

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

Также для полноты вы можете напрямую запросить таблицы sys. Это не рекомендуется, так как схема может меняться между версиями SQL Server, а INFORMATION_SCHEMA - это слой абстракции над этими таблицами. Но здесь все равно для SQL Server 2000

select [name] from dbo.syscolumns where id = object_id(N'[dbo].[myTable]')

Ответ 3

Вы можете использовать предоставленные системные представления для этого:

например,

select * from INFORMATION_SCHEMA.COLUMNS
where table_name = '[table name]'

В качестве альтернативы вы можете использовать системный proc sp_help

например,

sp_help '[table name]'

Ответ 4

Для тех, кто ищет ответ в Oracle:

SELECT column_name FROM user_tab_columns WHERE table_name = 'TABLENAME'

Ответ 5

PostgreSQL понимает

select column_name from information_schema.columns where table_name = 'myTable'

синтаксис. Если вы работаете в оболочке psql, вы также можете использовать

\d myTable

для описания (столбцы, их типы данных и ограничения)

Ответ 6

Просто для полноты, поскольку MySQL и Postgres уже упоминались: С SQLite используйте "pragma table_info()"

sqlite> pragma table_info('table_name');
cid         name        type        notnull     dflt_value  pk        
----------  ----------  ----------  ----------  ----------  ----------
0           id          integer     99                      1         
1           name                    0                       0         

Ответ 7

Это также зависит от MySQL:

show fields from [tablename];

это не просто показывает имена таблиц, но также выводит всю информацию о полях.

Ответ 8

В Sybase SQL Anywhere данные столбцов и таблиц хранятся отдельно, поэтому вам нужно соединение:

select c.column_name from systabcol c 
       key join systab t on t.table_id=c.table_id 
       where t.table_name='tablename'

Ответ 9

Если вам просто нужны имена столбцов, то

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'tablename'

В MS SQL Server для получения дополнительной информации о таблице, например типах столбцов, используйте

sp_help 'tablename'

Ответ 10

MySQL то же самое:

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'tablename'

Ответ 11

Для IBM DB2 (дважды проверьте это в понедельник).

SELECT TABNAME,COLNAME from SYSCAT.COLUMNS where TABNAME='MYTABLE'

Ответ 12

MySQL

describe tablename