Sunday, January 8, 2017

Bab 10. PHP/MySQL Untuk Pemula (Bagian 1)


Pelbagai Kasus Database (Bagian 1)


Kasus 1: Database namasitus


Menciptakan Database Dan Tabel
Di sini, Anda akan menciptakan sebuah database dengan nama namasitus.

mysql> CREATE DATABASE namasitus;
Query OK, 1 row affected (0.00 sec)

mysql> USE namasitus;
Database changed

Selanjutnya, Anda menciptakan sebuah tabel dengan nama pengguna.

mysql> CREATE TABLE pengguna (
    -> id_pengguna MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
    -> nama_depan VARCHAR(20) NOT NULL,
    -> nama_belakang VARCHAR(40) NOT NULL,
    -> email VARCHAR(60) NOT NULL,
    -> pass CHAR(40) NOT NULL,
    -> tanggal_registrasi DATETIME NOT NULL,
    -> PRIMARY KEY (id_pengguna)
    -> );
Query OK, 0 rows affected (0.31 sec)

Kemudian, Anda dapat memastikan eksistensi tabel dengan statemen MySQL berikut:





Dengan menggunakan phpMyAdmin, Anda bisa melihat database dan tabel yang telah diciptakan sebagai berikut:






Menyisipkan Rekaman
Setelah database dan tabel diciptakan, Anda dapat mengisinya menggunakan perintah INSERT.

mysql> INSERT INTO pengguna
    -> VALUES (NULL, 'Rismon', 'Sianipar',
    -> 'rismon@contoh.com', SHA1('rahasia'), NOW());
Query OK, 1 row affected (0.12 sec)

Anda bisa pula memasukkan beberapa data sekaligus ke dalam tabel, seperti berikut:

mysql> INSERT INTO pengguna (nama_depan,
    -> nama_belakang, email, pass,
    -> tanggal_registrasi)VALUES
    -> ('John', 'Sihombing',
    -> 'john@misalnya.com',
    -> SHA1('rahasiaku'),NOW()),
    -> ('Paul', 'Sitorus',
    -> 'paul@contoh.com',
    -> SHA1('rahasiamu'), NOW()),
    -> ('Joshua', 'Naibaho',
    -> 'joshua@misalnya.com',
    -> SHA1('sesuatu'), NOW()),
    -> ('Sintong', 'Siahaan',
    -> 'sintong@misalnya.com',
    -> SHA1('santai'),NOW());
Query OK, 4 rows affected (0.06 sec)
Records: 4  Duplicates: 0  Warnings: 0

Anda bisa menambahkan data-data lain berikut ke dalam tabel pengguna.

mysql> INSERT INTO pengguna (nama_depan, nama_belakang, email, pass, tanggal_registrasi) VALUES
    -> ('Robert', 'Tohonan', 'robert@contoh.com', SHA1('robert'), NOW()),
    -> ('Rico', 'Chandra', 'rico@misalnya.com', SHA1('rico88'), NOW()),
    -> ('Vivian', 'Siahaan', 'vivian@contoh.com', SHA1('vivi'), NOW()),
    -> ('Muhamad', 'Irwan', 'irwan@contoh.com', SHA1('irwandompu'), NOW()),
    -> ('Ketut', 'Wiryajati', 'wirya@contoh.com', SHA1('wirya66'), NOW());
Query OK, 5 rows affected (0.07 sec)
Records: 5  Duplicates: 0  Warnings: 0

Dengan menggunakan phpMyAdmin, Anda bisa mengklik tab INSERT untuk menyisipkan rekaman menggunakan form HTML, sebagai berikut:



Memilih Data
Anda bisa membaca data dari tabel pengguna menggunakan statemen berikut:

mysql> SELECT * FROM pengguna;
+-------------+------------+---------------+----------------------+------------------------------------------+---------------------+
| id_pengguna | nama_depan | nama_belakang | email                | pass                                     | tanggal_registrasi  |
+-------------+------------+---------------+----------------------+------------------------------------------+---------------------+
|           1 | Rismon     | Sianipar      | rismon@contoh.com    | 829b36babd21be519fa5f9353daf5dbdb796993e | 2014-08-15 20:13:50 |
|           2 | John       | Sihombing     | john@misalnya.com    | 8ee9347fdca9aa875688d0cd6aa7563365fe63b4 | 2014-08-15 20:20:36 |
|           3 | Paul       | Sitorus       | paul@contoh.com      | 8b9111467a49bf9de082fad728dc6c48c5a7a18a | 2014-08-15 20:20:36 |
|           4 | Joshua     | Naibaho       | joshua@misalnya.com  | 11e5a27f41ca64919256de18ebb37330b2becfe1 | 2014-08-15 20:20:36 |
|           5 | Sintong    | Siahaan       | sintong@misalnya.com | a86c9f354b1346f00e9098c4523882f7a9aa43fb | 2014-08-15 20:20:36 |
|           6 | Robert     | Tohonan       | robert@contoh.com    | 12e9293ec6b30c7fa8a0926af42807e929c1684f | 2014-08-15 20:37:41 |
|           7 | Rico       | Chandra       | rico@misalnya.com    | 5e70c95995e77631ec001ef939f98717c3d7cf68 | 2014-08-15 20:37:41 |
|           8 | Vivian     | Siahaan       | vivian@contoh.com    | ed42785ca24ae8fa2d9fd131401e44c3c86519ae | 2014-08-15 20:37:41 |
|           9 | Muhamad    | Irwan         | irwan@contoh.com     | 789f403b5b41a2c34db6371873cebf9d65be26fa | 2014-08-15 20:37:41 |
|          10 | Ketut      | Wiryajati     | wirya@contoh.com     | 40eccceb433c9a04149027340780ade58a072d93 | 2014-08-15 20:37:41 |
|          11 | Hamzan     | Wadi          | hamzan@misalnya.com  | 9fef7550f65805b85420245e99f711aaed34c3b5 | 2014-08-15 00:00:00 |
|          12 | Rotua      | Marolop       | marolop@contoh.com   | 6a744439b757ebab9d6baedfba41eef519902e85 | 2014-08-14 00:00:00 |
|          13 | Rini       | Meika         | rini@misalnya.com    | 2988a5b930eaeb541ecfacd55c73a089036615db | 2014-08-14 00:00:00 |
|          14 | Muhamad    | Fitrah        | fitrah@contoh.com    | 3088f2254b3d6479ff7b79b915e4a4790439927d | 2014-08-13 00:00:00 |
|          15 | Bunga      | Lestari       | lestari@contoh.com   | d7e6c985fac80f6ec87cd276462a48c36dad7557 | 2014-08-04 00:00:00 |
|          16 | Rosinta    | Tambunan      | rosinta@contoh.com   | 8de791319e71694aed0e2bdf0d41e82fa4d0b8f0 | 2014-08-03 00:00:00 |
|          17 | Krista     | Simanungkalit | krista@misalnya.com  | 974739e069e31caf5fde4d03742de4d86e51b1b0 | 2014-08-06 00:00:00 |
|          18 | Johanes    | Simamora      | johan@contoh.com     | b06df678b6fd4f3c457f43eaabe0c47c140fe45d | 2014-08-01 00:00:00 |
|          19 | Sabar      | Aritonang     | sabar@contoh.com     | 3660d240865eb8937c58f22553188d4b947e75e7 | 2014-08-14 00:00:00 |
|          20 | Tobat      | Sinaga        | tobat@contoh.com     | 21d57d454b7e46a809d282375cfc8a50158fdb99 | 2014-08-13 00:00:00 |
|          21 | Mei        | Ester         | ester@contoh.com     | 0bf13db7c45ec096d4c887cd5bb9a6e921cae574 | 2014-08-13 00:00:00 |
+-------------+------------+---------------+----------------------+------------------------------------------+---------------------+
21 rows in set (0.00 sec)

Anda bisa pula hanya ingin membaca nama_depan dan nama_belakang dari tabel pengguna, menggunakan statemen berikut:

mysql> SELECT nama_depan, nama_belakang FROM pengguna;
+------------+---------------+
| nama_depan | nama_belakang |
+------------+---------------+
| Rismon     | Sianipar      |
| John       | Sihombing     |
| Paul       | Sitorus       |
| Joshua     | Naibaho       |
| Sintong    | Siahaan       |
| Robert     | Tohonan       |
| Rico       | Chandra       |
| Vivian     | Siahaan       |
| Muhamad    | Irwan         |
| Ketut      | Wiryajati     |
| Hamzan     | Wadi          |
| Rotua      | Marolop       |
| Rini       | Meika         |
| Muhamad    | Fitrah        |
| Bunga      | Lestari       |
| Rosinta    | Tambunan      |
| Krista     | Simanungkalit |
| Johanes    | Simamora      |
| Sabar      | Aritonang     |
| Tobat      | Sinaga        |
| Mei        | Ester         |
+------------+---------------+
21 rows in set (0.00 sec)

Pada phpMyAdmin, dengan mengklik tab SQL, Anda bisa melakukan hal yang sama seperti berikut:



Kemudian, Anda bisa mengklik tombol Go di sisi kanan bawah untuk menjalankan statemen SQL yang diberikan:



Menggunakan Kondisional
Anda bisa memilih semua pengguna yang memiliki nama belakang Siahaan, sebagai berikut:

mysql> SELECT * FROM pengguna
    -> WHERE nama_belakang ='Siahaan';
+-------------+------------+---------------+----------------------+------------------------------------------+---------------------+
| id_pengguna | nama_depan | nama_belakang | email                | pass                                     | tanggal_registrasi  |
+-------------+------------+---------------+----------------------+------------------------------------------+---------------------+
|           5 | Sintong    | Siahaan       | sintong@misalnya.com | a86c9f354b1346f00e9098c4523882f7a9aa43fb | 2014-08-15 20:20:36 |
|           8 | Vivian     | Siahaan       | vivian@contoh.com    | ed42785ca24ae8fa2d9fd131401e44c3c86519ae | 2014-08-15 20:37:41 |
+-------------+------------+---------------+----------------------+------------------------------------------+---------------------+
2 rows in set (0.00 sec)

Anda juga bisa menggunakan nama depan pengguna, sebagai berikut:

mysql> SELECT * FROM pengguna
    -> WHERE nama_depan = 'Rismon';
+-------------+------------+---------------+-------------------+------------------------------------------+---------------------+
| id_pengguna | nama_depan | nama_belakang | email             | pass                                     | tanggal_registrasi  |
+-------------+------------+---------------+-------------------+------------------------------------------+---------------------+
|           1 | Rismon     | Sianipar      | rismon@contoh.com | 829b36babd21be519fa5f9353daf5dbdb796993e | 2014-08-15 20:13:50 |
+-------------+------------+---------------+-------------------+------------------------------------------+---------------------+
1 row in set (0.00 sec)

Atau Anda juga bisa memilih setiap kolom dari rekaman pada tabel pengguna yang tidak memiliki alamat email.

mysql> SELECT * FROM pengguna
    -> WHERE email IS NULL;
Empty set (0.00 sec)

Kemudian, Anda juga bisa memilih ID pengguna, nama depan, dan nama akhir dari semua rekaman yang memiliki password adalah vivi.

mysql> SELECT id_pengguna, nama_depan, nama_belakang
    -> FROM pengguna
    -> WHERE pass = SHA1('vivi');
+-------------+------------+---------------+
| id_pengguna | nama_depan | nama_belakang |
+-------------+------------+---------------+
|           8 | Vivian     | Siahaan       |
+-------------+------------+---------------+
1 row in set (0.05 sec)

Anda bisa pula memilih nama-nama pengguna dengan ID kurang dari 10 atau lebih dari 20.

mysql> SELECT nama_depan, nama_belakang
    -> FROM pengguna
    -> WHERE (id_pengguna <10) OR (id_pengguna >20);
+------------+---------------+
| nama_depan | nama_belakang |
+------------+---------------+
| Rismon     | Sianipar      |
| John       | Sihombing     |
| Paul       | Sitorus       |
| Joshua     | Naibaho       |
| Sintong    | Siahaan       |
| Robert     | Tohonan       |
| Rico       | Chandra       |
| Vivian     | Siahaan       |
| Muhamad    | Irwan         |
| Mei        | Ester         |
+------------+---------------+
10 rows in set (0.04 sec)

Query yang sama dapat pula dituliskan sebagai berikut:

mysql> SELECT nama_depan, nama_belakang
    -> FROM pengguna
    -> WHERE id_pengguna NOT BETWEEN 10 and 20;
+------------+---------------+
| nama_depan | nama_belakang |
+------------+---------------+
| Rismon     | Sianipar      |
| John       | Sihombing     |
| Paul       | Sitorus       |
| Joshua     | Naibaho       |
| Sintong    | Siahaan       |
| Robert     | Tohonan       |
| Rico       | Chandra       |
| Vivian     | Siahaan       |
| Muhamad    | Irwan         |
| Mei        | Ester         |
+------------+---------------+
10 rows in set (0.05 sec)

Atau dengan query berikut:

mysql> SELECT nama_depan, nama_belakang
    -> FROM pengguna
    -> WHERE id_pengguna NOT IN
    -> (10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20);
+------------+---------------+
| nama_depan | nama_belakang |
+------------+---------------+
| Rismon     | Sianipar      |
| John       | Sihombing     |
| Paul       | Sitorus       |
| Joshua     | Naibaho       |
| Sintong    | Siahaan       |
| Robert     | Tohonan       |
| Rico       | Chandra       |
| Vivian     | Siahaan       |
| Muhamad    | Irwan         |
| Mei        | Ester         |
+------------+---------------+
10 rows in set (0.00 sec)


Menggunakan LIKE Dan NOT LIKE
Anda bisa memilih semua rekaman dengan nama belakang diawali dengan Si sebagai berikut:

mysql> SELECT * FROM pengguna
    -> WHERE nama_belakang LIKE 'Si%';
+-------------+------------+---------------+----------------------+------------------------------------------+---------------------+
| id_pengguna | nama_depan | nama_belakang | email                | pass                                     | tanggal_registrasi  |
+-------------+------------+---------------+----------------------+------------------------------------------+---------------------+
|           1 | Rismon     | Sianipar      | rismon@contoh.com    | 829b36babd21be519fa5f9353daf5dbdb796993e | 2014-08-15 20:13:50 |
|           2 | John       | Sihombing     | john@misalnya.com    | 8ee9347fdca9aa875688d0cd6aa7563365fe63b4 | 2014-08-15 20:20:36 |
|           3 | Paul       | Sitorus       | paul@contoh.com      | 8b9111467a49bf9de082fad728dc6c48c5a7a18a | 2014-08-15 20:20:36 |
|           5 | Sintong    | Siahaan       | sintong@misalnya.com | a86c9f354b1346f00e9098c4523882f7a9aa43fb | 2014-08-15 20:20:36 |
|           8 | Vivian     | Siahaan       | vivian@contoh.com    | ed42785ca24ae8fa2d9fd131401e44c3c86519ae | 2014-08-15 20:37:41 |
|          17 | Krista     | Simanungkalit | krista@misalnya.com  | 974739e069e31caf5fde4d03742de4d86e51b1b0 | 2014-08-06 00:00:00 |
|          18 | Johanes    | Simamora      | johan@contoh.com     | b06df678b6fd4f3c457f43eaabe0c47c140fe45d | 2014-08-01 00:00:00 |
|          20 | Tobat      | Sinaga        | tobat@contoh.com     | 21d57d454b7e46a809d282375cfc8a50158fdb99 | 2014-08-13 00:00:00 |
+-------------+------------+---------------+----------------------+------------------------------------------+---------------------+
8 rows in set (0.00 sec)

Anda juga bisa memilih nama untuk tiap rekaman yang memiliki nama alamat yang bukan dalam bentuk sesuatu@contoh.com, sebagai berikut:

mysql> SELECT nama_depan, nama_belakang
    -> FROM pengguna
    -> WHERE email NOT LIKE '@contoh.com';
+------------+---------------+
| nama_depan | nama_belakang |
+------------+---------------+
| Rismon     | Sianipar      |
| John       | Sihombing     |
| Paul       | Sitorus       |
| Joshua     | Naibaho       |
| Sintong    | Siahaan       |
| Robert     | Tohonan       |
| Rico       | Chandra       |
| Vivian     | Siahaan       |
| Muhamad    | Irwan         |
| Ketut      | Wiryajati     |
| Hamzan     | Wadi          |
| Rotua      | Marolop       |
| Rini       | Meika         |
| Muhamad    | Fitrah        |
| Bunga      | Lestari       |
| Rosinta    | Tambunan      |
| Krista     | Simanungkalit |
| Johanes    | Simamora      |
| Sabar      | Aritonang     |
| Tobat      | Sinaga        |
| Mei        | Ester         |
+------------+---------------+
21 rows in set (0.00 sec)


Mengurutkan Hasil Query
Anda bisa memilih semua pengguna dengan urutan alfabetikal berdasarkan nama belakangnya, sebagai berikut:

mysql> SELECT nama_depan, nama_belakang
    -> FROM pengguna
    -> ORDER BY nama_belakang;
+------------+---------------+
| nama_depan | nama_belakang |
+------------+---------------+
| Sabar      | Aritonang     |
| Rico       | Chandra       |
| Mei        | Ester         |
| Muhamad    | Fitrah        |
| Muhamad    | Irwan         |
| Bunga      | Lestari       |
| Rotua      | Marolop       |
| Rini       | Meika         |
| Joshua     | Naibaho       |
| Sintong    | Siahaan       |
| Vivian     | Siahaan       |
| Rismon     | Sianipar      |
| John       | Sihombing     |
| Johanes    | Simamora      |
| Krista     | Simanungkalit |
| Tobat      | Sinaga        |
| Paul       | Sitorus       |
| Rosinta    | Tambunan      |
| Robert     | Tohonan       |
| Hamzan     | Wadi          |
| Ketut      | Wiryajati     |
+------------+---------------+
21 rows in set (0.00 sec)

Anda juga bisa menampilkan semua pengguna dalam urutan alfabetikal berdasarkan nama belakang dan kemudian berdasarkan nama depan, sebagai berikut:

mysql> SELECT nama_depan, nama_belakang
    -> FROM pengguna
    -> ORDER BY nama_belakang ASC,
    -> nama_depan ASC;
+------------+---------------+
| nama_depan | nama_belakang |
+------------+---------------+
| Sabar      | Aritonang     |
| Rico       | Chandra       |
| Mei        | Ester         |
| Muhamad    | Fitrah        |
| Muhamad    | Irwan         |
| Bunga      | Lestari       |
| Rotua      | Marolop       |
| Rini       | Meika         |
| Joshua     | Naibaho       |
| Sintong    | Siahaan       |
| Vivian     | Siahaan       |
| Rismon     | Sianipar      |
| John       | Sihombing     |
| Johanes    | Simamora      |
| Krista     | Simanungkalit |
| Tobat      | Sinaga        |
| Paul       | Sitorus       |
| Rosinta    | Tambunan      |
| Robert     | Tohonan       |
| Hamzan     | Wadi          |
| Ketut      | Wiryajati     |
+------------+---------------+
21 rows in set (0.00 sec)

Anda juga bisa menampilkan nama pengguna yang memiliki nama belakang yang diawali dengan Si dan yang diurutkan secara menurun berdasarkan tanggal registrasi.

mysql> SELECT nama_depan, nama_belakang
    -> FROM pengguna
    -> WHERE nama_belakang LIKE 'Si%'
    -> ORDER BY tanggal_registrasi DESC;
+------------+---------------+
| nama_depan | nama_belakang |
+------------+---------------+
| Vivian     | Siahaan       |
| John       | Sihombing     |
| Paul       | Sitorus       |
| Sintong    | Siahaan       |
| Rismon     | Sianipar      |
| Tobat      | Sinaga        |
| Krista     | Simanungkalit |
| Johanes    | Simamora      |
+------------+---------------+
8 rows in set (0.00 sec)


Membatasi Hasil Query
Anda bisa memilih lima pengguna terakhir yang mendaftar, sebagai berikut:

mysql> SELECT nama_depan, nama_belakang
    -> FROM pengguna
    -> ORDER BY tanggal_registrasi DESC LIMIT 5;
+------------+---------------+
| nama_depan | nama_belakang |
+------------+---------------+
| Rico       | Chandra       |
| Vivian     | Siahaan       |
| Muhamad    | Irwan         |
| Ketut      | Wiryajati     |
| Robert     | Tohonan       |
+------------+---------------+
5 rows in set (0.00 sec)

Anda juga bisa memilih pengguna kedua yang mendaftar, sebagai berikut:

mysql> SELECT nama_depan, nama_belakang
    -> FROM pengguna
    -> ORDER BY tanggal_registrasi ASC LIMIT 1, 1;
+------------+---------------+
| nama_depan | nama_belakang |
+------------+---------------+
| Rosinta    | Tambunan      |
+------------+---------------+
1 row in set (0.00 sec)


Memperbarui Data
Pada kasus ini, Anda akan mengubah email untuk rekaman tertentu. Untuk melakukannya, Anda terlebih dahulu mencari primary key dari rekaman tersebut.

mysql> SELECT id_pengguna
    -> FROM pengguna
    -> WHERE nama_depan = 'Rismon'
    -> AND nama_belakang = 'Sianipar';
+-------------+
| id_pengguna |
+-------------+
|           1 |
+-------------+
1 row in set (0.00 sec)

Selanjutnya, Anda bisa memperbarui rekaman tersebut, sebagai berikut:

mysql> UPDATE pengguna
    -> SET email = 'rismon77@misalnya.com'
    -> WHERE id_pengguna = 1;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Anda bisa memastikan bahwa perubahan telah dilakukan, sebagai berikut:

mysql> SELECT * FROM pengguna
    -> WHERE id_pengguna = 1;
+-------------+------------+---------------+-----------------------+------------------------------------------+---------------------+
| id_pengguna | nama_depan | nama_belakang | email                 | pass                                     | tanggal_registrasi  |
+-------------+------------+---------------+-----------------------+------------------------------------------+---------------------+
|           1 | Rismon     | Sianipar      | rismon77@misalnya.com | 829b36babd21be519fa5f9353daf5dbdb796993e | 2014-08-15 20:13:50 |
+-------------+------------+---------------+-----------------------+------------------------------------------+---------------------+
1 row in set (0.02 sec)

Lebih praktis, Anda bisa melakukannya menggunakan phpMyAdmin, sebagai berikut:


Menghapus Data
Pertama-tama, Anda perlu mencari primary key untuk rekaman yang akan dihapus, sebagai berikut:

mysql> USE namasitus;
Database changed
mysql> SELECT id_pengguna
    -> FROM pengguna
    -> WHERE nama_depan = 'Rismon'
    -> AND nama_belakang = 'Sianipar';
+-------------+
| id_pengguna |
+-------------+
|           1 |
+-------------+
1 row in set (0.00 sec)

Anda bisa mengamati lebih dahulu, sebelum penghapusan dilakukan:

mysql> SELECT * FROM pengguna
    -> WHERE id_pengguna = 1;
+-------------+------------+---------------+-----------------------+------------------------------------------+---------------------+
| id_pengguna | nama_depan | nama_belakang | email                 | pass                                     | tanggal_registrasi  |
+-------------+------------+---------------+-----------------------+------------------------------------------+---------------------+
|           1 | Rismon     | Sianipar      | rismon77@misalnya.com | 829b36babd21be519fa5f9353daf5dbdb796993e | 2014-08-15 20:13:50 |
+-------------+------------+---------------+-----------------------+------------------------------------------+---------------------+
1 row in set (0.00 sec)

Kemudian Anda bisa melakukan penghapusan:

mysql> DELETE FROM pengguna
    -> WHERE id_pengguna = 1 LIMIT 1;
Query OK, 1 row affected (0.07 sec)

Anda bisa memastikan apakah penghapusan telah dilakukan, sebagai berikut:

mysql> SELECT id_pengguna, nama_depan, nama_belakang
    -> FROM pengguna
    -> ORDER BY id_pengguna ASC;
+-------------+------------+---------------+
| id_pengguna | nama_depan | nama_belakang |
+-------------+------------+---------------+
|           2 | John       | Sihombing     |
|           3 | Paul       | Sitorus       |
|           4 | Joshua     | Naibaho       |
|           5 | Sintong    | Siahaan       |
|           6 | Robert     | Tohonan       |
|           7 | Rico       | Chandra       |
|           8 | Vivian     | Siahaan       |
|           9 | Muhamad    | Irwan         |
|          10 | Ketut      | Wiryajati     |
|          11 | Hamzan     | Wadi          |
|          12 | Rotua      | Marolop       |
|          13 | Rini       | Meika         |
|          14 | Muhamad    | Fitrah        |
|          15 | Bunga      | Lestari       |
|          16 | Rosinta    | Tambunan      |
|          17 | Krista     | Simanungkalit |
|          18 | Johanes    | Simamora      |
|          19 | Sabar      | Aritonang     |
|          20 | Tobat      | Sinaga        |
|          21 | Mei        | Ester         |
+-------------+------------+---------------+
20 rows in set (0.00 sec)


Menggunakan Fungsi
Di sini, Anda akan menyambung nama belakang dan nama depan pengguna, menggunakan fungsi CONCAT, sebagai berikut:

mysql> SELECT CONCAT(nama_belakang, ',',
    -> nama_depan) FROM pengguna;
+----------------------------------------+
| CONCAT(nama_belakang, ',',
nama_depan) |
+----------------------------------------+
| Sihombing,John                         |
| Sitorus,Paul                           |
| Naibaho,Joshua                         |
| Siahaan,Sintong                        |
| Tohonan,Robert                         |
| Chandra,Rico                           |
| Siahaan,Vivian                         |
| Irwan,Muhamad                          |
| Wiryajati,Ketut                        |
| Wadi,Hamzan                            |
| Marolop,Rotua                          |
| Meika,Rini                             |
| Fitrah,Muhamad                         |
| Lestari,Bunga                          |
| Tambunan,Rosinta                       |
| Simanungkalit,Krista                   |
| Simamora,Johanes                       |
| Aritonang,Sabar                        |
| Sinaga,Tobat                           |
| Ester,Mei                              |
+----------------------------------------+
20 rows in set (0.04 sec)

Anda juga bisa menyambung nama belakang dan nama depan, menggunakan fungsi CONCAT, melalui sebuah alias sebagai berikut:

mysql> SELECT CONCAT(nama_belakang, ',',
    -> nama_depan)
    -> AS Nama
    -> FROM pengguna
    -> ORDER BY Nama;
+----------------------+
| Nama                 |
+----------------------+
| Aritonang,Sabar      |
| Chandra,Rico         |
| Ester,Mei            |
| Fitrah,Muhamad       |
| Irwan,Muhamad        |
| Lestari,Bunga        |
| Marolop,Rotua        |
| Meika,Rini           |
| Naibaho,Joshua       |
| Siahaan,Sintong      |
| Siahaan,Vivian       |
| Sihombing,John       |
| Simamora,Johanes     |
| Simanungkalit,Krista |
| Sinaga,Tobat         |
| Sitorus,Paul         |
| Tambunan,Rosinta     |
| Tohonan,Robert       |
| Wadi,Hamzan          |
| Wiryajati,Ketut      |
+----------------------+
20 rows in set (0.00 sec)

Anda juga bisa mencari nama belakang terpanjang menggunakan fungsi LENGTH sebagai berikut:

mysql> SELECT LENGTH(nama_belakang) AS L,
    -> nama_belakang FROM pengguna
    -> ORDER BY L DESC LIMIT 1;
+----+---------------+
| L  | nama_belakang |
+----+---------------+
| 13 | Simanungkalit |
+----+---------------+
1 row in set (0.03 sec)

Kemudian, Anda juga bisa membaca alamat email acak dari tabel, menggunakan fungsi RAND(), sebagai berikut:

mysql> SELECT email FROM pengguna
    -> ORDER BY RAND() LIMIT 1;
+-----------------+
| email           |
+-----------------+
| paul@contoh.com |
+-----------------+
1 row in set (0.03 sec)

Anda bisa pula menampilkan tanggal dimana pengguna terakhir mendaftar, menggunakan fungsi DATE(), sebagai berikut:

mysql> SELECT DATE(tanggal_registrasi) AS
    -> Tanggal FROM pengguna
    -> ORDER BY tanggal_registrasi DESC LIMIT 1;
+------------+
| Tanggal    |
+------------+
| 2014-08-15 |
+------------+
1 row in set (0.00 sec)
Anda bisa pula menampilkan hari dimana pengguna pertama mendaftar, menggunakan fungsi DAYNAME(), sebagai berikut:

mysql> SELECT DAYNAME(tanggal_registrasi)
    -> AS hari
    -> FROM pengguna
    -> ORDER BY tanggal_registrasi ASC LIMIT 1;
+--------+
| hari   |
+--------+
| Friday |
+--------+
1 row in set (0.09 sec)

Anda bisa juga menampilkan tanggal dan waktu sekarang, menurut MySQL, sebagai berikut:

mysql> SELECT CURDATE(), CURTIME();
+------------+-----------+
| CURDATE()  | CURTIME() |
+------------+-----------+
| 2014-08-15 | 22:38:21  |
+------------+-----------+
1 row in set (0.04 sec)


Kasus 2: Database RentalDVD


Menciptakan Database
Di sini, Anda akan menciptakan sebuah database dengan nama RentalDVD.

mysql> CREATE DATABASE RentalDVD;
Query OK, 1 row affected (0.06 sec)

mysql> use RentalDVD
Database changed


Menciptakan Tabel Lookup
Di sini, Anda akan menciptakan enam buah tabel, yaitu Peran, TipeMovie, Studio, Rating, Format, dan Status.

mysql> CREATE TABLE Peran (
    -> IDPeran VARCHAR(4) NOT NULL,
    -> DeskripsiPeran VARCHAR(30) NOT NULL,
    -> PRIMARY KEY (IDPeran)
    -> )
    -> ENGINE=INNODB;
Query OK, 0 rows affected (0.44 sec)

mysql> CREATE TABLE TipeMovie
    -> (
    -> IDTipeM VARCHAR(4) NOT NULL,
    -> DeskripsiTipeM VARCHAR(30) NOT NULL,
    -> PRIMARY KEY (IDTipeM)
    -> )
    -> ENGINE=INNODB;
Query OK, 0 rows affected (0.42 sec)

mysql> CREATE TABLE Studio
    -> (
    -> IDStudio VARCHAR(4) NOT NULL,
    -> DeskripsiStudio VARCHAR(40) NOT NULL,
    -> PRIMARY KEY (IDStudio)
    -> )
    -> ENGINE=INNODB;
Query OK, 0 rows affected (0.34 sec)

mysql> CREATE TABLE Rating
    -> (
    -> IDRating VARCHAR(4) NOT NULL,
    -> DeskripsiRating VARCHAR(30) NOT NULL,
    -> PRIMARY KEY (IDRating)
    -> )
    -> ENGINE=INNODB;
Query OK, 0 rows affected (0.27 sec)

mysql> CREATE TABLE Format
    -> (
    -> IDFormat CHAR(2) NOT NULL,
    -> DeskripsiFormat VARCHAR(15) NOT NULL,
    -> PRIMARY KEY (IDFormat)
    -> )
    -> ENGINE=INNODB;
Query OK, 0 rows affected (0.38 sec)

mysql> CREATE TABLE Status
    -> (
    -> IDStatus CHAR(3) NOT NULL,
    -> DeskripsiStatus VARCHAR(20) NOT NULL,
    -> PRIMARY KEY (IDStatus)
    -> )
    -> ENGINE=INNODB;
Query OK, 0 rows affected (0.58 sec)


Menciptakan Tabel Orang
Di sini, Anda akan menciptakan tiga buah tabel, yaitu Partisipan, Karyawan, dan Konsumen.

mysql> CREATE TABLE Partisipan
    -> (
    -> IDPartisipan SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> FNPartisipan VARCHAR(20) NOT NULL,
    -> MNPartisipan VARCHAR(20) NULL,
    -> LNPartisipan VARCHAR(20) NULL
    -> )
    -> ENGINE=INNODB;
Query OK, 0 rows affected (0.24 sec)

mysql> CREATE TABLE Karyawan
    -> (
    -> IDKaryawan SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> FNKaryawan VARCHAR(20) NOT NULL,
    -> MNKaryawan VARCHAR(20) NULL,
    -> LNKaryawan VARCHAR(20) NOT NULL
    -> )
    -> ENGINE=INNODB;
Query OK, 0 rows affected (0.23 sec)

mysql> CREATE TABLE Konsumen
    -> (
    -> IDKonsumen SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> FNKonsumen VARCHAR(20) NOT NULL,
    -> MNKonsumen VARCHAR(20) NULL,
    -> LNKonsumen VARCHAR(20) NOT NULL
    -> )
    -> ENGINE=INNODB;
Query OK, 0 rows affected (0.24 sec)


Menciptakan Tabel FOREIGN KEY
Di sini, Anda akan menciptakan empat tabel yang memuat beberapa Foreign Key.

mysql> CREATE TABLE DVD
    -> (
    -> IDDVD SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> NamaDVD VARCHAR(60) NOT NULL,
    -> NomorDisk TINYINT NOT NULL DEFAULT 1,
    -> TahunRilis YEAR NOT NULL,
    -> IDTipeM VARCHAR(4) NOT NULL,
    -> IDStudio VARCHAR(4) NOT NULL,
    -> IDRating VARCHAR(4) NOT NULL,
    -> IDFormat CHAR(2) NOT NULL,
    -> IDStatus CHAR(3) NOT NULL,
    -> FOREIGN KEY (IDTipeM) REFERENCES TipeMovie(IDTipeM),
    -> FOREIGN KEY (IDStudio) REFERENCES Studio(IDStudio),
    -> FOREIGN KEY (IDRating) REFERENCES Rating(IDRating),
    -> FOREIGN KEY (IDFormat) REFERENCES Format(IDFormat),
    -> FOREIGN KEY (IDStatus) REFERENCES Status(IDStatus)
    -> )
    -> ENGINE=INNODB;
Query OK, 0 rows affected (0.54 sec)

mysql> CREATE TABLE PartisipanDVD
    -> (
    -> IDDVD SMALLINT NOT NULL,
    -> IDPartisipan SMALLINT NOT NULL,
    -> IDPeran VARCHAR(4) NOT NULL,
    -> PRIMARY KEY (IDDVD, IDPartisipan, IDPeran),
    -> FOREIGN KEY (IDDVD) REFERENCES DVD (IDDVD),
    -> FOREIGN KEY (IDPartisipan) REFERENCES Partisipan (IDPartisipan),
    -> FOREIGN KEY (IDPeran) REFERENCES Peran (IDPeran)
    -> )
    -> ENGINE=INNODB;
Query OK, 0 rows affected (0.47 sec)

mysql> CREATE TABLE Pesan
    -> (
    -> IDPesan INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> IDKonsumen SMALLINT NOT NULL,
    -> IDKaryawan SMALLINT NOT NULL,
    -> FOREIGN KEY (IDKonsumen) REFERENCES Konsumen (IDKonsumen),
    -> FOREIGN KEY (IDKaryawan) REFERENCES Karyawan (IDKaryawan)
    -> )
    -> ENGINE=INNODB;
Query OK, 0 rows affected (0.44 sec)

mysql> CREATE TABLE Transaksi
    -> (
    -> IDTransaksi INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> IDPesan INT NOT NULL,
    -> IDDVD SMALLINT NOT NULL,
    -> TanggalKeluar DATE NOT NULL,
    -> TanggalLambat DATE NOT NULL,
    -> TanggalMasuk DATE NOT NULL,
    -> FOREIGN KEY (IDPesan) REFERENCES Pesan (IDPesan),
    -> FOREIGN KEY (IDDVD) REFERENCES DVD (IDDVD)
    -> )
    -> ENGINE=INNODB;
Query OK, 0 rows affected (0.44 sec)


Menampilkan Definisi Database
Untuk menampilkan definisi database, Anda bisa menggunakan query berikut:

mysql> SHOW CREATE DATABASE RentalDVD;
+-----------+----------------------------------------------------------------------+
| Database  | Create Database                                                      |
+-----------+----------------------------------------------------------------------+
| RentalDVD | CREATE DATABASE `RentalDVD` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+-----------+----------------------------------------------------------------------+
1 row in set (0.03 sec)

mysql> SHOW TABLES;
+---------------------+
| Tables_in_rentaldvd |
+---------------------+
| dvd                 |
| format              |
| karyawan            |
| konsumen            |
| partisipan          |
| partisipandvd       |
| peran               |
| pesan               |
| rating              |
| status              |
| studio              |
| tipemovie           |
| transaksi           |
+---------------------+
13 rows in set (0.06 sec)

Selanjutnya, Anda bisa menampilkan definisi tabel Pesan. Ketikkan query berikut:

mysql> SHOW CREATE TABLE Pesan;





Selanjutnya, Anda bisa menampilkan kolom-kolom yang ada pada tabel Transaksi. Ketikkan query berikut:

mysql> SHOW COLUMNS FROM Transaksi;
+---------------+-------------+------+-----+---------+----------------+
| Field         | Type        | Null | Key | Default | Extra          |
+---------------+-------------+------+-----+---------+----------------+
| IDTransaksi   | int(11)     | NO   | PRI | NULL    | auto_increment |
| IDPesan       | int(11)     | NO   | MUL | NULL    |                |
| IDDVD         | smallint(6) | NO   | MUL | NULL    |                |
| TanggalKeluar | date        | NO   |     | NULL    |                |
| TanggalLambat | date        | NO   |     | NULL    |                |
| TanggalMasuk  | date        | NO   |     | NULL    |                |
+---------------+-------------+------+-----+---------+----------------+
6 rows in set (0.05 sec)

Cara lain untuk melihat informasi atas sebuah tabel adalah dengan menggunakan statemen DESCRIBE. Ketikkan query berikut:

mysql> DESCRIBE PartisipanDVD;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| IDDVD        | smallint(6) | NO   | PRI | NULL    |       |
| IDPartisipan | smallint(6) | NO   | PRI | NULL    |       |
| IDPeran      | varchar(4)  | NO   | PRI | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
3 rows in set (0.05 sec)

Langkah terakhir adalah melihat indeks-indeks yang telah diciptakan pada sebuah tabel. Ketikkan query berikut:

mysql> SHOW INDEX FROM DVD;




Menyisipkan Data ke Dalam Tabel Lookup
Untuk menyisipkan sebuah rekaman ke dalam tabel Format, ketikkan statemen INSERT berikut:

mysql> INSERT INTO Format
    -> VALUES ('f1', 'Widescreen');
Query OK, 1 row affected (0.06 sec)

Untuk menyisipkan rekaman berikutnya pada tabel Format, ketikkan statemen INSERT berikut:

mysql> INSERT INTO Format (IDFormat, DeskripsiFormat)
    -> VALUES ('f2','Fullscreen');
Query OK, 1 row affected (0.05 sec)

Untuk menyisipkan rekaman-rekaman pada tabel Peran, ketikkan statemen INSERT berikut:

mysql> INSERT INTO Peran
    -> VALUES ('r101','Aktor'),
    -> ('r102','Sutradara'),
    -> ('r103','Produser'),
    -> ('r104','Produser Eksekutif'),
    -> ('r105','Produser Pembantu'),
    -> ('r106','Asisten Produser'),
    -> ('r107','Penulis Skenario'),
    -> ('r108','Komposer');
Query OK, 8 rows affected (0.05 sec)
Records: 8  Duplicates: 0  Warnings: 0

Untuk memastikkannya, ketikkan query berikut:

mysql> SELECT * FROM Peran;
+---------+--------------------+
| IDPeran | DeskripsiPeran     |
+---------+--------------------+
| r101    | Aktor              |
| r102    | Sutradara          |
| r103    | Produser           |
| r104    | Produser Eksekutif |
| r105    | Produser Pembantu  |
| r106    | Asisten Produser   |
| r107    | Penulis Skenario   |
| r108    | Komposer           |
+---------+--------------------+
8 rows in set (0.00 sec)

Untuk menyisipkan rekaman-rekaman pada tabel TipeMovie, ketikkan statemen INSERT berikut:

mysql> INSERT INTO TipeMovie
    -> VALUES ('mt10','Aksi'),
    -> ('mt11','Drama'),
    -> ('mt12','Komedi'),
    -> ('mt13','Komedi Romantis'),
    -> ('mt14','Fantasi'),
    -> ('mt15','Dokumenter'),
    -> ('mt16','Musikal');
Query OK, 7 rows affected (0.03 sec)
Records: 7  Duplicates: 0  Warnings: 0

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           |
+---------+-------------------+
7 rows in set (0.00 sec)

Untuk menyisipkan rekaman-rekaman pada tabel Studio, ketikkan statemen INSERT berikut:

mysql> INSERT INTO Studio
    -> VALUES ('s101','Universal Studios'),
    -> ('s102','Warner Brothers'),
    -> ('s103','Time Warner'),
    -> ('s104','Columbia Pictures'),
    -> ('s105','Paramount Pictures'),
    -> ('s106','Twentieth Century Fox'),
    -> ('s107','Merchant Ivory Production');
Query OK, 7 rows affected (0.05 sec)
Records: 7  Duplicates: 0  Warnings: 0

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 |
+----------+---------------------------+
9 rows in set (0.00 sec)

Untuk menyisipkan rekaman-rekaman pada tabel Rating, ketikkan statemen INSERT berikut:

mysql> INSERT INTO Rating
    -> VALUES ('NR','Not rated'),
    -> ('G','General audiences'),
    -> ('PG','Parental guidance suggested'),
    -> ('PG13','Parents strongly cautioned'),
    -> ('R','Under 17 requires adult'),
    -> ('X','No one 17 and under');
Query OK, 6 rows affected (0.06 sec)
Records: 6  Duplicates: 0  Warnings: 0

Untuk memastikkannya, ketikkan query berikut:

mysql> SELECT * FROM Rating;
+----------+-----------------------------+
| IDRating | DeskripsiRating             |
+----------+-----------------------------+
| G        | General audiences           |
| NR       | Not rated                   |
| PG       | Parental guidance suggested |
| PG13     | Parents strongly cautioned  |
| R        | Under 17 requires adult     |
| X        | No one 17 and under         |
+----------+-----------------------------+
6 rows in set (0.00 sec)

Untuk menyisipkan rekaman-rekaman pada tabel Status, ketikkan statemen INSERT berikut:

mysql> INSERT INTO Status
    -> VALUES ('s1','Di luar'),
    -> ('s2','Tersedia'),
    -> ('s3','Rusak'),
    -> ('s4','Hilang');
Query OK, 4 rows affected (0.06 sec)
Records: 4  Duplicates: 0  Warnings: 0

Untuk memastikkannya, ketikkan query berikut:

mysql> SELECT * FROM Status;
+----------+-----------------+
| IDStatus | DeskripsiStatus |
+----------+-----------------+
| s1       | Di luar         |
| s2       | Tersedia        |
| s3       | Rusak           |
| s4       | Hilang          |
+----------+-----------------+
4 rows in set (0.00 sec)


Menyisipkan Data ke Dalam Tabel-Tabel Orang
Untuk menyisipkan rekaman-rekaman ke dalam tabel Partisipan, ketikkan statemen INSERT berikut:

mysql> INSERT INTO Partisipan (FNPartisipan, MNPartisipan, LNPartisipan)
    -> VALUES ('Sydney',NULL,'Pollack'),
    -> ('Robert',NULL,'Redfort'),
    -> ('Meryl',NULL,'Streep'),
    -> ('John',NULL,'Barry'),
    -> ('Henry',NULL,'Buck'),
    -> ('Humprey',NULL,'Bogart'),
    -> ('Danny',NULL,'Kaye'),
    -> ('Rosemary',NULL,'Clooney'),
    -> ('Irving',NULL,'Berlin'),
    -> ('Michael',NULL,'Curtiz'),
    -> ('Bing',NULL,'Crosby');
Query OK, 11 rows affected (0.06 sec)
Records: 11  Duplicates: 0  Warnings: 0

Untuk memastikkannya, ketikkan query berikut:

mysql> SELECT * FROM Partisipan;
+--------------+--------------+--------------+--------------+
| IDPartisipan | FNPartisipan | MNPartisipan | LNPartisipan |
+--------------+--------------+--------------+--------------+
|            1 | Sydney       | NULL         | Pollack      |
|            2 | Robert       | NULL         | Redfort      |
|            3 | Meryl        | NULL         | Streep       |
|            4 | John         | NULL         | Barry        |
|            5 | Henry        | NULL         | Buck         |
|            6 | Humprey      | NULL         | Bogart       |
|            7 | Danny        | NULL         | Kaye         |
|            8 | Rosemary     | NULL         | Clooney      |
|            9 | Irving       | NULL         | Berlin       |
|           10 | Michael      | NULL         | Curtiz       |
|           11 | Bing         | NULL         | Crosby       |
+--------------+--------------+--------------+--------------+
11 rows in set (0.00 sec)

Untuk menyisipkan rekaman-rekaman ke dalam tabel Karyawan, ketikkan statemen INSERT berikut:

mysql> INSERT INTO Karyawan (FNKaryawan, MNKaryawan, LNKaryawan)
    -> VALUES ('Rismon', 'H.', 'Sianipar'),
    -> ('I', 'Ketut', 'Wiryajati'),
    -> ('Muhammad', NULL, 'Irwan'),
    -> ('Hamzan', NULL, 'Wadi'),
    -> ('Tobat', NULL, 'Sinaga'),
    -> ('Krista', 'C.', 'Simanungkalit');
Query OK, 6 rows affected (0.08 sec)
Records: 6  Duplicates: 0  Warnings: 0

Untuk memastikkannya, ketikkan query 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)

Untuk menyisipkan rekaman-rekaman ke dalam tabel Konsumen, ketikkan statemen INSERT berikut:

mysql> INSERT INTO Konsumen (FNKonsumen, MNKonsumen, LNKonsumen)
    -> VALUES('Ralph', NULL, 'Tampubolon'),
    -> ('Najwa', NULL, 'Shihab'),
    -> ('Joko', NULL, 'Widodo'),
    -> ('Megawati', NULL, 'Soekarnoputri'),
    -> ('Putra', 'H.', 'Nababan'),
    -> ('Hamzah', NULL, 'Haz');
Query OK, 6 rows affected (0.06 sec)
Records: 6  Duplicates: 0  Warnings: 0

Untuk memastikkannya, ketikkan query berikut:

mysql> SELECT * FROM Konsumen;
+------------+------------+------------+---------------+
| IDKonsumen | FNKonsumen | MNKonsumen | LNKonsumen    |
+------------+------------+------------+---------------+
|          1 | Ralph      | NULL       | Tampubolon    |
|          2 | Najwa      | NULL       | Shihab        |
|          3 | Joko       | NULL       | Widodo        |
|          4 | Megawati   | NULL       | Soekarnoputri |
|          5 | Putra      | H.         | Nababan       |
|          6 | Hamzah     | NULL       | Haz           |
+------------+------------+------------+---------------+
6 rows in set (0.00 sec)


Menyisipkan Data ke Dalam Tabel-Tabel Foreign Key
Untuk menyisipkan sebuah rekaman ke dalam tabel DVD, ketikkan statemen INSERT berikut:

mysql> INSERT INTO DVD
    -> VALUES(NULL, 'White Christmas', DEFAULT, 2000, 'mt16', 's105', 'NR', 'f1', 's1');
Query OK, 1 row affected (0.06 sec)

Untuk menyisipkan rekaman berikutnya ke dalam tabel DVD, ketikkan statemen INSERT berikut:

mysql> INSERT INTO DVD
    -> (NamaDVD, NomorDisk, TahunRilis, IDTipeM, IDStudio, IDRating, IDFormat, IDStatus)
    -> VALUES ('What\'s Up, Doc?',1,2001,'mt12','s103','G','f1','s2');

Untuk menyisipkan rekaman-rekaman berikutnya ke dalam tabel DVD, ketikkan statemen INSERT berikut:

mysql> INSERT INTO DVD
    -> VALUES(NULL, 'Out of Africa',1,2000,'mt11','s101','PG','f1','s1'),
    -> (NULL,'The Maltese Falcon',1,2000,'mt11','s103','NR','f1','s2'),
    -> (NULL,'Amadeus',1,1997,'mt11','s103','PG','f1','s2');
Query OK, 3 rows affected (0.06 sec)
Records: 3  Duplicates: 0  Warnings: 0

Untuk menyisipkan rekaman-rekaman lainnya ke dalam tabel DVD, ketikkan statemen INSERT berikut:

mysql> INSERT INTO DVD
    -> (NamaDVD, NomorDisk, TahunRilis, IDTipeM, IDStudio, IDRating, IDFormat, IDStatus)
    -> VALUES
    -> ('The Rocky Horror Picture Show',2,2000,'mt12','s106','NR','f1','s2'),
    -> ('A Room with a View',1,2000,'mt11','s107','NR','f1','s1'),
    -> ('Mash',2,2001,'mt12','s106','R','f1','s2');
Query OK, 3 rows affected (0.03 sec)
Records: 3  Duplicates: 0  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       |
+-------+-------------------------------+-----------+------------+---------+----------+----------+----------+--------+
8 rows in set (0.00 sec)

Untuk menyisipkan rekaman-rekaman ke dalam tabel PartisipanDVD, ketikkan statemen INSERT berikut:

mysql> INSERT INTO PartisipanDVD
    -> VALUES(3,1,'r102'),
    -> (3,4,'r108'),
    -> (3,1,'r103'),
    -> (3,2,'r101'),
    -> (3,3,'r101'),
    -> (1,8,'r101'),
    -> (1,9,'r108'),
    -> (1,10,'r102'),
    -> (1,11,'r101'),
    -> (1,7,'r101'),
    -> (2,5,'r107');
Query OK, 11 rows affected (0.06 sec)
Records: 11  Duplicates: 0  Warnings: 0

Untuk memastikkannya, ketikkan query berikut:

mysql> SELECT * FROM PartisipanDVD;
+-------+--------------+---------+
| IDDVD | IDPartisipan | IDPeran |
+-------+--------------+---------+
|     3 |            1 | r102    |
|     3 |            1 | r103    |
|     3 |            2 | r101    |
|     3 |            3 | r101    |
|     3 |            4 | r108    |
|     2 |            5 | r107    |
|     1 |            7 | r101    |
|     1 |            8 | r101    |
|     1 |            9 | r108    |
|     1 |           10 | r102    |
|     1 |           11 | r101    |
+-------+--------------+---------+
11 rows in set (0.00 sec)

Untuk menyisipkan rekaman-rekaman ke dalam tabel Pesan, ketikkan statemen INSERT berikut:

mysql> INSERT INTO Pesan (IDKonsumen, IDKaryawan)
    -> VALUES(1,3),
    -> (1,2),
    -> (2,5),
    -> (3,6),
    -> (4,1),
    -> (3,3),
    -> (5,2),
    -> (6,4),
    -> (4,5),
    -> (6,2),
    -> (3,1),
    -> (1,6),
    -> (5,4);
Query OK, 13 rows affected (0.05 sec)
Records: 13  Duplicates: 0  Warnings: 0

Untuk memastikkannya, ketikkan query berikut:

mysql> SELECT * FROM Pesan;
+---------+------------+------------+
| IDPesan | IDKonsumen | IDKaryawan |
+---------+------------+------------+
|       1 |          1 |          3 |
|       2 |          1 |          2 |
|       3 |          2 |          5 |
|       4 |          3 |          6 |
|       5 |          4 |          1 |
|       6 |          3 |          3 |
|       7 |          5 |          2 |
|       8 |          6 |          4 |
|       9 |          4 |          5 |
|      10 |          6 |          2 |
|      11 |          3 |          1 |
|      12 |          1 |          6 |
|      13 |          5 |          4 |
+---------+------------+------------+
13 rows in set (0.00 sec)

Untuk menyisipkan rekaman-rekaman ke dalam tabel Transaksi, ketikkan statemen INSERT berikut:

mysql> INSERT INTO Transaksi (IDPesan, IDDVD, TanggalKeluar, TanggalLambat)
    -> VALUES(1,1,CURDATE(),CURDATE()+3),
    -> (1,4,CURDATE(),CURDATE()+3),
    -> (1,8,CURDATE(),CURDATE()+3),
    -> (2,3,CURDATE(),CURDATE()+3),
    -> (3,4,CURDATE(),CURDATE()+3),
    -> (3,1,CURDATE(),CURDATE()+3),
    -> (3,7,CURDATE(),CURDATE()+3),
    -> (4,4,CURDATE(),CURDATE()+3),
    -> (5,3,CURDATE(),CURDATE()+3),
    -> (6,2,CURDATE(),CURDATE()+3),
    -> (6,1,CURDATE(),CURDATE()+3),
    -> (7,4,CURDATE(),CURDATE()+3),
    -> (8,2,CURDATE(),CURDATE()+3),
    -> (8,1,CURDATE(),CURDATE()+3),
    -> (8,3,CURDATE(),CURDATE()+3),
    -> (9,7,CURDATE(),CURDATE()+3),
    -> (9,1,CURDATE(),CURDATE()+3),
    -> (10,5,CURDATE(),CURDATE()+3),
    -> (11,6,CURDATE(),CURDATE()+3),
    -> (11,2,CURDATE(),CURDATE()+3),
    -> (11,8,CURDATE(),CURDATE()+3),
    -> (12,5,CURDATE(),CURDATE()+3),
    -> (13,7,CURDATE(),CURDATE()+3);
Query OK, 23 rows affected, 1 warning (0.14 sec)
Records: 23  Duplicates: 0  Warnings: 1

Untuk memastikkannya, ketikkan query berikut:

mysql> SELECT * FROM Transaksi;
+-------------+---------+-------+---------------+---------------+--------------+
| IDTransaksi | IDPesan | IDDVD | TanggalKeluar | TanggalLambat | TanggalMasuk |
+-------------+---------+-------+---------------+---------------+--------------+
|           1 |       1 |     1 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|           2 |       1 |     4 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|           3 |       1 |     8 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|           4 |       2 |     3 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|           5 |       3 |     4 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|           6 |       3 |     1 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|           7 |       3 |     7 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|           8 |       4 |     4 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|           9 |       5 |     3 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|          10 |       6 |     2 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|          11 |       6 |     1 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|          12 |       7 |     4 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|          13 |       8 |     2 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|          14 |       8 |     1 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|          15 |       8 |     3 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|          16 |       9 |     7 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|          17 |       9 |     1 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|          18 |      10 |     5 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|          19 |      11 |     6 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|          20 |      11 |     2 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|          21 |      11 |     8 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|          22 |      12 |     5 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
|          23 |      13 |     7 | 2014-08-23    | 2014-08-26    | 0000-00-00   |
+-------------+---------+-------+---------------+---------------+--------------+
23 rows in set (0.00 sec)



No comments:

Post a Comment