Home Laravel Belajar MySQL dan SQL dari Dasar untuk Pemula: Panduan Lengkap
Laravel

Belajar MySQL dan SQL dari Dasar untuk Pemula: Panduan Lengkap

Share
Share

Dalam pengembangan aplikasi web, data merupakan salah satu komponen yang sangat penting. Aplikasi toko online perlu menyimpan informasi produk dan pesanan, aplikasi sekolah membutuhkan data siswa dan nilai, sedangkan aplikasi manajemen keuangan harus mampu mencatat pemasukan serta pengeluaran. Agar data tersebut dapat disimpan, dikelola, dan diakses dengan baik, developer perlu memahami database dan bahasa yang digunakan untuk berinteraksi dengannya.

Salah satu teknologi database yang banyak digunakan dalam pengembangan web adalah MySQL. Sementara itu, SQL (Structured Query Language) merupakan bahasa yang digunakan untuk mengelola dan mengambil data dari database relasional.

Bagi kamu yang sedang belajar PHP atau ingin melanjutkan perjalanan menjadi Laravel developer, memahami MySQL dan SQL adalah langkah penting sebelum membangun aplikasi yang lebih kompleks.

Dalam panduan ini, kamu akan mempelajari pengertian database, perbedaan MySQL dan SQL, cara instalasi lingkungan belajar, sintaks SQL dasar, relasi antartabel, hingga latihan membuat database sederhana. Setiap materi dilengkapi contoh agar kamu dapat langsung mempraktikkannya.

1. Apa Itu Database?

Database atau basis data adalah kumpulan data yang disusun secara terstruktur sehingga dapat disimpan, dikelola, dicari, dan diperbarui dengan mudah.

Sebagai contoh, sebuah aplikasi toko online memiliki data berupa produk, pelanggan, transaksi, dan pembayaran. Jika seluruh informasi hanya disimpan dalam file teks tanpa struktur yang jelas, pengelolaan data akan menjadi sulit ketika jumlahnya semakin banyak.

Database membantu mengatasi masalah tersebut dengan menyediakan struktur penyimpanan yang lebih terorganisasi.

Contoh penggunaan database

Beberapa contoh penerapan database dalam kehidupan sehari-hari antara lain:

  • Aplikasi toko online: menyimpan produk, pelanggan, pesanan, dan pembayaran.
  • Sistem akademik: menyimpan data mahasiswa, dosen, mata kuliah, dan nilai.
  • Aplikasi keuangan: mencatat transaksi pemasukan dan pengeluaran.
  • Sistem inventaris: mengelola stok barang dan informasi pemasok.
  • Aplikasi perpustakaan: menyimpan data buku, anggota, dan peminjaman.

Dalam database relasional seperti MySQL, data umumnya disimpan dalam tabel. Setiap tabel memiliki kolom dan baris.

Misalnya, tabel products dapat memiliki kolom id, name, price, dan stock. Setiap baris mewakili satu produk, sedangkan setiap kolom menyimpan jenis informasi tertentu.

Struktur yang baik membuat data lebih mudah dicari, diperbarui, dan dihubungkan dengan data lain.

2. Apa Itu SQL dan MySQL?

Sebelum mulai menulis kode, kamu perlu memahami perbedaan SQL dan MySQL. Keduanya berkaitan erat, tetapi bukan hal yang sama.

Pengertian SQL

SQL (Structured Query Language) adalah bahasa yang digunakan untuk berkomunikasi dengan sistem database relasional. Dengan SQL, developer dapat membuat tabel, memasukkan data, membaca informasi, memperbarui data, dan menghapus data.

Contoh query SQL untuk mengambil seluruh data produk:

SELECT * FROM products;

Perintah tersebut meminta database menampilkan seluruh kolom dan baris dari tabel products.

SQL merupakan bahasa yang digunakan oleh berbagai sistem database relasional, meskipun setiap sistem dapat memiliki fitur atau sintaks khusus.

Pengertian MySQL

MySQL adalah sistem manajemen database relasional atau RDBMS (Relational Database Management System) yang menggunakan SQL untuk mengelola data.

MySQL banyak digunakan dalam aplikasi web karena mendukung penyimpanan data terstruktur, relasi antartabel, transaksi, dan integrasi dengan berbagai bahasa pemrograman.

Contohnya, PHP dapat terhubung ke MySQL untuk mengambil daftar produk dan menampilkannya pada halaman website.

Perbedaan SQL dan MySQL

AspekSQLMySQL
PengertianBahasa untuk mengelola database relasionalSistem manajemen database
FungsiMenulis perintah untuk mengolah dataMenyimpan dan mengelola data
BentukBahasa atau kumpulan perintahPerangkat lunak database
ContohSELECT, INSERT, UPDATEMySQL Server

Singkatnya, SQL adalah bahasa yang digunakan untuk memberikan instruksi, sedangkan MySQL adalah salah satu sistem yang menjalankan instruksi tersebut terhadap data.

3. Mengapa Pemula Perlu Belajar MySQL dan SQL?

Belajar SQL merupakan investasi keterampilan yang bermanfaat bagi siapa pun yang ingin berkarier dalam pengembangan perangkat lunak, khususnya pengembangan aplikasi berbasis web.

Berikut beberapa alasan mengapa kamu sebaiknya mempelajarinya.

Memahami cara aplikasi menyimpan data

Aplikasi bukan hanya tentang tampilan dan fitur. Sebagian besar aplikasi juga perlu menyimpan data agar informasi tetap tersedia setelah halaman ditutup atau pengguna keluar dari akun.

MySQL membantu aplikasi menyimpan informasi secara terstruktur dan mengambilnya kembali ketika diperlukan.

Menjadi fondasi belajar PHP dan Laravel

PHP dapat digunakan untuk menghubungkan aplikasi dengan database MySQL. Dalam Laravel, interaksi dengan database bisa dilakukan melalui beberapa pendekatan, seperti Query Builder dan Eloquent ORM.

Walaupun Laravel menyediakan fitur yang mempermudah pengelolaan database, pemahaman SQL tetap diperlukan agar kamu mengerti proses yang berlangsung di balik kode aplikasi.

Jika ingin mempelajari fondasi pemrograman sebelum masuk ke framework, baca juga panduan Belajar PHP dari Nol.

Membantu mengelola data dengan lebih efisien

Query SQL memungkinkan kamu mencari data berdasarkan kondisi tertentu, mengurutkan hasil, menghitung jumlah data, dan menggabungkan informasi dari beberapa tabel.

Kemampuan ini sangat berguna ketika aplikasi mulai memiliki ribuan atau bahkan jutaan baris data.

Mendukung berbagai bidang pekerjaan teknologi

SQL digunakan dalam pengembangan backend, analisis data, administrasi database, pengujian perangkat lunak, serta berbagai bidang lain yang melibatkan pengolahan informasi.

Dengan memahami SQL, kamu memiliki fondasi yang lebih kuat untuk mempelajari teknologi database berikutnya.

4. Persiapan Belajar MySQL untuk Pemula

Sebelum menulis query, siapkan lingkungan belajar terlebih dahulu. Kamu tidak perlu langsung menggunakan server produksi atau konfigurasi yang rumit.

Pilihan tools untuk belajar

Beberapa tools yang dapat digunakan adalah:

  • MySQL Community Server: menjalankan server database MySQL.
  • MySQL Workbench: membantu membuat dan menjalankan query melalui antarmuka grafis.
  • XAMPP: menyediakan paket pengembangan lokal yang biasanya mencakup Apache, PHP, dan MariaDB.
  • Laragon: lingkungan pengembangan lokal yang dapat membantu menjalankan PHP dan database pada Windows.
  • phpMyAdmin: antarmuka berbasis web untuk mengelola database MySQL atau MariaDB.

Perlu diperhatikan bahwa XAMPP umumnya menyertakan MariaDB, bukan MySQL Server. Keduanya memiliki banyak kesamaan dalam penggunaan dasar, tetapi tetap merupakan produk berbeda.

Langkah persiapan

Untuk mulai belajar, kamu dapat memilih salah satu dari dua pendekatan berikut.

Pilihan pertama: menggunakan MySQL Server.

  1. Unduh MySQL Community Server dari situs resmi MySQL.
  2. Instal server sesuai sistem operasi yang digunakan.
  3. Siapkan akun database untuk lingkungan lokal.
  4. Instal MySQL Workbench jika membutuhkan antarmuka visual.
  5. Hubungkan Workbench ke server lokal dan mulai menulis query.

Pilihan kedua: menggunakan XAMPP atau Laragon.

  1. Instal lingkungan pengembangan lokal.
  2. Jalankan layanan database.
  3. Buka phpMyAdmin jika tersedia.
  4. Buat database baru melalui antarmuka tersebut.
  5. Gunakan menu SQL untuk menjalankan query latihan.

Nama menu dan langkah instalasi dapat berbeda berdasarkan versi aplikasi. Untuk latihan, gunakan database lokal dan hindari memakai kredensial atau data produksi.

5. Memahami Struktur Database dan Tabel

Dalam database relasional, data biasanya diorganisasikan ke dalam tabel yang saling berhubungan.

Mari gunakan contoh database toko sederhana dengan tabel products.

idnamepricestock
1Keyboard25000010
2Mouse10000020
3Monitor15000005

Pada tabel tersebut:

  • id merupakan kolom identitas produk.
  • name menyimpan nama produk.
  • price menyimpan harga produk.
  • stock menyimpan jumlah stok.

Istilah penting yang perlu kamu pahami:

  • Database: tempat untuk mengorganisasi sekumpulan data.
  • Table: struktur berbentuk baris dan kolom untuk menyimpan data sejenis.
  • Column: atribut atau jenis informasi dalam tabel.
  • Row: satu baris data yang mewakili sebuah entitas.
  • Primary key: kolom atau kombinasi kolom yang mengidentifikasi setiap baris secara unik.
  • Foreign key: kolom yang menghubungkan data dengan kunci pada tabel lain.

Memahami struktur tersebut akan membantu kamu membuat database yang rapi dan mengurangi pengulangan informasi.

6. Cara Membuat Database MySQL

Langkah pertama dalam praktik SQL adalah membuat database untuk menyimpan tabel latihan.

Gunakan query berikut:

CREATE DATABASE toko_online;

Perintah CREATE DATABASE digunakan untuk membuat database baru bernama toko_online.

Setelah database dibuat, pilih database tersebut dengan perintah:

USE toko_online;

Perintah USE menentukan database yang menjadi target operasi selanjutnya pada koneksi tersebut.

Untuk melihat daftar database yang dapat diakses, kamu bisa menggunakan:

SHOW DATABASES;

Sementara itu, untuk melihat tabel dalam database yang sedang dipilih, gunakan:

SHOW TABLES;

Perlu diingat bahwa SHOW DATABASES dan SHOW TABLES merupakan perintah yang didukung MySQL. Tidak semua sistem database menggunakan sintaks yang sama.

7. Cara Membuat Tabel dengan CREATE TABLE

Setelah memiliki database, kamu dapat membuat tabel untuk menyimpan data produk.

CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    price DECIMAL(12, 2) NOT NULL,
    stock INT NOT NULL DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Mari pahami setiap bagian dari query tersebut.

  • id INT: membuat kolom identitas dengan tipe bilangan bulat.
  • AUTO_INCREMENT: membuat nilai ID bertambah otomatis saat data baru dimasukkan tanpa menentukan ID secara manual.
  • PRIMARY KEY: menetapkan kolom id sebagai identitas unik setiap produk.
  • name VARCHAR(100): menyimpan teks dengan panjang maksimum 100 karakter.
  • NOT NULL: mewajibkan kolom memiliki nilai, bukan NULL.
  • price DECIMAL(12, 2): menyimpan angka desimal yang cocok untuk nilai moneter.
  • stock INT DEFAULT 0: memberikan nilai stok awal nol jika nilai tidak ditentukan.
  • created_at TIMESTAMP: mencatat waktu pembuatan data dengan nilai awal berupa waktu saat ini.

Pemilihan tipe data harus disesuaikan dengan kebutuhan. Untuk nilai uang, DECIMAL biasanya lebih tepat daripada FLOAT karena representasi nilai desimalnya lebih terkontrol.

Untuk melihat struktur tabel yang telah dibuat, jalankan:

DESCRIBE products;

Dengan memahami struktur tabel sejak awal, kamu akan lebih mudah membangun database untuk proyek PHP maupun Laravel.

8. Memahami Tipe Data MySQL

Tipe data menentukan jenis nilai yang dapat disimpan dalam kolom. Pemilihan tipe data yang tepat membantu menjaga konsistensi dan efisiensi penyimpanan.

Berikut beberapa tipe data yang sering digunakan pemula.

Tipe dataKegunaanContoh
INTBilangan bulat25
BIGINTBilangan bulat dengan rentang lebih besarID berskala besar
VARCHAR(n)Teks dengan panjang bervariasiNama produk
TEXTTeks panjangDeskripsi artikel
DECIMAL(p,s)Angka desimal presisi tetapHarga
DATETanggal2026-10-11
DATETIMETanggal dan waktu2026-10-11 10:30:00
TIMESTAMPNilai waktu dengan perilaku khusus terkait zona waktuWaktu pencatatan
BOOLEANNilai logika, direpresentasikan sebagai TINYINT(1) pada MySQLTRUE atau FALSE

Contohnya, nama pelanggan lebih cocok menggunakan VARCHAR, sedangkan harga produk lebih tepat menggunakan DECIMAL.

Jangan menggunakan tipe data teks untuk seluruh kolom hanya karena lebih mudah. Tipe data yang sesuai akan membantu validasi, pengurutan, perhitungan, dan konsistensi data.

9. Cara Memasukkan Data dengan INSERT

Setelah tabel tersedia, masukkan data menggunakan perintah INSERT INTO.

INSERT INTO products (name, price, stock)
VALUES
    ('Keyboard', 250000, 10),
    ('Mouse', 100000, 20),
    ('Monitor', 1500000, 5),
    ('Headset', 350000, 8);

Query tersebut memasukkan empat produk ke dalam tabel products.

Kolom id tidak perlu diisi karena menggunakan AUTO_INCREMENT. Sementara itu, created_at akan memperoleh nilai awal berdasarkan definisi kolomnya.

Jika hanya ingin menambahkan satu produk, gunakan:

INSERT INTO products (name, price, stock)
VALUES ('Webcam', 450000, 6);

Biasakan menuliskan nama kolom secara eksplisit. Cara ini membuat query lebih mudah dipahami dan mengurangi risiko kesalahan ketika struktur tabel berubah.

10. Cara Mengambil Data dengan SELECT

SELECT merupakan salah satu perintah SQL yang paling sering digunakan. Perintah ini memungkinkan kamu mengambil informasi dari tabel.

Menampilkan seluruh data

SELECT * FROM products;

Tanda * berarti seluruh kolom yang tersedia dalam hasil query. Cara ini praktis untuk latihan, tetapi pada aplikasi nyata sebaiknya pilih kolom yang memang dibutuhkan.

Memilih kolom tertentu

SELECT name, price
FROM products;

Query tersebut hanya menampilkan nama dan harga produk.

Mengambil data berdasarkan kondisi

SELECT *
FROM products
WHERE price > 300000;

Klausa WHERE menyaring data sehingga hanya produk dengan harga di atas 300.000 yang ditampilkan.

Mengurutkan hasil

SELECT name, price
FROM products
ORDER BY price DESC;

ORDER BY mengurutkan hasil berdasarkan kolom tertentu. DESC berarti urutan menurun, sedangkan ASC berarti urutan menaik.

Membatasi jumlah hasil

SELECT *
FROM products
LIMIT 3;

Query tersebut menampilkan maksimal tiga baris. LIMIT berguna saat membuat daftar data atau menguji hasil query dengan dataset besar.

11. Menggunakan WHERE, AND, OR, dan LIKE

Untuk mengambil data secara lebih spesifik, kamu perlu memahami operator kondisi.

Operator perbandingan

Operator yang sering digunakan antara lain:

  • = untuk sama dengan.
  • != atau <> untuk tidak sama dengan.
  • > untuk lebih besar dari.
  • < untuk lebih kecil dari.
  • >= untuk lebih besar dari atau sama dengan.
  • <= untuk lebih kecil dari atau sama dengan.

Contoh mengambil produk dengan stok kurang dari sepuluh:

SELECT *
FROM products
WHERE stock < 10;

Menggabungkan kondisi dengan AND

SELECT *
FROM products
WHERE price > 200000
  AND stock > 0;

Kedua kondisi harus terpenuhi agar produk masuk ke hasil query.

Menggunakan OR

SELECT *
FROM products
WHERE name = 'Keyboard'
   OR name = 'Mouse';

Query ini mengambil produk yang namanya Keyboard atau Mouse.

Mencari teks dengan LIKE

Operator LIKE digunakan untuk mencari teks berdasarkan pola.

SELECT *
FROM products
WHERE name LIKE '%mouse%';

Tanda % mewakili nol atau lebih karakter. Contoh tersebut mencari nama produk yang mengandung kata mouse. Perilaku pencocokan huruf besar dan kecil dapat bergantung pada collation kolom.

Untuk pencarian berdasarkan awalan, gunakan:

SELECT *
FROM products
WHERE name LIKE 'Key%';

Dengan menguasai WHERE, AND, OR, dan LIKE, kamu sudah memiliki fondasi untuk membuat fitur pencarian dan penyaringan data.

12. Cara Memperbarui Data dengan UPDATE

Jika harga atau stok produk berubah, kamu dapat memperbarui datanya menggunakan UPDATE.

Contoh mengubah harga Mouse menjadi 120.000:

UPDATE products
SET price = 120000
WHERE name = 'Mouse';

Bagian SET menentukan nilai baru, sedangkan WHERE menentukan baris yang akan diperbarui.

Penting: selalu periksa kondisi WHERE sebelum menjalankan UPDATE. Jika kondisi tersebut dihilangkan, seluruh baris dalam tabel dapat terkena perubahan.

Contoh lain untuk menambah stok produk tertentu:

UPDATE products
SET stock = stock + 5
WHERE id = 1;

Query tersebut menambahkan lima unit ke stok produk dengan ID 1.

Untuk aplikasi nyata, pembaruan data sebaiknya dilakukan melalui proses yang memiliki validasi dan otorisasi yang sesuai.

13. Cara Menghapus Data dengan DELETE

Perintah DELETE digunakan untuk menghapus baris dari tabel.

Contoh menghapus produk berdasarkan ID:

DELETE FROM products
WHERE id = 4;

Query tersebut menghapus baris dengan ID 4.

Sama seperti UPDATE, penggunaan WHERE sangat penting. Tanpa kondisi yang tepat, perintah DELETE dapat menghapus semua baris dalam tabel.

Jika ingin menghapus seluruh isi tabel tetapi mempertahankan struktur tabelnya, sintaksnya adalah:

DELETE FROM products;

Jangan menjalankan perintah tersebut sembarangan, terutama pada database yang menyimpan data penting. Untuk latihan, gunakan database lokal dan biasakan memeriksa kondisi query sebelum mengeksekusinya.

14. Menghitung dan Mengelompokkan Data

SQL juga menyediakan fungsi agregasi untuk meringkas data tanpa harus menghitungnya satu per satu di kode aplikasi.

COUNT untuk menghitung jumlah baris

SELECT COUNT(*) AS total_produk
FROM products;

COUNT(*) menghitung jumlah baris yang memenuhi kondisi query.

SUM untuk menjumlahkan nilai

SELECT SUM(stock) AS total_stok
FROM products;

Query tersebut menghitung total stok dari seluruh produk.

AVG untuk menghitung rata-rata

SELECT AVG(price) AS rata_rata_harga
FROM products;

Hasilnya adalah nilai rata-rata harga produk yang tersedia pada tabel.

MIN dan MAX

SELECT
    MIN(price) AS harga_terendah,
    MAX(price) AS harga_tertinggi
FROM products;

Kedua fungsi tersebut membantu mengetahui harga terendah dan tertinggi.

Mengelompokkan data dengan GROUP BY

Misalnya, kamu memiliki tabel orders yang menyimpan transaksi berdasarkan status. Untuk menghitung jumlah pesanan berdasarkan status, gunakan:

SELECT status, COUNT(*) AS jumlah_pesanan
FROM orders
GROUP BY status;

GROUP BY mengelompokkan baris dengan nilai status yang sama, kemudian COUNT(*) menghitung jumlah setiap kelompok.

Fungsi agregasi sangat berguna untuk membuat laporan penjualan, ringkasan stok, dan dashboard analitik.

15. Memahami Relasi Antartabel

Dalam aplikasi yang berkembang, menyimpan seluruh informasi dalam satu tabel bukanlah pilihan terbaik. Database relasional memungkinkan data dibagi ke beberapa tabel dan dihubungkan menggunakan kunci.

Sebagai contoh, aplikasi toko online dapat memiliki tabel:

  • customers untuk data pelanggan.
  • orders untuk transaksi pesanan.
  • products untuk informasi produk.

Tabel orders dapat menyimpan customer_id untuk menunjukkan pelanggan yang membuat pesanan.

Contoh pembuatan tabel pelanggan:

CREATE TABLE customers (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(150) NOT NULL UNIQUE
);

Kemudian, buat tabel pesanan:

CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    customer_id INT NOT NULL,
    total DECIMAL(12, 2) NOT NULL DEFAULT 0,
    status VARCHAR(30) NOT NULL DEFAULT 'pending',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (customer_id) REFERENCES customers(id)
);

Pada contoh tersebut, customer_id merupakan foreign key yang mengacu pada customers.id.

Relasi ini membantu menjaga integritas data. Sebelum memasukkan pesanan, pelanggan yang dirujuk harus tersedia pada tabel customers.

Jenis relasi database

One-to-one: satu baris pada suatu tabel berhubungan dengan satu baris pada tabel lain.

Contoh: pengguna dengan satu profil tambahan yang disimpan pada tabel terpisah.

One-to-many: satu baris dapat berhubungan dengan banyak baris di tabel lain.

Contoh: satu pelanggan dapat memiliki banyak pesanan.

Many-to-many: banyak baris dari suatu tabel dapat berhubungan dengan banyak baris pada tabel lain.

Contoh: satu pesanan dapat berisi banyak produk dan satu produk dapat muncul dalam banyak pesanan. Relasi ini biasanya memerlukan tabel perantara, misalnya order_items.

Memahami relasi sangat penting karena hampir semua aplikasi bisnis menggunakan lebih dari satu tabel.

16. Menggabungkan Tabel dengan JOIN

JOIN digunakan untuk mengambil data dari beberapa tabel berdasarkan hubungan antardata.

Misalnya, kamu ingin menampilkan nama pelanggan beserta pesanan yang pernah dibuat.

SELECT
    customers.name,
    orders.id AS order_id,
    orders.total,
    orders.status
FROM customers
INNER JOIN orders
    ON customers.id = orders.customer_id;

Query tersebut menggabungkan tabel customers dan orders berdasarkan ID pelanggan.

Jenis JOIN yang umum

INNER JOIN hanya menampilkan baris yang memiliki pasangan pada kedua tabel.

LEFT JOIN menampilkan seluruh baris dari tabel sebelah kiri, termasuk baris yang tidak memiliki pasangan pada tabel kanan. Kolom dari tabel kanan akan berisi NULL jika tidak ada pasangan.

Contoh:

SELECT
    customers.name,
    orders.id AS order_id
FROM customers
LEFT JOIN orders
    ON customers.id = orders.customer_id;

Query ini dapat digunakan untuk melihat semua pelanggan, termasuk yang belum memiliki pesanan.

JOIN merupakan konsep penting ketika kamu membangun laporan, halaman detail transaksi, atau dashboard yang mengambil informasi dari berbagai tabel.

17. Memahami NULL dan Normalisasi Database

Dua konsep lain yang perlu dipahami sejak awal adalah NULL dan normalisasi.

Apa itu NULL?

NULL menandakan bahwa suatu nilai tidak tersedia atau belum diketahui. Nilai ini berbeda dari angka nol, teks kosong, maupun nilai FALSE.

Untuk mencari baris yang memiliki nilai kosong dalam arti NULL, gunakan:

SELECT *
FROM customers
WHERE email IS NULL;

Jangan menggunakan email = NULL, karena NULL harus diperiksa menggunakan IS NULL atau IS NOT NULL.

Apa itu normalisasi?

Normalisasi merupakan proses merancang struktur database agar pengulangan data yang tidak perlu dapat dikurangi dan konsistensi lebih mudah dijaga.

Bayangkan sebuah tabel transaksi yang berulang kali menyimpan nama, email, dan alamat pelanggan untuk setiap pesanan. Ketika pelanggan mengubah email, banyak baris mungkin perlu diperbarui.

Dengan memisahkan data pelanggan ke tabel customers dan transaksi ke tabel orders, informasi pelanggan dapat dikelola pada satu tempat dan dihubungkan melalui foreign key.

Untuk pemula, pahami prinsip dasarnya terlebih dahulu:

  • Simpan informasi yang sejenis dalam tabel yang sesuai.
  • Gunakan primary key untuk identitas setiap baris.
  • Hubungkan tabel dengan foreign key jika memang diperlukan.
  • Hindari menyimpan beberapa nilai berbeda dalam satu kolom.
  • Tentukan aturan konsistensi data sesuai kebutuhan aplikasi.

Normalisasi tidak berarti setiap informasi harus selalu dipisahkan ke sebanyak mungkin tabel. Struktur terbaik bergantung pada kebutuhan dan pola penggunaan data.

18. Menghubungkan PHP dengan MySQL

Setelah memahami SQL dasar, langkah berikutnya adalah menghubungkan database dengan PHP.

PHP menyediakan beberapa cara untuk berinteraksi dengan MySQL, termasuk PDO dengan driver MySQL dan MySQLi. Keduanya mendukung prepared statements yang membantu mencegah SQL injection ketika digunakan dengan benar.

Berikut contoh sederhana menggunakan PDO:

<?php

$host = '127.0.0.1';
$dbname = 'toko_online';
$username = 'app_user';
$password = 'your_local_password';

$dsn = "mysql:host=$host;dbname=$dbname;charset=utf8mb4";

try {
    $pdo = new PDO($dsn, $username, $password, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    ]);

    $stmt = $pdo->prepare(
        'SELECT id, name, price FROM products WHERE stock > :stock'
    );

    $stmt->execute(['stock' => 0]);

    $products = $stmt->fetchAll();

    foreach ($products as $product) {
        echo htmlspecialchars(
            $product['name'],
            ENT_QUOTES,
            'UTF-8'
        ) . ' - Rp' . $product['price'] . '<br>';
    }
} catch (PDOException $e) {
    // Catat detail error pada log server, bukan halaman publik.
    echo 'Terjadi kesalahan saat mengakses database.';
}

Contoh ini menggunakan prepared statement dengan parameter bernama :stock. Nilai parameter diberikan melalui execute(), bukan dengan menyambungkan input pengguna langsung ke teks SQL.

Pada aplikasi nyata, sesuaikan konfigurasi koneksi dengan lingkunganmu. Jangan menaruh kata sandi database produksi langsung dalam kode yang dibagikan ke publik. Gunakan konfigurasi lingkungan yang aman, batasi hak akses akun database, dan hindari menampilkan detail kesalahan internal kepada pengguna.

Kamu tidak harus langsung menguasai seluruh integrasi PHP dan MySQL dalam satu hari. Pastikan kamu memahami SELECT, INSERT, UPDATE, DELETE, serta relasi tabel sebelum membangun fitur yang lebih kompleks.

19. Hubungan MySQL dengan Laravel

Jika targetmu adalah menjadi Laravel developer, MySQL merupakan salah satu fondasi yang perlu dipahami.

Laravel mendukung interaksi dengan database melalui beberapa fitur utama.

Migration

Migration digunakan untuk mendefinisikan dan mengelola perubahan struktur database melalui kode.

Contohnya, membuat tabel produk melalui migration memungkinkan struktur tabel disimpan dalam proyek dan diterapkan kembali di lingkungan lain.

Query Builder

Query Builder menyediakan antarmuka Laravel untuk menyusun query dengan cara yang lebih ekspresif.

Contoh:

$products = DB::table('products')
    ->where('stock', '>', 0)
    ->orderBy('name')
    ->get();

Kode tersebut mengambil produk dengan stok lebih dari nol dan mengurutkan hasil berdasarkan nama.

Eloquent ORM

Eloquent memungkinkan developer bekerja dengan data menggunakan model dan relasi antarmodel.

Contoh:

$products = Product::where('stock', '>', 0)->get();

Kode tersebut mengasumsikan model Product sudah tersedia dan dikonfigurasi sesuai kebutuhan.

Meskipun Laravel mempermudah proses pengolahan data, SQL tetap penting untuk memahami filter, pengurutan, agregasi, relasi, dan performa query yang dihasilkan aplikasi.

Setelah menyelesaikan materi database ini, kamu dapat melanjutkan ke artikel pilar Roadmap Belajar Laravel dari Nol sampai Mahir untuk melihat urutan belajar berikutnya.

20. Kesalahan Umum Saat Belajar SQL

Ada beberapa kesalahan yang sering dilakukan pemula ketika mulai menggunakan SQL.

Lupa menambahkan WHERE

Query UPDATE atau DELETE tanpa kondisi yang tepat dapat memengaruhi seluruh baris pada tabel.

Solusi: periksa kondisi terlebih dahulu dan jalankan SELECT dengan kondisi yang sama untuk melihat baris yang akan terdampak.

Menggunakan SELECT * untuk semua kebutuhan

Mengambil seluruh kolom dapat membuat query membawa data yang sebenarnya tidak diperlukan.

Solusi: sebutkan kolom yang dibutuhkan, terutama pada aplikasi yang menangani data dalam jumlah besar.

Memilih tipe data yang tidak sesuai

Menyimpan harga sebagai teks dapat menyulitkan perhitungan dan pengurutan numerik.

Solusi: pilih tipe data berdasarkan makna dan karakteristik informasi.

Mengabaikan relasi antartabel

Menyimpan nama pelanggan berulang kali dalam setiap transaksi dapat menyebabkan inkonsistensi.

Solusi: pelajari primary key, foreign key, dan normalisasi dasar.

Menggabungkan input pengguna langsung ke query

Menyusun query dengan menggabungkan teks input pengguna dapat membuka celah SQL injection.

Solusi: gunakan prepared statements pada PHP dan mekanisme query aman dari framework yang digunakan.

Tidak memahami hasil query

Query yang berhasil dijalankan belum tentu menghasilkan data yang sesuai kebutuhan.

Solusi: periksa jumlah baris, kondisi filter, hasil JOIN, serta penanganan nilai NULL.

21. Latihan SQL untuk Pemula

Cara terbaik mempelajari SQL adalah dengan mempraktikkan konsepnya secara bertahap. Gunakan database toko_online dan tabel products yang telah dibuat sebelumnya.

Cobalah menyelesaikan latihan berikut:

  1. Tampilkan seluruh data produk.
  2. Tampilkan hanya nama dan harga produk.
  3. Cari produk dengan harga di atas Rp300.000.
  4. Urutkan produk dari harga tertinggi ke terendah.
  5. Cari produk dengan stok kurang dari sepuluh.
  6. Tambahkan satu produk baru menggunakan INSERT.
  7. Ubah stok produk tertentu menggunakan UPDATE.
  8. Hitung jumlah seluruh produk dengan COUNT.
  9. Hitung total stok menggunakan SUM.
  10. Buat tabel customers dan orders, kemudian tampilkan data pesanan beserta nama pelanggan menggunakan JOIN.

Setelah latihan dasar selesai, kembangkan mini project berupa sistem inventaris sederhana. Sistem tersebut dapat memiliki fitur menampilkan daftar barang, menambah produk, memperbarui harga, mengelola stok, dan mencari produk berdasarkan nama.

Pastikan setiap fitur memiliki validasi yang sesuai. Jika aplikasi menggunakan PHP, gunakan prepared statements dan jangan memberikan akses database lebih besar daripada yang dibutuhkan aplikasi.

22. Roadmap Belajar MySQL dan SQL untuk Pemula

Agar proses belajar lebih terarah, kamu dapat mengikuti urutan berikut.

Tahap 1 — Dasar database

Pahami database, tabel, baris, kolom, primary key, dan foreign key.

Tahap 2 — SQL dasar

Pelajari CREATE DATABASE, CREATE TABLE, INSERT, SELECT, UPDATE, dan DELETE.

Tahap 3 — Filter dan pengurutan

Latih WHERE, AND, OR, LIKE, ORDER BY, dan LIMIT.

Tahap 4 — Agregasi data

Pelajari COUNT, SUM, AVG, MIN, MAX, serta GROUP BY.

Tahap 5 — Relasi dan JOIN

Pahami one-to-one, one-to-many, many-to-many, foreign key, dan berbagai jenis JOIN.

Tahap 6 — Desain database

Pelajari normalisasi, constraint, tipe data, serta konsistensi informasi.

Tahap 7 — Integrasi dengan PHP

Latih koneksi database menggunakan PDO atau MySQLi, prepared statements, dan pengelolaan error.

Tahap 8 — Persiapan Laravel

Pelajari migration, seeder, Eloquent ORM, Query Builder, dan relasi antarmodel.

Kamu tidak harus menghafal seluruh sintaks sekaligus. Utamakan pemahaman konsep, praktik query, dan kemampuan menjelaskan alasan di balik setiap perintah.

23. FAQ Seputar Belajar MySQL dan SQL

Apakah SQL dan MySQL sama?

Tidak. SQL adalah bahasa untuk berinteraksi dengan database relasional, sedangkan MySQL adalah sistem manajemen database yang menggunakan SQL.

Apakah pemula harus belajar SQL sebelum PHP?

Tidak harus, tetapi memahami SQL sebelum membangun aplikasi PHP yang terhubung ke database akan sangat membantu. Kamu bisa mempelajari keduanya secara bertahap sambil membuat proyek sederhana.

Apakah MySQL gratis?

MySQL Community Edition tersedia secara gratis. Namun, pilihan edisi, lisensi, dan ketentuan penggunaan perlu diperiksa berdasarkan kebutuhan masing-masing proyek.

Berapa lama waktu untuk belajar SQL?

Waktunya bergantung pada pengalaman, intensitas latihan, dan target belajar. Kamu dapat mulai memahami query dasar dalam waktu relatif singkat jika rutin berlatih, sedangkan desain database, optimasi query, dan administrasi membutuhkan pembelajaran lebih lanjut.

Apakah Laravel harus menggunakan MySQL?

Tidak. Laravel mendukung beberapa sistem database, termasuk MySQL, PostgreSQL, SQLite, dan SQL Server, dengan dukungan yang bergantung pada versi dan konfigurasi. MySQL merupakan salah satu pilihan yang umum digunakan untuk aplikasi web.

Apakah SQL masih penting jika Laravel sudah memiliki Eloquent?

Ya. Eloquent mempermudah interaksi dengan database, tetapi pemahaman SQL tetap membantu kamu merancang relasi, memahami hasil query, menganalisis masalah, dan meningkatkan performa aplikasi.

Apa perbedaan DELETE, DROP, dan TRUNCATE?

DELETE menghapus baris dari tabel. DROP TABLE menghapus struktur tabel beserta datanya. TRUNCATE TABLE mengosongkan seluruh isi tabel dengan perilaku yang berbeda dari penghapusan baris satu per satu. Detail transaksi dan perilakunya bergantung pada sistem database dan jenis operasi. Gunakan ketiganya dengan hati-hati.

Kesimpulan

MySQL dan SQL merupakan fondasi penting dalam pengembangan aplikasi berbasis database. Dengan memahami konsep database, struktur tabel, tipe data, serta perintah seperti SELECT, INSERT, UPDATE, dan DELETE, kamu dapat mulai mengelola data secara terstruktur.

Setelah itu, pelajari filter data, fungsi agregasi, relasi antartabel, JOIN, dan normalisasi agar mampu membangun database yang lebih baik. Praktikkan semua konsep tersebut melalui proyek sederhana sebelum beralih ke integrasi PHP dan Laravel.

Bagi calon Laravel developer, memahami SQL akan memudahkan proses belajar migration, Query Builder, Eloquent ORM, serta relasi antarmodel.

Mulailah dari query sederhana, pahami setiap hasilnya, dan tingkatkan kesulitan latihan secara bertahap. Dengan latihan konsisten, kamu akan memiliki fondasi database yang lebih kuat untuk membangun aplikasi web yang terstruktur, aman, dan mudah dikembangkan.

Share

Leave a comment

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Related Articles
Laravel

Memahami Konsep MVC dalam Pengembangan Web: Panduan Lengkap untuk Pemula

Ketika mulai belajar pengembangan web, kamu mungkin pernah membuat aplikasi menggunakan PHP...

Laravel

Belajar OOP PHP untuk Pemula: Panduan Lengkap

Belajar OOP PHP untuk pemula dengan contoh class, object, inheritance, encapsulation, polymorphism,...

Laravel

Belajar PHP dari Nol: Panduan Lengkap untuk Pemula

Belajar PHP dari nol melalui panduan lengkap untuk pemula. Kenali sintaks PHP,...

roadmap belajar laravel
Laravel

Roadmap Belajar Laravel dari Nol sampai Mahir

: Pelajari roadmap belajar Laravel dari nol sampai mahir. Mulai dari PHP,...