Jak uzyskać strukturę bazy danych w MySQL za pomocą zapytania

171

Czy można jakoś uzyskać strukturę bazy danych MySQL, czy po prostu jakąś tabelę za pomocą prostego zapytania?

Czy jest inny sposób, jak mogę to zrobić?

Jakub Arnold
źródło

Odpowiedzi:

260

Myślę, że to, czego szukasz, jest DESCRIBE

DESCRIBE table;

Możesz także użyć SHOW TABLES

SHOW TABLES;

aby uzyskać listę tabel w bazie danych.

Bill the Lizard
źródło
6
Aby wskazać konkretne użycie bazy danych: SHOW TABLES FROM database_name
Tarik
109

Aby uzyskać całą strukturę bazy danych jako zestaw instrukcji CREATE TABLE , użyj mysqldump :

mysqldump database_name --compact --no-data

W przypadku pojedynczych tabel dodaj nazwę tabeli po nazwie bazy danych w mysqldump. Te same wyniki uzyskasz z SQL i SHOW CREATE TABLE :

SHOW CREATE TABLE table;

LUB OPISZ, jeśli wolisz listę kolumn:

DESCRIBE table;
Eemeli Kantola
źródło
3
show create tablebył dokładnie tym, czego szukałem. Dzięki!
Shai
to nie jest rozwiązanie, ale jestem wdzięczny, ponieważ nie wiedziałem, że ta funkcja istnieje i jest świetna!
Ari Waisberg
41

Spójrz na INFORMATION_SCHEMA. TABLESstół. Zawiera metadane dotyczące wszystkich twoich tabel.

Przykład:

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

Zaletą tej metody w porównaniu z innymi metodami jest to, że możesz łatwo używać zapytań, takich jak powyższe, jako podzapytań w innych zapytaniach.

Zenshai
źródło
6
Czy nie tak powinno być information_schema. columns(używa columnstabeli zamiast tables? Ponieważ tablesnie zawiera żadnych informacji o tym, jakie typy są kolumny tabeli
Dimitry K
Drugą zaletą jest to, że schemat informacji jest ładowany do pamięci przy starcie serwera, więc nie ma
potrzeby
tak, zdecydowanie powinny to być KOLUMY, a nie TABELE! To działa wspaniale!
Russell Fulton
32

używając tego:

SHOW CREATE TABLE `users`;

poda Ci DDL dla tej tabeli

DESCRIBE `users`

wyświetli listę kolumn w tej tabeli

duckyflip
źródło
1
soulmerge, z pewnością to oświadczenie DDL dla tego stołu
duckyflip
Tak, jest to instrukcja w DDL, ale funkcja C nie jest sama w sobie C. C jest językiem, funkcja w programie C jest konstrukcją w tym języku.
soulmerge
18
@soulmerge, ja też jestem pedantem, ale myślę, że się mylisz: „Francuskie słowo„ dziękuję ”to„ merci ”” to całkiem akceptowalne angielskie zdanie (nie mniej niż „The French WORD for” itp.) , a to uogólnia na „{{nazwa języka}} dla {{rzecz do wyrażenia}}”, na przykład „DDL dla tej tabeli”. „Funkcja AC nie jest sama w sobie C” to to samo, co stwierdzenie „Francuskie słowo nie jest samo w sobie francuskie”: no cóż, nie jest to CAŁE francuskie, ale powiedzenie, że „Au revoir” jest francuskim ”nie budzi zastrzeżeń (jak oczywiście oznacza to, że jest to CZĘŚĆ francuskiego, a nie CAŁY francuski! -).
Alex Martelli
@soulmerge. Tak, zdecydowanie powód do głosowania przeciw ... Miłej zabawy!
mate00
dzieje się tutaj dafuqq
Niton
19
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME ='products'; 

gdzie Table_schemajest nazwa bazy danych

popielaty
źródło
czy istnieje sposób wyboru schematu informacji. kolumny - tabele z określonej bazy danych?
Shan
Użyłem tego zapytania na końcuSELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'my_db_name' AND TABLE_NAME ='users';
Ahmed Numaan
8

Odmiana pierwszej odpowiedzi, która okazała się przydatna

Otwórz wiersz poleceń i wprowadź (nie musisz być zalogowany na serwerze mysql)

mysqldump -hlocalhost -u<root> -p<password>  <dbname>  --compact --no-data > </path_to_mydump/>mysql.dmp
LGG
źródło
Podoba mi się to, daje instrukcje tworzenia.
Thufir,
2

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA. COLUMNS GDZIE TABLE_SCHEMA= „bodb” AND TABLE_NAME= „abc”;

działa w celu uzyskania wszystkich nazw kolumn

Raja Nagendra Kumar
źródło
2

W poniższym przykładzie

playgroundto nazwa bazy danych, a equipmentto nazwa tabeli

Innym sposobem jest użycie SHOW-COLUMNS: 5.5 (dostępne również dla 5.5>)

$ mysql -uroot -p<password> -h<host> -P<port> -e \
    "SHOW COLUMNS FROM playground.equipment"

A wynik:

mysql: [Warning] Using a password on the command line interface can be insecure.
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| type  | varchar(50) | YES  |     | NULL    |                |
| quant | int(11)     | YES  |     | NULL    |                |
| color | varchar(25) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

Można również użyć mysqlshow-client (również dla 5.5>) jak poniżej:

$ mysqlshow -uroot -p<password> -h<host> -P<port> \
    playground equipment

A wynik:

mysqlshow: [Warning] Using a password on the command line interface can be insecure.
Database: playground  Table: equipment
+-------+-------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
| Field | Type        | Collation         | Null | Key | Default | Extra          | Privileges                      | Comment |
+-------+-------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
| id    | int(11)     |                   | NO   | PRI |         | auto_increment | select,insert,update,references |         |
| type  | varchar(50) | latin1_swedish_ci | YES  |     |         |                | select,insert,update,references |         |
| quant | int(11)     |                   | YES  |     |         |                | select,insert,update,references |         |
| color | varchar(25) | latin1_swedish_ci | YES  |     |         |                | select,insert,update,references |         |
+-------+-------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
Shudipta Sharma
źródło
0

W dzisiejszych czasach ludzie używają DESCzamiast DESCRIPTION. Na przykład:- DESC users;

Sh4dy
źródło