Jak wyświetlić wszystkie kolumny w tabeli dla różnych popularnych systemów baz danych?
Jak wyświetlić wszystkie kolumny w tabeli dla różnych popularnych systemów baz danych?
Odpowiedzi:
W przypadku MySQL użyj:
DESCRIBE name_of_table;
Działa to również w przypadku Oracle, o ile korzystasz z SQL * Plus lub Oracle SQL Developer.
DESCRIBE
nazwa_tabeli``;
DESCRIBE
nie jest instrukcją Oracle PLSQL, ale poleceniem SQL * Plus i jako taka nie działa w większości IDE SQL.
Dla Oracle (PL / SQL)
SELECT column_name
FROM user_tab_cols
WHERE table_name = 'myTableName'
Dla MySQL
SHOW COLUMNS FROM table_name
DESCRIBE name_of_table
.
user_tab_cols
w twoim zapytaniu?
W przypadku MS SQL Server:
select * from information_schema.columns where table_name = 'tableName'
information_schema.columns
widok systemu jest częścią ANSI SQL
standardu ( link ).
select COLUMN_NAME from information_schema.columns where table_name = 'tableName' and table_schema = 'databaseName'
(5 lat później, na cześć PostgreSQL, najbardziej zaawansowanego DDBB Królestwa)
W PostgreSQL:
\d table_name
Lub używając SQL:
select column_name, data_type, character_maximum_length
from INFORMATION_SCHEMA.COLUMNS
where table_name = 'table_name';
Wiem, że jest późno, ale używam tego polecenia dla Oracle:
select column_name,data_type,data_length from all_tab_columns where TABLE_NAME = 'xxxx' AND OWNER ='xxxxxxxxxx'
SQL Server
SELECT
c.name
FROM
sys.objects o
INNER JOIN
sys.columns c
ON
c.object_id = o.object_id
AND o.name = 'Table_Name'
lub
SELECT
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Table_Name'
Drugi sposób to standard ANSI i dlatego powinien działać na wszystkich bazach danych zgodnych z ANSI.
[
]
otoczenia, więc zapytanie nie może ich używać, tylko zwykła nazwa tabeli. Jeśli nie taki był plan PO, to przynajmniej bądź tego świadomy.
<Table Name>
uniknąłby dwuznaczności. W każdym razie, zdałem sobie sprawę, że mogłeś tak postąpić, kiedy napisałem komentarz - nie szkodzi ostrzec innych na wszelki wypadek.
Microsoft SQL Server Management Studio 2008 R2:
W edytorze zapytań, jeśli podświetlisz tekst nazwy tabeli (np. Dbo.MyTable) i naciśniesz ALT+ F1, otrzymasz listę nazw kolumn, typów, długości itp.
ALT+ F1gdy już zaznaczyłeś, dbo.MyTable
jest to odpowiednik działania EXEC sp_help 'dbo.MyTable'
zgodnie z tą witryną
Nie mogę uzyskać różnych wariantów zapytań INFORMACJE_SCHEMA.COLUMNS do działania, więc używam tego zamiast tego.
SQL Server
Aby wyświetlić listę wszystkich zdefiniowanych przez użytkownika tabel bazy danych:
use [databasename]
select name from sysobjects where type = 'u'
Aby wyświetlić wszystkie kolumny tabeli:
use [databasename]
select name from syscolumns where id=object_id('tablename')
Wystarczy niewielka korekta pozostałych w SQL Server (prefiks schematu staje się coraz ważniejszy!):
SELECT name
FROM sys.columns
WHERE [object_id] = OBJECT_ID('dbo.tablename');
Przykład:
select Table_name as [Table] , column_name as [Column] , Table_catalog as [Database], table_schema as [Schema] from information_schema.columns
where table_schema = 'dbo'
order by Table_name,COLUMN_NAME
Tylko mój kod