MySQL Database
MySQL Database
3 Semangka 10000 50
DESC nama_tabel;
= Sama dengan
● INNER JOIN
● LEFT JOIN
● RIGHT JOIN
● CROSS JOIN
Inner Join
● INNER JOIN adalah mekanisme JOIN, dimana terdapat relasi antara tabel pertama dan tabel
kedua
● Jika ada data di tabel pertama yang tidak memiliki relasi di table kedua ataupun sebaliknya, maka
hasil INNER JOIN tidak akan ditampilkan
● Ini adalah default JOIN di MySQL
● Jika kita menggunakan JOIN seperti yang sudah kita praktekan sebelumnya, sebenarnya itu akan
melakukan INNER JOIN
Inner Join Diagram
Melakukan Inner Join
Left Join
● LEFT JOIN adalah mekanisme JOIN seperti INNER JOIN, namun semua data di table pertama
akan diambil juga
● Jika ada yang tidak memiliki relasi di table kedua, maka hasilnya akan NULL
Left Join Diagram
Melakukan Left Join
Right Join
● RIGHT JOIN adalah mekanisme JOIN seperti INNER JOIN, namun semua data di table kedua akan
diambil juga
● Jika ada yang tidak memiliki relasi di table pertama, maka hasilnya akan NULL
Right Join Diagram
Melakukan Right Join
Cross Join
● CROSS JOIN adalah salah satu JOIN yang sangat jangan sekali digunakan
● CROSS JOIN adalah melakukan join dengan cara mengkalikan data di tabel pertama dengan dada
di table kedua
● Artinya jika ada 5 data di tabel pertama, dan 5 data di tabel kedua, akan menghasilkan 25
kombinasi data (5 x 5)
● Sekali lagi perlu diingat, ini adalah JOIN yang sangat jarang sekali digunakan
Menggunakan Cross Join
Membuat Tabel Perkalian
Cross Join Tabel Perkalian
Subqueries
Subquery di WHERE
● MySQL mendukung pencarian data menggunakan WHERE dari hasil SELECT query
● Fitur ini dinamakan Subquery
● Contoh, kita ingin mencari products yang harganya diatas harga rata-rata, artinya kita akan
melakukan SELECT dengan WHERE price > harga rata, dimana harga rata-rata perlu kita hitung
menggunakan query SELECT lainnya menggunakan aggregate function AVG
Melakukan Subquery di WHERE Clause
Subquery di FROM
● Selain di WHERE clause, Subquery juga bisa dilakukan di FROM clause
● Misal kita ingin mencari data dari hasil query SELECT, itu bisa kita lakukan di MySQL
Melakukan Subquery di FROM Clause
Set Operator
Set Operator
MySQL mendukung operator Set, dimana ini adalah operasi antara hasil dari dua SELECT query. Ada
banyak jenis operator Set, yaitu :
● UNION
● UNION ALL
● INTERSECT, dan
● MINUS
Membuat Table Guest Book
UNION
● UNION adalah operasi menggabungkan dua buah SELECT query, dimana jika terdapat data yang
duplikat, data duplikatnya akan dihapus dari hasil query
Diagram UNION
Melakukan Query UNION
UNION ALL
● UNION ALL adalah operasi yang sama dengan UNION, namun data duplikat tetap akan
ditampilkan di hasil query nya
Diagram UNION ALL
Melakukan Query UNION ALL
INTERSECT
● INTERSECT adalah operasi menggabungkan dua query, namun yang diambil hanya data yang
terdapat pada hasil query pertama dan query kedua
● Data yang tidak hanya ada di salah satu query, kan dihapus di hasil operasi INTERSECT
● Data nya muncul tidak dalam keadaan duplikat
● Sayangnya, MySQL tidak memiliki operator INTERSECT, dengan demikian untuk melakukan
operasi INTERSECT, kita harus lakukan secara manual menggunakan JOIN atau SUBQUERY
Diagram INTERSECT
Melakukan Query INTERSECT
MINUS
● MINUS adalah operasi dimana query pertama akan dihilangkan oleh query kedua
● Artinya jika ada data di query pertama yang sama dengan data yang ada di query kedua, maka
data tersebut akan dihapus dari hasil query MINUS
● Sayang nya, di MySQL juga tidak ada operator MINUS, namun hal ini bisa kita lakukan
menggunakan JOIN
Diagram MINUS
Melakukan Query MINUS
Transaction
Kenapa Butuh Transaction?
● Saat membuat aplikasi berbasis database, jarang sekali kita akan melakukan satu jenis perintah
SQL per aksi yang dibuat aplikasi
● Contoh, ketika membuat toko online, ketika customer menekan tombol Pesan, banyak yang harus
kita lakukan, misal
○ Membuat data pesanan di tabel order
○ Membuat data detail pesanan di tabel order detail
○ Menurunkan quantity di tabel produk
○ Dan yang lainnya
● Artinya, bisa saja dalam satu aksi, kita akan melakukan beberapa perintah sekaligus
● Jika terjadi kesalahan di salah satu perintah, harapannya adalah perintah-perintah sebelumnya
dibatalkan, agar data tetap konsisten
Database Transaction
● Database transaction adalah fitur di DBMS dimana kita bisa memungkinan beberapa perintah
dianggap menjadi sebuah kesatuan perintah yang kita sebut transaction
● Jika terdapat satu saja proses gagal di transaction, maka secara otomatis perintah-perintah
sebelumnya akan dibatalkan
● Jika sebuah transaction sukses, maka semua perintah akan dipastikan sukses
Membuat Transaction
Membatalkan Transaction
Transaction di MySQL
Perintah Keterangan
WRITE Bisa melakukan read dan write Tidak bisa melakukan read dan write
terhadap tabel tersebut
Locking Instance
● Salah satu fitur lock lainnya di MySQL adalah lock instance
● Lock instance adalah perintah locking yang akan membuat perintah DDL (data definition language)
akan diminta menunggu sampai proses unlock instance
● Biasanya proses locking instance ini terjadi ketika misal kita ingin melakukan backup data, agar
tidak terjadi perubahan terhadap struktur tabel misalnya, kita bisa melakukan locking instance
● Setelah proses backup selesai, baru kita unlock lagi instance nya
● Untuk melakukan locking instance, kita bisa gunakan perintah :
○ LOCK INSTANCE FOR BACKUP;
● Untuk melakukan unlock instance, kita bisa gunakan perintah :
○ UNLOCK INSTANCE;
User Management
Root User
● Secara default, mysql membuat root user sebagai super administrator
● Namun best practice nya, saat kita menjalankan MySQL dengan aplikasi yang kita buat, sangat
disarankan tidak menggunakan user root
● Lebih baik kita buat user khusus untuk tiap aplikasi, bahkan kita bisa batasi hak akses user
tersebut, seperti hanya bisa melakukan SELECT, dan tidak boleh melakukan INSERT, UPDATE
atau DELETE
Hak Akses dan User
● Dalam user management MySQL, kita akan mengenal istilah Hak Akses dari User
Daftar Hak Akses
● Ada banyak sekali hak akses di MySQL
● Kita bisa melihatnya di daftar tabel yang terdapat di halaman berikut :
● https://dev.mysql.com/doc/refman/8.0/en/grant.html
Membuat/Menghapus User
Menambah/Menghapus Hak Akses ke User
Mengubah Password untuk User
Backup Database
Backup Database
● Saat membuat aplikasi menggunakan database, ada baiknya kita selalu melakukan backup data
secara reguler
● Untungnya MySQL mendukung proses backup database
● Untuk melakukan backup database, kita tidak menggunakan perintah SQL, melainkan MySQL
menyediakan sebuah aplikasi khusus untuk melakukan backup database, namanya adalah
mysqldump
● https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html
Melakukan Backup Database
Restore Database
Restore Database
● Selain melakukan backup database, di MySQL juga kita bisa melakukan proses restore data dari
file hasil backup
● Untuk melakukan restore database, kita bisa menggunakan aplikasi mysql client atau
menggunakan perintah SOURCE di MySQL
Melakukan Import Database
Import Database Menggunakan SQL
Materi Selanjutnya
Materi Selanjutnya
● Studi Kasus Database Design
● Belajar Bahasa Pemrograman
● MySQL Tuning
● MySQL Scalability