Saya ingin menanyakan nama semua kolom tabel. Saya menemukan cara melakukan ini di:
Tapi saya perlu tahu: bagaimana ini bisa dilakukan di Microsoft SQL Server (2008 dalam kasus saya)?
SELECT TOP 0 * FROM my_tablekurang menekan tombol
Saya ingin menanyakan nama semua kolom tabel. Saya menemukan cara melakukan ini di:
Tapi saya perlu tahu: bagaimana ini bisa dilakukan di Microsoft SQL Server (2008 dalam kasus saya)?
SELECT TOP 0 * FROM my_tablekurang menekan tombol
Jawaban:
Anda dapat memperoleh informasi ini dan banyak lagi, lebih banyak lagi dengan menanyakan tampilan Skema Informasi .
Kueri sampel ini:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Customers'
Dapat dibuat di atas semua objek DB ini:
Nortwind....)
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'tableName';ini bekerja untuk saya
TABLE_SCHEMA = '?' AND TABLE_NAME = '?'karena saya di localhost dan saya punya beberapa tabel dengan nama yang sama tetapi dalam database yang berbeda.
Anda dapat menggunakan prosedur tersimpan sp_columns yang akan mengembalikan informasi yang berkaitan dengan semua kolom untuk tabel yang diberikan. Info lebih lanjut dapat ditemukan di sini http://msdn.microsoft.com/en-us/library/ms176077.aspx
Anda juga dapat melakukannya dengan kueri SQL. Beberapa hal seperti ini akan membantu:
SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('dbo.yourTableName')
Atau variasi akan menjadi:
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
Ini mendapatkan semua kolom dari semua tabel, diurutkan berdasarkan nama tabel dan kemudian pada nama kolom.
select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'
Ini lebih baik daripada mendapatkan dari sys.columnskarena itu menunjukkan DATA_TYPEsecara langsung.
AND TABLE_SCHEMA = 'schemaName'dalam WHEREklausa.
JOIN sys.types t on c.system_type_id = t.system_type_iddan menambahkan t.namepernyataan 'SELECT' untuk mendapatkan jenis di sebelah setiap nama kolom juga.
Anda bisa menggunakan sp_helpSQL Server 2008.
sp_help <table_name>;
Pintasan keyboard untuk perintah di atas: pilih nama tabel (mis. Sorot) dan tekan ALT+ F1.
Anda dapat menulis kueri ini untuk mendapatkan nama kolom dan semua detail tanpa menggunakan INFORMATION_SCHEMA di 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
Jalankan saja perintah ini
EXEC sp_columns 'Your Table Name'
Pertanyaan SO ini tidak memiliki pendekatan berikut:
-- List down all columns of table 'Logging'
select * from sys.all_columns where object_id = OBJECT_ID('Logging')
Ini akan memeriksa apakah yang diberikan tableadalah Base 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'
Anda dapat mencoba ini. Ini memberikan semua nama kolom dengan tipe data masing-masing.
desc <TABLE NAME> ;
Anda dapat menggunakan kueri ini
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
Satu opsi lain yang bisa dibilang lebih intuitif adalah:
SELECT [name]
FROM sys.columns
WHERE object_id = OBJECT_ID('[yourSchemaType].[yourTableName]')
Ini memberi Anda semua nama kolom Anda dalam satu kolom. Jika Anda peduli dengan metadata lain, Anda dapat mengubah sunting PERNYATAAN SELECT menjadi SELECT *.
Meringkas Jawaban
Saya dapat melihat berbagai jawaban dan cara untuk melakukan ini tetapi ada intinya dalam hal ini dan itu adalah objective.
Ya, tujuannya. Jika Anda ingin only knownama kolom yang dapat Anda gunakan
SELECT * FROM my_table WHERE 1=0
or
SELECT TOP 0 * FROM my_table
Tetapi jika Anda ingin usekolom tersebut di suatu tempat atau hanya mengatakannya manipulatemaka pertanyaan cepat di atas tidak akan berguna. Anda harus menggunakan
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'Customers'
satu lagi cara untuk mengetahui beberapa kolom tertentu di mana kita membutuhkan beberapa kolom serupa
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