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 atribut NOT 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 kolomno_telpdimulai dengan858`.

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 yaitu tb_team dan tb_koordinator. Tanda * digunakan untuk menunjukkan semua kolom.

  • FROM tb_team AS a : Menunjukkan bahwa data akan diambil dari tabel tb_team dan diberi alias a.

  • INNER JOIN tb_koordinator AS b : Menggabungkan tabel tb_team dengan tabel tb_koordinator menggunakan operasi JOIN dengan jenis JOIN yang dipilih adalah INNER JOIN. Tabel tb_koordinator diberi alias b.

  • ON a.id_koordinator = b.id_koordinator : Menunjukkan kriteria penggabungan antara kedua tabel tersebut, yaitu kolom id_koordinator pada tabel tb_team harus sama dengan kolom id_koordinator pada tabel tb_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 yaitu tb_team dan tb_koordinator. Tanda “*” digunakan untuk menunjukkan semua kolom.

  • FROM tb_team AS a : Menunjukkan bahwa data akan diambil dari tabel tb_team dan diberi alias a.

  • LEFT JOIN tb_koordinator AS b : Menggabungkan tabel tb_team dengan tabel tb_koordinator menggunakan operasi JOIN dengan jenis JOIN yang dipilih adalah LEFT JOIN. Tabel tb_koordinator diberi alias b.

  • ON a.id_koordinator = b.id_koordinator : Menunjukkan kriteria penggabungan antara kedua tabel tersebut, yaitu kolom id_koordinator pada tabel tb_team harus sama dengan kolom id_koordinator pada tabel tb_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 yaitu tb_team dan tb_koordinator. Tanda “*” digunakan untuk menunjukkan semua kolom.

  • FROM tb_team AS a : Menunjukkan bahwa data akan diambil dari tabel tb_team dan diberi alias a.

  • RIGHT JOIN tb_koordinator AS b : Menggabungkan tabel tb_team dengan tabel tb_koordinator menggunakan operasi JOIN dengan jenis JOIN yang dipilih adalah RIGHT JOIN. Tabel tb_koordinator diberi alias b.

  • ON a.id_koordinator = b.id_koordinator : Menunjukkan kriteria penggabungan antara kedua tabel tersebut, yaitu kolom id_koordinator pada tabel tb_team harus sama dengan kolom id_koordinator pada tabel tb_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 tabel tb_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 tabel tb_anggota. Jumlah anggota kemudian ditampilkan dalam hasil query dengan alias jumlah_anggota.

  • FROM tb_anggota AS a : Digunakan untuk menunjukkan bahwa tabel tb_anggota akan digunakan dalam query, dengan menggunakan alias a.

  • LEFT JOIN tb_team AS b ON a.team = b.id_team : Digunakan untuk menggabungkan tabel tb_anggota dan tb_team berdasarkan kolom team dari tabel tb_anggota yang sama dengan kolom id_team dari tabel tb_team. LEFT JOIN digunakan untuk mempertahankan semua baris dari tabel tb_team bahkan jika tidak ada baris yang cocok di tabel tb_anggota.

  • LEFT JOIN tb_koordinator AS c ON b.id_koordinator = c.id_koordinator : Digunakan untuk menggabungkan tabel tb_team dengan tb_koordinator berdasarkan kolom id_koordinator. Ini memungkinkan kita untuk menampilkan nama koordinator yang bertanggung jawab atas setiap tim. Kembali, LEFT JOIN digunakan untuk mempertahankan semua baris dari tabel tb_team bahkan jika tidak ada baris yang cocok di tabel tb_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 dengan tb_team menggunakan kolom team pada tabel tb_anggota dan id_team pada tabel tb_team. LEFT JOIN digunakan untuk memastikan bahwa semua baris dari tabel tb_anggota akan dipertahankan, bahkan jika tidak ada baris yang cocok dari tabel tb_team. Alias ‘b’ diberikan untuk tabel tb_team.

  • LEFT JOIN tb_koordinator AS c ON b.id_koordinator = c.id_koordinator : Ini adalah operasi JOIN kedua yang menghubungkan tabel tb_team dengan tb_koordinator menggunakan kolom id_koordinator. Karena tabel tb_koordinator hanya terhubung dengan tabel tb_team melalui kolom id_koordinator, JOIN ini hanya mempertahankan baris yang cocok pada kedua tabel. Alias ‘c’ diberikan untuk tabel tb_koordinator.

  • ORDER BY a.nama ASC : Ini adalah perintah untuk mengurutkan hasil berdasarkan kolom nama pada tabel tb_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!