2009-05-22 40 views

risposta

177

Penso che quello che stai dopo è DESCRIBE

DESCRIBE table; 

È inoltre possibile utilizzare SHOW TABLES

SHOW TABLES; 

per ottenere un elenco delle tabelle nel database.

+3

Per utilizzare il database specifico: 'SHOW TABLES FROM database_name' – Tarik

25

utilizza questo:

SHOW CREATE TABLE `users`; 

vi darà la DDL di quel tavolo

DESCRIBE `users` 

elencherà le colonne nella tabella che

+0

-1 DDL è un linguaggio, mentre quello che si ottiene con SHOW CREATE TABLE è un soulmerge dichiarazione – soulmerge

+0

, sicuro che sia una dichiarazione DDL per quella tabella – duckyflip

+0

Sì, è una dichiarazione in un DDL, ma un La funzione C non è di per sé C. C è un linguaggio, una funzione in un programma C è un costrutto all'interno di quel linguaggio. – soulmerge

32

Date un'occhiata al INFORMATION_SCHEMA. TABLES tabella. Contiene metadati relativi a tutti i tuoi tavoli.

Esempio:

SELECT * FROM `INFORMATION_SCHEMA`.`TABLES` 
WHERE TABLE_NAME LIKE 'table1' 

Il vantaggio di questo rispetto ad altri metodi è che si può facilmente utilizzare le query come quella di cui sopra come subquery nelle vostre altre query.

+1

Non è che dovrebbe essere' information_schema' .columns' (usando la tabella 'columns' invece di' tables'? Perché 'tables' non contiene alcun informazioni su quali tipi sono le colonne della tabella –

+0

Il secondo vantaggio è che lo schema delle informazioni è caricato in memoria all'avvio del server, quindi nessuna lettura dell'hardware necesario – bortunac

82

per ottenere l'intera struttura del database come un insieme di CREATE TABLE dichiarazioni, utilizzare mysqldump:

mysqldump database_name --compact --no-data 

Per le tabelle singoli, aggiungere il nome della tabella dopo il nome db in mysqldump. È possibile ottenere gli stessi risultati con SQL e SHOW CREATE TABLE:

SHOW CREATE TABLE table; 

O DESCRIBE, se si preferisce un elenco di colonna:

DESCRIBE table; 
+2

'show create table' era esattamente quello che stavo cercando.Grazie! – Shai

+0

questa non è la soluzione ma sono grato perché non sapevo che questa funzione esiste ed è fantastica! – AriWais

7

Una variante della prima risposta che ho trovato utile

Aprire il comando prompt e invio (non è necessario accedere al server mysql)

mysqldump -hlocalhost -u<root> -p<password> <dbname> --compact --no-data > </path_to_mydump/>mysql.dmp 
+0

Mi piace, dà le dichiarazioni create. – Thufir

14
SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME ='products'; 

dove Table_schema è il nome del database

+1

Anche se questo è stato utile .Non so perché qualcuno non lo gradisce. – tulio84z

+0

c'è un modo selezionare lo schema di informazioni colonne - tabelle da particolare db? – Shan

1

SELEZIONA COLUMN_NAME DA INFORMATION_SCHEMA.COLUMNS DOVE TABLE_SCHEMA = 'bodb' E TABLE_NAME = 'abc';

lavori per ottenere tutti i nomi di colonna

0

Al giorno d'oggi, le persone utilizzano DESC invece di DESCRIPTION. Ad esempio: - DESC users;

Problemi correlati