Apa itu fungsi?
MySQL boleh melakukan lebih daripada sekadar menyimpan dan mengambil data . Kami juga dapat melakukan manipulasi pada data sebelum mengambil atau menyimpannya. Di situlah fungsi MySQL masuk. Fungsi hanyalah sekeping kod yang melakukan beberapa operasi dan kemudian mengembalikan hasilnya. Beberapa fungsi menerima parameter sementara fungsi lain tidak menerima parameter.
Mari kita lihat secara ringkas contoh fungsi MySQL. Secara lalai, MySQL menyimpan jenis data tarikh dalam format "YYYY-MM-DD". Andaikan kita telah membuat aplikasi dan pengguna ingin tarikh dikembalikan dalam format "DD-MM-YYYY", kita dapat menggunakan fungsi built-in MySQL pada DATE_FORMAT untuk mencapainya. DATE_FORMAT adalah salah satu fungsi yang paling banyak digunakan di MySQL. Kami akan melihatnya dengan lebih terperinci ketika kami melancarkan pelajaran.
Mengapa menggunakan fungsi?
Berdasarkan contoh yang diberikan dalam pendahuluan, orang yang berpengalaman dalam pengaturcaraan komputer mungkin berpikir "Mengapa mengganggu Fungsi MySQL? Kesan yang sama dapat dicapai dengan bahasa skrip / pengaturcaraan?" Memang benar kita dapat mencapainya dengan menulis beberapa prosedur / fungsi dalam program aplikasi.
Kembali ke contoh DATE kami dalam pendahuluan, agar pengguna kami mendapatkan data dalam format yang diinginkan, lapisan perniagaan harus melakukan pemprosesan yang diperlukan.
Ini menjadi masalah apabila aplikasi harus berintegrasi dengan sistem lain. Apabila kita menggunakan fungsi MySQL seperti DATE_FORMAT, maka kita dapat memasukkan fungsi tersebut ke dalam pangkalan data dan setiap aplikasi yang memerlukan data mendapatkannya dalam format yang diperlukan. Ini mengurangkan kerja semula dalam logik perniagaan dan mengurangkan ketidakkonsistenan data.
Sebab lain mengapa kita harus mempertimbangkan untuk menggunakan fungsi MySQL adalah kenyataan bahawa ia dapat membantu mengurangkan lalu lintas rangkaian dalam aplikasi klien / pelayan . Business Layer hanya perlu membuat panggilan ke fungsi yang disimpan tanpa perlu memanipulasi data. Rata-rata, penggunaan fungsi dapat membantu meningkatkan prestasi sistem secara keseluruhan.
Jenis fungsi
Fungsi terbina dalam
MySQL dilengkapi dengan sejumlah fungsi bawaan. Fungsi terbina dalam adalah fungsi yang sudah dilaksanakan di pelayan MySQL. Fungsi ini membolehkan kita melakukan pelbagai jenis manipulasi pada data. Fungsi terbina pada dasarnya dapat dikategorikan ke dalam kategori yang paling sering digunakan berikut.
- Fungsi rentetan - beroperasi pada jenis data rentetan
- Fungsi numerik - beroperasi pada jenis data berangka
- Fungsi tarikh - beroperasi pada jenis data tarikh
- Fungsi agregat - beroperasi pada semua jenis data di atas dan menghasilkan set hasil yang diringkaskan.
- Fungsi lain - MySQL juga menyokong jenis fungsi bawaan lain tetapi kita akan menghadkan pelajaran kita kepada fungsi yang disebut di atas sahaja.
Sekarang mari kita perhatikan setiap fungsi yang dinyatakan di atas secara terperinci. Kami akan menerangkan fungsi yang paling banyak digunakan dengan menggunakan "Myflixdb" kami.
Fungsi rentetan
Kami sudah melihat fungsi rentetan apa. Kami akan melihat contoh praktikal yang menggunakannya. Dalam jadual filem kami, judul filem disimpan menggunakan kombinasi huruf kecil dan besar. Andaikan kita ingin mendapatkan senarai pertanyaan yang mengembalikan tajuk filem dengan huruf besar. Kita boleh menggunakan fungsi "UCASE" untuk melakukannya. Ia memerlukan rentetan sebagai parameter dan mengubah semua huruf menjadi huruf besar. Skrip yang ditunjukkan di bawah 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 dengan huruf besar dengan nama alias` upper_case_title`.
Melaksanakan skrip di atas di meja kerja MySQL terhadap Myflixdb memberikan hasil berikut seperti yang ditunjukkan di bawah.
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 menyokong sebilangan fungsi rentetan. Untuk senarai lengkap semua fungsi rentetan terpasang, baca pautan ini http://dev.mysql.com/doc/refman/5.0/en/string-functions.html di laman web MySQL.
Fungsi angka
Seperti yang telah disebutkan sebelumnya, fungsi ini beroperasi pada jenis data berangka. Kita dapat melakukan pengiraan matematik pada data berangka dalam pernyataan SQL.
Pengendali aritematik
MySQL menyokong operator aritmatik berikut yang dapat digunakan untuk melakukan pengiraan dalam pernyataan SQL.
Nama |
Penerangan |
---|---|
DIV |
Pembahagian integer |
/ |
Bahagian |
- |
Penolakan |
+ |
Penambahan |
* |
Pendaraban |
% atau MOD |
Modulus |
Sekarang mari kita lihat contoh setiap operator di atas
Bahagian Integer (DIV)
SELECT 23 DIV 6 ;
Melaksanakan skrip di atas memberikan hasil berikut.
3
Pengendali bahagian (/)
Sekarang mari kita lihat contoh pengendali bahagian. Kami akan mengubah contoh DIV.
SELECT 23 / 6 ;
Melaksanakan skrip di atas memberikan hasil berikut.
3.8333
Pengendali penolakan (-)
Sekarang mari kita lihat contoh pengendali pengurangan. Kami akan menggunakan nilai yang sama seperti pada dua contoh sebelumnya
SELECT 23 - 6 ;
Melaksanakan skrip di atas memberi kita 17
Pengendali penambahan (+)
Sekarang mari kita lihat contoh operator penambahan. Kami akan mengubah contoh sebelumnya.
SELECT 23 + 6 ;
Melaksanakan skrip di atas memberi kita 29
Pengendali pendaraban (*)
Sekarang mari kita lihat contoh pengendalian pendaraban. Kami akan menggunakan nilai yang sama seperti pada contoh sebelumnya.
SELECT 23 * 6 AS `multiplication_result`;
Melaksanakan skrip di atas memberikan hasil berikut.
pendaraban_hasil |
138 |
Pengendali modulo (-)
Pengendali modulo membahagi N dengan M dan memberikan yang selebihnya. Sekarang mari kita lihat contoh pengendali modulo. Kami akan menggunakan nilai yang sama seperti pada contoh sebelumnya.
SELECT 23 % 6 ;
ATAU
SELECT 23 MOD 6 ;
Melaksanakan skrip di atas memberi kita 5
Sekarang mari kita lihat beberapa fungsi numerik biasa di MySQL.
Lantai - fungsi ini membuang tempat perpuluhan dari nombor dan membulatkannya ke nombor terendah terdekat. Skrip yang ditunjukkan di bawah menunjukkan penggunaannya.
SELECT FLOOR(23 / 6) AS `floor_result`;
Melaksanakan skrip di atas memberikan hasil berikut.
Hasil_Lantai |
3 |
Bulat - fungsi ini membundarkan nombor dengan tempat perpuluhan ke nombor bulat terdekat. Skrip yang ditunjukkan di bawah menunjukkan penggunaannya.
SELECT ROUND(23 / 6) AS `round_result`;
Melaksanakan skrip di atas memberikan hasil berikut.
Keputusan Bulat |
4 |
Rand - fungsi ini digunakan untuk menghasilkan nombor rawak, nilainya berubah setiap kali fungsi dipanggil. Skrip yang ditunjukkan di bawah menunjukkan penggunaannya.
SELECT RAND() AS `random_result`;
Fungsi yang disimpan
Fungsi yang disimpan sama seperti fungsi yang terpasang kecuali anda harus menentukan sendiri fungsi yang tersimpan. Setelah fungsi tersimpan dibuat, ia dapat digunakan dalam pernyataan SQL seperti fungsi lain. Sintaks asas untuk membuat fungsi tersimpan adalah seperti gambar di bawah
CREATE FUNCTION sf_name ([parameter(s)])RETURNS data typeDETERMINISTICSTATEMENTS
SINI
- "CREATE FUNCTION sf_name ([parameter [s]])" adalah wajib dan memberitahu pelayan MySQL untuk membuat fungsi bernama `sf_name 'dengan parameter pilihan yang ditentukan dalam kurungan.
- "Jenis data RETURNS" adalah wajib dan menentukan jenis data yang harus dikembalikan oleh fungsi.
- "DETERMINISTIK" bermaksud fungsi akan mengembalikan nilai yang sama jika argumen yang sama diberikan kepadanya.
- "PERNYATAAN" adalah kod prosedur yang dilaksanakan oleh fungsi.
Sekarang mari kita lihat contoh praktikal yang melaksanakan fungsi terbina dalam. Andaikan kita ingin mengetahui filem yang disewa melepasi tarikh pengembalian. Kita dapat membuat fungsi tersimpan yang menerima tarikh pengembalian sebagai parameter dan kemudian membandingkannya dengan tarikh semasa di pelayan MySQL. Sekiranya tarikh semasa kurang dari tarikh filem kembali, maka kami mengembalikan "Tidak" jika tidak, kami mengembalikan "Ya" Skrip yang ditunjukkan di bawah ini membantu kita untuk mencapainya.
DELIMITER |CREATE FUNCTION sf_past_movie_return_date (return_date DATE)RETURNS VARCHAR(3)DETERMINISTICBEGINDECLARE sf_value VARCHAR(3);IF curdate() > return_dateTHEN SET sf_value = 'Yes';ELSEIF curdate() <= return_dateTHEN SET sf_value = 'No';END IF;RETURN sf_value;END|
Melaksanakan skrip di atas membuat fungsi tersimpan `sf_past_movie_return_date`.
Sekarang mari kita menguji fungsi yang disimpan.
SELECT `movie_id`,`membership_number`,`return_date`,CURDATE() ,sf_past_movie_return_date(`return_date`) FROM `movierentals`;
Melaksanakan skrip di atas di MySQL workbench terhadap myflixdb memberikan 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 menyokong fungsi yang ditentukan pengguna yang memperluas MySQL. Fungsi yang ditentukan pengguna adalah fungsi yang dapat anda buat menggunakan bahasa pengaturcaraan seperti C, C ++ dll dan kemudian tambahkan ke server MySQL. Setelah ditambahkan, mereka boleh digunakan seperti fungsi lain.
Ringkasan
- Fungsi membolehkan kita meningkatkan keupayaan MySQL.
- Fungsi selalu mengembalikan nilai dan boleh menerima parameter secara pilihan.
- Fungsi terbina dalam adalah fungsi yang dihantar dengan MySQL. Mereka boleh dikategorikan mengikut jenis data yang mereka jalankan iaitu rentetan, tarikh dan fungsi nombor yang terbina dalam.
- Fungsi yang disimpan dibuat oleh pengguna dalam pelayan MySQL dan dapat digunakan dalam pernyataan SQL.
- Fungsi yang ditentukan pengguna dibuat di luar MySQL dan dapat dimasukkan ke dalam pelayan MySQL.