Data Manipulation Language menjadi materi utama modul ini, di mana kita akan mengisi basis data dengan data pelanggan, karyawan, tanggungan, departemen dan data lain yang terkait.
Agenda :
π’ Pengantar: persiapan (login freesql)
π’ Check Data Definition Language
π’ Login akun gmail (wajib bagi ketua kelompok)
π’ Data Manipulation Language
β Pengantar & Persiapan
Pertama akses terlebih dahulu https://freesql.com/, kemudian login dengan menekan tombol “Sign In” di pojok kanan atas. Simak tangkapan layar di bawah ini. Masukkan email dan password dan tekan tombol Sign In.


Kode verifikasi akan dikirimkan ke email.

Cek kembali email dan masukkan kode yang diberikan.

Masukkan kode ke input passcode pada formulir email verification.
Atau buka link berikut : https://playcode.io/sql-compiler karena keterbatasan freesql dalam menangani data definition language yang berulang.
β Check Data Definition Language
Bagi teman-teman yang belum menyelesaikan modul Data Definition Language harus menyelesaikan semua kode DDL terlebih dahulu. Jika dirasa kode yang dibuat memiliki banyak error lakukan penghapusan semua tabel yang ada.
DROP TABLE ULASAN_TOKO;
DROP TABLE HOBI_KARYAWAN;
DROP TABLE TANGGUNGAN;
DROP TABLE DETAIL_TRANSAKSI;
DROP TABLE TRANSAKSI;
DROP TABLE PRODUK;
DROP TABLE PELANGGAN;
DROP TABLE DEPARTEMEN CASCADE CONSTRAINTS;
DROP TABLE KARYAWAN CASCADE CONSTRAINTS;
Unduh kode pembuatan tabel atau kode DDL basis data di folder kelompok masing-masing. (Akses intip.in/kel[KELASBERAPA]basdat; ganti tanda [KELASBERAPA] dengan kelompok kelas) atau bisa klik link berikut untuk kode DDL dasar.
Buka kode dengan klik link di atas, maka akan terbuka tab baru. Salin semua kode dan tempel di freesql atau di sqliteonline. Jalankan command. Jika menggunakan playcode buka file kasir_ddl_playcode.sql salin semua kode dan tempel pada halaman playcode.io.


Pada tahap ini, basis data kita telah siap untuk diisi dengan baris per baris record data. Pastikan tidak ada error dan hitung jumlah tabel. Terdapat 9 tabel termasuk ulasan toko.

β Data Manipulation Language
Data Manipulation Language adalah sekumpulan perintah yang digunakan untuk mengelola dan memanipulasi data dalam database. DML memungkinkan pengguna untuk melakukan operasi seperti menambah, mengubah, menghapus, dan mencari data yang ada dalam tabel.
Perintah-perintah utama DDL:
- INSERT : digunakan untuk menambah data baru ke dalam tabel
- UPDATE : digunakan untuk memperbarui data yang sudah ada dalam tabel
- DELETE : digunakan untuk menghapus data dalam tabel
- SELECT : digunakan untuk mengambil atau membaca data dari satu atau lebih tabel dalam database
π» INSERT
Sintaks insert digunakan untuk memasukkan data baru. Sebelumnya, lihat tabel berikut untuk cara membaca kode yang disediakan di modul ini.
| WARNA | KETERANGAN |
| Biru | Template: merupakan format umum bagaimana kode harus ditulis. Ganti kata yang berbahasa indonesia sesuai kebutuhan. |
| Biru muda | Contoh: merupakan contoh penggunaan kode pada template menggunakan nama basis data, nama tabel atau nama kolom yang dibutuhkan. |
| Orange | Contoh kode namun tidak perlu dieksekusi. |
</> Memasukkan Data
INSERT INTO nama_tabel (nama_kolom1, nama_kolom2, β¦, nama_kolomn)
VALUES (value1, value2, β¦, valuen) ;
atau
INSERT INTO nama_tabel
VALUES (value1, value2, β¦, valuen)
-- Jika yang dimasukkan sesuai jumlah kolom dan urut sesuai urutan kolom pada struktur tabel
Mari kita coba masukkan data pelanggan berikut ke tabel PELANGGAN.
| Nama Kolom | Data |
| id_pelanggan | 1 |
| nama | Azzatalini Kiara |
| alamat | Sukolilo, Surabaya |
| no_hp | 081235676444 |
| azzatalinikia@gmail.com |
INSERT INTO PELANGGAN(ID_PELANGGAN, NAMA, ALAMAT, NO_HP, EMAIL)
VALUES (1, 'Azzatalini Kiara', 'Sukolilo, Surabaya', 081235676444, 'azzatalinikia@gmail.com');
Namun sebelumnya, buat file baru untuk DML. Lebih baik pisahkan file DDL dan DML. Lakukan klik pada Worksheet kemudian pilih menu “New File” > “PL/SQL”


Jika kita jalankan di freesql, maka akan muncul error. Error ini terjadi karena panjang karakter yang diperbolehkan kurang untuk email pelanggan. Selain itu, agar NO_HP tersimpan dengan baik kita akan memperpanjang panjang data INT ke NUMBER(12). Lihat error pada tangkapan layar di bawah ini untuk lebih detail.


Jenis data numerik dan teks memiliki perlakuan yang berbeda saat dimasukkan ke tabel menggunakan bahasa SQL. Gunakan tanda petik satu sebelum dan sesudah teks. Contoh nama Azzatalini Kiara harus diberi petik seperti berikut ‘Azzatalini Kiara’!
π₯ Quiz (30 menit)
Agar data di atas dapat dimasukkan ke tabel pelanggan maka ada beberapa perubahan yang harus kita lakukan. Mari uji pemahaman teman-teman dan jawab kuis pada tabel.
| Soal | Format/Template Code | |
|---|---|---|
| 1 | Ubah tipe kolom “email” pada tabel PELANGGAN menjadi VARCHAR(50) | ALTER TABLE nama_tabel MODIFY nama_kolom TIPE_DATA; atau ALTER TABLE nama_tabel ALTER nama_kolom TYPE tipe_data; |
| 2 | Isi tabel dengan kode di bawah ini:INSERT INTO PELANGGAN(ID_PELANGGAN, NAMA, ALAMAT, NO_HP, EMAIL) VALUES (1, 'Azzatalini Kiara', 'Sukolilo, Surabaya', 081235676444, 'azzatalinikia@gmail.com'); | |
| 3 | Isi tabel pelanggan yang sudah diperbaiki dengan data diri kalian. Gunakan id_pelanggan 2 | INSERT INTO nama_tabel (nama_kolom1, nama_kolom2, β¦, nama_kolomn) VALUES (value1, value2, β¦, valuen); |
| 4* | Isi tabel pelanggan yang sudah diperbaiki dengan data dummy tanpa menyebutkan kolomnya pada sintaks SQL dengan id_pelanggan 10 | INSERT INTO nama_tabel VALUES (value1, value2, β¦, valuen); |
| 5* | Isi tabel pelanggan yang sudah diperbaiki dengan data dummy dengan urutan kolom ID_PELANGGAN, NAMA, NO_HP, EMAIL, ALAMAT dengan id_pelanggan 11 | INSERT INTO nama_tabel (nama_kolom, nama_kolom, β¦, nama_kolom) VALUES (value, value, β¦, value); |
Keterangan :
- Ubah nama_tabel dengan βPELANGGANβ
- Ubah nama_kolom sesuai nama kolom yang diminta pada soal
- Ubah TIPE_DATA sesuai tipe data yang diminta pada soal
- Ubah value dengan isian data kalian
- Soal yang bertanda bintang wajib dikerjakan untuk kelas R2, sedangkan untuk kelas lain sifatnya tambahan namun tetap dikerjakan.
Buat kode di freesql untuk menjawab soal dan jalankan. Kemudian coba masukkan data yang tadi masih error (data pelanggan atas nama Azzatalini Kiara). Terakhir, tambahkan data pelanggan baru yang berisi data kalian sendiri. Jika berhasil pada nomor 1 sampai 3 di atas, lakukan sintaks berikut:
SELECT * FROM PELANGGAN;
Maka akan terlihat seperti pada tangkapan layar berikut ini.

Submit jawaban ke : https://forms.gle/xqCS7SfhFH2abhzG7
β Pengisian Seluruh Tabel
Kita akan isi keseluruhan tabel dengan data berikut.
β Tabel PELANGGAN
INSERT INTO PELANGGAN(id_pelanggan, nama, alamat, no_hp, email)
VALUES (3, 'Yukino Uza', 'Merjosari, Malang', 089696322777, 'yukino@gmail.com');
INSERT INTO PELANGGAN
VALUES (4, 'Dendy Ananda', 'Manyar, Surabaya', 082345676333, 'dendy@hotmail.com');
INSERT INTO PELANGGAN
VALUES (5, 'Lee Kwang So', 'Tlogomas, Malang', 089345676111, 'leekwang@rocket.com');
INSERT INTO PELANGGAN
VALUES (6, 'Dinda Sari', 'Blimbing, Malang', 089555673134, 'dindasa@gmail.com');
Cek data pada tabel pelanggan menggunakan sintaks:
SELECT * FROM PELANGGAN;

Data yang ditampilkan tidak selalu urut karena berhubungan dengan beberapa aspek seperti optimasi query, himpunan, logical order dan penyimpanan fisik pada perangkat.
β Tabel PRODUK
Pada tabel produk juga terdapat kesalahan yaitu tidak adanya kolom harga. Mari kita tambahkan sekaligus memasukkan data produk.
ALTER TABLE PRODUK ADD harga INT;
-- data produk
INSERT INTO PRODUK VALUES (1, 'Donat Kentang', 'Donat dari kentang', 5000);
INSERT INTO PRODUK VALUES (2, 'Bolu Kukus', 'Bolu dikukus', 25000);
INSERT INTO PRODUK VALUES (3, 'Bolen Pisang', 'Bolen isi pisang', 5000);
INSERT INTO PRODUK VALUES (4, 'Bakpia', 'Bakpia isi kacang hijau', 35000);
β Tabel DEPARTEMEN
Pada tabel DEPARTEMEN kita menuliskan nama kolom yang akan diisi karena jumlah pada tiap baris data yang dimasukkan tidak sama dengan jumlah kolom yang tersedia. Hal tersebut karena kita belum bisa mengisi data manajer jika tabel KARYAWAN belum terisi. Tabel DEPARTEMEN memiliki 4 kolom, dan untuk saat ini kita belum punya NIK karyawan yang menjadi manajer.
-- data departemen
INSERT INTO DEPARTEMEN(ID_DEPARTEMEN, NAMA_DEPARTEMEN, DESKRIPSI_DEPARTEMEN)
VALUES(1, 'HR', 'Human Resource Development');
INSERT INTO DEPARTEMEN(ID_DEPARTEMEN, NAMA_DEPARTEMEN, DESKRIPSI_DEPARTEMEN)
VALUES(2, 'PRODUKSI', 'Tim Produksi Roti');
INSERT INTO DEPARTEMEN(ID_DEPARTEMEN, NAMA_DEPARTEMEN, DESKRIPSI_DEPARTEMEN)
VALUES(3, 'PELAYANAN', 'Tim Kasir');
β Tabel KARYAWAN
Berikut data karyawan salin dan tempel di freesql. Perhatikan bahwa kita dapat memasukkan beberapa baris data sekaligus tanpa mengulang sintaks INSERT INTO.
-- data karyawan
INSERT INTO KARYAWAN
VALUES
('1111111111111111', 'Kim Ji Won', 'P', 'Korea Selatan', TO_DATE('19-10-1992', 'DD-MM-YYYY'), TO_DATE('1-11-2024', 'DD-MM-YYYY'), 1),
('1111111111111112', 'Park Shin Hye', 'L', 'Korea Selatan', TO_DATE('19-10-1998', 'DD-MM-YYYY'), TO_DATE('01-11-2023', 'DD-MM-YYYY'), 1),
('2222222222222221', 'John Lee', 'L', 'Korea Selatan', TO_DATE('02-3-2023', 'DD-MM-YYYY'), TO_DATE('2-11-2024', 'DD-MM-YYYY'), 2),
('2222222222222222', 'Alex Kim', 'L', 'Korea Selatan', TO_DATE('7-10-2023', 'DD-MM-YYYY'), TO_DATE('3-7-2020', 'DD-MM-YYYY'), 2),
('2222222222222223', 'Park Chen', 'L', 'Cina', TO_DATE('7-12-1960', 'DD-MM-YYYY'), TO_DATE('10-10-2008', 'DD-MM-YYYY'), 2),
('3333333333333331', 'Dewi Kadita', 'P', 'Indonesia', TO_DATE('21-8-1980', 'DD-MM-YYYY'), TO_DATE('10-10-1998', 'DD-MM-YYYY'), 3),
('3333333333333332', 'Dewi Arimbi', 'P', 'Indonesia', TO_DATE('19-9-2000', 'DD-MM-YYYY'), TO_DATE('4-8-2024', 'DD-MM-YYYY'), 3),
('3333333333333333', 'Dewi Rati', 'P', 'Indonesia', TO_DATE('9-6-1998', 'DD-MM-YYYY'), TO_DATE('8-5-2008', 'DD-MM-YYYY'), 3);
β Tabel HOBI_KARYAWAN
Salin, tempel dan jalankan kode berikut untuk mengisi tabel HOBI_KARYAWAN.
-- data hobi
INSERT INTO HOBI_KARYAWAN
VALUES('Akting', '1111111111111111'),
('Menulis', '1111111111111111'),
('Menyanyi', '1111111111111112'),
('Memasak', '3333333333333333'),
('Menyulam', '3333333333333332'),
('Karaoke', '3333333333333332'),
('Menulis', '2222222222222223'),
('Karaoke', '2222222222222221'),
('Menulis', '2222222222222221'),
('Melukis', '3333333333333333');
β Tabel TRANSAKSI & DETAIL_TRANSAKSI
Berikut merupakan pembelian yang dilakukan pelanggan. Untuk memasukkan data ke kedua tabel, pertama kita input data ke tabel TRANSAKSI terlebih dahulu. Jika nomor transaksi yang menjadi PRIMARY KEY sudah ada pada tabel TRANSAKSI, maka kita bisa menggunakannya untuk menjadi FOREIGN KEY pada tabel DETAIL_TRASAKSI (yang merupakan tabel karena adanya relasi many-to-may).
| No | Pelanggan | Detail Transaksi | Kasir |
|---|---|---|---|
| 1 | Dendy Ananda | 2 Bakpia 1 Bolus Kukus 12 Bolen Pisang | Dewi Kadita |
| 2 | Azzatalini Kiara | 5 Donat Kentang 6 Bolen Pisang | Dewi Kadita |
| 3 | Dendy Ananda | 5 Bolen Pisang 2 Donat Kentang | Dewi Kadita |
| 4 | Dendy Ananda | 1 Bolu Kukus | Dewi Kadita |
| 5 | Lee Kwang So | 12 Bolen Pisang | Dewi Rati |
| 6 | Azzatalini Kiara | 3 Bakpia 2 Bolu Kukus | Dewi Rati |
| 7 | Lee Kwang So | 12 Donat Kentang | Dewi Arimbi |
Namun sebelumnya, ada fitur pada AUTO_INCREMENT yang akan kita implementasi pada tabel TRANSAKSI. AUTO_INCREMENT digunakan untuk menghasilkan pengenal unik untuk baris baru dalam tabel. Atribut ini sering diterapkan pada kolom kunci utama.
-- jika menggunakan oracle PL SQL
CREATE SEQUENCE SEQ_TRANS
START WITH 1
INCREMENT BY 1
MINVALUE 1
NOCACHE
NOCYCLE;
ALTER SEQUENCE SEQ_TRANS restart start with 1;
ALTER TABLE TRANSAKSI MODIFY (NOMOR_TRANSAKSI DEFAULT SEQ_TRANS.NEXTVAL);
-- jika menggunakan playcode postgresql
ALTER TABLE TRANSAKSI
ALTER COLUMN nomor_transaksi ADD GENERATED ALWAYS AS IDENTITY;
Mari kita inputkan data transaksi dan produk yang dibeli tiap pelanggan. Sebelumnya kita harus mengetahui NIK pelanggan dan NIK karyawan pada transaksi pertama.
| No | Pelanggan | Detail Transaksi | Kasir |
|---|---|---|---|
| 1 | Dendy Ananda | 2 Bakpia 1 Bolus Kukus 12 Bolen Pisang | Dewi Kadita |
SELECT id_pelanggan FROM PELANGGAN WHERE nama = 'Dendy Ananda';
Hasilnya adalah id_pelanggan = 4
SELECT nik_karyawan FROM KARYAWAN WHERE nama = 'Dewi Kadita';
Sedangkan kasir yang melayani memiliki nik = 3333333333333331
-- Masukkan data transaksi
INSERT INTO TRANSAKSI (tgl_transaksi, id_pelanggan, nik_karyawan)
VALUES (TO_DATE('1-12-2024', 'DD-MM-YYYY'), 4, 3333333333333331);
Kita tidak akan menyimpan harga total dari jumlah yang dibeli pada tiap barang (tidak menghitung jumlah barang * harga barang). Maka kolom harga_total_item dihapus.
-- Drop kolom harga_total_item
ALTER TABLE DETAIL_TRANSAKSI DROP COLUMN harga_total_item;
-- Masukkan data produk yang dibeli ke tabel DETAIL_TRANSAKSI
INSERT INTO DETAIL_TRANSAKSI
VALUES (1,4,2), (1,2,1), (1,3,12);
Kita lanjutkan untuk semua transaksi.
-- Transaksi 2
INSERT INTO TRANSAKSI (tgl_transaksi, id_pelanggan, nik_karyawan) VALUES (TO_DATE('1-12-2024', 'DD-MM-YYYY'), 1, '3333333333333331');
INSERT INTO DETAIL_TRANSAKSI
VALUES (2,1,5), (2,3,6);
-- Transaksi 3
INSERT INTO TRANSAKSI (tgl_transaksi, id_pelanggan, nik_karyawan) VALUES (TO_DATE('2-12-2024', 'DD-MM-YYYY'), 4, '3333333333333331');
INSERT INTO DETAIL_TRANSAKSI
VALUES (3,3,5), (3,1,2);
-- Transaksi 4
INSERT INTO TRANSAKSI (tgl_transaksi, id_pelanggan, nik_karyawan) VALUES (TO_DATE('3-12-2024', 'DD-MM-YYYY'), 4, '3333333333333331');
INSERT INTO DETAIL_TRANSAKSI
VALUES (4,2,1);
-- Transaksi 5
INSERT INTO TRANSAKSI (tgl_transaksi, id_pelanggan, nik_karyawan) VALUES (TO_DATE('3-12-2024', 'DD-MM-YYYY'), 5, '3333333333333333');
INSERT INTO DETAIL_TRANSAKSI
VALUES (5,3,12);
-- Transaksi 6
INSERT INTO TRANSAKSI (tgl_transaksi, id_pelanggan, nik_karyawan) VALUES (TO_DATE('3-12-2024', 'DD-MM-YYYY'), 1, '3333333333333333');
INSERT INTO DETAIL_TRANSAKSI
VALUES (6,4,3), (6,2,2);
-- Transaksi 7
INSERT INTO TRANSAKSI (tgl_transaksi, id_pelanggan, nik_karyawan) VALUES (TO_DATE('5-12-2024', 'DD-MM-YYYY'), 5, '3333333333333332');
INSERT INTO DETAIL_TRANSAKSI
VALUES (7,1,12);
β Penyimpanan Code
Lakukan penyimpanan pada kode yang sudah dibuat. Pertama, klik SQL Worksheet yang berada di pojok kiri atas editor. Pilih “Save”

Isikan nama file dan klik tombol “Save”.

β Pengumpulan Hasil
Upload hasil yang sudah dikerjakan ke folder kelompok masing-masing. Mahasiswa yang akan mengunggah harus login gmail terlebih dahulu. Silahkan ikuti langkah berikut untuk mengunduh hasil kode yang telah dibuat dan yang akan diunggah ke folder kelompok.
- Klik gambar file dengan tanda panah ke bawah
.
2. Simpan file di komputer, kemudian upload ke Google Drive.



Leave a Reply