SQL - Structured Query Language
SQL adalah bahasa standar yang digunakan untuk mengelola dan memanipulasi data di dalam sistem basis data relasional. Materi SQL umumnya mencakup dasar-dasar seperti perintah DDL, DML, dan DCL.
Subtopik yang bisa dibahas dalam SQL: DDL (Data Definition Language): Digunakan untuk membuat dan mengubah struktur tabel dan database. Contoh perintah DDL adalah CREATE, ALTER, dan DROP.
CREATE TABLE Mahasiswa (
ID INT PRIMARY KEY,
Nama VARCHAR(50),
Jurusan VARCHAR(30),
TahunMasuk INT
);
Perintah ini membuat tabel Mahasiswa dengan kolom ID, Nama, Jurusan, dan TahunMasuk. DML (Data Manipulation Language): Digunakan untuk mengelola data di dalam tabel. Contoh perintah DML adalah INSERT, UPDATE, DELETE, dan SELECT.
INSERT INTO Mahasiswa (ID, Nama, Jurusan, TahunMasuk)
VALUES (1, 'Budi', 'Informatika', 2022);
Perintah ini menambahkan data mahasiswa baru dengan ID 1, Nama 'Budi', Jurusan 'Informatika', dan TahunMasuk 2022 ke tabel Mahasiswa. SELECT adalah perintah SQL yang paling umum digunakan untuk mengambil data dari tabel.
SELECT Nama, Jurusan
FROM Mahasiswa
WHERE TahunMasuk = 2022;
Perintah ini menampilkan nama dan jurusan mahasiswa yang masuk pada tahun 2022. DCL (Data Control Language): Mengelola hak akses pada data, misalnya perintah GRANT dan REVOKE.
GRANT SELECT ON Mahasiswa TO user1;
Perintah ini memberikan izin kepada user1 untuk melakukan operasi SELECT pada tabel Mahasiswa.
Topik Lanjutan: JOIN: Menggabungkan data dari dua atau lebih tabel berdasarkan kolom yang memiliki hubungan.
SELECT M.Nama, J.NamaJurusan
FROM Mahasiswa M
JOIN Jurusan J ON M.JurusanID = J.ID;
Perintah ini menggabungkan tabel Mahasiswa dengan tabel Jurusan berdasarkan kolom JurusanID. Subquery: Query di dalam query lain, berguna untuk query yang lebih kompleks.
SELECT Nama
FROM Mahasiswa
WHERE ID IN (SELECT MahasiswaID FROM Nilai WHERE MataKuliah = 'Basis Data' AND Nilai > 80);
Query ini menampilkan nama mahasiswa yang memiliki nilai lebih dari 80 di mata kuliah 'Basis Data'.
Penggunaan Fungsi String dalam SQL
Fungsi string dalam SQL berguna untuk memanipulasi data teks, yang sangat membantu saat bekerja dengan kolom teks.
- UPPER dan LOWER: Mengubah huruf dalam teks menjadi kapital atau huruf kecil.
SELECT UPPER(Nama) AS NamaKapital
FROM Mahasiswa;
Query ini mengembalikan nama mahasiswa dalam huruf kapital.
- CONCAT: Menggabungkan beberapa string menjadi satu.
SELECT CONCAT(NamaDepan, ' ', NamaBelakang) AS NamaLengkap
FROM Mahasiswa;
Menggabungkan nama depan dan belakang menjadi nama lengkap.
- SUBSTRING: Mengambil sebagian teks dari kolom string.
SELECT SUBSTRING(Nama, 1, 3) AS Inisial
FROM Mahasiswa;
Mengambil 3 huruf pertama dari nama setiap mahasiswa sebagai inisial.
- REPLACE: Mengganti teks tertentu dalam string dengan teks lain.
- Contoh:
SELECT REPLACE(Jurusan, 'Teknik', 'Sains') AS JurusanBaru
FROM Mahasiswa;
Mengganti teks 'Teknik' dengan 'Sains' di kolom jurusan.
Fungsi Tanggal dalam SQL
Fungsi tanggal digunakan untuk memanipulasi dan mengambil informasi dari data tanggal, yang sering kali diperlukan dalam analisis data berkala.
- CURRENT_DATE dan NOW(): Mengambil tanggal atau waktu saat ini.
SELECT Nama, CURRENT_DATE AS TanggalHariIni
FROM Mahasiswa;
Query ini menampilkan nama mahasiswa dan tanggal hari ini.
- DATE_ADD dan DATE_SUB: Menambah atau mengurangi periode waktu dari tanggal tertentu.
- Contoh:
SELECT Nama, DATE_ADD(TanggalLahir, INTERVAL 18 YEAR) AS TanggalDewasa
FROM Mahasiswa;
Menambahkan 18 tahun ke tanggal lahir untuk menentukan kapan seorang mahasiswa menjadi dewasa.
- DATEDIFF: Menghitung selisih hari antara dua tanggal.
SELECT Nama, DATEDIFF(NOW(), TanggalMasuk) AS LamaKuliah
FROM Mahasiswa;
Menghitung berapa lama seorang mahasiswa telah kuliah (dalam hari) sejak tanggal masuk.
- YEAR, MONTH, DAY: Mengambil komponen tertentu dari tanggal.
SELECT Nama, YEAR(TanggalMasuk) AS TahunMasuk
FROM Mahasiswa;
Mengambil tahun dari tanggal masuk mahasiswa.
Penggunaan View dalam SQL
View adalah query yang disimpan sebagai objek di database, dan dapat diperlakukan seperti tabel. View mempermudah dalam mengakses data yang sering dibutuhkan atau mengabstraksi query yang kompleks.
- Membuat View:
CREATE VIEW MahasiswaAktif AS
SELECT Nama, Jurusan, TahunMasuk
FROM Mahasiswa
WHERE Status = 'Aktif';
View ini menyimpan data mahasiswa yang berstatus aktif, sehingga Anda bisa mengakses data ini tanpa harus menulis query lengkap.
- Menggunakan View:
SELECT FROM MahasiswaAktif;
Query ini menampilkan semua data dari view `MahasiswaAktif`.
Transaksi dalam SQL
Transaksi berguna untuk memastikan bahwa semua perintah SQL dalam blok transaksi dijalankan dengan benar. Jika ada kegagalan, transaksi dapat dibatalkan.
- BEGIN dan COMMIT: Membuka dan menutup transaksi. Perubahan data hanya akan tersimpan jika transaksi berhasil dan di-commit.
- ROLLBACK: Mengembalikan data ke keadaan semula jika terjadi kesalahan.
BEGIN;
UPDATE Mahasiswa SET Jurusan = 'Teknik Informatika' WHERE ID = 1;
DELETE FROM Mahasiswa WHERE ID = 2;
COMMIT;
Transaksi ini mengubah jurusan mahasiswa dengan ID 1 dan menghapus mahasiswa dengan ID 2, lalu menyimpan perubahan.
- Jika ingin membatalkan:
ROLLBACK;
Membatalkan semua perubahan jika ada masalah atau kesalahan.
Stored Procedures
Stored procedures adalah sekumpulan perintah SQL yang disimpan dan dapat dijalankan kembali. Ini sering digunakan untuk tugas-tugas yang dilakukan berulang kali.
- Membuat Stored Procedure:
CREATE PROCEDURE TambahMahasiswa(IN Nama VARCHAR(50), IN Jurusan VARCHAR(30))
BEGIN
INSERT INTO Mahasiswa (Nama, Jurusan) VALUES (Nama, Jurusan);
END;
Stored procedure ini menambah data mahasiswa baru dengan parameter nama dan jurusan.
- Menjalankan Stored Procedure:
CALL TambahMahasiswa('Ani', 'Sistem Informasi');
Menambahkan data mahasiswa bernama Ani dengan jurusan Sistem Informasi.
Penggunaan Trigger
Trigger adalah perintah SQL yang otomatis dijalankan sebagai respons terhadap tindakan tertentu dalam database, seperti `INSERT`, `UPDATE`, atau `DELETE`.
- Membuat Trigger: Misalnya, mencatat log ketika ada perubahan data di tabel Mahasiswa.
CREATE TRIGGER logPerubahanMahasiswa
AFTER UPDATE ON Mahasiswa
FOR EACH ROW
BEGIN
INSERT INTO LogPerubahan (MahasiswaID, Perubahan, Waktu)
VALUES (OLD.ID, CONCAT('Nama berubah dari ', OLD.Nama, ' menjadi ', NEW.Nama), NOW());
END;
Trigger ini mencatat log perubahan nama di tabel `LogPerubahan` setelah ada update di tabel `Mahasiswa`.
Recursive Query dengan Common Table Expressions (CTE)
Common Table Expressions (CTE) memudahkan dalam membuat query sementara yang kompleks. CTE rekursif sering digunakan untuk data hirarki seperti struktur organisasi atau kategori produk.
- CTE Rekursif:
WITH RECURSIVE Atasan AS (
SELECT ID, Nama, AtasanID
FROM Karyawan
WHERE Nama = 'Budi'
UNION ALL
SELECT k.ID, k.Nama, k.AtasanID
FROM Karyawan k
INNER JOIN Atasan a ON k.ID = a.AtasanID
)
SELECT FROM Atasan;
Query ini menemukan semua atasan dari karyawan bernama Budi.
Analytic Functions
Analytic functions (seperti `ROW_NUMBER`, `RANK`, dan `DENSE_RANK`) berguna dalam analisis data untuk memberikan nomor urut atau peringkat terhadap hasil query.
- ROW_NUMBER: Memberikan nomor urut berdasarkan kondisi tertentu.
SELECT Nama, Jurusan, ROW_NUMBER() OVER (PARTITION BY Jurusan ORDER BY TahunMasuk) AS NoUrut
FROM Mahasiswa;
Memberi nomor urut pada setiap mahasiswa dalam jurusannya masing-masing, diurutkan berdasarkan tahun masuk.
Window Functions
Window functions memungkinkan analisis data dalam kelompok (window) tertentu tanpa mengubah hasil keseluruhan query.
- Menggunakan SUM dengan Window Function:
SELECT Nama, Jurusan, TahunMasuk,
SUM(TahunMasuk) OVER (PARTITION BY Jurusan) AS TotalTahunMasukJurusan
FROM Mahasiswa;
Query ini menghitung total tahun masuk mahasiswa per jurusan tanpa mengurangi hasil baris lainnya.
Dengan pembahasan ini, diharapkan pemahaman terhadap SQL akan semakin luas dan mampu mencakup kebutuhan untuk berbagai skenario, baik dalam manajemen data dasar maupun dalam analisis data yang lebih kompleks.