Bir tablonun tüm sütunlarının adını sorgulamak istiyorum. Bunu nasıl yapacağımı buldum:
Ama bilmem gerekenler : Bu Microsoft SQL Server'da (benim durumumda 2008) nasıl yapılabilir ?
SELECT TOP 0 * FROM my_table
için daha az tuş vuruşu var
Bir tablonun tüm sütunlarının adını sorgulamak istiyorum. Bunu nasıl yapacağımı buldum:
Ama bilmem gerekenler : Bu Microsoft SQL Server'da (benim durumumda 2008) nasıl yapılabilir ?
SELECT TOP 0 * FROM my_table
için daha az tuş vuruşu var
Yanıtlar:
Bilgi Şeması görünümlerini sorgulayarak bu bilgileri ve çok daha fazlasını elde edebilirsiniz .
Bu örnek sorgu:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Customers'
Tüm bu DB nesneleri üzerinden yapılabilir:
Nortwind.
...)
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'tableName';
bu benim için çalışıyor
TABLE_SCHEMA = '?' AND TABLE_NAME = '?'
Localhost üzerinde olduğum ve aynı adlı ama farklı veritabanlarında birden fazla tablo var kullanmak zorunda kaldı .
Belirli bir tablo için tüm sütunlarla ilgili bilgileri döndüren saklı yordam sp_columns kullanabilirsiniz. Daha fazla bilgiyi burada bulabilirsiniz http://msdn.microsoft.com/en-us/library/ms176077.aspx
Bunu bir SQL sorgusu ile de yapabilirsiniz. Bunun gibi bir şey yardımcı olacaktır:
SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('dbo.yourTableName')
Veya bir varyasyon şöyle olur:
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
Bu, tüm sütunlardan tablo adına ve daha sonra sütun adına göre sıralanan tüm sütunları alır.
select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'
Bu, doğrudan sys.columns
gösterdiği için almaktan daha iyidir DATA_TYPE
.
AND TABLE_SCHEMA = 'schemaName'
ise WHERE
yan tümce ekleyin .
JOIN sys.types t on c.system_type_id = t.system_type_id
ve ekleyebilirsiniz . t.name
sp_help
SQL Server 2008'de kullanabilirsiniz .
sp_help <table_name>;
Yukarıdaki komut için klavye kısayolu: tablo adını seçin (yani vurgulayın) ve ALT+ düğmesine basın F1.
MySql'de BİLGİ_SCHEMA kullanmadan sütun adını ve tüm ayrıntıları almak için bu sorguyu yazabilirsiniz:
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
Bu SO sorusunda aşağıdaki yaklaşım eksik:
-- List down all columns of table 'Logging'
select * from sys.all_columns where object_id = OBJECT_ID('Logging')
Bu verilen olup olmadığını kontrol edecek table
olan Baz Tablo .
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'
Bu, tüm sütun adlarını ilgili veri türleriyle verir.
desc <TABLE NAME> ;
bu sorguyu kullanabilirsiniz
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
Tartışmasız daha sezgisel olan bir diğer seçenek:
SELECT [name]
FROM sys.columns
WHERE object_id = OBJECT_ID('[yourSchemaType].[yourTableName]')
Bu, tüm sütun adlarınızı tek bir sütunda verir. Diğer meta verileri önemsiyorsanız, SELECT STATEMENT TO ifadesini değiştirebilirsiniz SELECT *
.
Yanıtları Özetleme
Bunu yapmanın birçok farklı cevabı ve yolunu görebiliyorum ama içinde bir sürtünme var ve bu objective
.
Evet, amaç. Eğer isterseniz only know
sütun adları kullanabilirsiniz
SELECT * FROM my_table WHERE 1=0
or
SELECT TOP 0 * FROM my_table
Ancak use
bu sütunları bir yere koymak veya basitçe söylemek isterseniz, manipulate
yukarıdaki hızlı sorgular herhangi bir işe yaramayacaktır. Kullanmalısın
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'Customers'
benzer sütunlara ihtiyacımız olan belirli sütunları tanımanın bir yolu daha
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