Chciałbym zapytać o nazwę wszystkich kolumn tabeli. Znalazłem, jak to zrobić w:
Ale muszę wiedzieć: jak można to zrobić w Microsoft SQL Server (w moim przypadku 2008)?
SELECT TOP 0 * FROM my_table
jest mniej naciśnięć klawiszy
Chciałbym zapytać o nazwę wszystkich kolumn tabeli. Znalazłem, jak to zrobić w:
Ale muszę wiedzieć: jak można to zrobić w Microsoft SQL Server (w moim przypadku 2008)?
SELECT TOP 0 * FROM my_table
jest mniej naciśnięć klawiszy
Odpowiedzi:
Możesz uzyskać te informacje i wiele, wiele więcej, sprawdzając widoki schematów informacyjnych .
To przykładowe zapytanie:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Customers'
Można wykonać na wszystkich tych obiektach DB:
Nortwind.
...)
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'tableName';
to działa dla mnie
TABLE_SCHEMA = '?' AND TABLE_NAME = '?'
ponieważ jestem na localhost i mam wiele tabel o tej samej nazwie, ale w różnych bazach danych.
Możesz użyć procedury składowanej sp_columns, która zwróciłaby informacje dotyczące wszystkich kolumn dla danej tabeli. Więcej informacji można znaleźć tutaj http://msdn.microsoft.com/en-us/library/ms176077.aspx
Możesz to również zrobić za pomocą zapytania SQL. Takie rzeczy powinny pomóc:
SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('dbo.yourTableName')
Inną odmianą byłoby:
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
Spowoduje to pobranie wszystkich kolumn ze wszystkich tabel, uporządkowanych według nazwy tabeli, a następnie według nazwy kolumny.
select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'
Jest to lepsze niż uzyskiwanie, sys.columns
ponieważ pokazuje DATA_TYPE
bezpośrednio.
AND TABLE_SCHEMA = 'schemaName'
w WHERE
klauzuli.
JOIN sys.types t on c.system_type_id = t.system_type_id
i dodać t.name
w instrukcji SELECT, aby uzyskać typy obok nazwy każdej kolumny.
Możesz używać sp_help
w SQL Server 2008.
sp_help <table_name>;
Skrót klawiaturowy dla powyższego polecenia: wybierz nazwę tabeli (tzn. Podświetl ją) i naciśnij ALT+ F1.
Możesz napisać to zapytanie, aby uzyskać nazwę kolumny i wszystkie szczegóły bez użycia INFORMACJE_SCHEMA w 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
Po prostu uruchom to polecenie
EXEC sp_columns 'Your Table Name'
W tym pytaniu SO brakuje następującego podejścia:
-- List down all columns of table 'Logging'
select * from sys.all_columns where object_id = OBJECT_ID('Logging')
Sprawdzi, czy podana table
jest tabela podstawowa .
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'
Możesz wypróbować tę opcję, aby uzyskać wszystkie nazwy kolumn z odpowiadającymi im typami danych.
desc <TABLE NAME> ;
możesz użyć tego zapytania
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
Inną opcją, która jest prawdopodobnie bardziej intuicyjna, jest:
SELECT [name]
FROM sys.columns
WHERE object_id = OBJECT_ID('[yourSchemaType].[yourTableName]')
Daje to wszystkie nazwy kolumn w jednej kolumnie. Jeśli zależy Ci na innych metadanych, możesz zmienić edycję WYBIERZ OŚWIADCZENIE NA SELECT *
.
Podsumowanie odpowiedzi
Widzę wiele różnych odpowiedzi i sposobów, aby to zrobić, ale jest w tym pocierania i to jest to objective
.
Tak, cel. Jeśli chcesz only know
nazwy kolumn, których możesz użyć
SELECT * FROM my_table WHERE 1=0
or
SELECT TOP 0 * FROM my_table
Ale jeśli chcesz use
gdzieś te kolumny lub po prostu manipulate
je wypowiedzieć, powyższe szybkie zapytania nie przydadzą się. Musisz użyć
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'Customers'
jeszcze jeden sposób na poznanie niektórych konkretnych kolumn, w których potrzebujemy podobnych kolumn
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