LAPORAN TUGAS PRATIKUM
QUERY MYSQL DML (DATA MANIPULATION LANGUAGE) DAN DCL (DATA CONTROL LANGUAGE)
Diajukan Untuk memenuhi Salah Satu Tugas / Praktikum Mata Kuliah Sistem Basis Data
Dosen Pengampu : Sukrina Herman S.T., M.T.
Disusun Oleh :
Helgi Nur Allamsyah [ 202404010 ]
POLITEKNIK ENJINERING INDORAMA TEKNOLOGI REKAYASA PERANGKAT LUNAK
TAHUN 2024/2025
Memasuki MariaDB
Syntax:mariadb -u root -p Hasil:
Gambar 1. Tampilan Login MariaDB Deskripsi:
Perinah mariadb -u root -p digunakan untuk masuk ke dalam server MariaDB sebagai pengguna root. Opsi -p akan meminta pengguna untuk memasukkan password yang telah ditentukan sebelumnya. Jika berhasil, akan tampil prompt MariaDB [(none)]> yang menandakan Koneksi ke server berhasil dilakukan
1. Membuat dan Menampilakn Daftar Database
Syntax:CREATE DATABASE siapah;
SHOW DATABASES;
Hasil:
Gambar 2. Tampilan setelah membuat dan menampilkan database Deskripsi:
Perintah CREATE DATABASE siapah; digunakan untuk membuat sebuah database baru dengan nama siapah. Setelah database berhasil dibuat, perintah SHOW DATABASES; digunakan untuk menampilkan semua database yang tersedia di server MariaDB. Jika berhasil, database siapah akan
muncul dalam daftar bersama dengan database default lainnya seperti mysql, information_schema, dll.
2. Membuat Tabel pengumpulan_sampah dalam Database siapah
Syntax:USE siapah;
CREATE TABLE pengumpulan_sampah ( id BIGINT PRIMARY KEY,
nama_user VARCHAR(100),
role_user ENUM('warga', 'petugas'), nama_kategori VARCHAR(50), nama_sampah VARCHAR(100), satuan VARCHAR(20),
jumlah DECIMAL(10, 2), poin_per_satuan INT, total_point INT,
tanggal_pengumpulan DATE );
SHOW TABLES;
DESC siapah.pengumpulan_sampah;siapah;
Hasil:
Gambar 3. Tabel pengumpulan_sampah berhasil dibuat
Gambar 4. Tampilan struktur serta daftarnya Deskripsi:
Perintah USE siapah; digunakan untuk memilih database siapah sebagai konteks aktif sebelum membuat tabel.
Selanjutnya, CREATE TABLE pengumpulan_sampah (...) digunakan untuk membuat tabel dengan nama pengumpulan_sampah yang menyimpan data aktivitas pengumpulan sampah oleh pengguna. Struktur tabel terdiri dari berbagai kolom seperti id, nama_user, role_user (menggunakan tipe ENUM), jumlah, total_point, hingga tanggal pengumpulan.
Perintah SHOW TABLES; menampilkan semua tabel yang ada dalam database siapah, dan DESC siapah.pengumpulan_sampah; digunakan untuk menampilkan struktur dari tabel tersebut, termasuk nama kolom, tipe data, dan kunci primer.
3. Membuat Tabel pengumpulan_sampah dalam Database siapah
Syntax:INSERT INTO siapah.pengumpulan_sampah (
id, nama_user, role_user, nama_kategori, nama_sampah, satuan, jumlah, poin_per_satuan, total_point, tanggal_pengumpulan
)
VALUES
(1, 'Hans', 'warga', 'Anorganik', 'Botol Plastik', 'kg', 2.00, 10, 20, '2025-06-17'), (2, 'Sari', 'warga', 'Organik', 'Daun Kering', 'kg', 1.50, 5, 8, '2025-06-16'), (3, 'Dimas', 'petugas', 'B3', 'Baterai Bekas', 'pcs', 5, 20, 100, '2025-06-15'), (4, 'Rina', 'warga', 'Anorganik', 'Kardus', 'kg', 3.25, 8, 26, '2025-06-14'),
(5, 'Andi', 'warga', 'Organik', 'Sisa Sayuran', 'kg', 1.80, 5, 9, '2025-06-13'), (6, 'Mega', 'warga', NULL, 'Kaleng Bekas', 'kg', 2.50, 12, 30, '2025-06-12');
SELECT * FROM siapah.pengumpulan_sampah;
Hasil:
Gambar 5. Data berhasil ditambahkan ke tabel
Gambar 6. Tampilan dalam hasil query SELECT Deskripsi:
Perintah INSERT INTO digunakan untuk menambahkan enam baris data ke tabel pengumpulan_sampah. Data mencakup berbagai atribut seperti nama pengguna, peran (role_user), jenis sampah, jumlah, poin per satuan, total poin, dan tanggal pengumpulan.
Salah satu nilai nama_kategori pada data user Mega menggunakan NULL, menunjukkan bahwa kategori tidak diisi.
Setelah data dimasukkan, perintah SELECT * FROM siapah.pengumpulan_sampah; digunakan untuk menampilkan seluruh isi tabel. Hasilnya menunjukkan data yang berhasil ditambahkan, memungkinkan pengguna untuk memverifikasi bahwa setiap kolom telah terisi sesuai dengan struktur tabel yang telah dibuat.
4. Memperbarui Data pada Tabel pengumpulan_sampah
Syntax:UPDATE siapah.pengumpulan_sampah
SET siapah.pengumpulan_sampah.nama_kategori = 'Anorganik'
WHERE siapah.pengumpulan_sampah.id = 6;
SELECT * FROM siapah.pengumpulan_sampah;
Hasil:
Gambar 7. Data pada kolom nama_kategori dengan id = 6 berhasil diperbarui Deskripsi:
Perintah UPDATE digunakan untuk memperbarui nilai pada kolom nama_kategori di tabel pengumpulan_sampah. Pada kasus ini, baris dengan id = 6 (yang sebelumnya memiliki nama_kategori NULL) diubah menjadi 'Anorganik'.
Perintah WHERE sangat penting di sini karena menentukan baris mana yang akan diperbarui. Tanpa WHERE, semua baris akan terdampak.
Setelah eksekusi UPDATE, perintah SELECT * dijalankan untuk menampilkan seluruh isi tabel. Dari hasil tersebut, dapat dipastikan bahwa data pada baris id = 6 kini telah memiliki nama_kategori yang sesuai.
5. Menghapus Data pada Tabel pengumpulan_sampah
Syntax:DELETE FROM siapah.pengumpulan_sampah WHERE siapah.pengumpulan_sampah.id = 4;
SELECT * FROM siapah.pengumpulan_sampah Hasil:
Gambar 8. Data dengan id = 4 berhasil dihapus dan tidak lagi muncul saat SELECT Deskripsi:
Perintah DELETE FROM digunakan untuk menghapus data dari tabel pengumpulan_sampah.
Dalam kasus ini, data yang dihapus adalah baris dengan id = 4, yaitu milik user Rina yang sebelumnya menyetorkan Kardus.
Kondisi WHERE siapah.pengumpulan_sampah.id = 4 memastikan bahwa hanya baris dengan ID tersebut yang dihapus. Jika WHERE dihilangkan, seluruh data dalam tabel akan terhapus.
Setelah perintah DELETE, perintah SELECT * digunakan kembali untuk menampilkan seluruh data pada tabel dan memverifikasi bahwa baris dengan ID 4 sudah tidak ada lagi.
6. Menampilkan Data Berdasarkan Kondisi (WHERE)
Syntax:SELECT * FROM siapah.pengumpulan_sampah;
SELECT * FROM siapah.pengumpulan_sampah
WHERE siapah.pengumpulan_sampah.role_user = 'petugas';
Hasil:
Gambar 9. Tabel pengumpulan_sampah sebelum difilter
Gambar 10. Hasil filter data dengan role_user = 'petugas' Deskripsi:
Perintah SELECT * FROM siapah.pengumpulan_sampah; digunakan untuk menampilkan seluruh data yang ada di tabel tanpa filter apapun.
Kemudian, perintah kedua SELECT * FROM siapah.pengumpulan_sampah WHERE role_user = 'petugas'; digunakan untuk menyaring dan hanya menampilkan baris data di mana kolom role_user bernilai 'petugas'. Dari hasil ini, hanya pengguna dengan peran petugas yang ditampilkan.
Klausa WHERE sangat berguna dalam menyeleksi data berdasarkan kondisi tertentu untuk keperluan analisis atau pelaporan yang lebih spesifik.
7. Mengurutkan Data Berdasarkan Kolom (ORDER BY)
Syntax:SELECT * FROM siapah.pengumpulan_sampah
ORDER BY siapah.pengumpulan_sampah.nama_sampah ASC;
SELECT * FROM siapah.pengumpulan_sampah
ORDER BY siapah.pengumpulan_sampah.nama_sampah DESC;
Hasil:
Gambar 11. Data diurutkan berdasarkan nama_sampah secara ascending (A-Z)
Gambar 12. Data diurutkan berdasarkan nama_sampah secara descending (Z-A) Deskripsi:
Perintah ORDER BY digunakan untuk mengurutkan hasil query berdasarkan kolom tertentu. Pada kasus ini, kolom yang digunakan adalah nama_sampah.
a. Perintah ORDER BY nama_sampah ASC akan mengurutkan data berdasarkan abjad dari A ke Z (ascending).
b. Sedangkan ORDER BY nama_sampah DESC akan mengurutkan dari Z ke A (descending).
Fungsi ini berguna untuk menampilkan data secara terstruktur dan memudahkan pembacaan atau pencarian informasi tertentu.
8. Mengelompokkan Data Berdasarkan nama_user (GROUP BY)
Syntax:SELECT * FROM siapah.pengumpulan_sampah GROUP BY siapah.pengumpulan_sampah.nama_user;
Hasil:
Gambar 13. Hasil pengelompokan data berdasarkan kolom nama_user Deskripsi:
Perintah GROUP BY digunakan untuk mengelompokkan baris data yang memiliki nilai sama pada kolom tertentu. Dalam hal ini, data dikelompokkan berdasarkan nilai dari kolom nama_user.
Namun, perlu diperhatikan bahwa ketika menggunakan GROUP BY tanpa fungsi agregasi seperti COUNT(), SUM(), atau AVG(), maka hasil yang ditampilkan adalah satu baris per nilai unik pada kolom nama_user, dan nilai-nilai pada kolom lain akan dipilih secara acak dari salah satu baris yang termasuk dalam grup tersebut.
Untuk penggunaan GROUP BY yang optimal, sebaiknya dikombinasikan dengan fungsi agregat jika kita ingin menghitung, menjumlahkan, atau mengambil informasi statistik dari kelompok tersebut.
9. Membuat User Baru dan Memberikan Hak Akses (GRANT)
Syntax:CREATE USER 'hans'@'localhost' IDENTIFIED BY 'hans123';
GRANT SELECT, INSERT, DELETE ON siapah.pengumpulan_sampah TO 'hans'@'localhost';
SHOW GRANTS FOR 'hans'@'localhost';
Hasil:
Gambar 14. User hans berhasil dibuat dan diberikan hak akses, ditampilkan melalui SHOW GRANTS
Deskripsi:
a. Perintah CREATE USER 'hans'@'localhost' IDENTIFIED BY 'hans123';
digunakan untuk membuat user baru bernama hans dengan password hans123. User ini hanya dapat mengakses server dari localhost.
b. Perintah GRANT SELECT, INSERT, DELETE ON siapah.pengumpulan_sampah TO 'hans'@'localhost';
memberikan hak akses terbatas kepada user tersebut, yaitu hanya bisa melakukan SELECT, INSERT, dan DELETE pada tabel pengumpulan_sampah di database siapah.
c. SHOW GRANTS FOR 'hans'@'localhost';
digunakan untuk menampilkan daftar hak akses (privileges) yang dimiliki oleh user tersebut.
Hasilnya akan menunjukkan perintah GRANT yang setara dengan hak akses yang diberikan sebelumnya.
Penggunaan GRANT penting dalam pengelolaan keamanan database agar setiap user hanya dapat melakukan aksi sesuai kebutuhan.
10. Mencabut Hak Akses dari User (REVOKE)
Syntax:
REVOKE DELETE ON siapah.pengumpulan_sampah FROM 'hans'@'localhost';
SHOW GRANTS FOR 'hans'@'localhost';
Hasil:
Gambar 15. User hans berhasil dibuat dan diberikan hak akses, ditampilkan melalui SHOW GRANTS
Deskripsi:
Perintah REVOKE digunakan untuk mencabut hak akses tertentu dari seorang user. Dalam praktik ini:
a. Perintah REVOKE DELETE ON siapah.pengumpulan_sampah FROM 'hans'@'localhost';
digunakan untuk mencabut hak akses DELETE yang sebelumnya telah diberikan kepada user hans terhadap tabel pengumpulan_sampah pada database siapah.
b. Setelah perintah dieksekusi, SHOW GRANTS FOR 'hans'@'localhost'; dijalankan kembali untuk memverifikasi perubahan. Hasilnya akan menunjukkan bahwa hak akses DELETE sudah tidak lagi dimiliki oleh user tersebut, namun akses SELECT dan INSERT masih tetap tersedia.
Penggunaan REVOKE penting untuk memastikan bahwa akses terhadap data tetap terkontrol, terutama ketika kebutuhan atau peran user mengalami perubahan.
11. Menyimpan Perubahan Data dengan Transaksi (COMMIT)
Syntax:START TRANSACTION;
INSERT INTO siapah.pengumpulan_sampah (
id, nama_user, role_user, nama_kategori, nama_sampah, satuan, jumlah, poin_per_satuan, total_point, tanggal_pengumpulan
)
VALUES (
6, 'Rina', 'warga', 'Anorganik', 'Kardus', 'kg', 3.25, 8, 26, '2025-06-14' );
COMMIT;
Hasil:
Gambar 16. Data dengan id = 6 berhasil dimasukkan setelah transaksi dikonfirmasi dengan COMMIT
Deskripsi:
a. START TRANSACTION; digunakan untuk memulai sebuah transaksi. Ini memungkinkan serangkaian perintah SQL dilakukan secara atomic — yaitu, dijalankan semua atau tidak sama sekali.
b. Perintah INSERT INTO digunakan untuk menambahkan data baru ke tabel pengumpulan_sampah. Data yang dimasukkan adalah milik user Rina yang menyetorkan Kardus.
c. COMMIT; digunakan untuk menyimpan secara permanen perubahan yang dilakukan dalam transaksi ke database.
Jika perintah COMMIT tidak dijalankan, maka perubahan yang telah dilakukan dalam transaksi tidak akan diterapkan secara permanen, dan bisa dibatalkan dengan ROLLBACK.
12. Membatalkan Perubahan Data dengan Transaksi (ROLLBACK)
Syntax:START TRANSACTION;
INSERT INTO siapah.pengumpulan_sampah (
id, nama_user, role_user, nama_kategori, nama_sampah, satuan, jumlah, poin_per_satuan, total_point, tanggal_pengumpulan
)
VALUES (
7, 'Rina', 'warga', 'Anorganik', 'Kardus', 'kg', 3.25, 8, 26, '2025-06-14' );
SELECT * FROM siapah.pengumpulan_sampah;
ROLLBACK;
SELECT * FROM siapah.pengumpulan_sampah;
Hasil:
Gambar 17. Data dengan id = 7 muncul setelah perintah INSERT dalam transaksi aktif
Gambar 18. Data tersebut hilang kembali setelah ROLLBACK dijalankan Deskripsi:
a. START TRANSACTION; memulai sebuah blok transaksi baru.
b. Kemudian dilakukan perintah INSERT untuk menambahkan baris baru ke dalam tabel, yaitu user Rina dengan data pengumpulan kardus.
c. Perintah SELECT * pertama menunjukkan bahwa data telah sementara muncul di tabel, karena masih dalam konteks transaksi yang belum dikonfirmasi.
d. ROLLBACK; digunakan untuk membatalkan semua perubahan yang dilakukan sejak START TRANSACTION. Ini akan menghapus kembali baris yang baru saja ditambahkan.
e. Perintah SELECT * kedua menunjukkan bahwa data dengan id = 7 sudah tidak ada lagi, karena transaksi dibatalkan sebelum dikomit.
Fitur ini sangat bermanfaat ketika kita ingin menguji atau membatalkan proses sebelum menyimpan perubahan ke dalam database secara permanen.