Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

2 Cara Mendaftar semua Fungsi di MySQL

Di bawah ini adalah dua opsi yang dapat kita gunakan untuk mengembalikan daftar fungsi di MySQL.

The SHOW FUNCTION STATUS Perintah

Cara tercepat untuk membuat daftar semua fungsi adalah dengan menggunakan SHOW FUNCTION STATUS perintah.

Jalankan yang berikut ini untuk membuat daftar semua fungsi:

SHOW FUNCTION STATUS;

Sintaksnya seperti ini:

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

Jadi Anda dapat menggunakan LIKE atau WHERE klausa untuk mempersempit hasil.

Contoh:

SHOW FUNCTION STATUS LIKE '%test%';

Contoh hasil:

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

Kita dapat menggunakan WHERE klausa untuk memfilter hasil menurut kolom. Misalnya, kita dapat memfilter hasil ke database yang diberikan:

SHOW FUNCTION STATUS WHERE db = 'sakila';

Contoh hasil:

+--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| 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 perintah bekerja sangat mirip dengan SHOW PROCEDURE STATUS perintah, yang mengembalikan daftar prosedur tersimpan.

information_schema.routines Tabel

Cara lain untuk mendapatkan daftar fungsi di MySQL adalah dengan menanyakan information_schema.routines tabel.

Contoh:

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

Tabel ini juga menyimpan informasi tentang prosedur tersimpan. Dalam contoh di atas, saya mengecualikan mereka dengan menggunakan WHERE klausa untuk mengembalikan fungsi saja (yaitu objek dengan routine_type dari FUNCTION ).

Untuk menyertakan prosedur tersimpan, kami dapat menghapus WHERE klausa:

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

Dalam hal ini saya juga menambahkan routine_type kolom sehingga kita dapat membedakan antara prosedur dan fungsi.

Kami juga dapat mempersempitnya ke database tertentu:

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

Contoh hasil:

+----------+---------------+--------------+
| 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. Panduan Merancang Basis Data Untuk Sistem Manajemen Inventaris Di MySQL

  2. mysql PDO cara mengikat LIKE

  3. Bagaimana cara mengubah susunan database, tabel, kolom?

  4. Apakah mungkin untuk GROUP BY beberapa kolom menggunakan MySQL?

  5. Tidak dapat terhubung ke server MySQL lokal melalui soket '/var/mysql/mysql.sock' (38)