MODUL SQL
1. Membuat Database
Perintah untuk membuat database baru pada MySQL adalah sebagai berikut:
CREATE DATABASE nama_database;
Pada studi kasus diatas perintah database
CREATE DATABASE mm_grosir_nama_kalian;
2. Membuat Tabel
Perintah dasar untuk membuat tabel pada MySQL adalah sebagai berikut:
CREATE TABLE nama_table (
nama_field1 TYPE_DATA(panjang) OPTIONAL_ATTRIBUTES,
nama_field2 TYPE_DATA(panjang)
);
Setelah tipe data, kita dapat menentukan atribut opsional lainnya untuk setiap kolom, beberapa
atribut opsional yang dapat ditambahkan pada suatu field diantaranya:
NOT NULL - Setiap baris harus berisi nilai untuk kolom itu, nilai null tidak diperbolehkan
DEFAULT value - Tetapkan nilai default yang ditambahkan saat tidak ada nilai lain yang
dilewatkan
UNSIGNED - Digunakan untuk tipe angka, membatasi data yang disimpan ke angka positif
dan nol
AUTO INCREMENT - MySQL secara otomatis meningkatkan nilai field sebesar 1 setiap kali
record baru ditambahkan
PRIMARY KEY - Digunakan untuk mengidentifikasi baris dalam tabel secara unik. Kolom
dengan pengaturan PRIMARY KEY seringkali merupakan nomor ID, dan sering digunakan
dengan AUTO_INCREMENT
Sebagai contoh pada studi kasus diatas terdapat tabel barang dengan struktur seperti gambar
berikut:
Perintah untuk membuat tabel seperti pada struktur diatas:
CREATE TABLE barang (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
kode_barang VARCHAR(50),
produk_id INT(11) UNSIGNED,
nama_barang VARCHAR(100),
satuan VARCHAR(10),
harga_jual DOUBLE(0,0),
stok INT(5),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP
);
Buat perintah yang sama untuk masing-masing tabel sesuai soal diatas, yaitu membuat tabel
barang, produk, detail_pembelian, pembelian, pemasok, detail_penjualan, penjualan,
tampung_bayar, users, dan pelanggan.
3. Menambahkan Foreign Key
Foreign Key adalah sebuah column atau field yang berfungsi sebagai kunci tamu dimana kunci
ini akan kita gunakan untuk relasi antar tabel. Dari kedua tabel diatas dapat dilihat adanya relasi
antara tabel barang dan produk. Field produk_id di tabel barang memiliki relasi dengan tabel
produk dengan field id. Foreign key pada tabel barang adalah field produk_id yang merujuk pada
field id di tabel produk.
Perintah untuk menambahkan foreign key:
ALTER TABLE barang ADD FOREIGN KEY (produk_id) REFERENCES produk(id);
Lakukan perintah yang sama untuk setiap field yang memiliki foreign key dengan tabel lainnya.
4. Menambahkan Field Baru di Table
Perintah untuk menambahkan field baru di suatu tabel:
ALTER TABLE nama_tabel ADD COLUMN nama_field_baru TYPE_DATA(jumlah);
Contoh menambahkan field baru dengan nama diskon di tabel barang:
ALTER TABLE barang ADD COLUMN diskon DOUBLE(0,0) AFTER stok;
Perintah diatas memperbarui tabel barang untuk menambahkan field baru dengan nama diskon
setelah field stok.
5. Menambahkan Data ke Tabel
Perintah dasar untuk menambahkan data pada suatu tabel:
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
Menambahkan 2 data pada tabel produk
INSERT INTO produk (nama_produk)
VALUES ("Sembako"), ("Peralatan Mandi dan Mencuci");
Menambahkan 2 data pada tabel barang
INSERT INTO barang (kode_barang, produk_id, nama_barang, satuan, harga_jual,
stok)
VALUES ("BS0001", 1, "Minyak Goreng Bimilo", "Liter", 25000, 100),
("BS0002", 1, "Beras Pulen Cianjur", "Kg", 15000, 50);
6. Menampilkan Data di Tabel
Menampilkan semua data di suatu tabel
SELECT * FROM nama_tabel;
Menampilkan data beberapa field di suatu tabel
SELECT fiedl1, field2 FROM nama_tabel;
Contoh menampilkan data field kode_barang, nama_barang, dan satuan di tabel barang
SELECT kode_barang, nama_barang, satuan FROM barang;
7. Menggunakan Perintah WHERE
Pernyataan WHERE akan memfilter hasil baris data. Hanya record/data yang memenuhi saja
yang akan ditampilkan/eksekusi.
Contoh menampilkan semua data barang yang memilik stok kurang dari atau sama dengan 50:
SELECT * FROM barang WHERE stok <= 50;
8. Menggunakan Perintah BETWEEN
Kondisi between ini adalah dimana suatu nilai pada data di tabel akan di bandingkan dengan
range nilai tertentu.
Contoh menampilkan semua data barang yang memiliki stok antara 50 sampai 100:
SELECT * FROM barang WHERE stok BETWEEN 50 AND 100;
9. Mengubah Data di Tabel (Update)
Perintah sederhana untuk melakukan update data di tabel:
UPDATE nama_tabel
SET nama_field = nilai_baru
WHERE kondisi;
Contoh mengubah data di tabel barang jika stok lebih dari sama dengan 100 dan harga_jual
minimal 25000 maka diskon diisi 10:
UPDATE barang
SET diskon = 10
WHERE stok >= 100 AND harga_jual >= 25000
10. Membuat Stored Procedure
Stored procedure adalah salah satu objek routine yang tersimpan pada database MySQL dan
dapat digunakan untuk menggantikan berbagai kumpulan perintah yang sering kita gunakan,
seperti misalkan menampilkan row dari table dengan filter tertentu.
Penulisan Stored Procedure
DELIMITER $$
CREATE PROCEDURE nama_procedure()
BEGIN
kode sql;
END$$
DELIMITER ;
Contoh membuat Stored Procedure dengan nama barang_harga_murah untuk menampilkan
data barang yang memiliki harga kurang dari dan sama dengan 15000
DELIMITER $$
CREATE PROCEDURE barang_harga_murah()
BEGIN
SELECT * FROM barang WHERE harga_jual <= 15000;
END$$
DELIMITER ;
Memanggil Stored Procedure
Call barang_harga_murah();
11. Membuat Function
Function merupakan fungsi yang tersimpan dalam database server MySQL. Fungsinya berbeda
dengan Stored Procedure, fungsi memiliki nilai kembalian sedangkan Stored Procedure tidak.
Penulisan Function
DELIMITER $$
CREATE FUNCTION nama_function () RETURNS TYPE_DATA DETERMINISTIC
BEGIN
DECLARE value TYPE_DATA;
kode sql;
RETURN value;
END$$
DELIMITER ;
Contoh membuat function untuk menentukan total bayar berdasarkan sub total di tabel detail
penjualan:
DELIMITER $$
CREATE FUNCTION total_bayar (id INT) RETURNS DOUBLE DETERMINISTIC
BEGIN
DECLARE total DOUBLE;
SELECT SUM(sub_total) AS total_bayar INTO total FROM detail_penjualan
WHERE penjualan_id = id;
RETURN total;
END$$
DELIMITER ;
Memanggil Function
SELECT total_bayar(1);
12. Membuat Logging dan Trigger
Trigger digunakan untuk memanggil satu atau beberapa perintah SQL secara otomatis sebelum
atau sesudah terjadi proses INSERT, UPDATE atau DELETE dari suatu tabel.
Trigger sering digunakan, antara lain untuk:
Melakukan update data otomatis jika terjadi perubahan. Contohnya adalah dalam
sistem penjualan, jika dientri barang baru maka stock akan bertambah secara otomatis.
Trigger dapat digunakan untuk mengimplementasikan suatu sistem log. Setiap terjadi
perubahan, secara otomatis akan menyimpan ke tabel log.
Trigger dapat digunakan untuk melakukan validasi dan verifikasi data sebelum data
tersebut disimpan.
Pada contoh kasus ini kita akan membuat Trigger untuk sistem log. Tabel log berfungsi
merupakan tabel yang berfungsi untuk mencatat setiap perubahan data pada tabel tertentu.
1. Pilih tabel yang akan dibuatkan log, contoh tabel penjualan, lalu klik menu Trigger
2. Klik Insert Trigger.
Trigger Insert
Nama Trigger TAMBAH
Tabel penjualan
Waktu AFTER
Kejadian INSERT
SQL INSERT INTO logging (aksi) VALUES ("Insert pada tabel
penjualan")
Trigger Update
Nama Trigger UPDATE
Tabel penjualan
Waktu AFTER
Kejadian UPDATE
SQL INSERT INTO logging (aksi) VALUES ("Update pada tabel
penjualan")
Trigger Delete
Nama Trigger HAPUS
Tabel penjualan
Waktu AFTER
Kejadian DELETE
SQL INSERT INTO logging (aksi) VALUES ("Delete pada tabel
penjualan")
13. Membuat View
View dapat didefenisikan sebagai tabel virtual. Tabel ini bisa berasal dari tabel lain, atau
gabungan dari beberapa tabel.
Perintah dasar View
CREATE VIEW nama_view AS SELECT kode_sql;
Contoh membuat View untuk menampilkan data barang yang memiliki stok dibawah 100
CREATE VIEW stok_sedikit AS SELECT A.id, nama_barang, stok FROM barang A
INNER JOIN produk B ON A.produk_id = B.id
WHERE stok < 100;
Memanggil View
SELECT * FROM stok_sedikit;
14. Perintah Commit dan Rollback
Transaction Control Language (TCL) adalah perintah SQL yang berhubungan dengan transaksi di
database.
Perintah TCL antara lain:
a. Perintah COMMIT digunakan untuk menyimpan transaksi secara permanen di database.
Saat melakukan perintah DML seperti INSERT, UPDATE, DELETE traksaksi sebenarnya belum
dilakukan secara permanen. Artinya operasi tersebut masih bisa di rollback / di batalkan.
Jika ingin menyimpan transaksi sehingga tidak dapat di rollback kita gunakan perintah
COMMIT.
Contoh membuat perintah COMMIT ketika insert data ke tabel barang:
- Untuk memulai COMMIT harus dimulai dengan perintah
START TRANSACTION
- Selanjutnya tuliskan kode sql untuk melakukan insert data
INSERT INTO barang (kode_barang, produk_id, nama_barang, satuan,
harga_jual, stok) VALUES ("BS0003", 1, "Gula Pasir", "Liter", 10000,
10);
- Jika data sudah sesuai maka lakukan dan ingin disimpan maka lakukan COMMIT
COMMIT
b. Perintah ROLLBACK digunakan untuk mengembalikan database ke bentuk awal / COMMIT
terakhir. Perintah COMMIT dan ROLLBACK saling berkaitan.
Contoh membuat perintah ROLLBACK ketika insert data ke tabel barang:
- Untuk memulai COMMIT harus dimulai dengan perintah
START TRANSACTION
- Selanjutnya tuliskan kode sql untuk melakukan insert data
INSERT INTO barang (kode_barang, produk_id, nama_barang, satuan,
harga_jual, stok) VALUES ("BS0003", 1, "Gula Pasir", "Liter", 10000,
10);
- Jika data tidak ingin disimpan dan ingin dikembalikan ke data sebelumnya maka lakukan
ROLLBACK
ROLLBACK