Powiedz, że mam tabelę o nazwie myTable. Co to jest polecenie SQL, aby zwrócić wszystkie nazwy pól tej tabeli? Jeśli odpowiedź jest specyficzna dla bazy danych, potrzebuję teraz serwera SQL Server, ale byłby zainteresowany znalezieniem rozwiązania również dla innych systemów baz danych.Co to jest polecenie SQL, aby zwrócić nazwy pól tabeli?
Odpowiedz
MySQL 3 i 4 (oraz 5)
desc tablename
który alias
show fields from tablename
SQL Server (z 2000 roku) oraz MySQL 5:
select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = 'tablename'
Zakończenie odpowiedź: jak ludzie poniżej powiedzieli, w SQL Server można również użyć procedury przechowywanej sp_help
exec sp_help 'tablename'
Jeśli chcesz tylko nazwy kolumn, a następnie
select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'tablename'
W MS SQL Server, aby uzyskać więcej informacji na stole, takie jak typy kolumn, użyj
sp_help 'tablename'
SQL Standard -92 definiuje INFORMATION_SCHEMA zgodny z rdbms jak wsparcie MS SQL Server. Następujące prace dla MS SQL Server 2000/2005/2008 oraz MySQL 5 i nowsze
select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'myTable'
MS SQL Server szczególnych:
exec sp_help 'myTable'
To rozwiązanie zwraca kilka zestawów wyników w ramach którego informacje pragnienie, gdzie jako pierwszy daje ci dokładnie to, czego chcesz.
Również w celu kompletności można bezpośrednio zapytać o tabele sys. Nie jest to zalecane, ponieważ schemat może się zmieniać między wersjami SQL Server a INFORMATION_SCHEMA jest warstwą abstrakcji nad tymi tabelami. Ale tutaj jest to w każdym razie dla SQL Server 2000
select [name] from dbo.syscolumns where id = object_id(N'[dbo].[myTable]')
MySQL jest taka sama:
select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'tablename'
Można użyć dostarczonych widoki systemowe, aby to zrobić:
np
select * from INFORMATION_SCHEMA.COLUMNS
where table_name = '[table name]'
alternatywnie można użyć systemu proc sp_help
np
sp_help '[table name]'
Jest również MySQL szczegółowy:
show fields from [tablename];
to robi tylko pokazać nazwy tabel, ale także wyciąga wszystkie informacje o polach.
MySQL
describe tablename
Dla tych, którzy szukają odpowiedzi w Oracle:
SELECT column_name FROM user_tab_columns WHERE table_name = 'TABLENAME'
PostgreSQL składni rozumie się
select column_name from information_schema.columns where table_name = 'myTable'
. Jeśli pracujesz w powłoce psql, można również użyć
\d myTable
dla opisu (kolumny, i ich typy danych i ograniczenia)
Tylko dla kompletności, ponieważ MySQL i PostgreSQL zostały już wymienione: z SQLite, użyj "pragma table_info()
"
sqlite> pragma table_info('table_name');
cid name type notnull dflt_value pk
---------- ---------- ---------- ---------- ---------- ----------
0 id integer 99 1
1 name 0 0
W Sybase SQL Anywhere, kolumny i informacje tabeli są przechowywane oddzielnie, więc trzeba dołączyć:
select c.column_name from systabcol c
key join systab t on t.table_id=c.table_id
where t.table_name='tablename'
Dla IBM DB2 (będzie dokładnie sprawdzić to w poniedziałek, aby mieć pewność.)
SELECT TABNAME,COLNAME from SYSCAT.COLUMNS where TABNAME='MYTABLE'
informacje o schemacie są dostępne w SQL Server 2000 również. – Martynnw
I w Postgres, od od 8.0 (nie sprawdzano w starszych wersjach) – Mureinik
działa również: wyświetla kolumny z tablename – Amnon