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ć?
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ć?
Odpowiedzi:
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.
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;
show create tablebył dokładnie tym, czego szukałem. Dzięki!
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.
information_schema. columns(używa columnstabeli zamiast tables? Ponieważ tablesnie zawiera żadnych informacji o tym, jakie typy są kolumny tabeli
używając tego:
SHOW CREATE TABLE `users`;
poda Ci DDL dla tej tabeli
DESCRIBE `users`
wyświetli listę kolumn w tej tabeli
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME ='products';
gdzie Table_schemajest nazwa bazy danych
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'my_db_name' AND TABLE_NAME ='users';
To jest zapytanie SHOW CREATE TABLE . Możesz również zapytać o TABELE SCHEMATÓW .
SHOW CREATE TABLE YourTableName;
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
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA. COLUMNS
GDZIE TABLE_SCHEMA= „bodb” AND TABLE_NAME= „abc”;
działa w celu uzyskania wszystkich nazw kolumn
W poniższym przykładzie
playgroundto nazwa bazy danych, aequipmentto 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 | |
+-------+-------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
SHOW TABLES FROM database_name