Я хотів би запитати назву всіх стовпців таблиці. Я дізнався, як це зробити в:
Але мені потрібно знати: як це можна зробити в Microsoft SQL Server (у моєму випадку 2008)?
SELECT TOP 0 * FROM my_table
менше натискань клавіш
Я хотів би запитати назву всіх стовпців таблиці. Я дізнався, як це зробити в:
Але мені потрібно знати: як це можна зробити в Microsoft SQL Server (у моєму випадку 2008)?
SELECT TOP 0 * FROM my_table
менше натискань клавіш
Відповіді:
Ви можете отримати цю інформацію та багато, багато іншого, запитуючи представлення інформаційної схеми .
Цей зразок запиту:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Customers'
Можна зробити над усіма цими об'єктами БД:
Nortwind.
...)
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'tableName';
це працює для мене
TABLE_SCHEMA = '?' AND TABLE_NAME = '?'
оскільки я перебуваю у localhost, і у мене є кілька таблиць з тим самим іменем, але в різних базах даних.
Ви можете використовувати збережену процедуру sp_column, яка б повертала інформацію, що стосується всіх стовпців для даної таблиці. Більше інформації можна знайти тут http://msdn.microsoft.com/en-us/library/ms176077.aspx
Ви також можете зробити це за допомогою SQL-запиту. Дещо на кшталт цього має допомогти:
SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('dbo.yourTableName')
Або варіацією буде:
SELECT o.Name, c.Name
FROM sys.columns c
JOIN sys.objects o ON o.object_id = c.object_id
WHERE o.type = 'U'
ORDER BY o.Name, c.Name
Це отримує всі стовпці з усіх таблиць, упорядковані за назвою таблиці, а потім за назвою стовпця.
select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'
Це краще, ніж отримувати, sys.columns
оскільки це показує DATA_TYPE
безпосередньо.
AND TABLE_SCHEMA = 'schemaName'
в WHERE
пункті.
JOIN sys.types t on c.system_type_id = t.system_type_id
та додавати t.name
у свій оператор "SELECT", щоб також отримати типи поруч із назвою кожного стовпця.
Ви можете використовувати sp_help
в SQL Server 2008.
sp_help <table_name>;
Комбінація клавіш для наведеної вище команди: виберіть ім'я таблиці (тобто виділіть її) та натисніть ALT+ F1.
Ви можете написати цей запит, щоб отримати ім'я стовпця та всі деталі, не використовуючи INFORMATION_SCHEMA в MySql:
SHOW COLUMNS FROM database_Name.table_name;
--This is another variation used to document a large database for conversion (Edited to --remove static columns)
SELECT o.Name as Table_Name
, c.Name as Field_Name
, t.Name as Data_Type
, t.length as Length_Size
, t.prec as Precision_
FROM syscolumns c
INNER JOIN sysobjects o ON o.id = c.id
LEFT JOIN systypes t on t.xtype = c.xtype
WHERE o.type = 'U'
ORDER BY o.Name, c.Name
--In the left join, c.type is replaced by c.xtype to get varchar types
SELECT column_name, data_type, character_maximum_length, table_name,ordinal_position, is_nullable
FROM information_schema.COLUMNS WHERE table_name LIKE 'YOUR_TABLE_NAME'
ORDER BY ordinal_position
Просто запустіть цю команду
EXEC sp_columns 'Your Table Name'
У цьому питальному запитанні відсутній такий підхід:
-- List down all columns of table 'Logging'
select * from sys.all_columns where object_id = OBJECT_ID('Logging')
Він перевірить, чи table
є базовим таблиці .
SELECT
T.TABLE_NAME AS 'TABLE NAME',
C.COLUMN_NAME AS 'COLUMN NAME'
FROM INFORMATION_SCHEMA.TABLES T
INNER JOIN INFORMATION_SCHEMA.COLUMNS C ON T.TABLE_NAME=C.TABLE_NAME
WHERE T.TABLE_TYPE='BASE TABLE'
AND T.TABLE_NAME LIKE 'Your Table Name'
Ви можете спробувати це. Це дає всі назви стовпців із відповідними типами даних.
desc <TABLE NAME> ;
ви можете використовувати цей запит
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME like N'%[ColumnName]%' and TABLE_NAME = N'[TableName]'
SELECT c.Name
FROM sys.columns c
JOIN sys.objects o ON o.object_id = c.object_id
WHERE o.object_id = OBJECT_ID('TABLE_NAME')
ORDER BY c.Name
Ще один варіант, який, мабуть, більш інтуїтивно зрозумілий:
SELECT [name]
FROM sys.columns
WHERE object_id = OBJECT_ID('[yourSchemaType].[yourTableName]')
Це дає вам усі назви своїх стовпців в одній колоні. Якщо ви дбаєте про інші метадані, ви можете змінити редагування ВИБІРУВАННЯ ДЛЯ SELECT *
.
Узагальнення відповідей
Я бачу багато різних відповідей і способів це зробити, але в цьому є і те, що є objective
.
Так, мета. Якщо ви хочете, щоб only know
імена стовпців ви можете використовувати
SELECT * FROM my_table WHERE 1=0
or
SELECT TOP 0 * FROM my_table
Але якщо ви хочете use
десь до цих стовпців або просто сказати manipulate
їх, то швидкі запити, наведені вище, не принесуть ніякої користі. Вам потрібно використовувати
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'Customers'
ще один спосіб знати деякі конкретні стовпці, де нам потрібні деякі подібні стовпці
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME like N'%[ColumnName]%' and TABLE_NAME = N'[TableName]'
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'name_of_your_table'
SELECT * FROM my_table WHERE 1=0