sql >> Databasteknik >  >> RDS >> Mysql

4 sätt att lista alla tabeller i en MySQL-databas

Nedan finns fyra sätt att lista ut tabellerna i en MySQL-databas med SQL eller kommandoraden.

SHOW TABLES Kommando

SHOW TABLES kommandot listar icke-TEMPORARY tabeller och vyer i en given databas:

SHOW TABLES;

Resultat:

+-----------------+
| Tables_in_music |
+-----------------+
| Albums          |
| Artists         |
| Genres          |
| valbumsartists  |
| valbumsgenres   |
| vallalbums      |
| vallartists     |
| vallgenres      |
+-----------------+

Det listade alla tabeller i den aktuella databasen, som kallas Music .

Vi kan också använda FULL modifierare för att returnera en andra kolumn som visar typen:

SHOW FULL TABLES;

Resultat:

+-----------------+------------+
| Tables_in_music | Table_type |
+-----------------+------------+
| Albums          | BASE TABLE |
| Artists         | BASE TABLE |
| Genres          | BASE TABLE |
| valbumsartists  | VIEW       |
| valbumsgenres   | VIEW       |
| vallalbums      | VIEW       |
| vallartists     | VIEW       |
| vallgenres      | VIEW       |
+-----------------+------------+

Vi kan se att de flesta av resultaten som listas här faktiskt är vyer.

Om vi ​​bara vill att bastabeller ska returneras kan vi använda en WHERE sats mot Table_type kolumn:

SHOW FULL TABLES
WHERE Table_type = 'BASE TABLE';

Resultat:

+-----------------+------------+
| Tables_in_music | Table_type |
+-----------------+------------+
| Albums          | BASE TABLE |
| Artists         | BASE TABLE |
| Genres          | BASE TABLE |
+-----------------+------------+

SHOW TABLES accepterar även en LIKE sats som kan användas för att begränsa resultaten till bara de tabeller som matchar ett givet mönster:

SHOW TABLES
LIKE 'a%';

Resultat:

+----------------------+
| Tables_in_music (a%) |
+----------------------+
| Albums               |
| Artists              |
+----------------------+

I det här fallet returnerade jag alla tabeller som börjar med bokstaven a .

SHOW TABLE STATUS Kommando

SHOW TABLE STATUS kommandot liknar SHOW TABLES kommando men ger mer omfattande information om var och en (icke-TEMPORARY ) tabell.

Den accepterar också en WHERE och LIKE sats, som SHOW TABLES .

Exempel:

SHOW TABLE STATUS
LIKE 'a%';

Resultat:

+---------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+
| Name    | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time | Check_time | Collation          | Checksum | Create_options | Comment |
+---------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+
| Albums  | InnoDB |      10 | Dynamic    |   20 |            819 |       16384 |               0 |        32768 |         0 |             21 | 2022-02-15 09:10:36 | NULL        | NULL       | utf8mb4_0900_ai_ci |     NULL |                |         |
| Artists | InnoDB |      10 | Dynamic    |   16 |           1024 |       16384 |               0 |            0 |         0 |             17 | 2021-11-13 12:56:02 | NULL        | NULL       | utf8mb4_0900_ai_ci |     NULL |                |         |
+---------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+

information_schema.TABLES Tabell

Vi kan också fråga information_schema.TABLES tabell:

SELECT 
    TABLE_NAME
FROM 
    information_schema.TABLES 
WHERE 
    TABLE_SCHEMA LIKE 'Music' AND TABLE_TYPE LIKE 'BASE_TABLE';

Resultat:

+------------+
| TABLE_NAME |
+------------+
| Artists    |
| Genres     |
| Albums     |
+------------+

Frågar detta utan att filtrera resultaten efter TABLE_SCHEMA returnerar tabeller från alla databaser. På liknande sätt frågar du den utan att filtrera efter TABLE_TYPE returnerar alla tabelltyper.

mysqlshow Klient

Ett annat sätt att göra det är med mysqlshow verktyg.

För att använda det här alternativet, öppna en kommandoradsprompt/terminalfönster och kör följande (ersätter music med databasen du är intresserad av):

mysqlshow music;

Resultat:

+----------------+
|     Tables     |
+----------------+
| Albums         |
| Artists        |
| Genres         |
| valbumsartists |
| valbumsgenres  |
| vallalbums     |
| vallartists    |
| vallgenres     |
+----------------+

Detta returnerar vyer och tabeller.

Utdatan visar endast namnen på de databaser, tabeller eller kolumner som du har vissa privilegier för.

Om ingen databas anges visas en lista med databasnamn. Om ingen tabell anges visas alla matchande tabeller i databasen. Om ingen kolumn anges visas alla matchande kolumner och kolumntyper i tabellen.

Om du får ett "access denied"-fel, kan du behöva använda sudo , och ange ditt lösenord vid prompten:

sudo mysqlshow music;

Det här verktyget accepterar en hel del alternativ, såsom --user (så att du kan skicka användarnamnet), --password (så att du kan skicka lösenordet), --host för den värd som MySQL-servern finns på osv.

Se MySQL:s dokumentation för en fullständig lista över alternativ.


  1. Hur väljer och optimerar man orakelindex?

  2. Ändra avgränsaren till ett kommatecken när du skickar frågeresultat via e-post i SQL Server (T-SQL)

  3. Hur man ersätter en Intermediate MySQL eller MariaDB Master med en Binlog Server med MaxScale

  4. Hur man skapar en databas från en mall i Access 2016