Search by

    Terakhir diperbaharui: Mar 2, 2021

    MySQL

    MySQL 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 popularity

    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.

    1. Buka terminal atau console kemudian jalankan perintah berikut ini
    1$ sudo apt update

    Kemudian install mysql-server

    1$ sudo apt install mysql-server
    1. 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.

    1. 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:

    mysql status

    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

    SyntaxKeterangan
    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_name
    2operation_type;

    Contoh:

    Menambah kolom

    1ALTER TABLE dino_profile
    2ADD weight int;

    Mengubah datatype kolom

    1ALTER TABLE dino_profile
    2MODIFY COLUMN weight bigint;

    Menghapus kolom

    1ALTER TABLE dino_profile
    2DROP 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:

    select all

    • Menampilkan data tabel dengan filter

    Syntax:

    1SELECT column1, column2, ...
    2FROM table_name
    3WHERE condition;

    Contoh:

    select where clause

    Pada contoh di atas kita menampilkan data dino yang memiliki warna biru.

    • Menampilkan data dengan urutan yang ditentukan

    Syntax:

    1SELECT column1, column2, ...
    2FROM table_name
    3ORDER BY column1, column2, ... ASC|DESC;

    Contoh:

    order by

    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 table1
    3INNER JOIN table2
    4ON table1.column_name = table2.column_name;

    Contoh:

    Kita memiliki dua tabel:

    Tabel dino_profile

    dino profile table

    Tabel dino_class

    dino class table

    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.

    inner join diagram

    Menampilkan data/record yang memiliki persamaan pada kedua tabel menggunakan INNER JOIN :

    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.

    left join diagram

    Syntax:

    1SELECT column_name(s)
    2FROM table1
    3LEFT JOIN table2
    4ON table1.column_name = table2.column_name;

    Contoh:

    left join

    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.

    right join diagram

    Syntax:

    1SELECT column_name(s)
    2FROM table1
    3RIGHT JOIN table2
    4ON table1.column_name = table2.column_name;

    Contoh:

    right join

    • Mengubah data tabel

    Syntax:

    1UPDATE table_name
    2SET column1 = value1, column2 = value2, ...
    3WHERE condition;

    Contoh:

    Ubah nama dino dari tricera ke ptero.

    1UPDATE dino_profile
    2SET 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.