Terakhir diperbaharui: Mar 2, 2021
MySQL
Daftar Isi
Install Testing MySQL Operasi Dasar pada MySQL - Database - Table - Manipulasi Data Table RelationshipMySQL menjadi salah satu database yang paling banyak digunakan dalam mengembangkan sebuah aplikasi terutama aplikasi berbasis web.
Berikut hasil survey dari Stack Overflow Developer Survey tahun 2020 untuk kategori Most Popular Database:
MySQL termasuk relational database, yang berarti data disimpan dalam schema yang mirip dengan tabel. Dimana setiap data dapat diindentifikasi dengan menggunakan key atau primary key.
Install
Langkah instalasi berikut ini adalah untuk OS Linux berbasis debian seperti Ubuntu atau Linux Mint. Kenapa menggunakan Linux? karena hal ini erat kaitannya dengan proses deployment aplikasi DinoTes.
Untuk OS Windows download installernya disini dan install sesuai arahan.
- Buka terminal atau console kemudian jalankan perintah berikut ini
1$ sudo apt update
Kemudian install mysql-server
1$ sudo apt install mysql-server
- Konfigurasi keamanan dari MySQL dengan jalankan perintah berikut ini:
1$ sudo mysql_secure_installation
MySQL akan menanyakan beberapa informasi yang perlu diisi, seperti mengganti password dari root account, mengubah tingkat keamanan password dll.
- Buat MySQL user dan beri akses ke user tersebut
Login ke MySQL Server:
1$ sudo mysql
Buat user baru:
1mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
Pastikan untuk mengganti username dengan nama user yang diinginkan dan password dengan password yang sesuai dengan tingkat keamanaan MySQL.
Grant / beri akses ke user yang sudah dibuat:
1GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';
Perintah di atas berarti kita memberi user akses ke semua database dan table yang ada di dalam MySQL server.
Kita juga bisa membatasi akses user ke database atau tabel tertentu.
Sebagai contoh jika kita ingin user hanya bisa mengakses database bernama customer dan table bernama address maka perintah yang harus dijalankan:
1GRANT PRIVILEGE ON customer.address TO 'username'@'localhost';
Sedangkan untuk jenis aksesnya kita bisa jalankan perintah berikut:
1GRANT CREATE, ALTER, INSERT, UPDATE, DELETE, SELECT on *.* TO 'username'@'localhost' WITH GRANT OPTION;
Perintah di atas berarti kita memberi user akses untuk membuat (CREATE), mengubah (ALTER), menambah (INSERT), memperbaharui (UPDATE), menghapus (DELETE) dan memilih (SELECT) semua database dan table yang ada di dalam MySQL server.
Langkah terakhir hapus cache pada memory.
1FLUSH PRIVILEGES;
Untuk keluar dari MySQL gunakan perintah exit.
1mysql > exit
Testing MySQL
Setelah install, kita perlu memeriksa apakah MySQL dalam kondisi aktif (running) sehingga kita bisa login menggunakan user yang sebelumnya sudah dibuat.
1$ systemctl status mysql.service
Jika tidak ada masalah seharusnya kita akan mendapatkan output seperti ini setelah menjalankan perintah di atas:
Test login dengan menggunakan user yang baru:
1$ mysql -u username -p
Operasi Dasar pada MySQL
Beberapa Operasi Dasar pada MySQL database menggunakan SQL yang sering digunakan pada awal pengembangan sebuah aplikasi:
Database
Syntax | Keterangan |
---|---|
CREATE DATABASE db_name; | Membuat database baru |
SHOW DATABASES; | Tampilkan semua database yang ada di server |
USE db_name; | Memilih database yang akan digunakan |
ALTER DATABASE db_name; | Mengubah database baru |
DROP DATABASE db_name; | Menghapus database |
Table
- Membuat tabel baru
Syntax:
1CREATE TABLE table_name (2 column1 datatype,3 column2 datatype,4 ....5)
List datatype yang disupport oleh MySQL bisa dilihat disini
Contoh:
1CREATE TABLE dino_profile (2 dino_id INT,3 name VARCHAR(255),4 color VARCHAR(255)5)
- Membuat tabel baru dengan primary key
Primary key digunakan untuk mengidentifikasi sebuah record(satu baris data pada tabel) dan membedakan record tersebut dengan record yang lain.
Contoh:
1CREATE TABLE dino_profile (2 dino_id INT,3 name VARCHAR(255),4 color VARCHAR(255),5 PRIMARY KEY(dino_id)6)
- Mengubah kolom pada table
Syntax:
1ALTER TABLE table_name2operation_type;
Contoh:
Menambah kolom
1ALTER TABLE dino_profile2ADD weight int;
Mengubah datatype kolom
1ALTER TABLE dino_profile2MODIFY COLUMN weight bigint;
Menghapus kolom
1ALTER TABLE dino_profile2DROP COLUMN weight;
Manipulasi Data
- Menambahkan data ke tabel
Syntax:
1INSERT INTO table_name (column1, column2, column3, ...)2VALUES (value1, value2, value3, ...);
Contoh:
1INSERT INTO dino_profile(dino_id, name, color)2VALUES(1,'t-rex','red');
Jika ingin menambahkan data pada setiap kolom kita tidak perlu menulis nama kolom satu per satu.
Contoh:
1INSERT INTO dino_profile VALUES(1,'t-rex','red');
- Menampilkan / query data tabel
Yang dimaksud dengan query adalah kita meminta MySQL server untuk menampilkan data yang kita inginkan berdasarkan kriteria tertentu.
Syntax
1SELECT column1, column2, ...2FROM table_name;
Untuk query semua record dalam satu tabel kita bisa gunakan syntax berikut:
1SELECT * FROM table_name;
Contoh:
- Menampilkan data tabel dengan filter
Syntax:
1SELECT column1, column2, ...2FROM table_name3WHERE condition;
Contoh:
Pada contoh di atas kita menampilkan data dino yang memiliki warna biru.
- Menampilkan data dengan urutan yang ditentukan
Syntax:
1SELECT column1, column2, ...2FROM table_name3ORDER BY column1, column2, ... ASC|DESC;
Contoh:
Pada contoh di atas kita menampilkan data dino berdasarkan warna dino yang diurutkan secara ascending (A->Z)
- Menampilkan data dari lebih dari satu tabel
JOIN
Dengan JOIN statement kita bisa menampilkan / query data dari dua atau lebih tabel dalam satu tampilan tanpa menggabungkan data dari kedua table tersebut.
Untuk menggunakan JOIN statement, setiap tabel harus memiliki kolom foreign key, sebuah kolom yang berisi data dimana semua tabel juga memilikinya.
Sehingga setiap tabel memiliki keterkaitan(relasi) antar satu dengan yang lain, oleh karena itu database dengan model seperti ini disebut dengan relational database.
Dan disinilah proses normalisasi terjadi, yaitu proses menentukan struktur data yang akan disimpan ke dalam table.
Ada beberapa jenis JOIN statement, kita hanya akan membahas 3 diantaranya: INNER JOIN, LEFT JOIN dan RIGHT JOIN.
INNER JOIN
Menampilkan semua record dari dua tabel atau lebih dimana masing-masing record memiliki persamaan.
Syntax:
1SELECT column_name(s)2FROM table13INNER JOIN table24ON table1.column_name = table2.column_name;
Contoh:
Kita memiliki dua tabel:
Tabel dino_profile
Tabel dino_class
Pada tabel dino_class, terdapat kolom dino_id dimana kolom ini juga dimiliki oleh tabel dino_profile, namun sebagai primary key.
Sehingga kolom dino_id pada tabel dino_class bisa kita jadikan sebagai foreign key kolom yang akan dihubungkan ke primary key pada tabel dino_profile.
Dengan menghubungkan foreign key dengan primary key maka tercipta suatu keterkaitan antara dua tabel, sehingga JOIN statement dapat digunakan.
Menampilkan data/record yang memiliki persamaan pada kedua tabel menggunakan INNER JOIN :
LEFT JOIN
Menampilkan semua record tabel kiri (dino_profile) yang memiliki persamaan dengan record pada tabel kanan(dino_class) + record tabel kanan yang memiliki persamaan dengan record tabel kiri.
Karena record tabel kiri ditampilkan seluruhnya sedangkan record tabel kanan tidak, maka jika ada record pada tabel kanan yang tidak memiliki persamaan dengan record pada tabel kiri, record akan berisi value NULL.
Syntax:
1SELECT column_name(s)2FROM table13LEFT JOIN table24ON table1.column_name = table2.column_name;
Contoh:
RIGHT JOIN
Bekebalikan dengan LEFT JOIN.
RIGHT JOIN akan menampilkan semua record tabel kanan (dino_class) yang memiliki persamaan dengan record pada tabel kiri(dino_profile) + record tabel kiri yang memiliki persamaan dengan record tabel kanan.
Karena record tabel kanan ditampilkan seluruhnya sedangkan record tabel kiri tidak, maka jika ada record pada tabel kiri yang tidak memiliki persamaan dengan record pada tabel kanan, record akan berisi value NULL.
Syntax:
1SELECT column_name(s)2FROM table13RIGHT JOIN table24ON table1.column_name = table2.column_name;
Contoh:
- Mengubah data tabel
Syntax:
1UPDATE table_name2SET column1 = value1, column2 = value2, ...3WHERE condition;
Contoh:
Ubah nama dino dari tricera ke ptero.
1UPDATE dino_profile2SET name = 'ptero'3WHERE dino_id=4;
- Menghapus data tabel
Syntax
1DELETE FROM table_name WHERE condition;
Contoh:
Hapus data dimana dino_id=4.
1DELETE FROM dino_profile WHERE dino_id=4;
- mengosongkan data pada tabel tanpa menghapus tabel
Syntax:
1TRUNCATE TABLE table_name;
Contoh:
1TRUNCATE TABLE dino_profile;
- Menghapus tabel
Syntax:
1DROP TABLE table_name;
Contoh:
1DROP TABLE dino_profile;
Table Relationship
Ada beberapa jenis bentuk relasi antara satu tabel dengan tabel yang lain :
- One to One Relationships
- One to Many and Many to One Relationships
- Many to Many Relationships
- Self Referencing Relationships (recursive)
Tetapi kita tidak akan membahasnya disini karena kita akan menggunakan Non-relational database MongoDB untuk menyimpan data dari aplikasi DinoTes.