MySQL Database

MySQL merupakan sebuah manajemen basis data menggunakan perintah dasar SQL atau structured query language. Keunggulan dari MySQL adalah mendukung berbagai bahasa pemrograman namun sulit dalam mengelola database berukuran besar. Ada 3 bentuk dasar dari SQL yaitu DDL atau data definition language (CREATE, ALTER, DROP), DML atau data manipulation language (INSERT, UPDATE, DELETE), dan DCL atau data control language (GRANT, REVOKE, COMMIT, ROOLBACK).

Bisa dikatakan bahwa MySQL itu seperti sebuah perangkat yang dapat membuat beberapa database. Biasanya setiap database itu milik sebuah aplikasi. Kemudian di dalam database ada beberapa tabel, misalnya tabel users, tabel cart, tabel transaction, dan tabel product. Data yang dalam bentuk JSON bisa dikirim ke dalam tabel tersebut. Sekarang akan mulai di instalasi MySQL ikuti langkah di bawah:

  1. Download mysql-installer-community di websitenya
  2. Dalam mendownload perhatikan sistem operasi dan bit-nya
  3. Kemudian install: 
    • MySQL Server, ikuti konfigurasi:
      • Config Type: Development Computer
      • Connectivity:
        • TCP/IP: 3306
      • Next
      • Use strong password encryption
      • Next
      • Isi password
      • Next
      • Biarkan default
      • Execute
    • MySQL Workbench
    • MySQL Shell
  4. Untuk dapat mengakses MySQL Server melalui command prompt maka perlu dilakukan konfigurasi pada Environment Variables > pada path tambahkan address bin yang ada pada MySQL server
  5. Buka command prompt as administration
  6. Gunakan syntax: mysql -u -root -p
  7. Masukkan password yang sudah di setting saat instalasi MySQL Server (ingat jika ada error cari solusinya misalnya di stackoverflow dan jika selesai mengubah tutup cmd kemudian buka kembali), kalau berhasil maka tampilan akan seperti di bawah:
sumber: anonim

Sekarang akan dicoba untuk membuat database di MySQL melalui command prompt, ikuti langkah di bawah:

  1. Buka command prompt dan login ke MySQL
  2. Lihat database sekarang dengan menggunakan query: show databases;
  3. Untuk membuat database gunakan query: CREATE DATABASE Kaukig;
  4. Kemudian lihat lagi database sekarang dengan query: show databases;
  5. Jika berhasil maka database akan terdaftar
  6. Sekarang buka text editor (VS Code) kemudian buat file query.sql dan gunakan query di bawah:
    • -- create table
    • CREATE TABLE users (
    •          id INT(5) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    •          username VARCHAR(30) NOT NULL,
    •          email VARCHAR(50),
    •          phone_number VARCHAR(12),
    •          password VARCHAR(10)
    • );
  7. Kemudian ke arah database dengan query: use kaukig;
  8. Kemudian copy-paste query yang sudah dibuat di text editor sebelumnya
  9. Untuk memastikan tabel berhasil di buat di dalam database gunakan query: show tables;
Setelah database dan tabel dibuat sekarang akan dilakukan operasi CRUD atau create, read, update, dan delete, ikuti langkah di bawah:
  1. Lakukan insert data dengan query:
    • INSERT INTO users(username, email, phone_number, password)
    • VALUES ("joko", "jokourno12@gmail.com", "085888203040", "121212");
  2. Lakukan read data dengan query:
    • SELECT * FROM users;
  3. Buat satu data lagi sebagai contoh:
    • INSERT INTO users(username, email, phone_number, password)
    • VALUES ("joko", "jokourno12@gmail.com", "085888203040", "121212");
  4. Lakukan update data dengan query:
    • UPDATE users
    • SET username="jokourno"
    • WHERE id=1;
  5. Lakukan read data dengan query:
    • SELECT * FROM users;
  6. Maka sekarang data berhasil diubah pada bagian username dengan kondisi di id=1
  7. Hati-hati dalam melakukan query, karena tidak ada fitur undo!
  8. Lakukan delete data dengan query:
    • DELETE FROM users
    • WHERE id=2;
  9. Lakukan read data dengan query:
    • SELECT * FROM users
  10. Maka sekarang data dengan id=2 sudah terhapus
Sekarang akan dilakukan pembacaan data sql melalui file orang lain:
  1. Buka halaman: https://github.com/jokourno/titanic
  2. Code > Download ZIP
  3. Buka MySQL Workbench lalu login melalui root dan gunakan password yang sebelumnya
  4. Jika belum ada koneksi root maka buat koneksi baru dengan tekan tombol + pada MySQL Connections dan gunakan konfigurasi:
    • Connection name: root
    • Username: root
    • Test Connection > masukkan passwordnya
  5. Buat database baru melalui cmd dengan query: CREATE DATABASE titanic;
  6. Pastikan sudah ada database dengan query: show databases;
  7. Untuk menampilkan database tersebut di Workbench pada SCHEMAS maka lakukan refresh
  8. Kemudian di Workbench klik pada database titanic lalu pada Tables klik kanan dan pilih Table Data Import Wizard
  9. Browse file titanic.csv > Create new table (beri nama passengers agar berbeda dengan nama databasenya) > next terus hingga finish
  10. Sekarang akan diakses melalui cmd, gunakan database titanic dengan query: use titanic;
  11. Kemudian lihat tabel dengan query: show tables;
  12. Maka akan muncul dalam database titanic tabel bernama passenger yang telah dibuat di workbench sebelumnya
  13. Untuk melihat data di tabel tersebut gunakan query: SELECT * FROM passengers;
  14. Maka akan muncul 891 data
  15. Mendapatkan data dengan kolom Name dan Sex gunakan query:
    • SELECT Name, Sex FROM passengers;
  16. Maka akan didapatkan 714 rows
  17. Mendapatkan data dengan kelas 1 gunakan query:
    • SELECT * FROM passengers WHERE Pclass=1;
  18. Maka akan didapatkan 186 rows
  19. Mendapatkan data dengan kelas 1 dan meninggal gunakan query:
    • SELECT * FROM passengers WHERE Pclass=1 AND Survived=0;
  20. Maka akan didapatkan 64 rows
  21. Mendapatkan data dengan kelas 1 atau kelas 3 dan meninggal gunakan query:
    • SELECT * FROM passengers WHERE (Pclass=1 OR Pclass=3) AND Survived=0;
  22. Maka akan didapatkan 334 rows
  23. Mendapatkan data dengan sorting berdasarkan umur gunakan query:
    • SELECT * FROM passengers ORDER BY Age;
    • Untuk melakukan sorting dengan descending gunakan query:
      • SELECT * FROM passengers ORDER BY Age DESC;
  24. Mendapatkan data penumpang yang selamat dan umur yang paling tua dengan sorting gunakan syntax:
    • SELECT * FROM passengers WHERE Survived=1 ORDER BY Age DESC;
  25. Maka akan didapatkan Barkworth dengan umur 80 tahun

Sampai di sini untuk menggunakan MySQL perlu dilakukan login terlebih dahulu kemudian untuk melihat database apa yang tersedia bisa menggunakan (query: show databases;), setelah database tersedia untuk memilih database yang akan digunakan bisa menggunakan (query: use <nama database>), untuk menampilkan tabel apa saja yang ada di dalam database tersebut maka gunakan (query: show tables;), dan untuk menampilkan data tabel yang akan digunakan bisa menggunakan (query: SELECT * FROM <nama tabel>).

SELECT Statement

Query SELECT digunakan untuk memilih kolom yang akan ditampilkan dari sebuah tabel. Pengambilan ini kadang semua kolom, kadang 1 kolom, kadang lebih dari 1 kolom bergantung kebutuhan. Ada juga hanya ingin mengambil beberapa baris data dari kolom atau hanya memanggil data yang unik. Perhatikan query di bawah:

  • SELECT * FROM ms_produk; -> menampilkan seluruh kolom dalam tabel ms_produk
  • SELECT nama_produk FROM ms_produk; -> hanya kolom nama_produk
  • SELECT nama_produk, harga FROM ms_produk; -> kolom nama_produk dan kolom harga
  • SELECT nama_produk, harga FROM ms_produk LIMIT 5; -> hanya 5 baris data
  • SELECT DISTINCT nama_customer, alamat FROM ms_pelanggan; -> hanya data unik

Untuk keperluan lain terkadang diperlukan prefix dan alias. Maksud prefix adalah penggunaan titik di antara nama tabel dan nama kolom setelah query SELECT. Sedangkan makna dari alias adalah mengganti nama baik itu tabel maupun kolom secara sementara. Perhatikan query di bawah:

  • SELECT ms_produk.kode_produk FROM ms_produk;
  • SELECT no_urut AS nomor, nama_produk AS nama FROM ms_produk;
  • SELECT no_urut nomor, nama_produk nama FROM ms_produk;
  • SELECT ms_produk.harga AS harga_jual FROM ms_produk;
  • SELECT * FROM ms_produk t2;
  • SELECT t2.nama_produk, t2.harga FROM ms_produk t2;

Dari query di atas terlihat bahwa prefix hanya menggunakan dot (.), sedangkan untuk membuat alias dapat menggunakan query AS dan spasi ( ).

sumber: live-session

Seperti namanya yaitu structure query language, SQL merupakan bahasa query. Maksud dari query adalah cara mengambil data sesuai kebutuhan. Analogi dari query dapat dibayangkan dengan transaksi seseorang yang akan membeli bakso, kemudian pembeli tersebut meminta kepada penjaja bakso agar tidak menggunakan toge dan sawi. Maka seketika penjaja bakso akan menyediakan bakso tanpa toge dan sawi ke pembeli tadi. Nah, cara pembeli meminta hingga mendapatkan apa yang dia butuhkan itu disebut query. SQL merupakan jantung dari seorang praktisi data.

Database ada 2 jenis, yaitu relasional dan non relasional. Biasanya SQL digunakan pada database yang bersifat relasional. Ciri dari database relasional adalah adanya key, yaitu primary dan foreign. Perusahaan besar biasanya memiliki beberapa database, di dalam database tersebut ada beberapa tabel, dan di dalam tabel tersebut ada beberapa kolom. Nah, kolom-kolom ini yang kemudian dimanupulasi oleh seorang ahli SQL baik itu digabungkan, ditampilkan kolom tertentu, dibuat alias, diaritmatikakan (+ - * /), sedemikian sehingga membentuk tabel baru sesuai kebutuhan analisis.

Sayangnya dalam melakukan analisis SQL masih sangat terbatas. Oleh sebab itu dibutuhkan bantuan bahasa pemrograman seperti Python dan R, hingga JavaScript. Fungsi dari bahasa pemrograman itu adalah untuk membantu memanipulasi data yang ada di tabel hasil query SQL. Muncul pertanyaan mengapa harus menggunakan bahasa pemrograman, sedangkan dengan excel atau minitab atau spss bisa dilakukan manipulasi data. Jawabannya adalah terkait big data, misalnya excel yang hanya mampu menampung jumlah baris maksimum 1.048.576 atau minitab yang hanya mampu menampung 10.000.000 row.

Bayangkan saja untuk penduduk Indonesia sebanyak 200 jutaan, maka untuk mengolah data setiap penduduk dengan satu variabel saja sudah tidak memungkinkan dengan excel atau minitab saja. Sehingga data harus disimpan dalam database seperti SQL untuk yang relasional. Data di dalam SQL akan terus bertambah dan tidak bermasalah selama kapasitas penyimpanan tersedia. Dan biasanya big data memiliki ukuran 1 terabyte atau 1000 gigabyte. Di sanalah digunakan bahasa pemrograman. Data itupun tidak bisa langsung diolah tetapi harus di cleansing dari missing value serta noise. Setelah bersih kadang ada permintaan tertentu dari Data Analyst untuk mengubah bentuknya atau transform data. Nah, tugas untuk melakukan penyiapan data ini dilakukan oleh Data Engineer. Data yang sudah siap akan digunakan oleh Data Analyst untuk dilakukan analisa kemudian lebih lanjut akan ditinjau oleh Data Scientist. Seorang dapat dikatakan sebagai Data Scientist jika bisa melakukan tugas data engineer, data analyst, dan membuat machine learning.

Tips mempercepat dan efisiensi query (utama pada cloud):

  1. Jangan gunakan * sebaiknya sebutkan kolom yang dibutuhkan
  2. Hindari penggunaan DISTINCT sebaiknya gunakan WHERE
  3. Implementasikan index pada database

JOIN Statement

JOIN statement ada beberapa jenis, yaitu INNER, LEFT, RIGHT, serta FULL OUTER. Join berarti menggabungkan, maksud menggabungkan dalam SQL adalah menggabungkan beberapa kolom dengan key dan kondisi tertentu. Yang pasti setiap melakukan JOIN statement perlu diketahui dulu key-nya. Key tersebut ditulis setelah ON, jadi semacam WHERE dalam SELECT statement. INNER digunakan untuk mengambil data yang key primary dan foreign-nya sama saja, sedangkan FULL OUTER digunakan untuk mengambil data yang key primary dan foreign-nya sama maupun berbeda. Pada LEFT yang difokuskan adalah key primary sehingga tampilkan seluruh data dari dua tabel dengan key primary dan jika key primary tidak ditemukan pada key foreign maka tetap tampilkan dengan value null, sebaliknya untuk RIGHT.

UNION Statement

Berbeda dengan JOIN yang menggabungkan data secara horizontal maka UNION menggabungkan data secara vertikal. Dalam penggabungan ini diperlukan syarat seperti jumlah kolom harus sama, urutan kolom harus sama, dan tipe data kolom harus sama antar tabel yang akan digabungkan. Pada UNION jumlah baris yang akan bertambah sedangkan pada JOIN jumlah kolom yang akan bertambah.


FROM-WHERE-SELECT-FUNCTION/AGGREGATION-HAVING-ORDER


Sebagai tambahan perlu diketahui perbedaan antara WHERE dan HAVING, yaitu WHERE digunakan sebelum agregasi atau fungsi sedangkan HAVING digunakan setelah agregasi atau fungsi. Seperti yang sudah dijelaskan sebelumnya database ada dua tipe yaitu relasional dan non relasional. Praktis database yang tidak relasional berarti tidak memiliki hubungan dengan database yang lain, sehingga yang memerlukan pengolahan lebih ekstra adalah database relasional. Pengolahan itu biayasanya dilakukan dengan bahasa query. Kemampuan bahasa query sangat vital dan merupakan jantung dari seorang praktisi data, baik itu data analyst, data engineer, dan data scientist. Khusus bagi data engineer yang membuat data lake, data warehouse, dan data marts maka kemahiran dalam menggunakan bahasa query menjadi sangat vital. Perlu dicatat data-data tersebut bersumber dari berbagai lokasi. Jadi sebetulnya seorang data engineer itu bertugas untuk menyiapkan data, yaitu dengan cara mengambil data dari berbagai sumber, melakukan identifikasi awal, melakukan cleansing, melakukan transformasi, hingga melakukan loading.




ref:
https://www.w3schools.com/mysql/
niagahoster.co.id
tantut-wahyu
bima-putra-pratama
https://www.ijstr.org/final-print/oct2015/Query-Optimization-Techniques-Tips-For-Writing-Efficient-And-Faster-Sql-Queries.pdf

Komentar