Як для різних популярних систем баз даних, як перелічити всі стовпці таблиці?
Як для різних популярних систем баз даних, як перелічити всі стовпці таблиці?
Відповіді:
Для MySQL використовуйте:
DESCRIBE name_of_table;
Це також працює для Oracle, поки ви використовуєте SQL * Plus або Oracle SQL Developer.
DESCRIBE
name_of_table``;
DESCRIBE
це не інструкція Oracle PLSQL, а команда SQL * Plus , і як така вона не працює в більшості SQL IDE.
Для Oracle (PL / SQL)
SELECT column_name
FROM user_tab_cols
WHERE table_name = 'myTableName'
Для MySQL
SHOW COLUMNS FROM table_name
DESCRIBE name_of_table
.
user_tab_cols
у вашому запиті?
Для MS SQL Server:
select * from information_schema.columns where table_name = 'tableName'
information_schema.columns
перегляд системи є частиною ANSI SQL
стандарту ( посилання ).
select COLUMN_NAME from information_schema.columns where table_name = 'tableName' and table_schema = 'databaseName'
(5 років пізніше, на честь PostgreSQL, найдосконалішого DDBB Королівства)
У PostgreSQL:
\d table_name
Або, використовуючи SQL:
select column_name, data_type, character_maximum_length
from INFORMATION_SCHEMA.COLUMNS
where table_name = 'table_name';
Я знаю, що пізно, але я використовую цю команду для Oracle:
select column_name,data_type,data_length from all_tab_columns where TABLE_NAME = 'xxxx' AND OWNER ='xxxxxxxxxx'
SQL Server
SELECT
c.name
FROM
sys.objects o
INNER JOIN
sys.columns c
ON
c.object_id = o.object_id
AND o.name = 'Table_Name'
або
SELECT
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Table_Name'
Другий спосіб - це стандарт ANSI, і тому він повинен працювати на всіх сумісних базах даних ANSI.
[
]
навколо нього, тому запит не повинен використовувати їх, а лише звичайну назву таблиці. Якщо це не було наміром ОП, принаймні, пам’ятайте про це.
<Table Name>
уникнув би двозначності. У всякому разі, я зрозумів, що ти, можливо, мав намір, що коли я написав коментар, це не шкодить попереджати інших про всяк випадок.
Microsoft SQL Server Management Studio 2008 R2:
У редакторі запитів, якщо ви виділите текст назви таблиці (наприклад, dbo.MyTable) та натисніть ALT+ F1, ви отримаєте список назв стовпців, типу, довжини тощо.
ALT+ F1поки ви виділили, dbo.MyTable
це еквівалент роботи EXEC sp_help 'dbo.MyTable'
за цим сайтом
Я не можу отримати варіанти запитів INFORMATION_SCHEMA.COLUMNS працювати, тому я використовую це замість цього.
SQL Server
Щоб перерахувати всі визначені користувачем таблиці бази даних:
use [databasename]
select name from sysobjects where type = 'u'
Щоб перерахувати всі стовпці таблиці:
use [databasename]
select name from syscolumns where id=object_id('tablename')
Лише невелика корекція щодо інших у SQL Server (префікс схеми стає все важливішим!):
SELECT name
FROM sys.columns
WHERE [object_id] = OBJECT_ID('dbo.tablename');
Приклад:
select Table_name as [Table] , column_name as [Column] , Table_catalog as [Database], table_schema as [Schema] from information_schema.columns
where table_schema = 'dbo'
order by Table_name,COLUMN_NAME
Просто мій код