Pelbagai
Kasus Database (Bagian 2)
Menggunakan SET untuk Menyisipkan Data Dalam Tabel DVD
Untuk menyisipkan rekaman ke dalam
tabel DVD, ketikkan statemen INSERT berikut:
mysql> INSERT INTO DVD
-> SET
NamaDVD='Some Like It Hot', TahunRilis=2001, IDTipeM='mt12',
-> IDStudio='s108',
IDRating='NR', IDFormat='f1', IDStatus='s2';
ERROR 1452 (23000): Cannot add or update a child row: a foreign
key constraint fails (`rentaldvd`.`dvd`, CONSTRAINT `dvd_ibfk_2` FOREIGN KEY
(`IDStudio`) REFERENCES `studio` (`IDStudio`))
Anda menerima pesan error yang
menyatakan bahwa kekangan foreign key gagal karena nilai IDStudio tidak ada
dalam tabel induk yang direferensi (Studio).
Untuk menyisipkan rekaman yang
diinginkan ke dalam tabel Studio, ketikkan statemen INSERT berikut:
mysql> INSERT INTO Studio
->
VALUES('s108','Metro-Goldwyn-Mayer');
Query OK, 1 row affected (0.08 sec)
Untuk memastikkannya, ketikkan query
berikut:
mysql> SELECT * FROM Studio;
+----------+---------------------------+
| IDStudio | DeskripsiStudio |
+----------+---------------------------+
| s101 | Universal
Studios |
| s102 | Warner
Brothers |
| s103 | Time
Warner |
| s104 | Columbia
Pictures |
| s105 | Paramount
Pictures |
| s106 | Twentieth
Century Fox |
| s107 | Merchant
Ivory Production |
| s108 |
Metro-Goldwyn-Mayer |
+----------+---------------------------+
8 rows in set (0.00 sec)
Sekarang, Anda dapat menyisipkan
rekaman ke dalam tabel DVD. Ketikkan statemen INSERT berikut:
mysql> INSERT INTO DVD
-> SET
NamaDVD='Some Like It Hot', TahunRilis=2001, IDTipeM='mt12',
-> IDStudio='s108',
IDRating='NR', IDFormat='f1', IDStatus='s2';
Query OK, 1 row affected (0.03 sec)
Untuk memastikkannya, ketikkan query
berikut:
mysql> SELECT * FROM DVD;
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+----------+
| IDDVD | NamaDVD | NomorDisk | TahunRilis
| IDTipeM | IDStudio | IDRating | IDFormat | IDStatus |
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+----------+
| 1 | White
Christmas | 1 | 2000 | mt16 | s105
| NR | f1 | s1 |
| 2 | What's Up,
Doc? | 1 | 2001 | mt12 | s103
| G | f1 | s2 |
| 3 | Out of
Africa | 1 | 2000 | mt11 | s101
| PG | f1 | s1 |
| 4 | The Maltese
Falcon | 1 | 2000 | mt11 | s103
| NR | f1 | s2 |
| 5 | Amadeus | 1 | 1997 | mt11 | s103
| PG | f1 | s2 |
| 6 | The Rocky Horror
Picture Show | 2 | 2000 | mt12 | s106
| NR | f1 | s2 |
| 7 | A Room with a
View | 1 |
2000 | mt11 | s107
| NR | f1 | s1 |
| 8 | Mash | 2 | 2001 | mt12 | s106
| R | f1 | s2 |
| 10 | Some Like It
Hot | 1 | 2001 | mt12 | s108
| NR | f1 | s2 |
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+----------+
9 rows in set (0.00 sec)
Menggunakan REPLACE untuk Menyisipkan Data
Untuk menyisipkan rekaman ke dalam
tabel Studio, ketikkan statemen REPLACE berikut ini:
mysql> REPLACE Studio (IDStudio, DeskripsiStudio)
->
VALUES('s109','New Line Cinema, Inc.');
Query OK, 1 row affected (0.06 sec)
Untuk memastikkannya, ketikkan query berikut:
mysql> SELECT * FROM Studio;
+----------+---------------------------+
| IDStudio | DeskripsiStudio |
+----------+---------------------------+
| s101 | Universal
Studios |
| s102 | Warner
Brothers |
| s103 | Time
Warner |
| s104 | Columbia
Pictures |
| s105 | Paramount
Pictures |
| s106 | Twentieth
Century Fox |
| s107 | Merchant
Ivory Production |
| s108 |
Metro-Goldwyn-Mayer |
| s109 | New Line Cinema,
Inc. |
+----------+---------------------------+
9 rows in set (0.00 sec)
Menggunakan SET untuk Menyisipkan Data Dalam Tabel TipeMovie
Untuk menyisipkan rekaman ke dalam
tabel TipeMovie, ketikkan statemen INSERT berikut:
mysql> REPLACE TipeMovie
-> SET
IDTipeM='mt17', DeskripsiTipeM='Foreign-subtitled';
Query OK, 1 row affected (0.06 sec)
Untuk memastikkannya, ketikkan query
berikut:
mysql> SELECT * FROM TipeMovie;
+---------+-------------------+
| IDTipeM | DeskripsiTipeM
|
+---------+-------------------+
| mt10 | Aksi |
| mt11 | Drama |
| mt12 | Komedi |
| mt13 | Komedi
Romantis |
| mt14 | Fantasi |
| mt15 |
Dokumenter |
| mt16 | Musikal |
| mt17 |
Foreign-subtitled |
+---------+-------------------+
8 rows in set (0.00 sec)
Menggunakan UPDATE untuk Memodifikasi Data Dalam Tabel DVD
Untuk memperbarui rekaman dalam tabel
DVD, ketikkan statemen UPDATE berikut:
mysql> UPDATE DVD
-> SET
IDStudio='s107'
-> WHERE IDDVD=10;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1 Changed:
1 Warnings: 0
Untuk memastikkannya, ketikkan query
berikut:
mysql> SELECT * FROM DVD;
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+--------+
| IDDVD | NamaDVD | NomorDisk | TahunRilis
| IDTipeM | IDStudio | IDRating | IDFormat | IDStatus |
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+--------+
| 1 | White
Christmas | 1 | 2000 | mt16 | s105
| NR | f1 | s1 |
| 2 | What's Up,
Doc? | 1 | 2001 | mt12 | s103
| G | f1 | s2 |
| 3 | Out of
Africa | 1 | 2000 | mt11 | s101
| PG | f1 | s1 |
| 4 | The Maltese
Falcon | 1 |
2000 | mt11 | s103 | NR
| f1 | s2 |
| 5 | Amadeus | 1 | 1997 | mt11 | s103
| PG | f1 | s2 |
| 6 | The Rocky Horror
Picture Show | 2 | 2000 | mt12 | s106
| NR | f1 | s2 |
| 7 | A Room with a
View | 1 | 2000 | mt11 | s107
| NR | f1 | s1 |
| 8 | Mash | 2 | 2001 | mt12 |
s106 | R | f1 | s2 |
| 10 | Some Like It
Hot | 1 | 2001 | mt12 | s107
| NR | f1 | s2 |
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+--------+
9 rows in set (0.00 sec)
Sekarang, Anda akan memperbarui tabel
dengan cara yang berbeda. Untuk memperbarui rekaman dalam tabel DVD, ketikkan
statemen UPDATE berikut:
mysql> UPDATE DVD
-> SET
IDStatus='s1'
-> WHERE IDDVD=10;
Query OK, 1 row affected (0.07 sec)
Rows matched: 1 Changed:
1 Warnings: 0
mysql> SELECT * FROM DVD;
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+--------+
| IDDVD | NamaDVD | NomorDisk | TahunRilis
| IDTipeM | IDStudio | IDRating | IDFormat | IDStatus |
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+--------+
| 1 | White
Christmas | 1 | 2000 | mt16 | s105
| NR | f1 | s1 |
| 2 | What's Up,
Doc? | 1 | 2001 | mt12 | s103
| G | f1 | s2 |
| 3 | Out of
Africa | 1 |
2000 | mt11 | s101 | PG
| f1 | s1 |
| 4 | The Maltese
Falcon | 1 | 2000 | mt11 | s103
| NR | f1 | s2 |
| 5 | Amadeus | 1 | 1997 | mt11 | s103
| PG | f1 | s2 |
| 6 | The Rocky Horror
Picture Show | 2 | 2000 | mt12 | s106
| NR | f1 | s2 |
| 7 | A Room with a
View | 1 | 2000 | mt11 |
s107 | NR | f1 | s1 |
| 8 | Mash | 2 | 2001 | mt12 | s106
| R | f1 | s2 |
| 10 | Some Like It
Hot | 1 | 2001 | mt12 | s107
| NR | f1 | s1 |
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+--------+
9 rows in set (0.00 sec)
Untuk memperbarui rekaman yang sama
dalam tabel DVD, ketikkan statemen UPDATE berikut:
mysql> UPDATE DVD
-> SET
IDStatus='s3', IDTipeM='mt13'
-> WHERE IDDVD=10;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed:
1 Warnings: 0
mysql> SELECT * FROM DVD;
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+--------+
| IDDVD | NamaDVD | NomorDisk | TahunRilis
| IDTipeM | IDStudio | IDRating | IDFormat | IDStatus |
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+--------+
| 1 | White
Christmas | 1 | 2000 | mt16 | s105
| NR | f1 | s1 |
| 2 | What's Up,
Doc? | 1 | 2001 | mt12 | s103
| G | f1 | s2 |
| 3 | Out of
Africa | 1 | 2000 | mt11 | s101
| PG | f1 | s1 |
| 4 | The Maltese
Falcon | 1 |
2000 | mt11 | s103 | NR
| f1 | s2 |
| 5 | Amadeus | 1 | 1997 | mt11 | s103
| PG | f1 | s2 |
| 6 | The Rocky Horror
Picture Show | 2 | 2000 | mt12 | s106
| NR | f1 | s2 |
| 7 | A Room with a
View | 1 | 2000 | mt11 | s107
| NR | f1 | s1 |
| 8 | Mash | 2 | 2001 | mt12 |
s106 | R | f1 | s2 |
| 10 | Some Like It
Hot | 1 | 2001 | mt13 | s107
| NR | f1 | s3 |
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+--------+
9 rows in set (0.00 sec)
Menggunakan DELETE untuk Menghapus Data Dalam Tabel
TipeMovie
Untuk menghapus rekaman dalam tabel
TipeMovie, ketikkan statemen UPDATE berikut:
mysql> SELECT * FROM TipeMovie;
+---------+-------------------+
| IDTipeM | DeskripsiTipeM
|
+---------+-------------------+
| mt10 | Aksi |
| mt11 | Drama |
| mt12 | Komedi |
| mt13 | Komedi
Romantis |
| mt14 | Fantasi |
| mt15 |
Dokumenter |
| mt16 | Musikal |
| mt17 |
Foreign-subtitled |
+---------+-------------------+
8 rows in set (0.00 sec)
mysql> DELETE FROM TipeMovie
-> WHERE
IDTipeM='mt17';
Query OK, 1 row affected (0.06 sec)
mysql> SELECT * FROM TipeMovie;
+---------+-----------------+
| IDTipeM | DeskripsiTipeM
|
+---------+-----------------+
| mt10 | Aksi |
| mt11 | Drama |
| mt12 | Komedi |
| mt13 | Komedi
Romantis |
| mt14 | Fantasi |
| mt15 |
Dokumenter |
| mt16 | Musikal |
+---------+-----------------+
7 rows in set (0.00 sec)
Mempelajari Statemen SELECT Lebih Dalam
Untuk membaca semua rekaman, ketikkan
statemen SELECT berikut:
mysql> SELECT * FROM Karyawan;
+------------+------------+------------+---------------+
| IDKaryawan | FNKaryawan | MNKaryawan | LNKaryawan |
+------------+------------+------------+---------------+
| 1 | Rismon | H. | Sianipar |
| 2 | I | Ketut | Wiryajati |
| 3 |
Muhammad | NULL | Irwan |
| 4 | Hamzan | NULL | Wadi |
| 5 | Tobat | NULL | Sinaga |
| 6 | Krista | C. | Simanungkalit |
+------------+------------+------------+---------------+
6 rows in set (0.00 sec)
Selanjutnya, Anda akan membaca
nilai-nilai dari FNKaryawan dan LNKaryawan dari tabel Karyawan. Ketikkan
statemen SELECT berikut:
mysql> SELECT FNKaryawan, LNKaryawan
-> FROM Karyawan;
+------------+---------------+
| FNKaryawan | LNKaryawan
|
+------------+---------------+
| Rismon |
Sianipar |
| I |
Wiryajati |
| Muhammad | Irwan |
| Hamzan | Wadi |
| Tobat | Sinaga |
| Krista |
Simanungkalit |
+------------+---------------+
6 rows in set (0.00 sec)
Sekarang, Anda akan membaca nilai-nilai
yang sama, tetapi kali ini dengan menyediakan nama-nama alias untuk tiap kolom.
Ketikkan statemen SELECT berikut:
mysql> SELECT FNKaryawan AS 'Nama Depan', LNKaryawan AS 'Nama
Belakang'
-> FROM Karyawan;
+------------+---------------+
| Nama Depan | Nama Belakang |
+------------+---------------+
| Rismon |
Sianipar |
| I |
Wiryajati |
| Muhammad | Irwan |
| Hamzan | Wadi |
| Tobat | Sinaga |
| Krista |
Simanungkalit |
+------------+---------------+
6 rows in set (0.00 sec)
Selanjutnya, Anda bisa mendefinisikan
variabel (@rating) dalam statemen SELECT, sebagai berikut:
mysql> SELECT @rating:=IDRating
-> FROM DVD
-> WHERE
NamaDVD='White Christmas';
+-------------------+
| @rating:=IDRating |
+-------------------+
| NR |
+-------------------+
1 row in set (0.01 sec)
Setelah variabel diciptakan, Anda dapat
menggunakannya di dalam statemen SELECT. Untuk menggunakan variabel dalam
membaca rekaman-rekaman dari tabel DVD, ketikkan statemen SELECT berikut:
mysql> SELECT IDDVD, NamaDVD, IDTipeM
-> FROM DVD
-> WHERE
IDRating=@rating;
+-------+-------------------------------+---------+
| IDDVD | NamaDVD | IDTipeM |
+-------+-------------------------------+---------+
| 1 | White
Christmas | mt16 |
| 4 | The Maltese
Falcon | mt11 |
| 6 | The Rocky Horror
Picture Show | mt12 |
| 7 | A Room with a
View | mt11 |
| 10 | Some Like It
Hot | mt13 |
+-------+-------------------------------+---------+
5 rows in set (0.02 sec)
Dalam statemen SELECT, Anda dapat
memiliki opsi ALL untuk membaca rekaman-rekaman dari tabel DVD. Ketikkan
statemen SELECT berikut:
mysql> SELECT ALL IDRating, IDStatus
-> FROM DVD;
+----------+----------+
| IDRating | IDStatus |
+----------+----------+
| NR | s1 |
| G | s2 |
| PG | s1 |
| NR | s2 |
| PG | s2 |
| NR | s2 |
| NR | s1 |
| R | s2 |
| NR | s3 |
+----------+----------+
9 rows in set (0.00 sec)
Sekarang, Anda bisa menggunakan opsi
DISTINCT menggantukan opsi ALL. Ketikkan statemen SELECT berikut:
mysql> SELECT DISTINCT IDRating, IDStatus
-> FROM DVD;
+----------+----------+
| IDRating | IDStatus |
+----------+----------+
| NR | s1 |
| G | s2 |
| PG | s1 |
| NR | s2 |
| PG | s2 |
| R | s2
|
| NR | s3 |
+----------+----------+
7 rows in set (0.00 sec)
Statemen SELECT dalam memuat klause
WHERE yang memuat satu kondisi. Ketikkan statemen SELECT berikut:
mysql> SELECT NamaDVD, IDTipeM
-> FROM DVD
-> WHERE
IDStatus='s2';
+-------------------------------+---------+
| NamaDVD
| IDTipeM |
+-------------------------------+---------+
| What's Up, Doc?
| mt12 |
| The Maltese Falcon
| mt11 |
| Amadeus | mt11 |
| The Rocky Horror Picture Show | mt12 |
| Mash
| mt12 |
+-------------------------------+---------+
5 rows in set (0.00 sec)
Sekarang, Anda bisa mengubah statemen
SELECT yang telah Anda ciptakan sebelumnya sehingga memuat beberapa kondisi di
dalam klausa WHERE. Ketikkan statemen SELECT berikut:
mysql> SELECT NamaDVD, IDTipeM
-> FROM DVD
-> WHERE
IDStatus='s1' OR IDStatus='s3' OR IDStatus='s4';
+--------------------+---------+
| NamaDVD |
IDTipeM |
+--------------------+---------+
| White Christmas |
mt16 |
| Out of Africa |
mt11 |
| A Room with a View | mt11
|
| Some Like It Hot |
mt13 |
+--------------------+---------+
4 rows in set (0.03 sec)
Selanjutnya, statemen SELECT berikut
mencantumkan beberapa kondisi dalam klausa WHERE. Kali ini, Anda mengunakan
operator OR dan AND. Ketikkan statemen SELECT berikut:
mysql> SELECT NamaDVD, IDTipeM
-> FROM DVD
-> WHERE
IDStatus='s2' AND (IDRating='NR' OR IDRating='G');
+-------------------------------+---------+
| NamaDVD
| IDTipeM |
+-------------------------------+---------+
| What's Up, Doc?
| mt12 |
| The Maltese Falcon
| mt11 |
| The Rocky Horror Picture Show | mt12 |
+-------------------------------+---------+
3 rows in set (0.00 sec)
Anda bisa menggunakan statemen SELECT
untuk mengelompokkan nilai-nilai dalam kolom IDPesan. Ketikkan statemen SELECT
berikut:
mysql> SELECT IDPesan, COUNT(*) AS Transaksi
-> FROM Transaksi
-> GROUP BY
IDPesan;
+---------+-----------+
| IDPesan | Transaksi |
+---------+-----------+
| 1 | 3 |
| 2 | 1 |
| 3 | 3 |
| 4 | 1 |
| 5 | 1 |
| 6 | 2 |
| 7 | 1 |
| 8 | 3 |
| 9 | 2 |
| 10 | 1 |
| 11 | 3 |
| 12 | 1 |
| 13 | 1 |
+---------+-----------+
13 rows in set (0.00 sec)
Statemen SELECT berikutnya
mengelompokkan nilai-nilai pada
kolom-kolom tabel IDTipeM dan IDRating. Ketikkan statemen SELECT berikut:
mysql> SELECT IDTipeM, IDRating, COUNT(*) AS 'Total DVD'
-> FROM DVD
-> GROUP BY
IDTipeM, IDRating;
+---------+----------+-----------+
| IDTipeM | IDRating | Total DVD |
+---------+----------+-----------+
| mt11 | NR |
2 |
| mt11 | PG |
2 |
| mt12 | G | 1 |
| mt12 | NR |
1 |
| mt12 | R | 1 |
| mt13 | NR |
1 |
| mt16 | NR |
1 |
+---------+----------+-----------+
7 rows in set (0.00 sec)
Statemen SELECT selanjutnya sama dengan
sebelumnya kecuali bahwa sekarang Anda mencantumkan opsi WITH ROLLUP di dalam
klausa GROUP BY. Ketikkan statemen SELECT berikut:
mysql> SELECT IDTipeM, IDRating, COUNT(*) AS 'Total DVD'
-> FROM DVD
-> GROUP BY
IDTipeM, IDRating WITH ROLLUP;
+---------+----------+-----------+
| IDTipeM | IDRating | Total DVD |
+---------+----------+-----------+
| mt11 | NR |
2 |
| mt11 | PG |
2 |
| mt11 | NULL |
4 |
| mt12 | G | 1 |
| mt12 | NR |
1 |
| mt12 | R | 1 |
| mt12 | NULL |
3 |
| mt13 | NR |
1 |
| mt13 | NULL |
1 |
| mt16 | NR |
1 |
| mt16 | NULL |
1 |
| NULL | NULL |
9 |
+---------+----------+-----------+
12 rows in set (0.00 sec)
Statemen SELECT dapat dipakai untuk
membatasi baris-baris hanya pada yang memiliki nilai total lebih dari 1.
Ketikkan statemen SELECT berikut:
mysql> SELECT IDRating, COUNT(*) AS Total
-> FROM DVD
-> GROUP BY
IDRating
-> HAVING
Total>1;
+----------+-------+
| IDRating | Total |
+----------+-------+
| NR | 5 |
| PG | 2 |
+----------+-------+
2 rows in set (0.00 sec)
Statemen SELECT berikutnya mencantumkan
klausa HAVING yang membatasi baris-baris dengan nilai total lebih dari 2.
Ketikkan statemen SELECT berikut:
mysql> SELECT IDKaryawan, COUNT(*) AS Total
-> FROM Pesan
-> GROUP BY
IDKaryawan
-> HAVING
Total>2;
+------------+-------+
| IDKaryawan | Total |
+------------+-------+
| 2 | 3 |
+------------+-------+
1 row in set (0.00 sec)
Statemen SELECT berikut membaca
baris-baris dari tabel DVD dan mengurutkannya berdasarkan nilai-nilai pada
kolom NamaDVD. Ketikkan statemen SELECT berikut:
mysql> SELECT NamaDVD, IDTipeM, IDRating
-> FROM DVD
-> WHERE
IDRating!='NR'
-> ORDER BY
NamaDVD;
+-----------------+---------+----------+
| NamaDVD |
IDTipeM | IDRating |
+-----------------+---------+----------+
| Amadeus |
mt11 | PG |
| Mash |
mt12 | R |
| Out of Africa |
mt11 | PG |
| What's Up, Doc? | mt12
| G |
+-----------------+---------+----------+
4 rows in set (0.00 sec)
Statemen SELECT juga dapat membaca
baris-baris dari tabel DVD, hanya kali ini, baris-baris diurutkan berdasarkan
nilai-nilai pada kolom IDTipeM dan pada kolom IDRating. Ketikkan statemen
SELECT berikut:
mysql> SELECT IDTipeM, IDRating, NamaDVD
-> FROM DVD
-> WHERE
IDRating!='NR'
-> ORDER BY
IDTipeM, IDRating;
+---------+----------+-----------------+
| IDTipeM | IDRating | NamaDVD |
+---------+----------+-----------------+
| mt11 | PG | Out of Africa |
| mt11 | PG | Amadeus |
| mt12 | G | What's Up, Doc? |
| mt12 | R | Mash |
+---------+----------+-----------------+
4 rows in set (0.00 sec)
Sekarang, Anda akan menciptakan
statemen SELECT yang menggunakan klausa ORDER BY dan klausa LIMIT untuk
menghasilkan pesanan terakhir yang ditambahkan pada tabel Pesan. Ketikkan
statemen SELECT berikut:
mysql> SELECT IDPesan, IDKonsumen
-> FROM Pesan
-> ORDER BY IDPesan
DESC
-> LIMIT 1;
+---------+------------+
| IDPesan | IDKonsumen |
+---------+------------+
| 13 | 5 |
+---------+------------+
1 row in set (0.00 sec)
Menciptakan Ekspresi Dengan Operator Aritmatik
Statemen SELECT berikut memuat sebuah
ekspresi yang memuat sebuah operator artimatik (-). Tuliskanlah statemen SQL
berikut:
mysql> SELECT NamaDVD, TahunRilis,
(YEAR(CURDATE())-TahunRilis) AS Rentang_Tahun
-> FROM DVD;
+-------------------------------+------------+---------------+
| NamaDVD
| TahunRilis | Rentang_Tahun |
+-------------------------------+------------+---------------+
| White Christmas
| 2000 | 14 |
| What's Up, Doc?
| 2001 | 13 |
| Out of Africa
| 2000 | 14 |
| The Maltese Falcon
| 2000 | 14 |
| Amadeus
| 1997 | 17 |
| The Rocky Horror Picture Show | 2000 | 14 |
| A Room with a View
| 2000 | 14 |
| Mash
| 2001 | 13 |
| Some Like It Hot
| 2001 | 13 |
+-------------------------------+------------+---------------+
9 rows in set (0.00 sec)
Pada statemen SQL ini, Anda menciptakan
sebuah statemen INSERT yang menambahkan suatu baris ke dalam tabel DVD.
Tuliskanlah statemen INSERT berikut:
mysql> INSERT INTO DVD
-> SET NamaDVD='The
Wizard of Oz', NomorDisk=2, TahunRilis=1999,
-> IDTipeM='mt14', IDStudio='s102', IDRating='G', IDFormat='f2',
IDStatus='s2';
Query OK, 1 row affected (0.06 sec)
mysql> SELECT * FROM DVD;
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+----------+
| IDDVD |
NamaDVD | NomorDisk
| TahunRilis | IDTipeM | IDStudio | IDRating | IDFormat | IDStatus |
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+----------+
| 1 | White Christmas | 1 | 2000 | mt16 | s105
| NR | f1 | s1 |
| 2 | What's Up, Doc? | 1 | 2001 | mt12 | s103
| G | f1 | s2 |
| 3 | Out of Africa | 1 | 2000 | mt11 | s101
| PG | f1 | s1 |
| 4 | The Maltese Falcon | 1 | 2000 | mt11 | s103
| NR | f1 | s2 |
| 5 | Amadeus | 1 | 1997 | mt11 | s103
| PG | f1 | s2 |
| 6 | The Rocky Horror Picture Show | 2 |
2000 | mt12 | s106
| NR | f1 | s2 |
| 7 | A Room with a View | 1 | 2000 | mt11 | s107
| NR | f1 | s1 |
| 8 | Mash | 2 | 2001 | mt12 | s106
| R | f1 | s2 |
| 10 | Some Like It Hot | 1 | 2001 | mt13 | s107
| NR | f1 | s3 |
| 11 | The Wizard of Oz | 2 | 1999 | mt14 | s102
| G | f2 | s2 |
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+----------+
10 rows in
set (0.00 sec)
Sekarang, Anda menuliskan statemen
UPDATE yang mencantumkan sebuah ekspresi di dalam klausa SET dan di dalam
klausa WHERE. Tuliskanlah statemen UPDATE berikut:
mysql> UPDATE DVD
-> SET
NomorDisk=NomorDisk/2
-> WHERE
NamaDVD='The Wizard of Oz';
Query OK, 1 row affected (0.07 sec)
Rows matched: 1 Changed:
1 Warnings: 0
mysql> SELECT * FROM DVD;
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+----------+
| IDDVD |
NamaDVD | NomorDisk
| TahunRilis | IDTipeM | IDStudio | IDRating | IDFormat | IDStatus |
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+----------+
| 1 | White Christmas | 1 | 2000 | mt16 | s105
| NR | f1 | s1 |
| 2 | What's Up, Doc? | 1 | 2001 | mt12 | s103
| G | f1 | s2 |
| 3 | Out of Africa | 1 | 2000 | mt11 | s101
| PG | f1 | s1 |
| 4 | The Maltese Falcon | 1 | 2000 | mt11 | s103
| NR | f1 | s2 |
| 5 | Amadeus | 1 | 1997 | mt11 | s103
| PG | f1 | s2 |
| 6 | The Rocky Horror Picture Show | 2 | 2000 | mt12 | s106
| NR | f1 | s2 |
| 7 | A Room with a View | 1 | 2000 | mt11 | s107
| NR | f1 | s1 |
| 8 | Mash | 2 | 2001 | mt12 | s106
| R | f1 | s2 |
| 10 | Some Like It Hot | 1 | 2001 | mt13 | s107
| NR | f1 | s3 |
| 11 | The Wizard of Oz | 1 | 1999 | mt14 | s102
| G | f2 | s2 |
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+----------+
10 rows in
set (0.00 sec)
Untuk mengembalikan tabel DVD ke
keadaan semula, Anda bisa menghapus baris yang telah Anda ciptakan sebelumnya. Tuliskanlah
statemen DELETE berikut:
mysql> DELETE FROM DVD
-> WHERE
NamaDVD='The Wizard of Oz';
Query OK, 1 row affected (0.06 sec)
mysql> SELECT * FROM DVD;
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+----------+
| IDDVD |
NamaDVD | NomorDisk
| TahunRilis | IDTipeM | IDStudio | IDRating | IDFormat | IDStatus |
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+----------+
| 1 | White Christmas | 1 | 2000 | mt16 | s105
| NR | f1 | s1 |
| 2 | What's Up, Doc? | 1 | 2001 | mt12 | s103
| G | f1 | s2 |
| 3 | Out of Africa | 1 | 2000 | mt11 | s101
| PG | f1 | s1 |
| 4 | The Maltese Falcon | 1 | 2000 | mt11 | s103
| NR | f1 | s2 |
| 5 | Amadeus | 1 | 1997 | mt11 | s103
| PG | f1 | s2 |
| 6 | The Rocky Horror Picture Show | 2 |
2000 | mt12 | s106
| NR | f1 | s2 |
| 7 | A Room with a View | 1 | 2000 | mt11 | s107
| NR | f1 | s1 |
| 8 | Mash | 2 | 2001 | mt12 | s106
| R | f1 | s2 |
| 10 | Some Like It Hot | 1 | 2001 | mt13 | s107
| NR | f1 | s3 |
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+----------+
9 rows in
set (0.00 sec)
Menciptakan Ekspresi Dengan Operator Perbandingan
Statemen SELECT berikut membaca
informasi dari tabel DVD. Statemen ini menghasilkan hanya baris-baris yang
memiliki nilai IDStatus s2. Tuliskanlah statemen SELECT berikut:
mysql> SELECT NamaDVD, IDStatus
-> FROM DVD
-> WHERE
IDStatus='s2'
-> ORDER BY
NamaDVD;
+-------------------------------+----------+
| NamaDVD
| IDStatus |
+-------------------------------+----------+
| Amadeus
| s2 |
| Mash
| s2 |
| The Maltese Falcon
| s2 |
| The Rocky Horror Picture Show | s2 |
| What's Up, Doc?
| s2 |
+-------------------------------+----------+
5 rows in set (0.00 sec)
Statemen SELECT selanjutnya sama dengan
yang telah Anda ciptakan sebelumnya, kecuali bahwa Anda hanya akan menampilkan
baris-baris yang tidak memiliki nilai IDStatus s2. Tuliskanlah statemen SELECT
berikut:
mysql> SELECT NamaDVD, IDStatus
-> FROM DVD
-> WHERE
IDStatus<>'s2'
-> ORDER BY
NamaDVD;
+--------------------+----------+
| NamaDVD |
IDStatus |
+--------------------+----------+
| A Room with a View | s1
|
| Out of Africa |
s1 |
| Some Like It Hot |
s3 |
| White Christmas |
s1 |
+--------------------+----------+
4 rows in set (0.00 sec)
Statemen SELECT berikutnya akan membaca
baris-baris dari tabel DVD untuk tahun rilis setelah tahun 2000. Tuliskanlah
statemen SELECT berikut:
mysql> SELECT NamaDVD, TahunRilis, IDStatus
-> FROM DVD
-> WHERE
TahunRilis>2000
-> ORDER BY
NamaDVD;
+------------------+------------+----------+
| NamaDVD |
TahunRilis | IDStatus |
+------------------+------------+----------+
| Mash | 2001 | s2 |
| Some Like It Hot |
2001 | s3 |
| What's Up, Doc? | 2001 | s2 |
+------------------+------------+----------+
3 rows in set (0.00 sec)
Statemen SELECT berikutnya membaca
informasi dari tabel Karyawan. Hanya baris-baris yang tidak memuat nilai
MNKaryawan NULL yang akan ditampilkan. Tuliskanlah statemen SELECT berikut:
mysql> SELECT FNKaryawan, MNKaryawan, LNKaryawan
-> FROM Karyawan
-> WHERE MNKaryawan
IS NOT NULL;
+------------+------------+---------------+
| FNKaryawan | MNKaryawan | LNKaryawan |
+------------+------------+---------------+
| Rismon | H. | Sianipar |
| I | Ketut | Wiryajati |
| Krista | C. | Simanungkalit |
+------------+------------+---------------+
3 rows in set (0.00 sec)
Sekarang, Anda melakukan query terhadap
data pada tabel Transaksi. Statemen SELECT berikut akan menghasilkan
baris-baris yang memiliki IDDVD 2, 5, atau 8. Tuliskanlah statemen SELECT
berikut:
mysql> SELECT IDPesan, IDTransaksi, IDDVD
-> FROM Transaksi
-> WHERE IDDVD
IN(2, 5, 8)
-> ORDER BY
IDPesan, IDTransaksi;
+---------+-------------+-------+
| IDPesan | IDTransaksi | IDDVD |
+---------+-------------+-------+
| 1 | 3 | 8 |
| 6 | 10 | 2 |
| 8 | 13 | 2 |
| 10 | 18 | 5 |
| 11 | 20 | 2 |
| 11 | 21 | 8 |
| 12 | 22 | 5 |
+---------+-------------+-------+
7 rows in set (0.03 sec)
Pada statemen SELECT selanjutnya, Anda
akan melakukan query terhadap tabel DVD dan menghasilkan semua baris yang
memuat kata “horror” di dalam nilai NamaDVD. Tuliskanlah statemen SELECT
berikut:
mysql> SELECT NamaDVD, IDStatus, IDRating
-> FROM DVD
-> WHERE NamaDVD
LIKE '%horror%'
-> ORDER BY
NamaDVD;
+-------------------------------+----------+----------+
| NamaDVD | IDStatus | IDRating |
+-------------------------------+----------+----------+
| The Rocky Horror Picture Show | s2 | NR |
+-------------------------------+----------+----------+
1 row in set (0.00 sec)
Statemen SELECT berikut akan
menghasilkan semua baris dengan nilai NamaDVD yang memuat huruf-huruf “ro”.
Tuliskanlah statemen SELECT berikut:
mysql> SELECT NamaDVD, IDStatus, IDRating
-> FROM DVD
-> WHERE NamaDVD
REGEXP 'ro'
-> ORDER BY
NamaDVD;
+-------------------------------+----------+----------+
| NamaDVD
| IDStatus | IDRating |
+-------------------------------+----------+----------+
| A Room with a View
| s1 | NR |
| The Rocky Horror Picture Show | s2 | NR |
+-------------------------------+----------+----------+
2 rows in set (0.04 sec)
Menciptakan Ekspresi Dengan Operator Logikal
Statemen SELECT berikut memuat dua
ekspresi pada klausa WHERE yang dihubungkan dengan operator logikal OR.
Tuliskan statemen SELECT berikut:
mysql> SELECT NamaDVD, IDTipeM, IDRating
-> FROM DVD
-> WHERE
IDRating='G' OR IDRating='PG'
-> ORDER BY
NamaDVD;
+-----------------+---------+----------+
| NamaDVD |
IDTipeM | IDRating |
+-----------------+---------+----------+
| Amadeus |
mt11 | PG |
| Out of Africa |
mt11 | PG |
| What's Up, Doc? | mt12
| G |
+-----------------+---------+----------+
3 rows in set (0.00 sec)
Selanjutnya, Anda menuliskan statemen
SELECT yang mencantumkan klausa WHERE dengan tiga ekspresi. Klausa tersebut
memuat sebuah operator AND dan sebuah operator OR. Tuliskan statemen SELECT
berikut:
mysql> SELECT NamaDVD, IDTipeM, IDRating
-> FROM DVD
-> WHERE IDStatus='s2'
AND (IDRating='G' OR IDRating='PG')
-> ORDER BY
NamaDVD;
+-----------------+---------+----------+
| NamaDVD |
IDTipeM | IDRating |
+-----------------+---------+----------+
| Amadeus |
mt11 | PG |
| What's Up, Doc? | mt12
| G |
+-----------------+---------+----------+
2 rows in set (0.00 sec)
Statemen SELECT berikut memuat tiga
ekspresi yang dihubungkan oleh suatu operator AND dan sebuah operator OR.
Selain itu, Anda juga menggunakan operator NOT untuk membalikkan kondisi.
Tuliskan statemen SELECT berikut:
mysql> SELECT NamaDVD, IDTipeM, IDRating
-> FROM DVD
-> WHERE
IDStatus='s2' AND NOT (IDRating='G' OR IDRating='PG')
-> ORDER BY
NamaDVD;
+-------------------------------+---------+----------+
| NamaDVD
| IDTipeM | IDRating |
+-------------------------------+---------+----------+
| Mash
| mt12 | R |
| The Maltese Falcon
| mt11 | NR |
| The Rocky Horror Picture Show | mt12 | NR
|
+-------------------------------+---------+----------+
3 rows in set (0.00 sec)
Menciptakan Ekspresi Dengan Operator Sort
Statemen SELECT berikut tidak
menggunakan operator BINARY. Tuliskan statemen SELECT berikut ini:
mysql> SELECT NamaDVD, IDStatus, IDRating
-> FROM DVD
-> WHERE NamaDVD
REGEXP 'W'
-> ORDER BY
NamaDVD;
+-------------------------------+----------+----------+
| NamaDVD
| IDStatus | IDRating |
+-------------------------------+----------+----------+
| A Room with a View
| s1 | NR |
| The Rocky Horror Picture Show | s2 | NR |
| What's Up, Doc?
| s2 | G |
| White Christmas
| s1 | NR |
+-------------------------------+----------+----------+
4 rows in set (0.03 sec)
Sekarang, Anda akan menuliskan statemen
SELECT yang hampir identik dengan sebelumnya, kecuali bahwa statemen baru ini
memuat operator BINARY. Tuliskan statemen SELECT berikut ini:
mysql> SELECT NamaDVD, IDStatus, IDRating
-> FROM DVD
-> WHERE NamaDVD
REGEXP BINARY 'W'
-> ORDER BY
NamaDVD;
+-----------------+----------+----------+
| NamaDVD |
IDStatus | IDRating |
+-----------------+----------+----------+
| What's Up, Doc? | s2
| G |
| White Christmas | s1
| NR |
+-----------------+----------+----------+
2 rows in set (0.01 sec)
Menggunakan Fungsi Perbandingan
Statemen SELECT berikut menugaskan
sebuah nilai kepada variabel @dvd1. Tuliskanlah statemen SQL berikut:
mysql> SELECT @dvd1:=IDDVD
-> FROM DVD
-> WHERE
NamaDVD='White Christmas';
+--------------+
| @dvd1:=IDDVD |
+--------------+
| 1 |
+--------------+
1 row in set (0.00 sec)
Selanjutnya, Anda menugaskan sebuah
nilai kepada variabel @dvd2. Tuliskanlah statemen SQL berikut:
mysql> SELECT @dvd2:=IDDVD
-> FROM DVD
-> WHERE
NamaDVD='Out of Africa';
+--------------+
| @dvd2:=IDDVD |
+--------------+
| 3 |
+--------------+
1 row in set (0.00 sec)
Sekarang, Anda akan menggunakan kedua
variabel tersebut di dalam klausa WHERE pada suatu statemen SELECT. Tuliskanlah
statemen SQL berikut:
mysql> SELECT IDPesan, IDTransaksi, IDDVD
-> FROM Transaksi
-> WHERE
IDDVD=LEAST(@dvd1, @dvd2)
-> ORDER BY
IDPesan, IDTransaksi;
+---------+-------------+-------+
| IDPesan | IDTransaksi | IDDVD |
+---------+-------------+-------+
| 1 | 1 | 1 |
| 3 | 6 | 1 |
| 6 | 11 |
1 |
| 8 | 14 | 1 |
| 9 | 17 | 1 |
+---------+-------------+-------+
5 rows in set (0.09 sec)
Statemen SELECT berikut menggunakan
fungsi IF() di dalam klausa SELECT untuk membaca data. Tuliskanlah statemen SQL
berikut:
mysql> SELECT NamaDVD AS Judul, IDStatus As Status, IDRating
As Rating,
->
IF(NomorDisk>1, 'Periksa disk ekstra!', 'Hanya 1 disk.') As Verifikasi
-> FROM DVD
-> ORDER BY Judul;
+-------------------------------+--------+--------+----------------------+
| Judul
| Status | Rating | Verifikasi
|
+-------------------------------+--------+--------+----------------------+
| A Room with a View
| s1 | NR
| Hanya 1 disk. |
| Amadeus
| s2 | PG | Hanya 1 disk. |
| Mash
| s2 | R | Periksa disk ekstra! |
| Out of Africa
| s1 | PG | Hanya 1 disk. |
| Some Like It Hot
| s3 | NR | Hanya 1 disk. |
| The Maltese Falcon
| s2 | NR | Hanya 1 disk. |
| The Rocky Horror Picture Show | s2 | NR
| Periksa disk ekstra! |
| What's Up, Doc? | s2 | G
| Hanya 1 disk. |
| White Christmas
| s1 | NR | Hanya 1 disk. |
+-------------------------------+--------+--------+----------------------+
9 rows in set (0.05 sec)
Sekarang Anda akan menggunakan fungsi
CASE(). Tuliskanlah statemen SQL berikut:
mysql> SELECT NamaDVD, IDRating AS Rating,
-> CASE
-> WHEN
IDRating='R' THEN 'Perlu pendampingan orang dewasa.'
-> WHEN
IDRating='X' THEN 'Tidak untuk usia di bawah 17 tahun.'
-> WHEN
IDRating='NR' THEN 'Perlu kehati-hatian dalam menyewa.'
-> ELSE 'OK untuk
disewa anak-anak.'
-> END AS Kebijakan
-> FROM DVD
-> ORDER BY
NamaDVD;
+-------------------------------+--------+------------------------------------+
|
NamaDVD | Rating |
Kebijakan |
+-------------------------------+--------+------------------------------------+
| A Room
with a View | NR | Perlu kehati-hatian dalam menyewa. |
|
Amadeus | PG | OK untuk disewa anak-anak. |
| Mash | R | Perlu pendampingan orang dewasa. |
| Out of
Africa | PG | OK untuk disewa anak-anak. |
| Some Like
It Hot | NR | Perlu kehati-hatian dalam menyewa. |
| The
Maltese Falcon | NR | Perlu kehati-hatian dalam menyewa. |
| The Rocky
Horror Picture Show | NR | Perlu
kehati-hatian dalam menyewa. |
| What's Up,
Doc? | G | OK untuk disewa anak-anak. |
| White
Christmas | NR | Perlu kehati-hatian dalam menyewa. |
+-------------------------------+--------+------------------------------------+
9 rows in
set (0.00 sec)
Pada statemen berikutnya, Anda juga
akan menggunakan fungsi CASE(), tetapi Anda menggunakannya dengan format yang
berbeda. Tuliskanlah statemen SQL berikut:
mysql> SELECT NamaDVD, IDRating AS Rating,
-> CASE IDRating
-> WHEN
IDRating='R' THEN 'Perlu pendampingan orang dewasa.'
-> WHEN
IDRating='X' THEN 'Tidak untuk usia di bawah 17 tahun.'
-> WHEN
IDRating='NR' THEN 'Perlu kehati-hatian dalam menyewa.'
-> ELSE 'OK untuk
disewa anak-anak.'
-> END AS Kebijakan
-> FROM DVD
-> ORDER BY
NamaDVD;
+-------------------------------+--------+-------------------------------------+
|
NamaDVD | Rating |
Kebijakan |
+-------------------------------+--------+-------------------------------------+
| A Room
with a View | NR | Perlu pendampingan orang dewasa. |
|
Amadeus | PG | Perlu pendampingan orang dewasa. |
| Mash | R | Tidak untuk usia di bawah 17 tahun. |
| Out of
Africa | PG | Perlu pendampingan orang dewasa. |
| Some Like
It Hot | NR | Perlu pendampingan orang dewasa. |
| The
Maltese Falcon | NR | Perlu pendampingan orang dewasa. |
| The Rocky
Horror Picture Show | NR | Perlu
pendampingan orang dewasa. |
| What's Up,
Doc? | G | Perlu pendampingan orang dewasa. |
| White
Christmas | NR | Perlu pendampingan orang dewasa. |
+-------------------------------+--------+-------------------------------------+
9 rows in
set, 2 warnings (0.00 sec)
Menggunakan Fungsi String
Statemen berikut menggunakan fungsi
CHAR_LENGTH() untuk menentukan panjang dari sebuah nilai yang dibaca.
Tuliskanlah statemen SQL berikut ini:
mysql> SELECT NamaDVD, CHAR_LENGTH(NamaDVD) AS PjgChar
-> FROM DVD
-> WHERE
CHAR_LENGTH(NamaDVD)>10
-> ORDER BY
NamaDVD;
+-------------------------------+---------+
| NamaDVD
| PjgChar |
+-------------------------------+---------+
| A Room with a View
| 18 |
| Out of Africa
| 13 |
| Some Like It Hot
| 16 |
| The Maltese Falcon
| 18 |
| The Rocky Horror Picture Show | 29 |
| What's Up, Doc?
| 15 |
| White Christmas
| 15 |
+-------------------------------+---------+
7 rows in set (0.00 sec)
Statemen SELECT berikut menggunakan
fungsi CONCAT_WS() untuk menggabungkan nama-nama karyawan. Tuliskanlah statemen
SQL berikut ini:
mysql> SELECT IDKaryawan, CONCAT_WS(' ', FNKaryawan,
MNKaryawan, LNKaryawan) AS Nama
-> FROM Karyawan
-> ORDER BY
LNKaryawan;
+------------+-------------------------+
| IDKaryawan | Nama |
+------------+-------------------------+
| 3 | Muhammad
Irwan |
| 1 | Rismon H.
Sianipar |
| 6 | Krista C.
Simanungkalit |
| 5 | Tobat
Sinaga |
| 4 | Hamzan
Wadi |
| 2 | I Ketut Wiryajati |
+------------+-------------------------+
6 rows in set (0.09 sec)
Selanjutnya, Anda menggunakan fungsi
CONCAT() dan LEFT() untuk menciptakan kode-kode registrasi untuk karyawan.
Tuliskanlah statemen SQL berikut ini:
mysql> SELECT IDKaryawan, CONCAT(LEFT(FNKaryawan, 2),
LEFT(LNKaryawan, 3), IDKaryawan) AS IDReg
-> FROM Karyawan
-> ORDER BY
IDKaryawan;
+------------+--------+
| IDKaryawan | IDReg |
+------------+--------+
| 1 | RiSia1 |
| 2 | IWir2 |
| 3 | MuIrw3 |
| 4 | HaWad4 |
| 5 | ToSin5 |
| 6 | KrSim6 |
+------------+--------+
6 rows in set (0.03 sec)
Sekarnag, Anda menuliskan sebuah
statemen SELECT yang menggunakan fungsi UPPER(), CONCAT_WS(), CONCAT(), LOWER(),
dan LEFT() untuk memanipulasi data dari tabel Karyawan. Tuliskanlah statemen
SQL berikut ini:
mysql> SELECT IDKaryawan, UPPER(CONCAT_WS(' ', FNKaryawan,
MNKaryawan, LNKaryawan)) AS Nama,
->
CONCAT(LOWER(LEFT(FNKaryawan, 2)), LOWER(LEFT(LNKaryawan, 3)), IDKaryawan) AS
IDReg
-> FROM Karyawan
-> ORDER BY
IDKaryawan;
+------------+-------------------------+--------+
| IDKaryawan | Nama | IDReg |
+------------+-------------------------+--------+
| 1 | RISMON H. SIANIPAR | risia1 |
| 2 | I KETUT
WIRYAJATI | iwir2 |
| 3 | MUHAMMAD
IRWAN | muirw3 |
| 4 | HAMZAN
WADI | hawad4 |
| 5 | TOBAT
SINAGA | tosin5 |
| 6 | KRISTA C.
SIMANUNGKALIT | krsim6 |
+------------+-------------------------+--------+
6 rows in set (0.01 sec)
Sekarang statemen SELECT memuat fungsi
UPPER(), CONCAT_WS(), CONCAT(), LOWER(), dan SUBSTRING() untuk memanipulasi
data dari tabel Karyawan. Tuliskanlah statemen SQL berikut ini:
mysql> SELECT IDKaryawan, UPPER(CONCAT_WS(' ', FNKaryawan,
MNKaryawan, LNKaryawan)) AS Nama,
->
CONCAT(LOWER(SUBSTRING(FNKaryawan, 2, 2)),
->
LOWER(SUBSTRING(LNKaryawan, 2, 3)), IDKaryawan) AS IDReg
-> FROM Karyawan
-> ORDER BY
IDKaryawan;
+------------+-------------------------+--------+
| IDKaryawan | Nama | IDReg |
+------------+-------------------------+--------+
| 1 | RISMON H.
SIANIPAR | isian1 |
| 2 | I KETUT
WIRYAJATI | iry2
|
| 3 | MUHAMMAD
IRWAN | uhrwa3 |
| 4 | HAMZAN
WADI | amadi4 |
| 5 | TOBAT
SINAGA | obina5 |
| 6 | KRISTA C.
SIMANUNGKALIT | riima6 |
+------------+-------------------------+--------+
6 rows in set (0.00 sec)
Menggunakan Fungsi Tanggal/Waktu
Statemen SELECT berikut menggunakan
fungsi DATEDIFF() untuk menentukan selisih antara TanggalKeluar dan
TanggalLambat pada tabel Transaksi. Tuliskanlah statemen SQL berikut ini:
mysql> SELECT IDDVD, TanggalKeluar, TanggalLambat,
DATEDIFF(TanggalLambat, TanggalKeluar) AS TotalHari
-> FROM Transaksi
-> WHERE
IDTransaksi=11;
+-------+---------------+---------------+-----------+
| IDDVD | TanggalKeluar | TanggalLambat | TotalHari |
+-------+---------------+---------------+-----------+
| 1 | 2014-08-23 | 2014-08-26 |
3 |
+-------+---------------+---------------+-----------+
1 row in set (0.04 sec)
Selanjutnya, Anda menggunakan fungsi
DAYNAME() untuk membaca nama hari dari tanggal tertentu. Tuliskanlah statemen
SQL berikut ini:
mysql> SELECT IDDVD, TanggalLambat, DAYNAME(TanggalLambat) AS
HariLambat
-> FROM Transaksi
-> WHERE
IDTransaksi=11;
+-------+---------------+------------+
| IDDVD | TanggalLambat | HariLambat |
+-------+---------------+------------+
| 1 | 2014-08-26 | Tuesday
|
+-------+---------------+------------+
1 row in set (0.00 sec)
Pada statemen SELECT berikut, Anda
menggunakan fungsi YEAR() untuk mengekstrak tahun dari sebuah nilai tanggal.
Tuliskanlah statemen SQL berikut ini:
mysql> SELECT IDTransaksi, YEAR(TanggalKeluar) AS
TanggalKeluar
-> FROM Transaksi
-> WHERE
IDTransaksi>15
-> ORDER BY
IDTransaksi;
+-------------+---------------+
| IDTransaksi | TanggalKeluar |
+-------------+---------------+
| 16 | 2014 |
| 17 | 2014 |
| 18 | 2014 |
| 19 | 2014 |
| 20 | 2014 |
| 21 | 2014 |
| 22 | 2014 |
| 23 | 2014 |
+-------------+---------------+
8 rows in set (0.00 sec)
Selanjutnya, Anda menggunakan fungsi
DATE_ADD() untuk menambah empat hari pada nilai TanggalKeluar di dalam tabel
Transaksi. Tuliskanlah statemen SQL berikut ini:
mysql> SELECT IDTransaksi, TanggalLambat,
->
DATE_ADD(TanggalLambat, INTERVAL 4 DAY) AS Tambah4Hari
-> FROM Transaksi
-> WHERE
IDTransaksi=11;
+-------------+---------------+-------------+
| IDTransaksi | TanggalLambat | Tambah4Hari |
+-------------+---------------+-------------+
| 11 |
2014-08-26 | 2014-08-30 |
+-------------+---------------+-------------+
1 row in set (0.04 sec)
Statemen SELECT berikut membaca tanggal
dan waktu sekarang pada sistem Anda. Tuliskanlah statemen SQL berikut ini:
mysql> SELECT CURDATE(), CURTIME(), NOW();
+------------+-----------+---------------------+
| CURDATE() | CURTIME() |
NOW() |
+------------+-----------+---------------------+
| 2014-08-23 | 16:07:31 |
2014-08-23 16:07:31 |
+------------+-----------+---------------------+
1 row in set (0.00 sec)
Menggunakan Fungsi Agregat
Pertama, Anda menggunakan fungsi MAX()
untuk menghasilkan nilai maksimum pada kolom NomorDisk pada tabel DVD.
Tuliskanlah statemen SQL berikut ini:
mysql> SELECT IDTipeM, MAX(NomorDisk) AS DiskMaks
-> FROM DVD
-> GROUP BY
IDTipeM;
+---------+----------+
| IDTipeM | DiskMaks |
+---------+----------+
| mt11 | 1 |
| mt12 | 2 |
| mt13 | 1 |
| mt16 | 1 |
+---------+----------+
4 rows in set (0.00 sec)
Sekarang, Anda menggunakan fungsi
COUNT() untuk menentukan jumlah baris pada tiap grup IDRating/IDTipeM pada
tabel DVD. Tuliskanlah statemen SQL berikut ini:
mysql> SELECT IDRating, IDTipeM, COUNT(*) AS Total
-> FROM DVD
-> GROUP BY
IDRating, IDTipeM WITH ROLLUP;
+----------+---------+-------+
| IDRating | IDTipeM | Total |
+----------+---------+-------+
| G | mt12 |
1 |
| G | NULL |
1 |
| NR | mt11 |
2 |
| NR | mt12 |
1 |
| NR | mt13 |
1 |
| NR | mt16 |
1 |
| NR | NULL |
5 |
| PG | mt11 |
2 |
| PG | NULL |
2 |
| R | mt12 |
1 |
| R | NULL |
1 |
| NULL | NULL
| 9 |
+----------+---------+-------+
12 rows in set (0.00 sec)
Menggunakan Penggabungan Dalam Membaca Data
Statemen SELECT berikut menggunakan
dasar penggabungan untuk membaca nilai-nilai NamaDVD dari tabel DVD dan
nilai-nilai DeskripsiTipeM dari tabel TipeMovie. Tuliskanlah statemen SQL
berikut ini:
mysql> SELECT NamaDVD, DeskripsiTipeM AS TipeMovie
-> FROM DVD AS d,
TipeMovie AS tm
-> WHERE
d.IDTipeM=tm.IDTipeM AND IDStatus='s2'
-> ORDER BY
NamaDVD;
+-------------------------------+-----------+
| NamaDVD
| TipeMovie |
+-------------------------------+-----------+
| Amadeus
| Drama |
| Mash
| Komedi |
| The Maltese Falcon | Drama |
| The Rocky Horror Picture Show | Komedi |
| What's Up, Doc?
| Komedi |
+-------------------------------+-----------+
5 rows in set (0.00 sec)
Statemen SELECT berikut ini sama dengan
yang sebelumnya kecuali bahwa Anda juga membaca data dari tabel Rating.
Tuliskanlah statemen SQL berikut ini:
mysql> SELECT NamaDVD, DeskripsiTipeM AS TipeMovie,
->
CONCAT(d.IDRating, ':', r.DeskripsiRating) AS Rating
-> FROM DVD AS d,
TipeMovie AS tm, Rating AS r
-> WHERE d.IDTipeM=tm.IDTipeM
AND d.IDRating=r.IDRating
-> AND
IDStatus='s2'
-> ORDER BY
NamaDVD;
+-------------------------------+-----------+--------------------------------+
| NamaDVD
| TipeMovie | Rating |
+-------------------------------+-----------+--------------------------------+
| Amadeus
| Drama | PG:Parental guidance
suggested |
| Mash
| Komedi | R:Under 17 requires
adult |
| The Maltese Falcon
| Drama | NR:Not rated |
| The Rocky Horror Picture Show | Komedi | NR:Not rated |
| What's Up, Doc?
| Komedi | G:General
audiences |
+-------------------------------+-----------+--------------------------------+
5 rows in set (0.04 sec)
Selanjutnya, Anda membaca data yang
sama dengan statemen SELECT sebelumnya, hanya kali ini, Anda menggunakan
penggabungan silang. Tuliskanlah statemen SQL berikut ini:
mysql> SELECT NamaDVD, DeskripsiTipeM AS TipeMovie,
->
CONCAT(d.IDRating, ':', r.DeskripsiRating) AS Rating
-> FROM TipeMovie
AS tm CROSS JOIN DVD AS d USING (IDTipeM)
-> CROSS JOIN
Rating AS r USING (IDRating)
-> WHERE
IDStatus='s2'
-> ORDER BY NamaDVD;
+-------------------------------+-----------+--------------------------------+
| NamaDVD
| TipeMovie | Rating |
+-------------------------------+-----------+--------------------------------+
| Amadeus | Drama | PG:Parental guidance suggested |
| Mash
| Komedi | R:Under 17 requires
adult |
| The Maltese Falcon
| Drama | NR:Not rated |
| The Rocky Horror Picture Show | Komedi | NR:Not rated |
| What's Up, Doc?
| Komedi | G:General
audiences |
+-------------------------------+-----------+--------------------------------+
5 rows in set (0.00 sec)
Dalam statemen SELECT berikutnya, Anda
menggunakan penggabungan dalam untuk membaca nama-nama konsumen dan ID-ID
transaksi untuk transaksi yang melibatkan DVD dengan nilai IDDVD 4. Tuliskanlah
statemen SQL berikut ini:
mysql> SELECT CONCAT_WS(' ', FNKonsumen, MNKonsumen,
LNKonsumen) AS Konsumen, IDTransaksi
-> FROM Konsumen
INNER JOIN Pesan USING (IDKonsumen)
-> INNER JOIN
Transaksi USING (IDPesan)
-> WHERE IDDVD=4
-> ORDER BY
LNKonsumen;
+------------------+-------------+
| Konsumen |
IDTransaksi |
+------------------+-------------+
| Putra H. Nababan |
12 |
| Najwa Shihab | 5 |
| Ralph Tampubolon |
2 |
| Joko Widodo | 8 |
+------------------+-------------+
4 rows in set (0.00 sec)
Selanjutnya, Anda menggunakan statemen
SELECT untuk menggabungkan empat tabel untuk menampilkan nama-nama partisipan,
film-film mereka berpartisipasi, dan peran-peran yang dimainkan. Tuliskanlah
statemen SQL berikut ini:
mysql> SELECT CONCAT_WS(' ', FNPartisipan, MNPartisipan,
LNPartisipan) AS Partisipan, NamaDVD,
-> DeskripsiPeran
AS Peran
-> FROM DVD AS d,
PartisipanDVD As dp, Partisipan AS p, Peran AS r
-> WHERE
d.IDDVD=dp.IDDVD AND p.IDPartisipan=dp.IDPartisipan AND r.IDPeran=dp.IDPeran
-> ORDER BY
LNPartisipan;
+------------------+-----------------+------------------+
| Partisipan |
NamaDVD | Peran |
+------------------+-----------------+------------------+
| John Barry | Out
of Africa | Komposer |
| Irving Berlin | White
Christmas | Komposer |
| Henry Buck |
What's Up, Doc? | Penulis Skenario |
| Rosemary Clooney | White Christmas | Aktor |
| Bing Crosby | White
Christmas | Aktor |
| Michael Curtiz | White
Christmas | Sutradara |
| Danny Kaye | White
Christmas | Aktor |
| Sydney Pollack | Out
of Africa | Produser |
| Sydney Pollack | Out
of Africa | Sutradara |
| Robert Redfort | Out
of Africa | Aktor |
| Meryl Streep | Out
of Africa | Aktor |
+------------------+-----------------+------------------+
11 rows in set (0.00 sec)
Menggunakan Penggabungan Luar Membaca Data
Untuk menguji penggabungan kiri, Anda
perlu menambahkan data pada tabel Karyawan agar dapat mendemonstrasikan
bagaimana penggabungan kiri dilakukan. Tuliskanlah statemen SQL berikut ini:
mysql> INSERT INTO Karyawan
-> VALUES(NULL,
'Rebecca', 'T.', 'Siahaan'),
-> (NULL, 'Rico',
'Chandra', 'Sianipar');
Query OK, 2 rows affected (0.07 sec)
Records: 2 Duplicates:
0 Warnings: 0
Sekarang, Anda akan melakukan
penggabungan luar atas tabel Karyawan dan tabel Pesan. Karena tabel Karyawan
dinamai lebih dahulu dalam kondisi penggabungan, semua baris dibaca dari tabel
tersebut, tidak memedulikan apakah baris-baris tersebut berkaitan dengan tabel
Pesan. Tuliskanlah statemen SQL berikut ini:
mysql> SELECT CONCAT_WS(' ', FNKaryawan, MNKaryawan,
LNKaryawan) AS Karyawan, IDPesan
-> FROM Karyawan
LEFT JOIN Pesan USING (IDKaryawan)
-> ORDER BY
LNKaryawan;
+-------------------------+---------+
| Karyawan | IDPesan |
+-------------------------+---------+
| Muhammad Irwan
| 1 |
| Muhammad Irwan
| 6 |
| Rebecca T. Siahaan
| NULL |
| Rismon H. Sianipar
| 5 |
| Rismon H. Sianipar
| 11 |
| Rico Chandra Sianipar
| NULL |
| Krista C. Simanungkalit |
4 |
| Krista C. Simanungkalit |
12 |
| Tobat Sinaga
| 3 |
| Tobat Sinaga
| 9 |
| Hamzan Wadi
| 8 |
| Hamzan Wadi
| 13 |
| I Ketut Wiryajati
| 2 |
| I Ketut Wiryajati
| 7 |
| I Ketut Wiryajati
| 10 |
+-------------------------+---------+
15 rows in set (0.04 sec)
Mencantumkan Subquery Pada Statemen SELECT
Statemen SELECT berikut membaca data
dari tabel DVD. Statemen itu menggunakan sebuah subquery untuk menghasilkan
suatu nilai dari nilai Status. Tuliskanlah statemen SQL berikut ini:
mysql> SELECT NamaDVD
-> FROM DVD
-> WHERE
IDStatus<>
-> (SELECT IDStatus
FROM Status WHERE DeskripsiStatus='Tersedia')
-> ORDER By
NamaDVD;
+--------------------+
| NamaDVD |
+--------------------+
| A Room with a View |
| Out of Africa |
| Some Like It Hot |
| White Christmas |
+--------------------+
4 rows in set (0.04 sec)
Statemen SELECT berikutnya membaca data
dari tabel DVD dan tabel TipeMovie. Statemen tersebut juga memuat subquery di
dalam klausa WHERE untuk membaca suatu nilai dari tabel Status. Tuliskanlah
statemen SQL berikut ini:
mysql> SELECT NamaDVD, DeskripsiTipeM AS TipeMovie
-> FROM DVD AS d,
TipeMovie AS tm
-> WHERE
d.IDTipeM=tm.IDTipeM AND IDStatus IN
-> (SELECT IDStatus
FROM Status WHERE DeskripsiStatus<>'Tersedia')
-> ORDER BY
NamaDVD;
+--------------------+-----------------+
| NamaDVD |
TipeMovie |
+--------------------+-----------------+
| A Room with a View | Drama |
| Out of Africa |
Drama |
| Some Like It Hot |
Komedi Romantis |
| White Christmas |
Musikal |
+--------------------+-----------------+
4 rows in set (0.00 sec)
Statemen SELECT berikut menggunakan
klausa GROUP BY untuk mengelompokkan data. Selain itu, statemen tersebut memuat
sebuah klausa HAVING yang memuat subquery yang membaca data dari tabel TipeMovie.
Tuliskanlah statemen SQL berikut ini:
mysql> SELECT IDTipeM, IDRating, COUNT(*) AS TotalDVD
-> FROM DVD
-> GROUP BY
IDTipeM, IDRating
-> HAVING IDTipeM
IN
-> (SELECT IDTipeM FROM TipeMovie WHERE
DeskripsiTipeM<>'Dokumenter');
+---------+----------+----------+
| IDTipeM | IDRating | TotalDVD |
+---------+----------+----------+
| mt11 | NR |
2 |
| mt11 | PG |
2 |
| mt12 | G |
1 |
| mt12 | NR |
1 |
| mt12 | R |
1 |
| mt13 | NR |
1 |
| mt16 | NR |
1 |
+---------+----------+----------+
7 rows in set (0.00 sec)
Mengimpor Data Dari File
Statemen SELECT berikut mengekspor data
dari tabel-tabel gabungan dalam database RentalDVD ke sebuah teks dengan nama
Ada.txt. Tulislah SQL berikut ini:
mysql> SELECT NamaDVD, DeskripsiTipeM, DeskripsiFormat,
d.IDRating
-> INTO OUTFILE
'C:/wamp/www/Ada.txt'
-> FROM DVD AS d,
TipeMovie AS m, Format AS f
-> WHERE
d.IDTipeM=m.IDTipeM AND d.IDFormat=f.IDFormat
-> AND
IDStatus='s2'
-> ORDER BY
NamaDVD;
Query OK, 5 rows affected (0.01 sec)
Berikut adalah isi dari file Ada.txt:
Pada statemen SELECT berikut, Anda
menambahkan subklausa FIELDS TERMINATED BY dan LINES TERMINATED BY. Tulislah
SQL berikut ini:
mysql> SELECT NamaDVD, DeskripsiTipeM, DeskripsiFormat,
d.IDRating
-> INTO OUTFILE
'C:/wamp/www/Ada2.txt'
-> FIELDS
TERMINATED BY '*,*'
-> LINES TERMINATED
BY '**\n'
-> FROM DVD AS d,
TipeMovie AS m, Format AS f
-> WHERE
d.IDTipeM=m.IDTipeM AND d.IDFormat=f.IDFormat
-> AND
IDStatus='s2'
-> ORDER BY
NamaDVD;
Query OK, 5 rows affected (0.02 sec)
Berikut adalah isi dari file Ada2.txt:
Menyalin Data Ke Tabel
Sekarang, Anda akan menciptakan sebuah
definisi tabel yang memuat statemen SELECT untuk membaca data dari tabel DVD,
TipeMovie, dan Format. Tuliskanlah statemen SQL berikut:
mysql> CREATE TABLE DVD2
-> (
-> NamaDVD
VARCHAR(60) NOT NULL,
-> DeskripsiTipeM
VARCHAR(30) NOT NULL,
-> DeskripsiFormat
VARCHAR(15) NOT NULL,
-> IDRating
VARCHAR(4) NOT NULL
-> )
-> SELECT NamaDVD,
DeskripsiTipeM, DeskripsiFormat, d.IDRating
-> FROM DVD AS d,
TipeMovie AS m, Format AS f
-> WHERE
d.IDTipeM=m.IDTipeM AND d.IDFormat=f.IDFormat
-> AND
IDStatus='s2'
-> ORDER BY
NamaDVD;
Query OK, 5 rows affected (0.31 sec)
Records: 5 Duplicates:
0 Warnings: 0
Selanjutnya, Anda bisa melihat isi dari
tabel DVD2, sebagai berikut:
mysql> SELECT * FROM DVD2;
+-------------------------------+----------------+-----------------+----------+
|
NamaDVD |
DeskripsiTipeM | DeskripsiFormat | IDRating |
+-------------------------------+----------------+-----------------+----------+
|
Amadeus |
Drama | Widescreen | PG
|
| Mash | Komedi | Widescreen | R
|
| The
Maltese Falcon | Drama | Widescreen | NR
|
| The Rocky
Horror Picture Show | Komedi |
Widescreen | NR |
| What's Up,
Doc? | Komedi | Widescreen | G
|
+-------------------------------+----------------+-----------------+----------+
5 rows in
set (0.00 sec)
Menyalin Data Ke Tabel Yang Telah Ada
Sekarang, Anda akan menciptakan
statemen INSERT untuk menyalin data ke tabel DVD2. Tuliskanlah statemen SQL
berikut:
mysql> INSERT INTO DVD2
-> SELECT NamaDVD,
DeskripsiTipeM, DeskripsiFormat, d.IDRating
-> FROM DVD AS d,
TipeMovie AS m, Format AS f
-> WHERE
d.IDTipeM=m.IDTipeM AND d.IDFormat=f.IDFormat
-> AND
IDStatus='s1'
-> ORDER BY
NamaDVD;
Query OK, 3 rows affected (0.05 sec)
Records: 3 Duplicates:
0 Warnings: 0
Selanjutnya, Anda bisa melihat isi dari
tabel DVD2, sebagai berikut:
mysql> SELECT * FROM DVD2;
+-------------------------------+----------------+-----------------+---------+
| NamaDVD
| DeskripsiTipeM | DeskripsiFormat | IDRating|
+-------------------------------+----------------+-----------------+---------+
| Amadeus
| Drama | Widescreen | PG
|
| Mash
| Komedi | Widescreen | R
|
| The Maltese Falcon
| Drama | Widescreen | NR
|
| The Rocky Horror Picture Show | Komedi | Widescreen | NR
|
| What's Up, Doc?
| Komedi | Widescreen | G
|
| A Room with a View
| Drama | Widescreen | NR
|
| Out of Africa
| Drama | Widescreen | PG
|
| White Christmas
| Musikal | Widescreen | NR
|
+-------------------------------+----------------+-----------------+---------+
8 rows in set (0.00 sec)
Mengimpor Data Ke Tabel Yang Telah Ada
Pertama-tama, Anda perlu menghapus data
yang tersimpan pada tabel DVD2. Eksekusilah statemen SQL berikut:
mysql> TRUNCATE DVD2;
Query OK, 0 rows affected (0.28 sec)
mysql> SELECT * FROM DVD2;
Empty set (0.00 sec)
Sekarang, Anda mengimpor data dari file
Ada.txt ke dalam tabel DVD2. Eksekusilah statemen SQL berikut:
mysql> LOAD DATA INFILE 'C:/wamp/www/Ada.txt'
-> INTO TABLE DVD2;
Query OK, 5 rows affected, 12 warnings (0.22 sec)
Records: 5 Deleted:
0 Skipped: 0 Warnings: 12
Selanjutnya, Anda bisa melihat isi dari
tabel DVD2, sebagai berikut:
mysql> SELECT * FROM DVD2;
+-------------------------------+----------------+-----------------+----------+
|
NamaDVD |
DeskripsiTipeM | DeskripsiFormat | IDRating |
+-------------------------------+----------------+-----------------+----------+
|
Amadeus | Drama | Widescreen | PG
|
| Mash | Komedi | Widescreen | R
|
| The
Maltese Falcon | Drama | Widescreen | NR
|
| The Rocky
Horror Picture Show | Komedi |
Widescreen | NR |
| What's Up,
Doc? | Komedi | Widescreen | G
|
+-------------------------------+----------------+-----------------+----------+
5 rows in
set (0.00 sec)
Mengimpor Data Ke Tabel Yang Telah Ada Menggunakan Perintah
source
Ciptakanlah sebuah file teks dan namai
dengan DVD_1.sql. Tambahkan statemen berikut pada file tersebut, dan simpan
pada direktori server Anda:
INSERT INTO DVD2
VALUES ('A Room with a View', 'Drama', 'Widescreen', 'NR');
Selanjutnya, Anda menggunakan perintah
source untuk mengeksekusi statemen INSERT pada file DVD_1.sql. Eksekusilah SQL
berikut:
mysql> source C:/wamp/www/DVD_1.sql
Query OK, 1 row affected (0.06 sec)
Selanjutnya, Anda bisa melihat isi dari
tabel DVD2, sebagai berikut:
mysql> SELECT * FROM DVD2;
+-------------------------------+----------------+-----------------+----------+
|
NamaDVD |
DeskripsiTipeM | DeskripsiFormat | IDRating |
+-------------------------------+----------------+-----------------+----------+
|
Amadeus |
Drama | Widescreen | PG
|
| Mash | Komedi | Widescreen | R
|
| The
Maltese Falcon | Drama | Widescreen | NR
|
| The Rocky
Horror Picture Show | Komedi |
Widescreen | NR |
| What's Up,
Doc? | Komedi | Widescreen | G
|
| A Room
with a View | Drama | Widescreen | NR
|
+-------------------------------+----------------+-----------------+----------+
6 rows in
set (0.00 sec)
Menciptakan Transaksi
Langkah pertama adalah memulai
transaksi Anda. Eksekusilah statemen SQL berikut:
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
Sekarang, ciptakanlah statemen INSERT
yang menambahkan satu baris pada tabel Karyawan. Eksekusilah statemen SQL
berikut:
mysql> INSERT INTO Karyawan
-> VALUES(NULL,
'Rebecca', 'V.', 'Hinalang');
Query OK, 1 row affected (0.06 sec)
mysql> SELECT * FROM Karyawan;
+------------+------------+------------+---------------+
| IDKaryawan | FNKaryawan | MNKaryawan | LNKaryawan |
+------------+------------+------------+---------------+
| 1 | Rismon | H. | Sianipar |
| 2 | I | Ketut | Wiryajati |
| 3 |
Muhammad | NULL | Irwan |
| 4 | Hamzan | NULL | Wadi |
| 5 | Tobat | NULL | Sinaga |
| 6 | Krista | C. | Simanungkalit |
| 7 |
Rebecca | T. | Siahaan |
| 8 | Rico | Chandra | Sianipar |
| 9 |
Rebecca | V. | Hinalang |
+------------+------------+------------+---------------+
9 rows in set (0.00 sec)
Sekarang, Anda bisa membatalkan
statemen INSERT yang telah Anda tuliskan sebelumnya. Eksekusilah statemen SQL
berikut:
mysql> ROLLBACK;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM Karyawan;
+------------+------------+------------+---------------+
| IDKaryawan | FNKaryawan | MNKaryawan | LNKaryawan |
+------------+------------+------------+---------------+
| 1 | Rismon | H. | Sianipar |
| 2 | I | Ketut | Wiryajati |
| 3 |
Muhammad | NULL | Irwan |
| 4 | Hamzan | NULL | Wadi |
| 5 | Tobat |
NULL | Sinaga |
| 6 | Krista | C. | Simanungkalit |
| 7 |
Rebecca | T. | Siahaan |
| 8 | Rico | Chandra | Sianipar |
+------------+------------+------------+---------------+
8 rows in set (0.00 sec)
Sekarang, Anda memulai transaksi kedua.
Eksekusilah statemen SQL berikut:
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
Sekarang, Anda akan menambahkan baris
yang sama pada tabel Karyawan. Eksekusilah statemen SQL berikut:
mysql> INSERT INTO Karyawan
-> VALUES(NULL,
'Rebecca', 'V.', 'Hinalang');
Query OK, 1 row affected (0.06 sec)
Terakhir, Anda perlu memastikan
transaksi Anda sehingga perubahan tersebut terjadi. Eksekusilah statemen SQL
berikut:
mysql> COMMIT;
Query OK, 0 rows affected (0.06 sec)
Untuk memverifikasi perubahan yang
telah dilakukan pada tabel, eksekusilah statemen SQL berikut:
mysql> SELECT * FROM Karyawan;
+------------+------------+------------+---------------+
| IDKaryawan | FNKaryawan | MNKaryawan | LNKaryawan |
+------------+------------+------------+---------------+
| 1 | Rismon | H. | Sianipar |
| 2 | I | Ketut | Wiryajati |
| 3 |
Muhammad | NULL | Irwan |
| 4 | Hamzan | NULL | Wadi |
| 5 | Tobat | NULL | Sinaga |
| 6 | Krista | C. | Simanungkalit |
| 7 |
Rebecca | T. | Siahaan |
| 8 | Rico | Chandra | Sianipar |
| 11 |
Rebecca | V. | Hinalang |
+------------+------------+------------+---------------+
9 rows in set (0.00 sec)
Sekarang, Anda perlu menghapus baris
yang Anda tambahkan pada tabel Karyawan untuk mengembalikan tabel ke kondisi
awal. Eksekusilah statemen SQL berikut:
mysql> DELETE FROM Karyawan
-> WHERE
LNKaryawan='Hinalang';
Query OK, 1 row affected (0.06 sec)
mysql> SELECT * FROM Karyawan;
+------------+------------+------------+---------------+
| IDKaryawan | FNKaryawan | MNKaryawan | LNKaryawan |
+------------+------------+------------+---------------+
| 1 | Rismon | H. | Sianipar |
| 2 | I | Ketut | Wiryajati |
| 3 |
Muhammad | NULL | Irwan |
| 4 | Hamzan | NULL | Wadi |
| 5 | Tobat | NULL | Sinaga |
| 6 | Krista |
C. | Simanungkalit |
| 7 |
Rebecca | T. | Siahaan |
| 8 | Rico | Chandra | Sianipar |
+------------+------------+------------+---------------+
8 rows in set (0.00 sec)
Menggunakan SAVEPOINT
Langkah pertama adalah memulai
transaksi Anda. Eksekusilah statemen SQL berikut:
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
Sekarang, ciptakanlah statemen INSERT
yang menambahkan satu baris pada tabel Karyawan. Eksekusilah statemen SQL berikut:
mysql> INSERT INTO Karyawan
-> VALUES(NULL,
'Rebecca', 'V.', 'Hinalang');
Query OK, 1 row affected (0.06 sec)
mysql> SELECT * FROM Karyawan;
+------------+------------+------------+---------------+
| IDKaryawan | FNKaryawan | MNKaryawan | LNKaryawan |
+------------+------------+------------+---------------+
| 1 | Rismon | H. | Sianipar |
| 2 | I | Ketut | Wiryajati |
| 3 |
Muhammad | NULL | Irwan |
| 4 | Hamzan | NULL | Wadi |
| 5 | Tobat | NULL | Sinaga |
| 6 | Krista | C. | Simanungkalit |
| 7 |
Rebecca | T. | Siahaan |
| 8 | Rico | Chandra | Sianipar |
| 12 |
Rebecca | V. | Hinalang |
+------------+------------+------------+---------------+
9 rows in set (0.00 sec)
Sekarang, ciptakan sebuah savepoint sp1
pada transaksi Anda. Eksekusilah statemen SQL berikut:
mysql> SAVEPOINT sp1;
Query OK, 0 rows affected (0.00 sec)
Sekarang, ciptakanlah statemen INSERT
yang menambahkan satu baris lagi pada tabel Karyawan. Eksekusilah statemen SQL
berikut:
mysql> INSERT INTO Karyawan
-> VALUES(NULL,
'Freddy', 'V.', 'Siantar');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM Karyawan;
+------------+------------+------------+---------------+
| IDKaryawan | FNKaryawan | MNKaryawan | LNKaryawan |
+------------+------------+------------+---------------+
| 1 | Rismon | H. | Sianipar |
| 2 | I | Ketut | Wiryajati |
| 3 |
Muhammad | NULL | Irwan |
| 4 | Hamzan | NULL | Wadi |
| 5 | Tobat | NULL | Sinaga |
| 6 | Krista | C. | Simanungkalit |
| 7 |
Rebecca | T. | Siahaan |
| 8 | Rico | Chandra | Sianipar |
| 12 |
Rebecca | V. | Hinalang |
| 13 | Freddy | V. | Siantar |
+------------+------------+------------+---------------+
10 rows in set (0.00 sec)
Sekarang Anda bisa kembali ke titik
savepoint. Eksekusilah statemen SQL berikut:
mysql> ROLLBACK TO SAVEPOINT sp1;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM Karyawan;
+------------+------------+------------+---------------+
| IDKaryawan | FNKaryawan | MNKaryawan | LNKaryawan |
+------------+------------+------------+---------------+
| 1 | Rismon | H. | Sianipar |
| 2 | I | Ketut | Wiryajati |
| 3 |
Muhammad | NULL | Irwan |
| 4 | Hamzan | NULL | Wadi |
| 5 | Tobat | NULL | Sinaga |
| 6 | Krista | C. | Simanungkalit |
| 7 |
Rebecca | T. | Siahaan |
| 8 | Rico | Chandra | Sianipar |
| 12 |
Rebecca | V. | Hinalang |
+------------+------------+------------+---------------+
9 rows in set (0.00 sec)
Langkah selanjutnya adalah memastikan
bagian transaksi yang permanen. Eksekusilah statemen SQL berikut:
mysql> COMMIT;
Query OK, 0 rows affected (0.07 sec)
mysql> SELECT * FROM Karyawan;
+------------+------------+------------+---------------+
| IDKaryawan | FNKaryawan | MNKaryawan | LNKaryawan |
+------------+------------+------------+---------------+
| 1 | Rismon | H. | Sianipar |
| 2 | I | Ketut | Wiryajati |
| 3 |
Muhammad | NULL | Irwan |
| 4 | Hamzan | NULL | Wadi |
| 5 | Tobat | NULL | Sinaga |
| 6 | Krista | C. | Simanungkalit |
| 7 |
Rebecca | T. | Siahaan |
| 8 | Rico | Chandra | Sianipar |
| 12 |
Rebecca | V. | Hinalang |
+------------+------------+------------+---------------+
9 rows in set (0.00 sec)
Sekarang, Anda perlu menghapus baris
yang Anda tambahkan pada tabel Karyawan untuk mengembalikan tabel ke kondisi
awal. Eksekusilah statemen SQL berikut:
mysql> DELETE FROM Karyawan
-> WHERE
LNKaryawan='Hinalang';
Query OK, 1 row affected (0.06 sec)
mysql> SELECT * FROM Karyawan;
+------------+------------+------------+---------------+
| IDKaryawan | FNKaryawan | MNKaryawan | LNKaryawan |
+------------+------------+------------+---------------+
| 1 | Rismon | H.
| Sianipar |
| 2 | I | Ketut | Wiryajati |
| 3 |
Muhammad | NULL | Irwan |
| 4 | Hamzan | NULL | Wadi |
| 5 | Tobat | NULL | Sinaga |
| 6 | Krista
| C. | Simanungkalit |
| 7 |
Rebecca | T. | Siahaan |
| 8 | Rico | Chandra | Sianipar |
+------------+------------+------------+---------------+
8 rows in set (0.00 sec)
No comments:
Post a Comment