Tutorial Bassic Mysql Bagian 11 - Controll Flow Function

Subscribe Dengan Account Google Untuk Membaca Artikel Tanpa Iklan
Tutorial Bassic Mysql Bagian 11 - Controll Flow Function

Pada tutorial sebelumnya kita telah belajar tentang bagaimana cara membuat virtual tabel di database mysql.

Di tutorial ini kita akan belajar cara membuat FUNCTION di database Mysql. Yuks ikuti tutorial ini sampai selesai agar pengetahun SQL kita semakin bertambah.

A) Apa itu FUNCTION di MySQL?


Function adalah kode yang melakukan operasi dan mengembalikan nilai tertentu. Function digunakan untuk memanipulasi data dalam tabel database.

MySQL memiliki banyak Function bawaan yang termasuk dalam kategori berbeda, diantarannya sebagai berikut:


  • String manipulation functions

  • Date and time functions

  • Numeric functions

  • Comparison functions

  • And control flow functions


Pada tahap ini, Anda harus terbiasa dengan contoh dasar dari masing-masing jenis Function. Jadi mari luangkan waktu sejenak untuk memahaminya.

B) Numeric functions


Numeric Function MySQL dapat secara luas dibagi menjadi fungsi matematika dan agregat.

Anda telah meninjau banyak contoh dari banyak fungsi agregat MySQL. Anda juga telah melihat banyak fungsi matematika.

Dalam bacaan ini, Anda akan mempelajari beberapa fungsi matematika lagi.

Fungsi matematika memungkinkan Anda melakukan tugas matematika pada data numerik.

Mari kita lihat dua fungsi matematika : CEIL dan FLOOR.

Fungsi CEIL mengembalikan nilai bilangan bulat terkecil, yang  tidak kurang dari  nilai yang diteruskan. Misalnya, meneruskan nilai 1,23 ke fungsi CEIL akan mengembalikan nilai 2.

SELECT CEIL(15.50);

Output : 16

Fungsi FLOOR melakukan kebalikan dari CEIL. Floor mengembalikan nilai integer terbesar tidak lebih besar dari nilai yang diteruskan.

Floor mengembalikan NULL jika nilai yang diteruskan adalah NULL.

SELECT FLOOR(15.60);

Output: 15

C) String Functions


Sekarang mari kita lihat beberapa fungsi String seperti FORMAT, LENGTH dan REPLACE.

Fungsi FORMAT memformat angka yang diteruskan ke dalam format seperti '#,###,###.##', dibulatkan ke angka desimal yang ditentukan. Ini mengembalikan hasilnya sebagai string.



SELECT FORMAT(3750.753, 2)



Output: 3,750.75

Jika jumlah tempat desimal adalah 0, hasilnya tidak memiliki titik desimal atau bagian pecahan.

Jika angka yang akan diformat atau angka tempat desimal adalah NULL, maka fungsi mengembalikan NULL.

D) Date Functions


Anda telah mempelajari fungsi tanggal MySQL seperti CURRENT_DATE, CURRENT_TIME, DATE_FORMAT, dan DATEDIFF.

Sekarang mari pelajari beberapa fungsi tanggal yang lebih penting dengan beberapa contoh.

A) Fungsi ADDDATE

Fungsi ADDDATE digunakan untuk melakukan aritmatika dengan tanggal. Fungsi ini memiliki dua bentuk:

  1. ADDDATE(date, INTERVAL expr unit)

  2. ADDDATE(date, days)


Argumen pertama menentukan tanggal mulai atau nilai datetime dalam bentuk awal. Argumen kedua adalah ekspresi yang menentukan nilai interval yang akan ditambahkan ke tanggal awal.

Fungsi ADDDATE memiliki tiga bagian penting:


  1. INTERVAL : sebuah kata kunci

  2. expr : mewakili sebuah quantitas

  3. unit : unit untuk menafsirkan kuantitas; seperti JAM, HARI, atau MINGGU


1) Sintaks untuk bentuk pertama sebagai berikut:

SELECT ADDDATE(date, INTERVAL expr unit);


Contoh:


SELECT ADDDATE("2020-05-10", INTERVAL 5 DAY);



Output: 2020-05-15

2) Sintaks untuk bentuk kedua sebagai berikut:


SELECT ADDDATE(date, days);


Contoh:


SELECT ADDDATE("2020-06-15", 10);



Output: 2020-06-25
B) Fungsi QUARTER

Fungsi QUARTER juga merupakan fungsi yang sangat serbaguna yang mengembalikan kuartal tahun ini untuk tanggal tertentu.

Nilai yang dikembalikan berada dalam rentang 1 hingga 4, atau NULL jika tanggalnya NULL.

Syntaksnya sebagai berikut:


SELECT QUARTER(date_value);


Contoh: Kode berikut mengembalikan nilai 3. Fungsi QUARTER() mengembalikan kuartal tahun ini untuk nilai tanggal yang diberikan.


SELECT QUARTER("2020-09-15");



Output: 3

E) Comparison functions / Fungsi Perbandingan


Anda mungkin mengetahui beberapa fungsi perbandingan MySQL seperti GREATEST, LEAST dan ISNULL.

COALESCE adalah fungsi perbandingan lain yang mengambil beberapa argumen dan mengembalikan argumen non-NULL pertama.

Jika semua argumen adalah NULL, fungsi COALESCE mengembalikan NULL. Anda dapat menganggap fungsi ini sebagai fungsi pemeriksaan NULL.

Sintaks untuk fungsi ini adalah sebagai berikut:


SELECT COALESCE (value1, value2);


Fungsi ini sangat berguna saat Anda mengganti nilai kolom dengan nilai NULL dan menggantinya dengan nilai lain.

Contoh : Kode berikut mengembalikan Halovina.com, karena fungsi COALESCE() mengembalikan nilai non-null pertama dalam daftar.



SELECT COALESCE(NULL, 'Halovina.com', NULL, 'Property145.com');



Output: Halovina.com

F) Control flow functions


MySQL juga memiliki fungsi yang memungkinkan Anda mengevaluasi kondisi dan memutuskan bagaimana queri harus dijalankan.

Anda harus terbiasa dengan fungsi CASE di MySQL dan IFNULL, serta dengan beberapa fungsi lainnya.

IFNULL menerima dua argumen dan mengembalikan argumen pertama jika bukan NULL. Jika tidak, fungsi IFNULL mengembalikan argumen kedua. Kedua argumen tersebut dapat berupa nilai literal atau ekspresi.

Sintaksnya adalah sebagai berikut:


SELECT IFNULL(evaluated_expression, alternative_value);


Contoh : Kode berikut mengembalikan Halovina sebagai nilai karena ekspresi yang dievaluasi adalah NULL.


SELECT IFNULL(NULL, "Halovina");



Output: Halovina

Ada juga fungsi NULLIF yang mengambil dua nilai atau ekspresi. Jika mereka sama maka mengembalikan NULL. Jika tidak, ia mengembalikan nilai atau ekspresi pertama.

Syntaksnya adalah sebagai berikut:


SELECT NULLIF(expression1, expression2);


Contoh : Fungsi NULLIF() berikut mengembalikan nilai 10, karena membandingkan dua ekspresi (10 dan 15) dan mengembalikan NULL jika keduanya sama. Jika tidak, ekspresi pertama dikembalikan.


SELECT NULLIF(10, 15);



Output: 10

G) Studi Kasus


Agar Anda lebih menantang yuks selesaikan studi kasus yang ada di tutorial ini, seperti biasa persiapkan data sourcenya terlebih dahulu dan eksekusi query berikut:

=== CREATE TABLE clients ===
CREATE TABLE clients
(ClientID int NOT NULL,
ClientName varchar(255) DEFAULT NULL,
Address varchar(255) DEFAULT NULL,
ContactNo varchar(10) DEFAULT NULL,
PRIMARY KEY (ClientID));

=== CREATE TABLE client_orders ===
CREATE TABLE client_orders
(OrderID INT NOT NULL,
ClientID INT DEFAULT NULL,
ItemID INT DEFAULT NULL,
Cost INT DEFAULT NULL,
PRIMARY KEY (OrderID));

=== CREATE TABLE item ====
CREATE TABLE item
(ItemID INT NOT NULL,
Name varchar(150) DEFAULT NULL,
Cost INT DEFAULT NULL,
PRIMARY KEY (ItemID));

=== CREATE TABLE mg_orders ===
CREATE TABLE mg_order
(OrderID INT NOT NULL,
ItemID INT DEFAULT NULL,
Quantity INT DEFAULT NULL,
Cost INT DEFAULT NULL,
OrderDate DATE DEFAULT NULL,
DeliveryDate DATE DEFAULT NULL,
OrderStatus VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (OrderID));

=== INSERT INTO clients ===
INSERT INTO clients VALUES
(1, 'Kishan Hughes','223 Golden Hills, North Austin, TX','387986345'),
(2, 'Indira Moncada','119 Silver Street, Bouldin Creek, TX','334567243'),
(3, 'Mosha Setsile','785 Bronze Lane, East Austin, TX','315642597'),
(4, 'Laura Mills','908 Diamond Crescent, South Lamar, TX','300842509'),
(5, 'Henrik Kreida','345, Golden Hills, North Austin, TX','358208983'),
(6, 'Millicent Blou','812, Diamond Crescent, North Burnet, TX','347898755');

=== INSERT INTO item ==
INSERT INTO item VALUES
(1,'Engagement ring',2500),
(2,'Silver brooch',400),
(3,'Earrings',350),
(4,'Luxury watch',1250),
(5,'Golden bracelet',800),
(6,'Gemstone',1500);

=== INSERT INTO client_orders ====
INSERT INTO client_orders VALUES
(1,1,1,2500),
(2,2,2,400),
(3,3,3,350),
(4,4,4,1250),
(5,5,5,800),
(6,6,6,1500),
(7,2,4,400),
(8,3,4,1250),
(9,4,2,400),
(10,1,3,350);

=== INSERT INTO mg_orders ====
INSERT INTO mg_orders VALUES
(1,1,50,122000,'2022-04-05','2022-05-25', 'Delivered'),
(2,2,75,28000,'2022-03-08',NULL, 'In progress'),
(3,3,80,25000,'2022-05-19','2022-06-08', 'Delivered'),
(4,4,45,100000,'2022-01-10',NULL, 'In progress'),
(5,5,70,56000,'2022-05-19',NULL, 'In progress'),
(6,6,60,90000,'2022-06-10','2022-06-18', 'Delivered');

Selesaikan tugas berikut:

Tugas 1:  Gunakan fungsi MySQL CEIL untuk menyatakan biaya setelah diskon dalam bentuk bilangan bulat terkecil sebagai berikut:

Berikan diskon 5% kepada klien yang telah memesan jam tangan mewah. Nyatakan biaya setelah diskon dalam bentuk bilangan bulat terkecil.

Tugas 2:  Memformat nilai kolom afterDiscount dari hasil sebelumnya untuk diskon 5% dalam format '#,###,###.##' dibulatkan menjadi 2 angka desimal menggunakan fungsi FORMAT.

Tugas 3:  Temukan tanggal pengiriman dan tanggal pengiriman yang dijadwalkan adalah 30 hari setelah tanggal pemesanan. Gunakan fungsi ADDDATE.

Tugas 4 : Hasilkan data yang diperlukan untuk laporan dengan rincian semua pesanan yang belum terkirim.

Kolom DeliveryDate memiliki nilai NULL untuk pesanan yang belum terkirim. Gunakan fungsi COALESCE untuk melakukannya.

Tugas 5 : Hasilkan data yang diperlukan untuk laporan dengan mengambil daftar pesanan M&G yang belum dikirimkan.

Pesanan ini memiliki status 'In Progress' menggunakan fungsi NULLIF.

H) Video Tutorial



Baca artikel lainya:


  1. Tutorial bassic Mysql bagian 1 - Create Read Update Delete

  2. Tutorial bassic Mysql bagian 2 - Inner, Left, Right, Cross Join

  3. Tutorial bassic Mysql bagian 3 - Filtering Data

  4. Tutorial bassic Mysql bagian 4 - Grouping Data 

  5. Tutorial bassic Mysql bagian 5 - Operator dan Clausa

  6. Tutorial bassic Mysql bagian 6 - Replace Statement

  7. Tutorial bassic Mysql bagian 7 - Constraint Data

  8. Tutorial bassic Mysql bagian 8 - Mengubah Struktur tabel

  9. Tutorial bassic Mysql bagian 9 - Subquery

  10. Tutorial bassic Mysql bagian 10 - Virtual Tabel

  11. Membuat service OTP bagian 1 - OTP dan PIN

  12. Membuat service OTP bagian 2 - Sequence Diagram

  13. Membuat service OTP bagian 3 - Model dan Serializer

  14. Membuat  service OTP bagian 4 - Validate OTP

  15. Membuat  service OTP bagian 5 - Api Client Service

  16. Membuat service user login bagian 1 - Konfigurasi Database

  17. Membuat service user login bagian 2 - Serializer dan JWT

  18. Membuat CRUD service product bagian 1 - Models Product

  19. Membuat CRUD service product bagian 2 - Function Serializer

  20. Membuat CRUD service product bagian 3 - Api Client Service

  21. Membaut CRUD service product bagian 4 - Auth User

  22. Membuat CRUD service product bagian 5 - TDR File Log

  23. Membuat CRUD service product bagian 6 - Unit Test

  24. Membuat service user register bagian 1 - Django

  25. Membuat Service user register bagian 2 - Django

  26. Membuat service filter dan download file CSV di django

  27. Django upload file menggunakan FileSystemStorage

  28. Tips meningkatkan kualitas code pada bahasa python

  29. Cara memfilter tipe data string pada golang dan python

  30. Mengubah format datetime pada bahasa python

  31. Mengolah data CSV dengan python pandas

  32. Sample join data CSV di python menggunakan pandas