# PERTEMUAN 08
## DATA MANIPULATION LANGUAGE (Bagian-4)
### Live Preview
- [Click Me](https://hackmd.io/@novaardiansyah/HkaVpLLfT)
## TUGAS PRAKTIKUM
### Soal A.
**a)** Buatlah struktur database *penjualan* dengan *suplier* sebagai tabel. Ketik perintah dibawah ini
```sql!
create database penjualan;
use penjualan;
create table suplier(id_suplier varchar(15), nama_suplier char(20), alamat varchar(30), no_tlp char(15), primary key(id_suplier));
desc suplier;
```
### Soal B.
**b)** Dari point *a)* diatas, tambahkan data sebagai berikut :
Menambahkan data pada table penjualan dengan insert into.
Ketik perintah dibawah ini :
```sql!
INSERT INTO suplier VALUES ('11234', 'Elex Media', 'PalMerah', '0215455454');
INSERT INTO suplier VALUES ('11236', 'BIP', 'Cakung', '0215455234');
INSERT INTO suplier VALUES ('11235', 'AgroMedia', 'Ciganjur', '0215455776');
INSERT INTO suplier VALUES ('11232', 'Erlangga', 'Ciracas', '0215454242');
INSERT INTO suplier VALUES ('11231', 'Mizan', 'Cilandak', '0215455899');
INSERT INTO suplier VALUES ('11230', 'KompasMedia', 'PalMerah', '0215455433');
```
### Soal C.
**c)** Dari point *a)* dan *b)* di atas, cari dan tampilkan data. Memampilkan data dengan perintah between untuk menampilkan data suplier yang mempunya id_suplier 11231 dan 11235
Ketik perintah di bawah ini:
```sql!
select * from suplier where id_suplier between 11231 and 11234;
```
### Soal D.
**d)** Masih di dalam Database *penjualan*, buat table dengan nama *buku*, kemudian isi table tersebut dengan data seperti di bawah ini :
```sql!
create table buku (isbn varchar(15), judul varchar(50), pengarang varchar(50), penerbit varchar(50), harga int, primary key(isbn));
insert into buku values ('2001145', 'IPS Terpadu', 'Tim Guru', 'Erlangga', 54000);
insert into buku values ('2005666', 'Cerdas Berbahasa', 'Srikanti', 'KompasMedia', 60000);
insert into buku values ('2007575', 'Teknik Industri', 'Suryanto', 'Penerbit Andi', 50000);
insert into buku values ('2000543', 'Good English', 'Michael R', 'ElexMedia', 45000);
insert into buku values ('2054449', 'Kimia Dasar', 'Michael Purba', 'Erlangga', 60000);
```
### Soal E.
**e)** Dari point *d)* di atas, cari dan tampilkan data yang mempunyai kisaran harga
50.000 sampai 60.000, sehingga seperti gambar di bawah ini.
```sql!
select * from buku where harga between 50000 and 60000
```
### Soal F.
**f)** Dari point *d)* di atas, cari dan tampilkan data menggunakan LIKE denganmenampilkan nama penerbit yang berawalan dengan huruf E, sehingga seperti gambar di bawah ini.
```sql!
select * from buku where penerbit like 'E%';
```
### Soal G.
**g)** dari point *d)* diatas, cari dan tampilkan data menggunakan *NOT LIKE* dengan tidak menampilkan *nama penerbit* yang berawal dengan huruf *E*, sehingga seperti gambar dibawah ini.
```sql!
select * from buku where penerbit not like 'E%';
```
### Soal H.
**h)** dari point *d)* diatas, cari dan tampilkan data menggunakan *IN* dan *NOT IN* untuk menampikan *pengarang* *Srikanti, Suryanto, Tim Guru*
```sql!
SELECT * FROM buku WHERE pengarang IN ('Srikanti', 'Suryanto', 'Tim Guru');
SELECT * FROM buku
WHERE pengarang NOT IN ('Srikanti', 'Suryanto', 'Tim Guru');
```
### Soal I.
**i)** dari point *d)* diatas, cari dan tampilkan data nama suplier saja dengan perintah *Group By* dan *Having*.
```sql!
SELECT judul FROM buku GROUP BY judul HAVING COUNT(*) > 1;
```
### Soal J.
**j)** dari point *d)* diatas, cari dan tampilkan data *ISBN* dengan *Order By Asc* dan *Desc*
```sql!
select * from buku order by isbn asc;
select * from buku order by isbn desc;
```
## TUGAS PENDAHULUAN
### Soal
1. Tuliskan dan jelaskan Deklarasi sintaks perintah *Between* pada MySQL?
2. Apa fungsi perintah *Having* dalam menampilkan data?
3. Sebutkan dan jelaskan pengurutan data dalam *Order By*?
4. Apa perbedaan dari *Like* dan *Not Like*?
### Jawaban
1. **Perintah `BETWEEN` pada MySQL**: Perintah `BETWEEN` digunakan untuk memfilter data yang berada dalam rentang nilai tertentu. Contohnya: `SELECT * FROM tabel WHERE kolom BETWEEN nilai1 AND nilai2;` akan mengambil data di mana nilai kolom berada di antara `nilai1` dan `nilai2`.
2. **Fungsi perintah `HAVING`**: Perintah `HAVING` digunakan setelah `GROUP BY` untuk memfilter hasil agregasi. Ini memungkinkan Anda untuk menentukan kondisi untuk grup hasil agregasi, seperti jumlah atau rata-rata. Data yang memenuhi kondisi `HAVING` akan ditampilkan.
3. **Pengurutan dalam `ORDER BY`**: Perintah `ORDER BY` digunakan untuk mengurutkan hasil query. Anda dapat mengurutkan data berdasarkan satu atau beberapa kolom, dan Anda dapat mengatur urutan pengurutan (ascending/ascending) menggunakan `ASC` dan `DESC`.
4. **Perbedaan antara `LIKE` dan `NOT LIKE`**: `LIKE` digunakan untuk mencocokkan data yang cocok dengan pola teks tertentu, sedangkan `NOT LIKE` digunakan untuk mencocokkan data yang tidak cocok dengan pola teks tertentu. `LIKE` akan mengembalikan data yang sesuai dengan pola, sedangkan `NOT LIKE` akan mengembalikan data yang tidak sesuai dengan pola.
## TUGAS AKHIR
### Kesimpulan
Dalam pengelolaan basis data, perintah-perintah seperti *BETWEEN*, *LIKE*, *IN*, dan *ORDER BY* digunakan untuk mengakses dan mengatur data dalam tabel dengan lebih efektif.
Perintah *BETWEEN* digunakan untuk memfilter data di antara dua nilai yang ditentukan. Misalnya, jika ingin menampilkan semua transaksi yang terjadi antara tanggal tertentu, dapat menggunakan perintah `WHERE tanggal BETWEEN '2023-01-01' AND '2023-12-31'.`
Perintah *LIKE* digunakan untuk mencocokkan pola teks dalam kolom data. Misalnya, dapat menggunakan `WHERE nama LIKE 'John%'` untuk menampilkan semua entri yang dimulai dengan `John.`
Dengan menggunakan perintah-perintah ini, kita dapat mengakses, menyaring, dan mengurutkan data dalam basis data sesuai dengan kebutuhan.