Modul SQL
Modul SQL
1. Membuat Database
Perintah untuk membuat database baru pada MySQL adalah sebagai berikut:
CREATE DATABASE nama_database;
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.
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);
Perintah diatas memperbarui tabel barang untuk menambahkan field baru dengan nama diskon
setelah field stok.
Contoh menampilkan data field kode_barang, nama_barang, dan satuan di tabel barang
SELECT kode_barang, nama_barang, satuan FROM barang;
Contoh menampilkan semua data barang yang memiliki stok antara 50 sampai 100:
SELECT * FROM barang WHERE stok BETWEEN 50 AND 100;
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
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);
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
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")
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;
- Jika data sudah sesuai maka lakukan dan ingin disimpan maka lakukan COMMIT
COMMIT
- Jika data tidak ingin disimpan dan ingin dikembalikan ke data sebelumnya maka lakukan
ROLLBACK
ROLLBACK