This repository is created to learn and practice basic SQL commands.
The goal is to understand and implement common SQL operations such as CREATE
, INSERT
, SELECT
, and simple queries for data analysis.
- MySQL / PostgreSQL – for executing SQL queries
- MySQL Workbench / pgAdmin – optional GUI tools for running queries
- CSV Dataset (optional) – sample dataset for practice
-
Membuat Database :
CREATE DATABASE belajar_query;
-
Membuat Table kedalam Database :
-
Tabel buku :
CREATE TABLE TB_BUKU ( ID_BUKU varchar(255) PRIMARY KEY, ISBN varchar(255), JUDUL_BUKU varchar(255), ID_PENERBIT varchar(255), ID_PENGARANG varchar(255), HARGA_BUKU varchar(225), STOK VARCHAR(225) );
-
Tabel Penerbit :
CREATE TABLE TB_PENERBIT ( ID_PENERBIT varchar(255) PRIMARY KEY, NAMA_PENERBIT varchar(255), ALAMAT varchar(255), TELPON varchar(255) );
-
Tabel Pengarang :
CREATE TABLE TB_PENGARANG ( ID_PENGARANG varchar(255) PRIMARY KEY, NAMA_PENGARANG varchar(255), JENIS_KELAMIN varchar(255) );
-
-
Menampilkan Tabel :
show tables;
-
Input data menggunakan INSERT kedalam table yang sudah dibuat tadi :
-
Tabel Buku
INSERT INTO tb_buku (id_buku, ISBN, JUDUL_BUKU, ID_PENERBIT, ID_PENGARANG, HARGA_BUKU, STOK) VALUES ('BK001', '978-979-29-1234-1', 'PENGANTAR BASIS DATA', 'PNB01', 'PNG03', '75,000', '3'), ('BK002', '978-979-29-4444-1', 'MAHIR MENGGAMBAR ANIME', 'PNB01', 'PNG01', '45,500', '2'), ('BK003', '978-979-29-4567-1', 'DATA WAREHOUSE', 'PNB05', 'PNG02', '60,000', '1'), ('BK004', '978-979-29-1212-1', 'SHORTCOURSE: EXCEL 2016', 'PNB02', 'PNG02', '35,000', '5'), ('BK005', '978-979-29-3232-1', 'LASKAR PEMIMPI', 'PNB02', 'PNG03', '80,000', '4'), ('BK006', '978-979-29-1010-1', 'PERANCANGAN BASIS DATA', 'PNB02', 'PNG04', '99,000', '0'), ('BK007', '978-979-29-1111-1', 'ALGORITMA PEMROGRAMAN', 'PNB03', 'PNG04', '125,000', '5'), ('BK008', '978-979-29-9898-1', 'CATATAN SI UJANG', 'PNB04', 'PNG03', '85,000', '2') ('BK009', '978-979-29-9899-1', 'INDONESIA KAYA', 'PNB04', 'PNG03', '30,000', '7'), ('BK0010', '978-979-29-1011-1', 'MAHIR MENGGUNAKAN DATABASE ORACLE', 'PNB02', 'PNG04', '225,000', '9');
SELECT * FROM tb_buku;
-
Tabel Penerbit
INSERT INTO tb_penerbit (ID_PENERBIT, NAMA_PENERBIT, ALAMAT, TELPON) VALUES ('PNB01', 'LENTERA ILMU', 'JAKARTA', '(021)212987'), ('PNB02', 'PUSTAKA INDONESIA', 'BANDUNG', '(022)127576'), ('PNB03', 'ANDRA PUBLISHER', 'YOGYAKARTA', '(0274)123123'), ('PNB04', 'WAHANA', 'JAKARTA', '(021)222333'), ('PNB05', 'YUDHISTIRA', '', '(021)8080880');
SELECT * FROM tb_penerbit;
-
Table Pengarang
INSERT INTO tb_pengarang (ID_PENGARANG, NAMA_PENGARANG, JENIS_KELAMIN) VALUES ('PNG01', 'ABDUL KADIR', 'LAKI-LAKI'), ('PNG02', 'SRI WAHYUNI', 'PEREMPUAN'), ('PNG03', 'FATHANSSYAH', 'LAKI-LAKI'), ('PNG04', 'TRI RISMA SETIA', 'PEREMPUAN');
SELECT * FROM tb_pengarang;
-
-
Tampilkan data pada table buku pada id_penerbitnya PNB05
select * from tb_buku tb where ID_PENERBIT = 'PNB05';
-
Tampilkan 3 judul_buku dari tabel TB_BUKU dengan harga termahal
select JUDUL_BUKU, HARGA_BUKU from tb_buku order by HARGA_BUKU desc limit 3;
-
Tampilkan data dari tabel TB_BUKU dan Tabel TB_PENERBIT dengan ID_PENERBIT = PNB03 dengan Field sbb (ID_BUKU, ISBN, JUDUL_BUKU, NAMA_PENERBIT, ALAMAT, TELPON)
select a.ID_BUKU, a.ISBN, a.JUDUL_BUKU, b.NAMA_PENERBIT, b.ALAMAT, b.TELPON from tb_buku a inner join tb_penerbit b on a.id_penerbit = b.id_penerbit where b.id_penerbit = 'PNB03';
-
Pada tabel TB_PENGARANG Sesuaikan Nama_pengarang : PNG03 = PLNICONPLUS dan PNG04 = JAYAJAYAJAYA
- Update 1
update tb_pengarang set nama_pengarang = 'PLNICONPLUS' where ID_PENGARANG = 'PNG03';
- Update 2
update tb_pengarang set nama_pengarang = 'JAYAJAYAJAYA' where ID_PENGARANG = 'PNG04';
select * from tb_pengarang;
-
Tampilkan judul buku dengan alamat penerbit di luar Jakarta
select a.JUDUL_BUKU, b.ALAMAT from tb_buku a inner join tb_penerbit b on a.id_penerbit = b.id_penerbit where b.ALAMAT not like 'JAKARTA';
-
Urutkan jumlah stok dari tabel TB_BUKU dari terbesar hingga terkecil
select judul_buku, stok from tb_buku order by STOK desc;
-
Hitung total rupiah yang didapatkan untuk penjualan buku yg mempunyai judul kata-kata 'basis data'
select SUM(HARGA_BUKU) as TOTAL from tb_buku where JUDUL_BUKU like '%BASIS DATA'
-
Tampilkan filed judul buku, pengarang, harga buku, stok, kondisi stok dengan aturan kondisi stok aman jika stok lebih dari 5 dan warning jika stok sama dengan atau kurang dari 5
select a.JUDUL_BUKU, b.NAMA_PENGARANG, a.HARGA_BUKU, a.STOK , CASE WHEN stok > 5 THEN 'Aman' ELSE 'Warning' END AS kondisi_stok from tb_buku a inner join tb_pengarang b on a.id_pengarang = b.id_pengarang
-
Tampilkan filed Nama penerbit, jumlah buku, komisi , komisi penerbit adalah 25% dari total rupiah semua penjualan buku
select NAMA_PENERBIT, STOK as JUMLAH_BUKU, COUNT(a.ID_BUKU) AS jumlah_buku, SUM(a.harga_buku * a.stok) * 0.25 AS komisi_penerbit from tb_buku a inner join tb_penerbit b on a.id_penerbit = b.id_penerbit group by NAMA_PENERBIT;
-
Jika Pengarang mendapatkan 5% dari total penjualan, hitung rupiah yang didapatkan masing-masing pengarang jika semua stok terjual
select a.JUDUL_BUKU, b.NAMA_PENGARANG, a.HARGA_BUKU, a.STOK , SUM(a.HARGA_BUKU * a.STOK) AS Total_Penjualan, (SUM(a.HARGA_BUKU * a.STOK) * 0.05) AS Komisi_Pengarang from tb_buku a inner join tb_pengarang b on a.id_pengarang = b.id_pengarang GROUP BY a.JUDUL_BUKU, b.NAMA_PENGARANG, a.HARGA_BUKU, a.STOK;
-
Tampilkan field judul buku, harga buku, kategori harga, pada kategori harga ditampilkan murah jika harga dibawah 100.000 dan mahal jika diatas
select JUDUL_BUKU, HARGA_BUKU, case when HARGA_BUKU > 100000 then 'MAHAL' else 'MURAH' end as KATEGORI_HARGA from TB_BUKU;
Catatan:
Jika masih bingung dengan query-query SQL di atas, silakan pelajari dasar-dasar SQL terlebih dahulu.
Referensi yang mudah diikuti: W3Schools SQL Tutorial
Tujuan repo ini bukan hanya untuk portfolio pribadi, tapi juga bisa jadi bahan belajar bagi siapa saja yang ingin memahami SQL dasar sampai menengah. 🚀