Что такое команда 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