MODUL 9
SQL (OPERASI PADA TABEL TUNGGAL)
A.MAKSUD DAN TUJUAN
Agar mahasiswa memahami tentang perintah-perintah yang digunakan untuk melakukan operasi dan melakukan modifikasi pada tabel tunggal.
B.PEMBAHASAN
ALL : kata kunci dasar untuk pernyataan select. Kondisi denagn ALL menghasilkan nilai benar jika perbandingan dihasilkan niali benar untuk setiap nilai dalam subquery. Tetapi kita hampir tidak pernah menemukan kata kunci tersebut karena hasil dari select<nama tabel> dan select all<nama tabel> adalah identik.
Pelaksanaan praktikum :
mysql> show tables; //untuk menampilkan table dari dbproyek1.
mysql> select * from divisi;
+---------+------------+-------------+---------------------------+
| kodediv | lokasi | kodemanager | namadiv |
+---------+------------+-------------+---------------------------+
| D101 | Bandung | 13235500 | Construction Management |
| D102 | Yogyakarta | 13235539 | Marketing Management |
| D501 | Yogyakarta | 13235540 | Management Information Sy |
| D535 | Jakarta | 13235552 | Production Management |
+---------+------------+-------------+---------------------------+
4 rows in set (0.00 sec)
mysql> select * from divisi; //digunakan untuk menampilkan data dari divisi yang berisi kodediv, lokasi, kodemanager, namadiv.
mysql> select kodediv, namadiv from divisi order by namadiv;
+---------+---------------------------+
| kodediv | namadiv |
+---------+---------------------------+
| D101 | Construction Management |
| D501 | Management Information Sy |
| D102 | Marketing Management |
| D535 | Production Management |
+---------+---------------------------+
4 rows in set (0.00 sec)
mysql> select kodediv, namadiv from divisi order by namadiv; //untuk menampilkan kodediv, namadiv dari table divisi mengurutkan namadiv berdasar nama secara urut naik.
mysql> select kodediv, namadiv from divisi order by namadiv desc;
+---------+---------------------------+
| kodediv | namadiv |
+---------+---------------------------+
| D535 | Production Management |
| D102 | Marketing Management |
| D501 | Management Information Sy |
| D101 | Construction Management |
+---------+---------------------------+
4 rows in set (0.00 sec)
mysql> select kodediv, namadiv from divisi order by namadiv desc; //digunakan untuk menampilkan data kodediv, namadiv, dari table divisi dan mengurutkan secara urut turun.
mysql> select kodediv, namadiv from divisi order by kodediv;
+---------+---------------------------+
| kodediv | namadiv |
+---------+---------------------------+
| D101 | Construction Management |
| D102 | Marketing Management |
| D501 | Management Information Sy |
| D535 | Production Management |
+---------+---------------------------+
4 rows in set (0.00 sec)
mysql> select kodediv, namadiv from divisi order by kodediv; // untuk mengurutkan berdasarkan nama kodediv secara urut naik.
mysql> select kodediv, namadiv, lokasi from divisi order by namadiv desc, lokasi
;
+---------+---------------------------+------------+
| kodediv | namadiv | lokasi |
+---------+---------------------------+------------+
| D535 | Production Management | Jakarta |
| D102 | Marketing Management | Yogyakarta |
| D501 | Management Information Sy | Yogyakarta |
| D101 | Construction Management | Bandung |
+---------+---------------------------+------------+
4 rows in set (0.00 sec)
mysql> select kodediv, namadiv, lokasi from divisi order by namadiv desc, lokasi //untuk mengurutkan divisi menurut jenis dan nama. Pada kodediv, namadiv, lokasi untuk table divisi.
mysql> select kodediv, namadiv from divisi order by 2;
+---------+---------------------------+
| kodediv | namadiv |
+---------+---------------------------+
| D101 | Construction Management |
| D501 | Management Information Sy |
| D102 | Marketing Management |
| D535 | Production Management |
+---------+---------------------------+
4 rows in set (0.00 sec)
mysql> select kodediv, namadiv from divisi order by 2; //untuk mengurutkan divisi menurut kolom 2 (jenis).
mysql> select kodediv, namadiv from divisi order by 2;
+---------+---------------------------+
| kodediv | namadiv |
+---------+---------------------------+
| D101 | Construction Management |
| D501 | Management Information Sy |
| D102 | Marketing Management |
| D535 | Production Management |
+---------+---------------------------+
4 rows in set (0.00 sec)
mysql> select kodediv, namadiv from divisi order by 2; //untuk mengurutkan divisi menurut kolom 2 (jenis).
mysql> select kodediv, namadiv, lokasi, avg(kodemanager) from divisi group by l
kasi;
+---------+-------------------------+------------+------------------+
| kodediv | namadiv | lokasi | avg(kodemanager) |
+---------+-------------------------+------------+------------------+
| D101 | Construction Management | Bandung | 13235500 |
| D535 | Production Management | Jakarta | 13235552 |
| D102 | Marketing Management | Yogyakarta | 13235539.5 |
+---------+-------------------------+------------+------------------+
3 rows in set (0.03 sec)
mysql> select kodediv, namadiv, lokasi, avg(kodemanager) from divisi group by lokasi untuk menampilkan kodediv, //namadiv, lokasi dan untuk menghasilkan rata-rata kodemanager dikelompokkan berdasarkan kodediv, namadiv, lokasi.
mysql> select count(kodediv) from divisi;
+----------------+
| count(kodediv) |
+----------------+
| 4 |
+----------------+
1 row in set (0.00 sec)
mysql> select count(kodediv) from divisi; //untuk menghasilkan cacah baris dari tabel kodediv kolom kodediv dalam count dapat diganti apa saja (hanya 1 field) cukup ditulis * (sembarang).
mysql> select * from divisi LIMIT 3;
+---------+------------+-------------+---------------------------+
| kodediv | lokasi | kodemanager | namadiv |
+---------+------------+-------------+---------------------------+
| D101 | Bandung | 13235500 | Construction Management |
| D102 | Yogyakarta | 13235539 | Marketing Management |
| D501 | Yogyakarta | 13235540 | Management Information Sy |
+---------+------------+-------------+---------------------------+
3 rows in set (0.00 sec)
mysql> select * from divisi LIMIT 3; //untuk membatasi jumlah baris yang ditampilkan hanya menampilkan 3 record dari atas.
mysql> select lokasi,count(*) as cacah from divisi group by lokasi;
+------------+-------+
| lokasi | cacah |
+------------+-------+
| Bandung | 1 |
| Jakarta | 1 |
| Yogyakarta | 2 |
+------------+-------+
3 rows in set (0.00 sec)
mysql> select lokasi,count(*) as cacah from divisi group by lokasi; //menghitung jumlah acount dari divisi perjenis, khusus untuk yang dari lokasi.
LATIHAN
mysql> use perpustakaan;
Database changed
mysql> use perpustakaan; // digunakan untuk koneksi ke database sebelu menggunakan program mysql, kita harus mengakses basis data nya terlebih dahulu. Maka tanggapan mysql database changed.
mysql> show tables;
+------------------------+
| Tables_in_perpustakaan |
+------------------------+
| anggota |
| buku |
| jenisbk |
| pegawai |
| pengarang |
| pinjam |
+------------------------+
6 rows in set (0.00 sec)
mysql> show tables; // untuk menampilkan table pada perpustakaan. Yang hasil seperti table diatas.
mysql> select * from anggota;
+---------+------------------+-----------+------+---------+--------------+
| id_angt | nama_angt | nip_nim | ipk | jurusan | hari_nunggak |
+---------+------------------+-----------+------+---------+--------------+
| MHS0001 | Titik Hartati | 093110001 | 2.50 | AK | 5 |
| MHS0002 | Yani | 093110002 | 3.50 | AK | NULL |
mysql> select * from anggota; // untuk menampilkan atau membaca data dari anggota. Pada perintah ini untuk menampilkan semau kolom semua baris.
mysql> select * from anggota order by nama_angt;
+---------+------------------+-----------+------+---------+--------------+
| id_angt | nama_angt | nip_nim | ipk | jurusan | hari_nunggak |
+---------+------------------+-----------+------+---------+--------------+
| MHS0010 | Arief | 093110010 | 3.90 | MI | NULL |
| MHS0009 | Arman | 093110009 | 3.01 | MI | NULL |
mysql> select * from anggota order by nama_angt; // untuk menampilkan data dari anggota dan mengurutkan data dengan menggunakan ORDER BY. Dengan nama urutan naik.
mysql> select * from anggota order by nama_angt, ipk desc;
+---------+------------------+-----------+------+---------+--------------+
| id_angt | nama_angt | nip_nim | ipk | jurusan | hari_nunggak |
+---------+------------------+-----------+------+---------+--------------+
| MHS0010 | Arief | 093110010 | 3.90 | MI | NULL |
| MHS0009 | Arman | 093110009 | 3.01 | MI | NULL |
mysql> select * from anggota order by nama_angt, ipk desc; // untuk menampilkan nama dan ipk semua anggota
mysql> select * from anggota order by ipk desc, jurusan;
+---------+------------------+-----------+------+---------+--------------+
| id_angt | nama_angt | nip_nim | ipk | jurusan | hari_nunggak |
+---------+------------------+-----------+------+---------+--------------+
| MHS0010 | Arief | 093110010 | 3.90 | MI | NULL |
| MHS0003 | Bernedictus Cico | 093110003 | 3.75 | AK | 3 |
| MHS0002 | Yani | 093110002 | 3.50 | AK | NULL |
mysql> select * from anggota order by ipk desc, jurusan; // untuk menampilkan data anggota dengan mengurutkan ipkdengan jurusan.
mysql> select count(jurusan) from anggota;
+----------------+
| count(jurusan) |
+----------------+
| 21 |
mysql> select count(jurusan) from anggota; // menampilkan jurusan dari anggota
mysql> select count(jurusan) from anggota group by jurusan;
+----------------+
| count(jurusan) |
+----------------+
| 3 |
| 8 |
mysql> select count(jurusan) from anggota group by jurusan; // untuk menampilkan jurusan daria anggota.
mysql> select jurusan, count(jurusan) as 'banyak mahasiswa' from anggota group b
y jurusan;
+---------+------------------+
| jurusan | banyak mahasiswa |
+---------+------------------+
| AK | 3 |
| MI | 8 |
mysql> select jurusan, count(jurusan) as 'banyak mahasiswa' from anggota group by jurusan; // pada perintah ini untuk menampilkan jurusan, acount dari banyak mahasiswa dari group anggota nya dari jurusan. Pad jurusan AK ada 3 jumlah mahasiswa, sedangkan pada MI ada 8 mahasiswa.
mysql> select jurusan, avg(ipk) as 'Rerata IPK' from anggota group by jurusan;
+---------+------------+
| jurusan | Rerata IPK |
+---------+------------+
| AK | 3.250000 |
| MI | 2.696250 |
mysql> select jurusan, avg(ipk) as 'Rerata IPK' from anggota group by jurusan; // untuk menampilkan data pada table jurusan dengan menghitung rata-rata ipk,
mysql> select jurusan, max(ipk) as 'Rerata IPK' from anggota group by jurusan;
+---------+------------+
| jurusan | Rerata IPK |
+---------+------------+
| AK | 3.75 |
| MI | 3.90 |
mysql> select jurusan, max(ipk) as 'Rerata IPK' from anggota group by jurusan; // untuk menampilkan data bedasarkan ipk terbesar pada rata-rata ipk darijurusan.
mysql> select jurusan, min(ipk) as 'Rerata IPK' from anggota group by jurusan;
+---------+------------+
| jurusan | Rerata IPK |
+---------+------------+
| AK | 2.50 |
mysql> select jurusan, min(ipk) as 'Rerata IPK' from anggota group by jurusan; // menampilkan jurusan untuk memperoleh nilai ipk yang terkecil dari rerata ipk dari anggota jurusan.
mysql> select * from anggota limit 6;
+---------+------------------+-----------+------+---------+--------------+
| id_angt | nama_angt | nip_nim | ipk | jurusan | hari_nunggak |
+---------+------------------+-----------+------+---------+--------------+
| MHS0001 | Titik Hartati | 093110001 | 2.50 | AK | 5 |
mysql> select * from anggota limit 6; // untuk menampilkan data dari anggota dan membatasi jumlah baris yang ditampilkan. Hanya menampilkan 6 record dari atas.
mysql> select * from anggota order by nama_angt limit 6;
+---------+------------------+-----------+------+---------+--------------+
| id_angt | nama_angt | nip_nim | ipk | jurusan | hari_nunggak |
+---------+------------------+-----------+------+---------+--------------+
| MHS0010 | Arief | 093110010 | 3.90 | MI | NULL |
| MHS0009 | Arman | 093110009 | 3.01 | MI
| NULL |
mysql> select * from anggota order by nama_angt limit 6; // untuk menampilkan data anggota yang diurutkan dari anggota dan ditampilkan 6 record dari atas.
C.TUGAS
mysql> show tables;
+----------------------+
| Tables_in_tokoonline |
+----------------------+
| barang |
| detailbeli |
mysql> select * from barang;
+-------------+--------------------+--------------+
| kode_barang | nama_barang | harga_barang |
+-------------+--------------------+--------------+
| PRHP001 | HP LASER 4L | 1250000.00 |
| PRHP002 | HP LASER 5L | 1450000.00 |
mysql> select * from barang order by harga_barang;
+-------------+--------------------+--------------+
| kode_barang | nama_barang | harga_barang |
+-------------+--------------------+--------------+
| PRCN001 | CANON DESKJET 1000 | 650000.00 |
| PRCN002 | CANON DESKJET 1200 | 750000.00 |
mysql> select * from barang order by harga_barang desc;
+-------------+--------------------+--------------+
| kode_barang | nama_barang | harga_barang |
+-------------+--------------------+--------------+
| PRHP006 | HP LASER 1500 | 1950000.00 |
| PRHP005 | HP LASER 1020 | 1850000.00 |
mysql> select count(*) from barang order by harga_barang desc;
+----------+
| count(*) |
+----------+
| 11 |
mysql> select sum(harga_barang) from barang;
+-------------------+
| sum(harga_barang) |
+-------------------+
| 14350000.00 |
mysql> select avg(harga_barang) from barang;
+-------------------+
| avg(harga_barang) |
+-------------------+
| 1304545.454545 |
mysql> select * from barang group by kode_barang like 'prn%';
+-------------+-------------+--------------+
| kode_barang | nama_barang | harga_barang |
+-------------+-------------+--------------+
| PRHP001 | HP LASER 4L | 1250000.00 |
mysql> select avg(harga_barang) as 'Rerata Harga' from barang;
+----------------+
| Rerata Harga |
+----------------+
| 1304545.454545 |
mysql> select * from barang where kode_barang like 'prh%';
+-------------+---------------+--------------+
| kode_barang | nama_barang | harga_barang |
+-------------+---------------+--------------+
| PRHP001 | HP LASER 4L | 1250000.00 |
mysql> select avg(harga_barang) from barang where kode_barang like 'prh%';
+-------------------+
| avg(harga_barang) |
+-------------------+
| 1633333.333333 |
mysql> select avg(harga_barang) from barang where kode_barang like 'prc%';
+-------------------+
| avg(harga_barang) |
+-------------------+
| 910000.000000 |
mysql> select kode_barang, avg(harga_barang) from barang where kode_barang like
'prc%';
+-------------+-------------------+
| kode_barang | avg(harga_barang) |
+-------------+-------------------+
| PRCN001 | 910000.000000 |
mysql> select kode_barang, avg(harga_barang) from barang where kode_barang like
'prh%';
+-------------+-------------------+
| kode_barang | avg(harga_barang) |
+-------------+-------------------+
| PRHP001 | 1633333.333333 |
mysql> select max(harga_barang) from barang where nama_barang like 'HP%';
+-------------------+
| max(harga_barang) |
+-------------------+
| 1950000.00 |
mysql> select nama_barang, max(harga_barang) from barang where nama_barang like
'HP%';
+-------------+-------------------+
| nama_barang | max(harga_barang) |
+-------------+-------------------+
| HP LASER 4L | 1950000.00 |
mysql> select nama_barang, max(harga_barang) from barang where nama_barang like
'Canon%';
+--------------------+-------------------+
| nama_barang | max(harga_barang) |
+--------------------+-------------------+
| CANON DESKJET 1000 | 1150000.00 |
mysql> select nama_barang, min(harga_barang) from barang where nama_barang like
'Canon%';
+--------------------+-------------------+
| nama_barang | min(harga_barang) |
+--------------------+-------------------+
| CANON DESKJET 1000 | 650000.00 |
mysql> select nama_barang, min(harga_barang) from barang where nama_barang like
'HP%';
+-------------+-------------------+
| nama_barang | min(harga_barang) |
+-------------+-------------------+
| HP LASER 4L | 1250000.00 |
D.KESIMPULAN
Untuk memahami perintah-perintah yang digunakan untuk melakukan operasi dan melakukan modifikasi pada tabel tunggal. Kondisi dengan ALL menghasilkan nilai benar jika perbandingan dihasilkan nilai benar untuk setiap niali dalam subquery.
E.LISTING
Terlampir