MySQL Fungsi: String, Numerik, Buatan Pengguna, Tersimpan
Apa saja fungsinya?
MySQL dapat melakukan lebih dari sekedar menyimpan dan mengambil data. Kita juga bisa melakukan manipulasi pada data sebelum mengambil atau menyimpannya. Di situlah MySQL Fungsi hadir. Fungsi hanyalah potongan kode yang melakukan beberapa operasi dan kemudian mengembalikan hasil. Beberapa fungsi menerima parameter sementara fungsi lainnya tidak menerima parameter.
Mari kita lihat secara singkat contohnya MySQL fungsi. Secara default, MySQL menyimpan tipe data tanggal dalam format “YYYY-MM-DD”. Misalkan kita telah membangun sebuah aplikasi dan pengguna kita ingin tanggal dikembalikan dalam format “DD-MM-YYYY”, kita dapat menggunakan MySQL fungsi bawaan DATE_FORMAT untuk mencapai ini. DATE_FORMAT adalah salah satu fungsi yang paling banyak digunakan MySQLKita akan membahasnya lebih rinci saat kita membuka pelajaran ini.
Mengapa menggunakan fungsi?
Berdasarkan contoh yang diberikan di bagian pendahuluan, orang yang berpengalaman dalam pemrograman komputer mungkin berpikir “Mengapa repot-repot MySQL Fungsi? Efek yang sama dapat dicapai dengan skrip/bahasa pemrograman?” Memang benar kita bisa mencapai hal itu dengan menulis beberapa prosedur/fungsi dalam program aplikasi.
Kembali ke contoh DATE di pendahuluan, agar pengguna kami dapat memperoleh data dalam format yang diinginkan, lapisan bisnis harus melakukan pemrosesan yang diperlukan.
Hal ini menjadi masalah ketika aplikasi harus berintegrasi dengan sistem lain. Saat kita menggunakan MySQL fungsi seperti DATE_FORMAT, maka kita dapat memasukkan fungsi tersebut ke dalam database dan aplikasi apa pun yang membutuhkan data akan mendapatkannya dalam format yang diperlukan. Ini mengurangi pengerjaan ulang dalam logika bisnis dan mengurangi inkonsistensi data.
Alasan lain mengapa kita harus mempertimbangkan untuk menggunakan MySQL fungsinya adalah dapat membantu mengurangi lalu lintas jaringan pada aplikasi klien/server. Lapisan Bisnis hanya perlu melakukan panggilan ke fungsi yang disimpan tanpa perlu memanipulasi data. Rata-rata, penggunaan fungsi dapat sangat membantu meningkatkan kinerja sistem secara keseluruhan.
Jenis fungsi
Fungsi bawaan
MySQL hadir dibundel dengan sejumlah fungsi bawaan. Fungsi bawaan hanyalah fungsi yang sudah diimplementasikan di MySQL server. Fungsi-fungsi ini memungkinkan kita untuk melakukan berbagai jenis manipulasi pada data. Fungsi-fungsi bawaan pada dasarnya dapat dikategorikan ke dalam kategori-kategori berikut yang paling sering digunakan.
- Fungsi string – beroperasi pada tipe data string
- Fungsi numerik – beroperasi pada tipe data numerik
- Fungsi tanggal – beroperasi pada tipe data tanggal
- Fungsi agregat – beroperasi pada semua tipe data di atas dan menghasilkan kumpulan hasil yang diringkas.
- Fungsi lainnya - MySQL juga mendukung jenis fungsi bawaan lainnya tetapi kami akan membatasi pelajaran kami hanya pada fungsi yang disebutkan di atas saja.
Sekarang mari kita lihat masing-masing fungsi yang disebutkan di atas secara mendetail. Kami akan menjelaskan fungsi yang paling sering digunakan menggunakan "Myflixdb" kami.
Fungsi string
Kita sudah melihat apa fungsi string. Kita akan melihat contoh praktis yang menggunakannya. Di tabel film kami, judul film disimpan menggunakan kombinasi huruf kecil dan besar. Misalkan kita ingin mendapatkan daftar kueri yang mengembalikan judul film dalam huruf besar. Kita dapat menggunakan fungsi “UCASE” untuk melakukan itu. Dibutuhkan string sebagai parameter dan mengubah semua huruf menjadi huruf besar. Skrip yang ditunjukkan di bawah ini menunjukkan penggunaan fungsi “UCASE”.
SELECT `movie_id`,`title`, UCASE(`title`) FROM `movies`;
SINI
- UCASE(`title`) adalah fungsi bawaan yang mengambil judul sebagai parameter dan mengembalikannya dalam huruf besar dengan nama alias `upper_case_title`.
Menjalankan skrip di atas dalam MySQL workbench terhadap Myflixdb memberi kita hasil seperti yang ditunjukkan di bawah ini.
movie_id | title | UCASE('title') |
---|---|---|
16 | 67% Guilty | 67% GUILTY |
6 | Angels and Demons | ANGELS AND DEMONS |
4 | Code Name Black | CODE NAME BLACK |
5 | Daddy's Little Girls | DADDY'S LITTLE GIRLS |
7 | Davinci Code | DAVINCI CODE |
2 | Forgetting Sarah Marshal | FORGETTING SARAH MARSHAL |
9 | Honey mooners | HONEY MOONERS |
19 | movie 3 | MOVIE 3 |
1 | Pirates of the Caribean 4 | PIRATES OF THE CARIBEAN 4 |
18 | sample movie | SAMPLE MOVIE |
17 | The Great Dictator | THE GREAT DICTATOR |
3 | X-Men | X-MEN |
MySQL mendukung sejumlah fungsi string. Untuk daftar lengkap semua fungsi string bawaan, lihat tautan ini http://dev.mysql.com/doc/refman/5.0/en/string-functions.html on MySQL website.
Fungsi numerik
Seperti yang disebutkan sebelumnya, fungsi-fungsi ini beroperasi pada tipe data numerik. Kita dapat melakukan perhitungan matematika pada data numerik dalam pernyataan SQL.
Operator aritmatika
MySQL mendukung operator aritmatika berikut yang dapat digunakan untuk melakukan perhitungan dalam pernyataan SQL.
Nama | Uraian Teknis |
---|---|
DIV | Divisi integer |
/ | Divisi |
- | Pengurangan |
+ | Tambahan |
* | Perkalian |
% atau MOD | Modulus |
Sekarang mari kita lihat contoh dari masing-masing operator di atas
Divisi Integer (DIV)
SELECT 23 DIV 6 ;
Menjalankan skrip di atas akan memberi kita hasil sebagai berikut.
3
Operator pembagian (/)
Sekarang mari kita lihat contoh operator pembagian. Kita akan memodifikasi contoh DIV.
SELECT 23 / 6 ;
Menjalankan skrip di atas akan memberi kita hasil sebagai berikut.
3.8333
Operator pengurangan (-)
Sekarang mari kita lihat contoh operator pengurangan. Kami akan menggunakan nilai yang sama seperti pada dua contoh sebelumnya
SELECT 23 - 6 ;
Mengeksekusi skrip di atas memberi kita 17
Operator penjumlahan (+)
Sekarang mari kita lihat contoh operator penjumlahan. Kita akan memodifikasi contoh sebelumnya.
SELECT 23 + 6 ;
Mengeksekusi skrip di atas memberi kita 29
Operator perkalian (*)
Sekarang mari kita lihat contoh operator perkalian. Kita akan menggunakan nilai yang sama seperti pada contoh sebelumnya.
SELECT 23 * 6 AS `multiplication_result`;
Menjalankan skrip di atas akan memberi kita hasil sebagai berikut.
hasil_perkalian |
---|
138 |
Operator modulo (-)
Operator modulo membagi N dengan M dan memberikan kita sisanya. Sekarang mari kita lihat contoh operator modulo. Kita akan menggunakan nilai yang sama seperti pada contoh sebelumnya.
SELECT 23 % 6 ;
OR
SELECT 23 MOD 6 ;
Mengeksekusi skrip di atas memberi kita 5
Sekarang mari kita lihat beberapa fungsi numerik yang umum MySQL.
Lantai – fungsi ini menghilangkan tempat desimal dari suatu angka dan membulatkannya ke angka terendah terdekat. Skrip yang ditunjukkan di bawah ini menunjukkan penggunaannya.
SELECT FLOOR(23 / 6) AS `floor_result`;
Menjalankan skrip di atas akan memberi kita hasil sebagai berikut.
Lantai_hasil |
---|
3 |
bulat – fungsi ini membulatkan angka dengan tempat desimal ke angka bulat terdekat. Skrip yang ditunjukkan di bawah ini menunjukkan penggunaannya.
SELECT ROUND(23 / 6) AS `round_result`;
Menjalankan skrip di atas akan memberi kita hasil sebagai berikut.
Hasil_bulat |
---|
4 |
Pinggir – fungsi ini digunakan untuk menghasilkan angka acak, nilainya berubah setiap kali fungsi tersebut dipanggil. Skrip yang ditunjukkan di bawah ini menunjukkan penggunaannya.
SELECT RAND() AS `random_result`;
Fungsi tersimpan
Fungsi tersimpan sama seperti fungsi bawaan, hanya saja Anda harus mendefinisikan sendiri fungsi tersimpan tersebut. Setelah fungsi tersimpan dibuat, fungsi tersebut dapat digunakan dalam pernyataan SQL sama seperti fungsi lainnya. Sintaks dasar untuk membuat fungsi tersimpan adalah seperti yang ditunjukkan di bawah ini
CREATE FUNCTION sf_name ([parameter(s)]) RETURNS data type DETERMINISTIC STATEMENTS
SINI
- “BUAT FUNGSI sf_name ([parameter)]) “ adalah wajib dan memberitahu MySQL server untuk membuat fungsi bernama `sf_name' dengan parameter opsional yang ditentukan dalam tanda kurung.
- “Tipe data KEMBALI” bersifat wajib dan menentukan tipe data yang harus dikembalikan oleh fungsi tersebut.
- “DETERMINISTIK” berarti fungsi tersebut akan mengembalikan nilai yang sama jika argumen yang sama diberikan padanya.
- “PERNYATAAN” adalah kode prosedural yang dijalankan fungsi.
Sekarang mari kita lihat contoh praktis yang mengimplementasikan fungsi bawaan. Misalkan kita ingin mengetahui film sewaan mana yang sudah lewat tanggal pengembalian. Kita dapat membuat fungsi tersimpan yang menerima tanggal pengembalian sebagai parameter dan kemudian membandingkannya dengan tanggal saat ini di MySQL server. Jika tanggal saat ini kurang dari tanggal pemutaran film, maka kami mengembalikan "Tidak" jika tidak, kami mengembalikan "Ya". Skrip yang ditunjukkan di bawah ini membantu kami mencapai hal itu.
DELIMITER | CREATE FUNCTION sf_past_movie_return_date (return_date DATE) RETURNS VARCHAR(3) DETERMINISTIC BEGIN DECLARE sf_value VARCHAR(3); IF curdate() > return_date THEN SET sf_value = 'Yes'; ELSEIF curdate() <= return_date THEN SET sf_value = 'No'; END IF; RETURN sf_value; END|
Menjalankan skrip di atas akan membuat fungsi tersimpan `sf_past_movie_return_date`.
Sekarang mari kita uji fungsi tersimpan kita.
SELECT `movie_id`,`membership_number`,`return_date`,CURDATE() ,sf_past_movie_return_date(`return_date`) FROM `movierentals`;
Menjalankan skrip di atas dalam MySQL workbench terhadap myflixdb memberi kita hasil berikut.
movie_id | membership_number | return_date | CURDATE() | sf_past_movie_return_date('return_date') |
---|---|---|---|---|
1 | 1 | NULL | 04-08-2012 | NULL |
2 | 1 | 25-06-2012 | 04-08-2012 | yes |
2 | 3 | 25-06-2012 | 04-08-2012 | yes |
2 | 2 | 25-06-2012 | 04-08-2012 | yes |
3 | 3 | NULL | 04-08-2012 | NULL |
Fungsi yang ditentukan pengguna
MySQL juga mendukung fungsi yang ditentukan pengguna yang diperluas MySQL. Fungsi yang ditentukan pengguna adalah fungsi yang dapat Anda buat menggunakan bahasa pemrograman seperti C, C++ dll. lalu menambahkannya ke MySQL server. Setelah ditambahkan, fungsi tersebut dapat digunakan sama seperti fungsi lainnya.
Ringkasan
- Fungsi memungkinkan kita untuk meningkatkan kemampuan MySQL.
- Fungsi selalu mengembalikan nilai dan secara opsional dapat menerima parameter.
- Fungsi bawaan adalah fungsi yang dikirimkan bersama MySQLMereka dapat dikategorikan menurut tipe data yang dioperasikannya, yaitu string, tanggal, dan fungsi bawaan numerik.
- Fungsi tersimpan dibuat oleh pengguna di dalamnya MySQL server dan dapat digunakan dalam pernyataan SQL.
- Fungsi yang ditentukan pengguna dibuat di luar MySQL dan dapat dimasukkan ke dalamnya MySQL Server.