Mysql
 sql >> Baza danych >  >> RDS >> Mysql

2 sposoby na wyświetlenie listy wszystkich funkcji w MySQL

Poniżej znajdują się dwie opcje, których możemy użyć, aby zwrócić listę funkcji w MySQL.

SHOW FUNCTION STATUS Polecenie

Najszybszym sposobem na wyświetlenie listy wszystkich funkcji jest użycie SHOW FUNCTION STATUS polecenie.

Uruchom następujące polecenie, aby wyświetlić wszystkie funkcje:

SHOW FUNCTION STATUS;

Składnia wygląda tak:

SHOW FUNCTION STATUS
    [LIKE 'pattern' | WHERE expr]

Możesz więc użyć LIKE lub WHERE klauzula zawężająca wyniki.

Przykład:

SHOW FUNCTION STATUS LIKE '%test%';

Przykładowy wynik:

+----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db       | Name          | Type     | Definer        | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| PetHotel | test_function | FUNCTION | [email protected] | 2021-11-29 08:09:26 | 2021-11-29 08:09:26 | DEFINER       |         | utf8mb4              | utf8mb4_0900_ai_ci   | utf8mb4_0900_ai_ci |
+----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+

Możemy użyć WHERE klauzula, aby filtrować wyniki według kolumn. Na przykład możemy filtrować wyniki do danej bazy danych:

SHOW FUNCTION STATUS WHERE db = 'sakila';

Przykładowy wynik:

+--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db     | Name                       | Type     | Definer        | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| sakila | get_customer_balance       | FUNCTION | [email protected] | 2021-11-29 08:04:31 | 2021-11-29 08:04:31 | DEFINER       |         | utf8mb4              | utf8mb4_0900_ai_ci   | utf8mb4_0900_ai_ci |
| sakila | inventory_held_by_customer | FUNCTION | [email protected] | 2021-11-29 08:04:31 | 2021-11-29 08:04:31 | DEFINER       |         | utf8mb4              | utf8mb4_0900_ai_ci   | utf8mb4_0900_ai_ci |
| sakila | inventory_in_stock         | FUNCTION | [email protected] | 2021-11-29 08:04:31 | 2021-11-29 08:04:31 | DEFINER       |         | utf8mb4              | utf8mb4_0900_ai_ci   | utf8mb4_0900_ai_ci |
+--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+

SHOW FUNCTION STATUS polecenie działa bardzo podobnie do SHOW PROCEDURE STATUS polecenie, które zwraca listę procedur składowanych.

information_schema.routines Tabela

Innym sposobem uzyskania listy funkcji w MySQL jest zapytanie o information_schema.routines tabela.

Przykład:

SELECT 
    routine_schema as "Database",
    routine_name
FROM 
    information_schema.routines
WHERE 
    routine_type = 'FUNCTION'
ORDER BY 
    routine_schema ASC, 
    routine_name ASC;

Ta tabela przechowuje również informacje o procedurach składowanych. W powyższym przykładzie wykluczyłem je za pomocą WHERE klauzula zwracająca tylko funkcje (tj. obiekty z routine_type FUNCTION ).

Aby uwzględnić procedury składowane, możemy usunąć WHERE klauzula:

SELECT 
    routine_schema as "Database",
    routine_name,
    routine_type
FROM 
    information_schema.routines
ORDER BY 
    routine_schema ASC, 
    routine_name ASC;

W tym przypadku dodałem również routine_type kolumna, abyśmy mogli rozróżnić procedury i funkcje.

Możemy również zawęzić go do konkretnej bazy danych:

SELECT 
    routine_schema as "Database",
    routine_name,
    routine_type
FROM 
    information_schema.routines
WHERE 
    routine_schema = 'pethotel'
ORDER BY 
    routine_name ASC;

Przykładowy wynik:

+----------+---------------+--------------+
| Database | ROUTINE_NAME  | ROUTINE_TYPE |
+----------+---------------+--------------+
| PetHotel | spGetAllPets  | PROCEDURE    |
| PetHotel | spGetPetById  | PROCEDURE    |
| PetHotel | test_function | FUNCTION     |
+----------+---------------+--------------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak duża może być baza danych MySQL, zanim wydajność zacznie spadać

  2. SCHEMA() Funkcja w MySQL

  3. Jaki jest odpowiednik MySQL funkcji STUFF() w SQL Server?

  4. BAZA DANYCH MYSQL DROP

  5. LAST_DAY() Przykłady – MySQL