Halo minna! Selamat datang di blog saya tentang praktikum database. Dalam praktikum kali ini, kita akan membahas tentang penggunaan database dalam memanajemen data dan informasi. Saya yakin kalian sudah cukup familiar dengan konsep database dan SQL, jadi kita akan fokus pada praktikum dan cara penggunaannya. Ikuzo Temera!!
1. Membuat tabel tb_pengguna dengan field : userid, nama, email, dan no_telp
Untuk membuat tabel tb_pengguna dengan field userid
, nama
, email
, dan no_telp
kita bisa menggunakan query seperti berikut :
CREATE TABLE tb_pengguna (
userid VARCHAR(50) PRIMARY KEY NOT NULL,
nama VARCHAR(50), email VARCHAR(50),
no_telp MEDIUMINT
);
Query di atas membuat sebuah tabel bernama tb_pengguna
dengan empat kolom yang masing-masing diberi tipe data dan atribut berikut:
userid
bertipe VARCHAR(50) merupakan kolom untuk menyimpan ID pengguna. Kolom ini dinyatakan sebagai PRIMARY KEY dengan atributNOT NULL
, yang artinya tidak boleh bernilai NULL (kosong) dan harus unik.nama
bertipe VARCHAR(50) merupakan kolom untuk menyimpan nama pengguna.email
bertipe VARCHAR(50) merupakan kolom untuk menyimpan alamat email pengguna.no_telp
bertipe MEDIUMINT merupakan kolom untuk menyimpan nomor telepon pengguna.
Dan untuk melihat hasilnya kita bisa menggunakan query DESC tb_pengguna
:
2. Menambahkan UNIQUE ke tabel tb_pengguna pada field email
Untuk menambahkan UNIQUE
pada field email
kita bisa menggunakan query :
ALTER TABLE tb_pengguna ADD CONSTRAINT email UNIQUE (email);
Query ALTER TABLE
adalah perintah untuk mengubah struktur tabel yang sudah ada di database. Query di atas menambahkan sebuah constraint (keterikatan) baru pada tabel tb_pengguna
.
Constraint tersebut didefinisikan dengan kata kunci ADD CONSTRAINT
dan diberi nama email
. Constraint ini menggunakan atribut UNIQUE pada kolom email
, yang artinya setiap nilai yang diisikan pada kolom email
harus unik dan tidak boleh terjadi duplikasi.
Dengan menggunakan constraint UNIQUE pada kolom email
, database akan menolak setiap operasi yang berusaha memasukkan data dengan nilai email yang sudah ada di dalam tabel, sehingga akan memastikan integritas data yang baik dan memperkuat konsistensi data.
Lalu, untuk melihat hasilnya kita bisa menggunakan query DESC tb_pengguna
3. Menambahkan INDEX ke tabel tb_pengguna pada field nama dan no_telp
ALTER TABLE tb_pengguna ADD INDEX idx_nama_notelp (nama, no_telp) USING BTREE;
Query di atas menambahkan sebuah indeks baru pada tabel tb_pengguna
.
Indeks baru tersebut didefinisikan dengan kata kunci ADD INDEX
dan diberi nama idx_nama_notelp
. Indeks ini mencakup dua kolom yaitu nama
dan no_telp
. Index ini menggunakan metode indexing BTREE, yang merupakan salah satu metode indexing yang paling umum digunakan pada MySQL.
Dengan menambahkan indeks pada tabel, database dapat melakukan pencarian data dengan lebih cepat dan efisien. Indeks ini mempercepat proses pencarian data berdasarkan nilai pada kolom nama
dan no_telp
sehingga query yang melibatkan kedua kolom tersebut akan dieksekusi dengan lebih cepat.
Dan untuk melihat apakah indexnya telah berhasil di tambahkan atau belum kita bisa menggunakan query SHOW INDEX FROM tb_pengguna
4. Mengganti tipe data field dari tb_pengguna
Untuk mengganti tipe data field kita bisa menggunakan query CHANGE COLUMN
atau MODIFY COLUMN
:
ALTER TABLE tb_pengguna CHANGE COLUMN no_telp no_telp BIGINT AFTER email;
Dengan query di atas, kolom no_telp
diubah tipe datanya dari MEDIUMINT menjadi BIGINT. Selain itu, dengan kata kunci CHANGE COLUMN
, nama kolom no_telp
diubah kembali menjadi no_telp
agar tetap sama dengan nama kolom sebelumnya.
Dalam query tersebut, juga ditentukan posisi kolom baru dengan kata kunci AFTER email
, sehingga kolom no_telp
akan ditambahkan setelah kolom email
.
Dan gunakan query DESC tb_pengguna
untuk melihat perubahannya
5. Menambahkan data ke dalam tabel tb_pengguna
Untuk menambahkan data kita bisa menggunakan query :
INSERT INTO tb_pengguna VALUES
("andi.yusup", "Andi Ahmad Yusup", "andiahmadyusup@gmail.com", 85860123292),
("kaori.mz", "Kaori Miyazono", "kaorimiyazono@gmail.com", 85860345292),
("naruto.uz", "Naruto Uzumaki", "hokage.tampan@gmail.com", 81260837292),
("sasuke.uc", "Sasuke Uchiha", "salambooyah@gmail.com", 85860345612),
("saitama.btk", "Saitama", "onepunch@gmail.com", 88891273813);
Query di atas menambahkan 5 baris data ke dalam tabel tb_pengguna
.
Setiap baris data memiliki nilai untuk setiap kolom yang diatur dalam urutan yang sama dengan kolom yang didefinisikan di dalam tabel. Urutan kolom adalah sebagai berikut: userid
, nama
, email
, dan no_telp
.
Data di atas menunjukkan bahwa setiap baris memiliki empat nilai yang diisikan ke dalam kolom. Nilai-nilai tersebut disediakan dalam tanda kurung dengan dipisahkan oleh tanda koma dan setiap nilai diapit oleh tanda kutip.
Lalu untuk melihat datanya kita bisa menggunakan query SELECT * FROM tb_pengguna;
6. Membuat tabel tb_team dengan field: id_team, nama_team, dan id_koordinator
Untuk membuat tabelnya kita bisa menggunakan query :
CREATE TABLE tb_team (
id_team INT PRIMARY KEY NOT NULL,
nama_team VARCHAR(50),
id_koordinator INT
);
Query di atas membuat tabel baru dengan nama tb_team
yang terdiri dari tiga kolom.
Kolom pertama adalah id_team
dengan tipe data INT, yang juga dideklarasikan sebagai PRIMARY KEY, sehingga setiap nilai pada kolom tersebut harus unik dan tidak boleh NULL.
Kolom kedua adalah nama_team
dengan tipe data VARCHAR(50), yang menyimpan nama tim dalam bentuk string.
Kolom ketiga adalah id_koordinator
dengan tipe data INT, yang menyimpan nilai ID koordinator tim yang bertanggung jawab atas tim tersebut.
Lalu kita gunakan query DESC tb_team;
untuk melihat informasi lengkap tabel nya
7. Membuat tabel tb_koordinator dengan field : id_koordinator dan nama
Untuk membuat table tb_koordinator dengan field id_koordinator dan nama kita bisa menggunakan query
CREATE TABLE tb_koordinator(
id_koordinator INT PRIMARY KEY NOT NULL,
nama VARCHAR(50)
);
Query di atas membuat tabel baru dengan nama tb_koordinator
yang terdiri dari dua kolom.
Kolom pertama adalah id_koordinator
dengan tipe data INT, yang juga dideklarasikan sebagai PRIMARY KEY, sehingga setiap nilai pada kolom tersebut harus unik dan tidak boleh NULL. Kolom ini digunakan untuk menyimpan nilai ID koordinator, yang akan menjadi acuan untuk menghubungkan dengan tabel lain.
Kolom kedua adalah nama
dengan tipe data VARCHAR(50), yang menyimpan nama koordinator dalam bentuk string.
Berikut adalah informasi tabel nya :
8. Menambahkan CONSTRAINT FOREIGN KEY untuk table tb_team dan tb_koordinator
Untuk menambahkan FOREIGN KEY
kita bisa menggunakan query :
ALTER TABLE tb_team
ADD CONSTRAINT FK_team_id_koordinator
FOREIGN KEY(id_koordinator)
REFERENCES tb_koordinator(id_koordinator) ON UPDATE CASCADE ON DELETE CASCADE;
Query di atas menambahkan sebuah constraint foreign key pada tabel tb_team
.
Constraint foreign key ini didefinisikan sebagai FK_team_id_koordinator
dan ditujukan untuk kolom id_koordinator
pada tabel tb_team
. Constraint ini akan menghubungkan kolom id_koordinator
pada tabel tb_team
dengan kolom id_koordinator
pada tabel tb_koordinator
, sehingga setiap nilai pada kolom id_koordinator
di dalam tabel tb_team
harus sesuai dengan nilai yang ada di dalam kolom id_koordinator
di dalam tabel tb_koordinator
.
ON UPDATE CASCADE menunjukkan bahwa jika nilai di dalam kolom id_koordinator
diubah pada tabel tb_koordinator
, maka nilai yang sesuai di dalam kolom id_koordinator
di dalam tabel tb_team
akan diperbarui secara otomatis.
ON DELETE CASCADE menunjukkan bahwa jika baris dihapus dari tabel tb_koordinator
, maka semua baris yang memiliki nilai yang sama pada kolom id_koordinator
di dalam tabel tb_team
juga akan dihapus secara otomatis.
Dengan menambahkan constraint foreign key, integritas referensial antara tabel tb_team
dan tb_koordinator
terjaga, sehingga data dalam database akan tetap konsisten dan akurat.
9. Menambahkan data ke dalam table tb_team dan tb_koordinator
Untuk menambahkan data ke dalam tabel kita bisa menggunakan query INSERT INTO
tb_koordinator :
INSERT INTO tb_koordinator VALUES
(1, "Fahmi Maulana"),
(2, "Muhammad Tegep"),
(3, "Satrio Augist"),
(4, "Ibnu Nasrulloh"),
(5, "Ferdinand Maulana");
tb_team :
INSERT INTO tb_team VALUES
(1, "Arrow Code", 1),
(2, "Alphanesia", 2),
(3, "Kuda Poni", 2),
(4, "Lupa Tidur", 4);
10. Menampilkan semua data dari tabel yang telah di buat
Untuk menampilkan data dari semua tabel kita bisa menggunakan query SELECT * FROM nama_tabel
tb_pengguna :
SELECT * FROM tb_pengguna;
tb_team :
SELECT * FROM tb_team;
tb_koordinator :
SELECT * FROM tb_koordinator;
11. Menampilkan beberapa field dari tabel yang telah dibuat
Untuk menampilkan beberapa data spesifik kita tidak menggunakan SELECT * FROM nama_table;
melainkan dengan SELECT nama_field1, nama_field2 FROM nama_table;
tb_pengguna :
SELECT userid, nama FROM tb_pengguna;
tb_team :
SELECT id_team, nama_team FROM tb_team;
tb_koordinator :
SELECT nama FROM tb_koordinator;
12. Menampilkan field menggunakan filter dari tabel yang telah dibuat
Untuk menggunakan filter kita perlu menggunakan WHERE
clause
tb_pengguna :
SELECT * FROM tb_pengguna WHERE no_telp LIKE "858%";
Pada query di atas, kita memilih semua kolom ("*") dari tabel tb_pengguna
.
Kemudian, menggunakan klausa WHERE
, kita menentukan kondisi yang harus dipenuhi agar data ditampilkan. Kondisi yang diberikan adalah no_telp LIKE
858%, yang artinya kita memilih semua data dari tabel
tb_penggunadi mana nilai pada kolom
no_telpdimulai dengan
858`.
Operator LIKE
digunakan untuk mencari nilai dalam kolom yang cocok dengan pola yang diberikan. Pola yang diberikan di atas adalah 858%
, yang artinya kita mencari semua nilai pada kolom no_telp
yang dimulai dengan 858
. Tanda persen (%) di akhir pola menunjukkan bahwa pola tersebut dapat diikuti oleh karakter apa pun.
Dengan demikian, query di atas akan menghasilkan data dari tabel tb_pengguna
di mana nilai pada kolom no_telp
dimulai dengan 858
, yang biasanya berarti nomor telepon yang memiliki awalan tersebut.
Berikut adalah outputnya :
tb_team :
SELECT * FROM tb_team WHERE id_team < 3;
Pada query di atas, kita memilih semua kolom (*) dari tabel tb_team
.
Kemudian, menggunakan klausa WHERE
, kita menentukan kondisi yang harus dipenuhi agar data ditampilkan. Kondisi yang diberikan adalah id_team < 3
, yang artinya kita memilih semua data dari tabel tb_team
di mana nilai pada kolom id_team
lebih kecil dari 3.
Dengan demikian, query di atas akan menghasilkan data dari tabel tb_team
di mana nilai pada kolom id_team
kurang dari 3. Kita dapat mengasumsikan bahwa kolom id_team
digunakan untuk mengidentifikasi tim dan kemungkinan besar memiliki nilai bilangan bulat yang unik dan terus bertambah. Oleh karena itu, query di atas akan mengembalikan baris data dengan nilai id_team
1 dan 2, yang merupakan tim-tim dengan nomor identitas terendah.
Berikut adalah outputnya :
tb_koordinator :
SELECT * FROM tb_koordinator WHERE nama="Ferdinand Maulana";
Pada query di atas, kita memilih semua kolom ("*") dari tabel tb_koordinator
.
Kemudian, menggunakan klausa WHERE
, kita menentukan kondisi yang harus dipenuhi agar data ditampilkan. Kondisi yang diberikan adalah nama = 'Ferdinand Maulana'
, yang artinya kita memilih semua data dari tabel tb_koordinator
di mana nilai pada kolom nama
sama dengan Ferdinand Maulana
.
Dengan demikian, query di atas akan menghasilkan data dari tabel tb_koordinator
di mana nilai pada kolom nama
sama dengan Ferdinand Maulana
. Jika tidak ada data yang memenuhi kondisi tersebut, maka query akan mengembalikan hasil kosong. Jika ada satu atau lebih baris data yang memenuhi kondisi tersebut, maka query akan mengembalikan baris-baris data tersebut dengan semua kolom yang terdapat pada tabel tb_koordinator
.
Berikut adalah outputnya :
13. Menampilkan data menggunakan Inner Join
Untuk menggunakan inner join kita bisa menggunakan query :
SELECT * FROM tb_team AS a
INNER JOIN tb_koordinator AS b
ON a.id_koordinator = b.id_koordinator;
Perintah ini akan menggabungkan dua tabel tersebut menggunakan operasi JOIN pada kolom “id_koordinator”.
Berikut ini penjelasan lebih rinci tentang perintah tersebut:
SELECT
: Memilih semua kolom yang ada di kedua tabel yaitutb_team
dantb_koordinator
. Tanda * digunakan untuk menunjukkan semua kolom.FROM tb_team AS a
: Menunjukkan bahwa data akan diambil dari tabeltb_team
dan diberi aliasa
.INNER JOIN tb_koordinator AS b
: Menggabungkan tabeltb_team
dengan tabeltb_koordinator
menggunakan operasi JOIN dengan jenis JOIN yang dipilih adalah INNER JOIN. Tabeltb_koordinator
diberi aliasb
.ON a.id_koordinator = b.id_koordinator
: Menunjukkan kriteria penggabungan antara kedua tabel tersebut, yaitu kolomid_koordinator
pada tabeltb_team
harus sama dengan kolomid_koordinator
pada tabeltb_koordinator
.
Jadi, query ini akan mengambil semua kolom dari tabel tb_team
dan tb_koordinator
dimana nilai kolom id_koordinator
di kedua tabel harus sama. Data yang dihasilkan akan memiliki kolom yang sama dengan kedua tabel tersebut dan akan disajikan dalam satu tabel yang dihasilkan oleh operasi JOIN.
Berikut adalah outputnya :
14. Menampilkan data menggunakan Left Join
Untuk menggunakan inner join kita bisa menggunakan query :
SELECT * FROM tb_team AS a
LEFT JOIN tb_koordinator AS b
ON a.id_koordinator = b.id_koordinator;
Perintah di atas akan menggabungkan dua tabel tersebut menggunakan operasi LEFT JOIN pada kolom id_koordinator
.
Berikut ini penjelasan lebih rinci tentang perintah tersebut:
SELECT
: Memilih semua kolom yang ada di kedua tabel yaitutb_team
dantb_koordinator
. Tanda “*” digunakan untuk menunjukkan semua kolom.FROM tb_team AS a
: Menunjukkan bahwa data akan diambil dari tabeltb_team
dan diberi aliasa
.LEFT JOIN tb_koordinator AS b
: Menggabungkan tabeltb_team
dengan tabeltb_koordinator
menggunakan operasi JOIN dengan jenis JOIN yang dipilih adalah LEFT JOIN. Tabeltb_koordinator
diberi aliasb
.ON a.id_koordinator = b.id_koordinator
: Menunjukkan kriteria penggabungan antara kedua tabel tersebut, yaitu kolomid_koordinator
pada tabeltb_team
harus sama dengan kolomid_koordinator
pada tabeltb_koordinator
.
Jadi, query ini akan mengambil semua kolom dari tabel tb_team
dan tb_koordinator
dimana nilai kolom id_koordinator
pada tabel tb_team
harus sama dengan kolom id_koordinator
pada tabel tb_koordinator
.
Akan tetapi, perbedaan dari operasi JOIN pada query ini adalah LEFT JOIN. Ini berarti semua baris dari tabel tb_team
akan ditampilkan dalam hasil query meskipun tidak ada data yang sesuai di tabel tb_koordinator
. Jika tidak ada data yang sesuai, maka kolom pada tabel tb_koordinator
akan diisi dengan nilai NULL.
Berikut adalah outputnya :
15. Menampilkan data menggunakan Right Join
Untuk menggunakan inner join kita bisa menggunakan query :
SELECT * FROM tb_team AS a
RIGHT JOIN tb_koordinator AS b
ON a.id_koordinator = b.id_koordinator;
Perintah ini akan menggabungkan dua tabel tersebut menggunakan operasi RIGHT JOIN pada kolom id_koordinator
.
Berikut ini penjelasan lebih rinci tentang perintah tersebut:
SELECT
: Memilih semua kolom yang ada di kedua tabel yaitutb_team
dantb_koordinator
. Tanda “*” digunakan untuk menunjukkan semua kolom.FROM tb_team AS a
: Menunjukkan bahwa data akan diambil dari tabeltb_team
dan diberi aliasa
.RIGHT JOIN tb_koordinator AS b
: Menggabungkan tabeltb_team
dengan tabeltb_koordinator
menggunakan operasi JOIN dengan jenis JOIN yang dipilih adalah RIGHT JOIN. Tabeltb_koordinator
diberi aliasb
.ON a.id_koordinator = b.id_koordinator
: Menunjukkan kriteria penggabungan antara kedua tabel tersebut, yaitu kolomid_koordinator
pada tabeltb_team
harus sama dengan kolomid_koordinator
pada tabeltb_koordinator
.
Jadi, query ini akan mengambil semua kolom dari tabel tb_team
dan tb_koordinator
dimana nilai kolom id_koordinator
pada tabel tb_team
harus sama dengan kolom id_koordinator
pada tabel tb_koordinator
. Namun, perbedaan dari operasi JOIN pada query ini adalah RIGHT JOIN. Ini berarti semua baris dari tabel tb_koordinator
akan ditampilkan dalam hasil query meskipun tidak ada data yang sesuai di tabel tb_team
. Jika tidak ada data yang sesuai, maka kolom pada tabel tb_team
akan diisi dengan nilai NULL.
Berikut adalah outputnya :
16. Mengganti nama table tb_pengguna menjadi tb_anggota
Untuk merubah table kita bisa menggunakan query ALTER TABLE table_lama RENAME table_baru
, berikut adalah contoh penggunaannya :
ALTER TABLE tb_pengguna RENAME tb_anggota;
Kata kunci ALTER TABLE digunakan untuk mengubah struktur tabel, seperti menambah kolom, menghapus kolom, mengubah tipe data kolom, atau mengubah nama tabel. Kemudian, kata kunci RENAME digunakan untuk mengubah nama tabel menjadi nama baru yang ditentukan.
Lalu gunakan query SHOW TABLES
untuk melihat apakah tablenya sudah terganti nama :
17. Menambahkan COLUMN team pada tabel tb_anggota
Untuk menambahkan COLUMN baru kita bisa menggunakan query di bawah ini :
ALTER TABLE tb_anggota ADD COLUMN team INT AFTER no_telp;
Kata kunci ALTER TABLE digunakan untuk mengubah struktur tabel. Kemudian, kata kunci ADD COLUMN digunakan untuk menambahkan kolom baru ke dalam tabel. Nama kolom baru yang ditambahkan adalah “team”, dan tipe data kolom adalah INT, yaitu bilangan bulat.
Selanjutnya, kata kunci AFTER digunakan untuk menentukan posisi kolom yang baru ditambahkan dalam urutan kolom. Dalam contoh ini, kolom “team” akan ditempatkan setelah kolom “no_telp”.
Setelah query dijalankan, tabel “tb_anggota” akan memiliki kolom baru dengan nama “team” dan tipe data INT.
Untuk melihat informasi field dalam tablenya kita bisa menggunakan query DESC tb_anggota
:
18. Menambahkan relasi antara tabel tb_anggota dan tabel tb_team
Pertama-tama sebelum kita menambahkan relasi, pastikan kita telah menentukan FOREIGN KEY
nya terlebih dahulu. Jika belum, mentemen bisa menggunakan query di bawah ini untuk membuat FOREIGN KEY
:
ALTER TABLE tb_anggota ADD CONSTRAINT FK_anggota_team_id_team
FOREIGN KEY(team) REFERENCES tb_team(id_team)
ON UPDATE CASCADE ON DELETE CASCADE;
Jika sudah, kita jalankan query di bawah untuk membuat relasi :
SELECT * FROM tb_anggota AS a
INNER JOIN tb_team AS b
ON a.team = b.id_team;
Disini kita menggunakan INNER JOIN
karena hanya ingin menampilkan data selaras (diluar NULL).
19. TRUNCATE semua tabel yang telah dibuat
TRUNCATE
adalah sebuah perintah SQL yang digunakan untuk menghapus semua baris atau record dalam sebuah tabel, tanpa menghapus struktur tabel.
Dalam arti lain, TRUNCATE
akan menghapus semua data dalam tabel dan mengosongkan tabel, namun tetap mempertahankan struktur tabel beserta indeks dan constraint yang ada.
Lalu di sini kita akan menjalankan query TRUNCATE
pada tabel tb_anggota, tb_team, dan tb_koordinator.
Namun, sebelum melakukan TRUNCATE
karena ada beberapa tabel yang terdapat FOREIGN KEY
dan ter refrences ke tabel lain, makannya kita perlu menonaktifkan foreign_key_check nya agar tidak terjadi error. Untuk menonaktifkan FOREIGN KEY
check nya kita bisa menggunakan query di bawah ini :
SET FOREIGN_KEY_CHECKS = 0;
Setelah itu kita dapat dengan sans me-Truncate semua table nya :
TRUNCATE TABLE tb_anggota;
TRUNCATE TABLE tb_team;
TRUNCATE TABLE tb_koordinator;
Jangan lupa menyalakan kembali FOREIGN KEY
checknya dengan query :
SET FOREIGN_KEY_CHECKS = 1;
20. Menambahkan setidaknya 5 data ke dalam tb_koordinator
Seperti biasa, untuk menambahkan data ke dalam table kita bisa menggunakan query INSERT INTO
:
INSERT INTO tb_koordinator VALUES
(1, "Cakra Khan"),
(2, "Herawati"),
(3, "Eko Kurniawan"),
(4, "Sandhika Galih"),
(5, "Ahmad Saugi");
Lalu kita lihat apakah data nya sudah tertambahkan atau belum dengan menggunakan SELECT
:
21. Menambahkan data setidaknya 6 data ke dalam tb_team dengan dua data ber id_koordinator NULL
Seperti biasa, untuk menambahkan data ke dalam table kita bisa menggunakan query INSERT INTO
:
INSERT INTO tb_team VALUES
(1, "Kuda Hitam", 2),
(2, "Lembah Buana", 4),
(3, "WOTA JKT", NULL),
(4, "Wibu Barat", 3),
(5, "Sunda Ceria", 5),
(6, "Stoic Team", NULL);
Lalu kita lihat apakah data nya sudah tertambahkan atau belum dengan menggunakan SELECT
:
22. Menambahkan data setidaknya 60 data ke dalam tb_anggota dengan beberapa data NULL dari field team
Seperti biasa, untuk menambahkan data ke dalam table kita bisa menggunakan query INSERT INTO
:
INSERT INTO tb_anggota VALUES
('budi.santoso', 'Budi Santoso', 'budi.santoso@gmail.com', 81234567890, 2),
('dewi.lestari', 'Dewi Lestari', 'dewi.lestari@gmail.com', 82345378901, NULL),
('putri.pratiwi', 'Putri Pratiwi', 'putri.pratiwi@gmail.com', 81456789012, 3),
('ahmad.subekti', 'Ahmad Subekti', 'ahmad.subekti@gmail.com', 83456789012, 1),
('sari.wulandari', 'Sari Wulandari', 'sari.wulandari@gmail.com', 85678901234, 4),
('arief.setiawan', 'Arief Setiawan', 'arief.setiawan@gmail.com', 81789012345, 2),
('ratna.indah', 'Ratna Indah', 'ratna.indah@gmail.com', 82901233567, NULL),
('hadi.nugroho', 'Hadi Nugroho', 'hadi.nugroho@gmail.com', 87890123456, 6),
('yuli.kurniawan', 'Yuli Kurniawan', 'yuli.kurniawan@gmail.com', 85012345678, 1),
('siska.wijaya', 'Siska Wijaya', 'siska.wijaya@gmail.com', 87254321098, 4),
('rizal.pratama', 'Rizal Pratama', 'rizal.pratama@gmail.com', 85432109876, 2),
('sari.dewi', 'Sari Dewi', 'sari.dewi@gmail.com', 83210987651, NULL),
('hadi.purnomo', 'Hadi Purnomo', 'hadi.purnomo@gmail.com', 81098765332, NULL),
('diana.sari', 'Diana Sari', 'diana.sari@gmail.com', 82345678991, 6),
('adi.nugroho', 'Adi Nugroho', 'adi.nugroho@gmail.com', 85672921234, 1),
('siti.nuryanti', 'Siti Nuryanti', 'siti.nuryanti@gmail.com', 81234562890, 4),
('andi.tampan', 'Andi Tampan', 'andi.tampan@gmail.com', 87657321098, 2),
('dewi.rahmawati', 'Dewi Rahmawati', 'dewi.rahmawati@gmail.com', 82914234567, NULL),
('hadi.santoso', 'Hadi Santoso', 'hadi.santoso@gmail.com', 89012355678, 5),
('rina.kusuma', 'Rina Kusuma', 'rina.kusuma@gmail.com', 83210987694, 1),
('bambang.setiawan', 'Bambang Setiawan', 'bambang.setiawan@gmail.com', 81098765432, 6),
('diana.cahyani', 'Diana Cahyani', 'diana.cahyani@gmail.com', 82345678981, 2),
('yoga.pranata', 'Yoga Pranata', 'yoga.pranata@gmail.com', 85678904334, NULL),
('rini.kusuma', 'Rini Kusuma', 'rini.kusuma@gmail.com', 81234167890, 4),
('mega.susanto', 'Mega Susanto', 'mega.susanto@gmail.com', 82345678921, 2),
('ade.pramana', 'Ade Pramana', 'ade.pramana@gmail.com', 81456729012, 6),
('andi.cahyono', 'Andi Cahyono', 'andi.cahyono@gmail.com', 83456289012, 1),
('anita.kusumawati', 'Anita Kusumawati', 'anita.kusumawati@gmail.com', 85678901134, 3),
('arif.hidayat', 'Arif Hidayat', 'arif.hidayat@gmail.com', 81789013345, NULL),
('dian.permata', 'Dian Permata', 'dian.permata@gmail.com', 82901224567, 2),
('hendra.gunawan', 'Hendra Gunawan', 'hendra.gunawan@gmail.com', 87892123456, 6),
('ika.novitasari', 'Ika Novitasari', 'ika.novitasari@gmail.com', 89012345678, 4),
('joko.wibowo', 'Joko Wibowo', 'joko.wibowo@gmail.com', 87654329098, 1),
('krisna.putra', 'Krisna Putra', 'krisna.putra@gmail.com', 85431109876, 3),
('lia.amelia', 'Lia Amelia', 'lia.amelia@gmail.com', 83210987654, NULL),
('mira.astuti', 'Mira Astuti', 'mira.astuti@gmail.com', 81998765432, 2),
('nina.kumala', 'Nina Kumala', 'nina.kumala@gmail.com', 82345678101, NULL),
('oki.maulana', 'Oki Maulana', 'oki.maulana@gmail.com', 85678981234, 1),
('putra.pratama', 'Putra Pratama', 'putra.pratama@gmail.com', 85234567890, 4),
('rudi.hartono', 'Rudi Hartono', 'rudi.hartono@gmail.com', 87654391098, 2),
('sari.mulyani', 'Sari Mulyani', 'sari.mulyani@gmail.com', 82901214567, 3),
('tomi.setiawan', 'Tomi Setiawan', 'tomi.setiawan@gmail.com', 89034345678, NULL),
('ulfa.nuraini', 'Ulfa Nuraini', 'ulfa.nuraini@gmail.com', 83212487654, 1),
('vina.astri', 'Vina Astri', 'vina.astri@gmail.com', 81298765432, NULL),
('wawan.kusniadi', 'Wawan Kusnadi', 'wawan.kusnadi@gmail.com', 82345678901, 2),
('yanto.permadi', 'Yanto Permadi', 'yanto.permadi@gmail.com', 85672901234, 4),
('zakiyah.kurniawan', 'Zakiyah Kurniawan', 'zakiyah.kurniawan@gmail.com', 81234567820, NULL),
('ari.setiawan', 'Ari Setiawan', 'ari.setiawan@gmail.com', 87354321098, 5),
('bella.sari', 'Bella Sari', 'bella.sari@gmail', 81222835355, 4),
('citra.kusuma', 'Citra Kusuma', 'citra.kusuma@gmail.com', 82345628901, 2),
('dhani.nugraha', 'Dhani Nugraha', 'dhani.nugraha@gmail.com', 81451789012, NULL),
('eva.amelia', 'Eva Amelia', 'eva.amelia@gmail.com', 83456789512, 1),
('fajar.pramudya', 'Fajar Pramudya', 'fajar.pramudya@gmail.com', 85678902234, 3),
('gina.lestari', 'Gina Dwi Lestari', 'gina.dwilestari@gmail.com', 81729012345, 5),
('haris.riyanto', 'Haris Riyanto', 'haris.riyanto@gmail.com', 82901234567, 2),
('indah.sari', 'Indah Sari', 'indah.sari@gmail.com', 87820123459, NULL),
('jaka.susilo', 'Jaka Susilo', 'jaka.susilo@gmail.com', 89012345178, 4),
('kartika.dewi', 'Kartika Dewi', 'kartika.dewi@gmail.com', 87654321098, 1),
('lina.nurhayati', 'Lina Nurhayati', 'lina.nurhayati@gmail.com', 85422109876, 3),
('mira.puspita', 'Mira Puspita', 'mira.puspita@gmail.com', 83210987654, 5);
Di sini ga ku lampirkan hasil query SELECT * FROM tb_anggota karena terlampau panjang
23. Mengambil data dari semua tabel dengan NULL data dari tabel tb_koordinator
Untuk mengambil data seperti perintah di atas kita bisa menggunakan query :
SELECT a.nama AS nama_anggota, b.nama_team, c.nama AS nama_koordinator FROM tb_anggota AS a
RIGHT JOIN tb_team AS b
ON a.team = b.id_team
RIGHT JOIN tb_koordinator AS c
ON b.id_koordinator = c.id_koordinator;
Di query ini kita ngambil data dari relasiin 3 table dengan jadiin si tabel tb_koordinator ini sebagai acuan. karena ini juga aku gunaiin right join, soalnya disuruh jadiin si tb_koordinator ini acuan dan nampilin data walaupun value nya NULL.
Berikut adalah outputnya :
24. Mengambil data dari semua tabel tanpa NULL data dari tabel tb_koordinator
Untuk mengambil data seperti perintah di atas kita bisa menggunakan query :
SELECT a.nama AS nama_anggota, b.nama_team, c.nama AS nama_koordinator FROM tb_anggota AS a
INNER JOIN tb_team AS b
ON a.team = b.id_team
INNER JOIN tb_koordinator AS c
ON b.id_koordinator = c.id_koordinator;
Berbeda dengan sebelumnya, di sini kita menggunakan INNER JOIN
karena kita gamau nampilin data tanpa ada data yang valuenya NULL.
Berikut adalah outputnya :
Berbeda dengan RIGHT JOIN
dengan INNER JOIN
kita menghiraukan data yang valuenya NULL, seperti sebelumnya ada data NULL di paling atas, namun dengan INNER JOIN
kita akan meninggalkan dan mencampakan data yang valuenya NULL, dan hanya ngambil data yang valuenya matching.
25. Tampilkan hanya field nama dari tb_koordinator dan field nama dari tb_anggota tanpa ada data yang value nya NULL
Untuk mengambil data seperti perintah di atas kita bisa menggunakan query :
SELECT c.nama AS nama_koordinator, a.nama AS nama_anggota FROM tb_anggota AS a
INNER JOIN tb_team AS b
ON a.team = b.id_team
INNER JOIN tb_koordinator AS c
ON b.id_koordinator = c.id_koordinator;
Seperti sebelumnya, kita menggunakan INNER JOIN karena kita gamau ada data NULL yang ikut ke show.
Berikut adalah outputnya :
26. Tampilkan hanya field nama dari tb_koordinator dan field nama dari tb_anggota dengan data yang value nya NULL
Untuk mengambil data seperti perintah di atas kita bisa menggunakan query :
SELECT c.nama AS nama_koordinator, a.nama AS nama_anggota FROM tb_anggota AS a
RIGHT JOIN tb_team AS b
ON a.team = b.id_team
RIGHT JOIN tb_koordinator AS c
ON b.id_koordinator = c.id_koordinator;
Aku masih pakai right join karena tetep mau jadiin si tb_koordinatornya ini acuan relasi nya
Berikut adalah outputnya :
27. Tampilkan data dari ketiga table, dan urutkan secara alpabet dari field name tabel tb_anggota
Untuk mengambil data seperti perintah di atas kita bisa menggunakan query :
SELECT a.nama AS nama_anggota,b.nama_team, c.nama AS nama_koordinator FROM tb_anggota AS a
LEFT JOIN tb_team AS b
ON a.team = b.id_team
LEFT JOIN tb_koordinator AS c
ON b.id_koordinator = c.id_koordinator
ORDER BY a.nama ASC;
Di sini ku pakai LEFT JOIN
karena kita sort data nya dari field name tabel tb_anggota, jadi harus nampilin semua data yang ada di tb_anggota mau itu ada relasi dengan tabel lain atau tidak.
Berikut adalah outputnya :
28. Hitung jumlah anggota member dari team
Untuk menghitungnya kita bisa menggunakan query :
SELECT b.nama_team, COUNT(a.userid) as jumlah_anggota FROM tb_anggota AS a
LEFT JOIN tb_team AS b
ON a.team = b.id_team
LEFT JOIN tb_koordinator AS c
ON b.id_koordinator = c.id_koordinator
GROUP BY b.nama_team;
Query tersebut digunakan untuk mengambil jumlah anggota dalam setiap tim, termasuk nama tim dan koordinator yang bertanggung jawab atas tim tersebut.
Lebih rinci, query ini memiliki beberapa bagian:
SELECT b.nama_team : Digunakan untuk memilih kolom
nama_team
dari tabeltb_team
yang akan ditampilkan dalam hasil query.COUNT(a.userid) as jumlah_anggota : Digunakan untuk menghitung jumlah anggota dalam setiap tim, dengan menggunakan fungsi COUNT pada kolom
userid
dari tabeltb_anggota
. Jumlah anggota kemudian ditampilkan dalam hasil query dengan aliasjumlah_anggota
.FROM tb_anggota AS a : Digunakan untuk menunjukkan bahwa tabel
tb_anggota
akan digunakan dalam query, dengan menggunakan aliasa
.LEFT JOIN tb_team AS b ON a.team = b.id_team : Digunakan untuk menggabungkan tabel
tb_anggota
dantb_team
berdasarkan kolomteam
dari tabeltb_anggota
yang sama dengan kolomid_team
dari tabeltb_team
. LEFT JOIN digunakan untuk mempertahankan semua baris dari tabeltb_team
bahkan jika tidak ada baris yang cocok di tabeltb_anggota
.LEFT JOIN tb_koordinator AS c ON b.id_koordinator = c.id_koordinator : Digunakan untuk menggabungkan tabel
tb_team
dengantb_koordinator
berdasarkan kolomid_koordinator
. Ini memungkinkan kita untuk menampilkan nama koordinator yang bertanggung jawab atas setiap tim. Kembali, LEFT JOIN digunakan untuk mempertahankan semua baris dari tabeltb_team
bahkan jika tidak ada baris yang cocok di tabeltb_koordinator
.GROUP BY b.nama_team : Digunakan untuk mengelompokkan hasil query berdasarkan nama tim dari tabel
tb_team
. Ini memungkinkan kita untuk menampilkan jumlah anggota dalam setiap tim secara terpisah.
Berikut adalah outputnya :
29. Hitung jumlah anggota berdasarkan field name pada tb_koordinator yang memiliki anggota lebih dari atau sama dengan 5
Untuk menghitungnya kita bisa menggunakan query :
SELECT c.nama AS nama_koordinator, COUNT(a.userid) AS jumlah_anggota FROM tb_anggota AS a
RIGHT JOIN tb_team AS b
ON a.team = b.id_team
RIGHT JOIN tb_koordinator AS c
ON b.id_koordinator = c.id_koordinator
GROUP BY c.nama
HAVING COUNT(a.userid) >= 5;
Berikut adalah outputnya :
Atau kita juga bisa menggunakan LEFT JOIN
jika ingin menampilkan jumlah anggota yang tidak memiliki kordinator :
SELECT c.nama AS nama_koordinator, COUNT(a.userid) AS jumlah_anggota FROM tb_anggota AS a
LEFT JOIN tb_team AS b
ON a.team = b.id_team
LEFT JOIN tb_koordinator AS c
ON b.id_koordinator = c.id_koordinator
GROUP BY c.nama
HAVING COUNT(a.userid) >= 5;
Berikut adalah outputnya :
30. Membuat view dari data pada point 26
Untuk membuat view kita bisa menggunakan query CREATE VIEW
, atau lebih lengkapnya silahkan gunakan query di bawah :
CREATE VIEW view_nmkoordinator_nmanggota AS
SELECT c.nama AS nama_koordinator, a.nama AS nama_anggota FROM tb_anggota AS a
RIGHT JOIN tb_team AS b
ON a.team = b.id_team
RIGHT JOIN tb_koordinator AS c
ON b.id_koordinator = c.id_koordinator;
Lalu untuk melihat apakah viewnya sudah kita buat, kita bisa menggunakan query SHOW TABLES;
:
Setelah itu untuk memastikan data dalam viewnya benar, kita gunakan query SELECT * FROM nama_view
untuk melihat datanya :
31. Membuat temporary tabel dari data pada point 26
Untuk membuat temporary kita bisa menggunakan query CREATE TABLE
, atau lebih lengkapnya silahkan gunakan query di bawah :
CREATE TABLE temp_nmkoordinator_nmanggota
SELECT c.nama AS nama_koordinator, a.nama AS nama_anggota FROM tb_anggota AS a
RIGHT JOIN tb_team AS b
ON a.team = b.id_team
RIGHT JOIN tb_koordinator AS c
ON b.id_koordinator = c.id_koordinator;
Query tersebut adalah perintah untuk membuat sebuah tabel baru dengan nama temp_nmkoordinator_nmanggota
. Tabel tersebut akan diisi dengan data hasil seleksi dari tiga tabel lainnya, yaitu tb_anggota
, tb_team
, dan tb_koordinator
.
Perintah SELECT pada query tersebut digunakan untuk memilih dua kolom dari tabel-tabel tersebut, yaitu kolom nama
dari tabel tb_anggota
dan tb_koordinator
. Kolom nama
dari tabel tb_anggota
di-join dengan kolom id_team
dari tabel tb_team
menggunakan INNER JOIN, sehingga data dari kedua tabel tersebut akan digabungkan hanya jika terdapat kesamaan pada kolom id_team
. Selanjutnya, hasil dari join tersebut akan dijoin lagi dengan kolom id_koordinator
dari tabel tb_koordinator
menggunakan INNER JOIN, sehingga data yang dihasilkan akan mengandung informasi nama koordinator dan anggota yang memiliki kesamaan pada team.
Hasil dari query tersebut akan disimpan pada tabel baru temp_nmkoordinator_nmanggota
dengan dua kolom, yaitu nama_koordinator
dan nama_anggota
. Kolom nama_koordinator
akan berisi nama koordinator yang terdapat pada tabel tb_koordinator
, sedangkan kolom nama_anggota
akan berisi nama anggota yang terdapat pada tabel tb_anggota
yang memiliki kesamaan pada team dengan koordinator pada kolom nama_koordinator
.
Lalu untuk melihat apakah table temporarynya sudah kita buat, kita bisa menggunakan query SHOW TABLES;
:
Setelah itu untuk memastikan data dalam viewnya benar, kita gunakan query SELECT * FROM nama_temp
untuk melihat datanya :
32. TRUNCATE table temporary
TRUNCATE
adalah sebuah perintah SQL yang digunakan untuk menghapus semua baris atau record dalam sebuah tabel, tanpa menghapus struktur tabel.
Dalam arti lain, TRUNCATE
akan menghapus semua data dalam tabel dan mengosongkan tabel, namun tetap mempertahankan struktur tabel beserta indeks dan constraint yang ada.
Karena tidak terdapat FOREIGN KEY
di dalam field tabel temp jadinya kita bisa langsung melakukan TRUNCATE
tanpa mematikan FOREIGN KEY
checknya :
TRUNCATE temp_nmkoordinator_nmanggota
Maka semua data dalam table temp nya akan terhapus.
33. Menambahkan data ke dalam tabel temp dari tabel view
Untuk menambahkan data ke dalam tabel temp dari tabel view kita bisa menggunakan query INSERT INTO
dan digabungkan dengan query SELECT * FROM
:
INSERT INTO temp_nmkoordinator_nmanggota SELECT * FROM view_nmkoordinator_nmanggota;
Query INSERT INTO temp_nmkoordinator_nmanggota SELECT * FROM view_nmkoordinator_nmanggota; adalah sebuah perintah SQL yang dapat digunakan untuk menyalin seluruh data dari sebuah view ke dalam sebuah tabel temporary.
Dalam contoh ini, terdapat sebuah view bernama view_nmkoordinator_nmanggota, yang kemudian akan disalin seluruh isinya ke dalam sebuah tabel sementara bernama temp_nmkoordinator_nmanggota.
Perintah SELECT * FROM view_nmkoordinator_nmanggota digunakan untuk menampilkan seluruh data dari view tersebut. Kemudian, perintah INSERT INTO temp_nmkoordinator_nmanggota digunakan untuk menyimpan seluruh data tersebut ke dalam tabel temporary yang baru dibuat.
Dengan menggunakan perintah ini, kita dapat dengan mudah menyalin seluruh data dari sebuah view ke dalam sebuah tabel sementara, yang dapat digunakan untuk melakukan berbagai analisis atau pengolahan data tanpa mengubah data asli yang tersimpan dalam view. Setelah data telah diproses, tabel sementara dapat dihapus untuk membersihkan ruang penyimpanan.
Berikut adalah data yang ada di dalam tabel temporary :
34. Menambahkan COLUMN captain ke dalam tabel tb_anggota
Untuk menambahkan column baru kita bisa menggunakan query ALTER TABLE nama_table ADD COLUMN
, berikut query lengkapnya :
ALTER TABLE tb_anggota ADD COLUMN captain BOOLEAN NOT NULL DEFAULT FALSE AFTER team;
Query ALTER TABLE tb_anggota ADD COLUMN captain BOOLEAN NOT NULL DEFAULT FALSE AFTER team
akan menambahkan sebuah kolom baru bernama captain
pada tabel tb_anggota
. Kolom ini akan memiliki tipe data BOOLEAN
, artinya nilainya hanya bisa berupa TRUE
atau FALSE
.
NOT NULL menunjukkan bahwa kolom captain
tidak boleh memiliki nilai NULL atau kosong, sehingga setiap baris di tabel harus memiliki nilai untuk kolom captain
.
DEFAULT FALSE menunjukkan bahwa jika tidak ada nilai yang diberikan untuk kolom captain
, maka secara otomatis akan diisi dengan nilai FALSE
.
AFTER team menunjukkan bahwa kolom captain
akan ditempatkan setelah kolom team
dalam tabel tb_anggota
. Hal ini dapat memudahkan dalam membaca dan mengelola data, terutama jika tabel memiliki banyak kolom.
Berikut adalah informasi table nya setelah ditambahkan column captain
:
35. Perbarui data dari tb_anggota untuk setiap team memiliki satu captain
Untuk melakukan query seperti perintah di atas kita bisa menggunakan :
UPDATE tb_anggota SET captain=TRUE WHERE userid IN ('adi.nugroho', 'andi.tampan', 'anita.kusumawati', 'bella.sari', 'gina.dwilestari', 'ade.pramana');
Pada contoh di atas, query UPDATE digunakan untuk mengubah nilai kolom captain
menjadi TRUE untuk baris-baris pada tabel tb_anggota
yang memenuhi kondisi bahwa nilai kolom userid
sama dengan salah satu dari nilai pada daftar: ‘adi.nugroho’, ‘andi.tampan’, ‘anita.kusumawati’, ‘bella.sari’, ‘gina.dwilestari’, atau ‘ade.pramana’.
Contoh di atas dapat diartikan sebagai “Perbarui nilai kolom ‘captain’ menjadi TRUE pada tabel ’tb_anggota’ untuk baris yang memenuhi kondisi bahwa nilai kolom ‘userid’ sama dengan salah satu dari nilai pada daftar: ‘adi.nugroho’, ‘andi.tampan’, ‘anita.kusumawati’, ‘bella.sari’, ‘gina.dwilestari’, atau ‘ade.pramana’.”
Query UPDATE dengan kondisi WHERE sangat berguna dalam mengubah data pada tabel yang besar dengan cepat dan efisien. Dengan menggunakan kondisi WHERE, kita dapat memperbarui data hanya pada baris yang memenuhi kriteria tertentu dan meminimalkan risiko terjadinya kesalahan saat melakukan perubahan data.
36. Menambahkan COLUMN dengan tipe data ENUM pada tabel tb_anggota
Untuk menambahkan column baru kita bisa menggunakan query ALTER TABLE nama_table ADD COLUMN
, berikut query lengkapnya :
ALTER TABLE tb_anggota ADD COLUMN jenis_kelamin ENUM('L', 'P') AFTER captain;
Query di atas akan menambahkan kolom baru dengan nama jenis_kelamin
pada tabel tb_anggota
. Kolom baru ini akan memiliki tipe data ENUM dan hanya menerima nilai ‘L’ atau ‘P’ sebagai input. Kolom baru ini akan ditempatkan setelah kolom captain
dalam struktur tabel.
Berikut adalah struktur tabel yang telah ditambahkan COLUMN
jenis_kelamin :
37. Perbarui data jenis kelamin dari tb_anggota
Untuk melakukan update kita bisa menggunakan query UPDATE nama_table SET WHERE condition
, untuk lebih lengkapnya silahkan simak query di bawah :
-- Memperbarui data anggota Laki-Laki
UPDATE tb_anggota SET jenis_kelamin='L' WHERE userid IN (
'arif.hidayat', 'dhani.nugraha', 'hadi.purnomo',
'tomi.setiawan', 'yoga.pranata', 'adi.nugroho',
'ahmad.subekti', 'andi.cahyono', 'joko.wibowo',
'oki.maulana', 'andi.tampan', 'arief.setiawan',
'budi.santoso', 'haris.riyanto', 'rizal.pratama',
'rudi.hartono', 'wawan.kusniadi', 'fajar.pramudya',
'krisna.putra', 'jaka.susilo', 'putra.pratama',
'yanto.permadi', 'ari.setiawan', 'hadi.santoso',
'ade.pramana', 'bambang.setiawan', 'hadi.nugroho',
'hendra.gunawan'
);
-- Memperbarui data anggota Perempuan
UPDATE tb_anggota SET jenis_kelamin='P' WHERE userid IN (
'dewi.lestari', 'dewi.rahmawati', 'indah.sari',
'lia.amelia', 'nina.kumala', 'ratna.indah',
'sari.dewi', 'vina.astri', 'zakiyah.kurniawan',
'kartika.dewi', 'rina.kusuma', 'ulfa.nuraini',
'yuli.kurniawan', 'citra.kusuma', 'dian.permata',
'diana.cahyani', 'mega.susanto', 'mira.astuti',
'sari.mulyani', 'bella.sari', 'ika.novitasari',
'rini.kusuma', 'sari.wulandari', 'siska.wijaya',
'siti.nuryanti', 'anita.kusumawati', 'lina.nurhayati',
'putri.pratiwi', 'gina.lestari', 'diana.sari',
'mira.puspita', 'eva.amelia'
);
Query UPDATE tb_anggota SET jenis_kelamin=‘L’ WHERE userid IN digunakan untuk mengubah nilai kolom jenis_kelamin pada tabel tb_anggota menjadi laki-laki (‘L’).
Sedangkan, Query UPDATE tb_anggota SET jenis_kelamin=‘P’ WHERE userid IN digunakan untuk mengubah nilai kolom jenis_kelamin pada tabel tb_anggota menjadi perempuan (‘P’). Hanya pada baris-baris tertentu yang memiliki userid tertentu yang diberikan dalam klausa WHERE
Clause WHERE userid IN() digunakan untuk memfilter data dalam sebuah tabel berdasarkan nilai kolom userid tertentu. Dalam penggunaan klausa WHERE userid IN(), kita dapat memilih beberapa nilai userid yang ingin ditampilkan dalam hasil query dengan menggunakan tanda kurung () dan memisahkan tiap nilai userid dengan tanda koma (,).
38. Get data from 3 all table aort by fullname from tb_anggota Alphabeticall (Final Boss)
Untuk menampilkan dari semua tabel dengan relasi dan melakukan pengurutan berdasarkan field nama pada field tb_anggota kita bisa menggunakan query :
SELECT * FROM tb_anggota AS a
LEFT JOIN tb_team AS b
ON a.team = b.id_team
LEFT JOIN tb_koordinator AS c
ON b.id_koordinator = c.id_koordinator
ORDER BY a.nama ASC;
SQL query ini digunakan untuk mengambil data dari tiga tabel yaitu tb_anggota
, tb_team
, dan tb_koordinator
yang terhubung melalui beberapa relasi. Berikut adalah penjelasan lengkapnya:
SELECT * FROM tb_anggota AS a : Query ini memilih semua kolom atau field dari tabel
tb_anggota
dan memberikan alias ‘a’ untuk tabel ini.LEFT JOIN tb_team AS b ON a.team = b.id_team : Ini adalah operasi JOIN pertama yang menghubungkan tabel
tb_anggota
dengantb_team
menggunakan kolomteam
pada tabeltb_anggota
danid_team
pada tabeltb_team
. LEFT JOIN digunakan untuk memastikan bahwa semua baris dari tabeltb_anggota
akan dipertahankan, bahkan jika tidak ada baris yang cocok dari tabeltb_team
. Alias ‘b’ diberikan untuk tabeltb_team
.LEFT JOIN tb_koordinator AS c ON b.id_koordinator = c.id_koordinator : Ini adalah operasi JOIN kedua yang menghubungkan tabel
tb_team
dengantb_koordinator
menggunakan kolomid_koordinator
. Karena tabeltb_koordinator
hanya terhubung dengan tabeltb_team
melalui kolomid_koordinator
, JOIN ini hanya mempertahankan baris yang cocok pada kedua tabel. Alias ‘c’ diberikan untuk tabeltb_koordinator
.ORDER BY a.nama ASC : Ini adalah perintah untuk mengurutkan hasil berdasarkan kolom
nama
pada tabeltb_anggota
secara ascending (menaik).
Jadi, keseluruhan query ini mengambil semua data dari tabel tb_anggota
, dan melakukan JOIN dengan tabel tb_team
dan tb_koordinator
untuk mendapatkan data tambahan yang terkait dengan anggota tim. Setelah itu, data disortir berdasarkan nama anggota tim secara ascending.
Dan berikut adalah outputnya :
+-------------------+-------------------+-----------------------------+-------------+------+---------+---------------+---------+--------------+----------------+----------------+----------------+
| userid | nama | email | no_telp | team | captain | jenis_kelamin | id_team | nama_team | id_koordinator | id_koordinator | nama |
+-------------------+-------------------+-----------------------------+-------------+------+---------+---------------+---------+--------------+----------------+----------------+----------------+
| ade.pramana | Ade Pramana | ade.pramana@gmail.com | 81456729012 | 6 | 1 | L | 6 | Stoic Team | NULL | NULL | NULL |
| adi.nugroho | Adi Nugroho | adi.nugroho@gmail.com | 85672921234 | 1 | 1 | L | 1 | Kuda Hitam | 2 | 2 | Herawati |
| ahmad.subekti | Ahmad Subekti | ahmad.subekti@gmail.com | 83456789012 | 1 | 0 | L | 1 | Kuda Hitam | 2 | 2 | Herawati |
| andi.cahyono | Andi Cahyono | andi.cahyono@gmail.com | 83456289012 | 1 | 0 | L | 1 | Kuda Hitam | 2 | 2 | Herawati |
| andi.tampan | Andi Tampan | andi.tampan@gmail.com | 87657321098 | 2 | 1 | L | 2 | Lembah Buana | 4 | 4 | Sandhika Galih |
| anita.kusumawati | Anita Kusumawati | anita.kusumawati@gmail.com | 85678901134 | 3 | 1 | P | 3 | WOTA JKT | NULL | NULL | NULL |
| ari.setiawan | Ari Setiawan | ari.setiawan@gmail.com | 87354321098 | 5 | 0 | L | 5 | Sunda Ceria | 5 | 5 | Ahmad Saugi |
| arief.setiawan | Arief Setiawan | arief.setiawan@gmail.com | 81789012345 | 2 | 0 | L | 2 | Lembah Buana | 4 | 4 | Sandhika Galih |
| arif.hidayat | Arif Hidayat | arif.hidayat@gmail.com | 81789013345 | NULL | 0 | L | NULL | NULL | NULL | NULL | NULL |
| bambang.setiawan | Bambang Setiawan | bambang.setiawan@gmail.com | 81098765432 | 6 | 0 | L | 6 | Stoic Team | NULL | NULL | NULL |
| bella.sari | Bella Sari | bella.sari@gmail | 81222835355 | 4 | 1 | P | 4 | Wibu Barat | 3 | 3 | Eko Kurniawan |
| budi.santoso | Budi Santoso | budi.santoso@gmail.com | 81234567890 | 2 | 0 | L | 2 | Lembah Buana | 4 | 4 | Sandhika Galih |
| citra.kusuma | Citra Kusuma | citra.kusuma@gmail.com | 82345628901 | 2 | 0 | P | 2 | Lembah Buana | 4 | 4 | Sandhika Galih |
| dewi.lestari | Dewi Lestari | dewi.lestari@gmail.com | 82345378901 | NULL | 0 | P | NULL | NULL | NULL | NULL | NULL |
| dewi.rahmawati | Dewi Rahmawati | dewi.rahmawati@gmail.com | 82914234567 | NULL | 0 | P | NULL | NULL | NULL | NULL | NULL |
| dhani.nugraha | Dhani Nugraha | dhani.nugraha@gmail.com | 81451789012 | NULL | 0 | L | NULL | NULL | NULL | NULL | NULL |
| dian.permata | Dian Permata | dian.permata@gmail.com | 82901224567 | 2 | 0 | P | 2 | Lembah Buana | 4 | 4 | Sandhika Galih |
| diana.cahyani | Diana Cahyani | diana.cahyani@gmail.com | 82345678981 | 2 | 0 | P | 2 | Lembah Buana | 4 | 4 | Sandhika Galih |
| diana.sari | Diana Sari | diana.sari@gmail.com | 82345678991 | 6 | 0 | P | 6 | Stoic Team | NULL | NULL | NULL |
| eva.amelia | Eva Amelia | eva.amelia@gmail.com | 83456789512 | 1 | 0 | P | 1 | Kuda Hitam | 2 | 2 | Herawati |
| fajar.pramudya | Fajar Pramudya | fajar.pramudya@gmail.com | 85678902234 | 3 | 0 | L | 3 | WOTA JKT | NULL | NULL | NULL |
| gina.lestari | Gina Dwi Lestari | gina.dwilestari@gmail.com | 81729012345 | 5 | 1 | P | 5 | Sunda Ceria | 5 | 5 | Ahmad Saugi |
| hadi.nugroho | Hadi Nugroho | hadi.nugroho@gmail.com | 87890123456 | 6 | 0 | L | 6 | Stoic Team | NULL | NULL | NULL |
| hadi.purnomo | Hadi Purnomo | hadi.purnomo@gmail.com | 81098765332 | NULL | 0 | L | NULL | NULL | NULL | NULL | NULL |
| hadi.santoso | Hadi Santoso | hadi.santoso@gmail.com | 89012355678 | 5 | 0 | L | 5 | Sunda Ceria | 5 | 5 | Ahmad Saugi |
| haris.riyanto | Haris Riyanto | haris.riyanto@gmail.com | 82901234567 | 2 | 0 | L | 2 | Lembah Buana | 4 | 4 | Sandhika Galih |
| hendra.gunawan | Hendra Gunawan | hendra.gunawan@gmail.com | 87892123456 | 6 | 0 | L | 6 | Stoic Team | NULL | NULL | NULL |
| ika.novitasari | Ika Novitasari | ika.novitasari@gmail.com | 89012345678 | 4 | 0 | P | 4 | Wibu Barat | 3 | 3 | Eko Kurniawan |
| indah.sari | Indah Sari | indah.sari@gmail.com | 87820123459 | NULL | 0 | P | NULL | NULL | NULL | NULL | NULL |
| jaka.susilo | Jaka Susilo | jaka.susilo@gmail.com | 89012345178 | 4 | 0 | L | 4 | Wibu Barat | 3 | 3 | Eko Kurniawan |
| joko.wibowo | Joko Wibowo | joko.wibowo@gmail.com | 87654329098 | 1 | 0 | L | 1 | Kuda Hitam | 2 | 2 | Herawati |
| kartika.dewi | Kartika Dewi | kartika.dewi@gmail.com | 87654321098 | 1 | 0 | P | 1 | Kuda Hitam | 2 | 2 | Herawati |
| krisna.putra | Krisna Putra | krisna.putra@gmail.com | 85431109876 | 3 | 0 | L | 3 | WOTA JKT | NULL | NULL | NULL |
| lia.amelia | Lia Amelia | lia.amelia@gmail.com | 83210987654 | NULL | 0 | P | NULL | NULL | NULL | NULL | NULL |
| lina.nurhayati | Lina Nurhayati | lina.nurhayati@gmail.com | 85422109876 | 3 | 0 | P | 3 | WOTA JKT | NULL | NULL | NULL |
| mega.susanto | Mega Susanto | mega.susanto@gmail.com | 82345678921 | 2 | 0 | P | 2 | Lembah Buana | 4 | 4 | Sandhika Galih |
| mira.astuti | Mira Astuti | mira.astuti@gmail.com | 81998765432 | 2 | 0 | P | 2 | Lembah Buana | 4 | 4 | Sandhika Galih |
| mira.puspita | Mira Puspita | mira.puspita@gmail.com | 83210987654 | 5 | 0 | P | 5 | Sunda Ceria | 5 | 5 | Ahmad Saugi |
| nina.kumala | Nina Kumala | nina.kumala@gmail.com | 82345678101 | NULL | 0 | P | NULL | NULL | NULL | NULL | NULL |
| oki.maulana | Oki Maulana | oki.maulana@gmail.com | 85678981234 | 1 | 0 | L | 1 | Kuda Hitam | 2 | 2 | Herawati |
| putra.pratama | Putra Pratama | putra.pratama@gmail.com | 85234567890 | 4 | 0 | L | 4 | Wibu Barat | 3 | 3 | Eko Kurniawan |
| putri.pratiwi | Putri Pratiwi | putri.pratiwi@gmail.com | 81456789012 | 3 | 0 | P | 3 | WOTA JKT | NULL | NULL | NULL |
| ratna.indah | Ratna Indah | ratna.indah@gmail.com | 82901233567 | NULL | 0 | P | NULL | NULL | NULL | NULL | NULL |
| rina.kusuma | Rina Kusuma | rina.kusuma@gmail.com | 83210987694 | 1 | 0 | P | 1 | Kuda Hitam | 2 | 2 | Herawati |
| rini.kusuma | Rini Kusuma | rini.kusuma@gmail.com | 81234167890 | 4 | 0 | P | 4 | Wibu Barat | 3 | 3 | Eko Kurniawan |
| rizal.pratama | Rizal Pratama | rizal.pratama@gmail.com | 85432109876 | 2 | 0 | L | 2 | Lembah Buana | 4 | 4 | Sandhika Galih |
| rudi.hartono | Rudi Hartono | rudi.hartono@gmail.com | 87654391098 | 2 | 0 | L | 2 | Lembah Buana | 4 | 4 | Sandhika Galih |
| sari.dewi | Sari Dewi | sari.dewi@gmail.com | 83210987651 | NULL | 0 | P | NULL | NULL | NULL | NULL | NULL |
| sari.mulyani | Sari Mulyani | sari.mulyani@gmail.com | 82901214567 | 3 | 0 | P | 3 | WOTA JKT | NULL | NULL | NULL |
| sari.wulandari | Sari Wulandari | sari.wulandari@gmail.com | 85678901234 | 4 | 0 | P | 4 | Wibu Barat | 3 | 3 | Eko Kurniawan |
| siska.wijaya | Siska Wijaya | siska.wijaya@gmail.com | 87254321098 | 4 | 0 | P | 4 | Wibu Barat | 3 | 3 | Eko Kurniawan |
| siti.nuryanti | Siti Nuryanti | siti.nuryanti@gmail.com | 81234562890 | 4 | 0 | P | 4 | Wibu Barat | 3 | 3 | Eko Kurniawan |
| tomi.setiawan | Tomi Setiawan | tomi.setiawan@gmail.com | 89034345678 | NULL | 0 | L | NULL | NULL | NULL | NULL | NULL |
| ulfa.nuraini | Ulfa Nuraini | ulfa.nuraini@gmail.com | 83212487654 | 1 | 0 | P | 1 | Kuda Hitam | 2 | 2 | Herawati |
| vina.astri | Vina Astri | vina.astri@gmail.com | 81298765432 | NULL | 0 | P | NULL | NULL | NULL | NULL | NULL |
| wawan.kusniadi | Wawan Kusnadi | wawan.kusnadi@gmail.com | 82345678901 | 2 | 0 | L | 2 | Lembah Buana | 4 | 4 | Sandhika Galih |
| yanto.permadi | Yanto Permadi | yanto.permadi@gmail.com | 85672901234 | 4 | 0 | L | 4 | Wibu Barat | 3 | 3 | Eko Kurniawan |
| yoga.pranata | Yoga Pranata | yoga.pranata@gmail.com | 85678904334 | NULL | 0 | L | NULL | NULL | NULL | NULL | NULL |
| yuli.kurniawan | Yuli Kurniawan | yuli.kurniawan@gmail.com | 85012345678 | 1 | 0 | P | 1 | Kuda Hitam | 2 | 2 | Herawati |
| zakiyah.kurniawan | Zakiyah Kurniawan | zakiyah.kurniawan@gmail.com | 81234567820 | NULL | 0 | P | NULL | NULL | NULL | NULL | NULL |
+-------------------+-------------------+-----------------------------+-------------+------+---------+---------------+---------+--------------+----------------+----------------+----------------+
Itu dia pembahasan praktikum database yang bisa kita pelajari. Praktikum kali ini menunjukkan betapa pentingnya penggunaan database dalam memanajemen data dan informasi.
Semoga informasi yang sudah saya sampaikan bisa bermanfaat dan membantu teman-teman dalam mempelajari database dan SQL.
Jangan lupa untuk terus berlatih dan mempraktikkan, karena dengan berlatih, kita bisa semakin mahir dalam mengoperasikan database. Terima kasih sudah berkunjung dan sampai jumpa di blog selanjutnya!