Cara mendapatkan struktur basis data di MySQL melalui kueri


171

Apakah mungkin untuk mendapatkan struktur database MySQL, atau hanya beberapa tabel dengan permintaan sederhana?

Atau ada cara lain, bagaimana saya bisa melakukannya?

Jawaban:


261

Saya pikir apa yang Anda cari DESCRIBE

DESCRIBE table;

Anda juga bisa menggunakan SHOW TABLES

SHOW TABLES;

untuk mendapatkan daftar tabel di database Anda.


6
Untuk menargetkan penggunaan basis data tertentu: SHOW TABLES FROM database_name
Tarik

109

Untuk mendapatkan seluruh struktur basis data sebagai kumpulan pernyataan CREATE TABLE , gunakan mysqldump :

mysqldump database_name --compact --no-data

Untuk tabel tunggal, tambahkan nama tabel setelah nama db di mysqldump. Anda mendapatkan hasil yang sama dengan SQL dan SHOW CREATE TABLE :

SHOW CREATE TABLE table;

Atau DESCRIBE jika Anda lebih suka daftar kolom:

DESCRIBE table;

3
show create tablepersis apa yang saya cari. Terima kasih!
Shai

ini bukan solusinya tetapi saya bersyukur karena saya tidak tahu fungsi ini ada dan hebat!
Ari Waisberg

41

Lihatlah INFORMATION_SCHEMA. TABLESmeja. Berisi metadata tentang semua tabel Anda.

Contoh:

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

Keuntungan dari ini dibandingkan metode lain adalah Anda dapat dengan mudah menggunakan kueri seperti yang di atas sebagai subkueri di kueri lainnya.


6
Bukankah seharusnya begitu information_schema. columns(menggunakan columnstabel alih-alih tables? Karena tablestidak berisi info tentang tipe kolom kolom mana yang merupakan informasi
Dimitry K

Keuntungan kedua adalah bahwa skema informasi dimuat dalam memori di server mulai sehingga tidak ada hdd membaca perlu
bortunac

ya, pasti harus KOLOM daripada TABEL! Itu berhasil!
Russell Fulton

32

menggunakan ini:

SHOW CREATE TABLE `users`;

akan memberi Anda DDL untuk tabel itu

DESCRIBE `users`

akan mencantumkan kolom dalam tabel itu


1
soulmerge, yakin itu adalah pernyataan DDL untuk tabel itu
duckyflip

Ya, itu adalah pernyataan dalam DDL, tetapi fungsi C tidak dengan sendirinya C. C adalah bahasa, fungsi dalam program C adalah konstruk dalam bahasa itu.
Soulmerge

18
@soulmerge, saya seorang yang suka mengayuh, tapi saya pikir Anda salah di sini: "Bahasa Prancis untuk 'terima kasih' adalah 'merci'" adalah kalimat bahasa Inggris yang cukup dapat diterima (tidak kurang dari "Kata-kata Perancis untuk", dll) , dan ini digeneralisasi ke "{{nama bahasa}} untuk {{hal untuk diungkapkan}}" "seperti" DDL untuk tabel ini ". "Fungsi AC tidak dengan sendirinya C" adalah sama dengan mengatakan "Kata Prancis bukan dengan sendirinya Prancis": yah itu bukan SEMUA bahasa Prancis tentu saja, tetapi mengatakan "'Au revoir' adalah bahasa Prancis" hampir tidak dapat ditolak (seperti yang jelas itu berarti BAGIAN DARI Perancis, bukan SEMUA DARI Perancis! -).
Alex Martelli

@soulmerge. Ya, pasti alasan untuk memilih ... Nikmati!
mate00

dafuqq terjadi di sini
Niton

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

dimana Table_schemanama database


apakah ada cara untuk memilih skema informasi. kolom - tabel dari db tertentu?
Shan

Saya menggunakan kueri ini pada akhirnyaSELECT 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

Variasi dari jawaban pertama yang saya temukan bermanfaat

Buka prompt perintah Anda dan masukkan (Anda tidak harus masuk ke server mysql Anda)

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

Saya suka ini, itu memberikan pernyataan membuat.
Thufir

2

PILIH COLUMN_NAME DARI INFORMATION_SCHEMA. COLUMNS WHERE TABLE_SCHEMA= 'bodb' AND TABLE_NAME= 'abc';

berfungsi untuk mendapatkan semua nama kolom


2

Dalam contoh berikut,

playgroundadalah nama basis data dan equipmentmerupakan nama tabel

Cara lain menggunakan SHOW-COLUMNS: 5.5 (tersedia juga untuk 5.5>)

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

Dan hasilnya:

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    |                |
+-------+-------------+------+-----+---------+----------------+

Anda juga dapat menggunakan mysqlshow-client (juga tersedia untuk 5.5>) seperti berikut:

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

Dan hasilnya:

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 |         |
+-------+-------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+

0

Saat ini, orang menggunakan DESCbukan DESCRIPTION. Sebagai contoh:- DESC users;

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.