Database
Lanjut
Menciptakan Database Dan Tabel
Di
sini, Anda akan menciptakan sebuah database dengan nama forum, sebagai berikut:
mysql> CREATE DATABASE forum;
Query OK, 1 row affected (0.00 sec)
mysql> USE forum;
Database changed
Selanjutnya, Anda menciptakan sebuah
tabel dengan nama forum.
mysql> CREATE TABLE forums(
-> id_forum TINYINT
UNSIGNED NOT NULL AUTO_INCREMENT,
-> nama VARCHAR(60)
NOT NULL,
-> PRIMARY KEY
(id_forum));
Query OK, 0 rows affected (0.35 sec)
Kemudian, Anda menciptakan sebuah tabel
dengan nama pesan.
mysql> CREATE TABLE pesan(
-> id_pesan INT
UNSIGNED NOT NULL AUTO_INCREMENT,
-> id_forum TINYINT
UNSIGNED NOT NULL,
-> id_induk INT
UNSIGNED NOT NULL,
-> id_pengguna
MEDIUMINT UNSIGNED NOT NULL,
-> subjek
VARCHAR(100) NOT NULL,
-> tubuh LONGTEXT
NOT NULL,
->
tanggal_dimasukkan TIMESTAMP NOT NULL,
-> PRIMARY
KEY(id_pesan));
Query OK, 0 rows affected (0.26 sec)
Kemudian, Anda menciptakan sebuah tabel
dengan nama pengguna.
mysql> CREATE TABLE pengguna(
->
id_pengguna MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
->
namapengguna VARCHAR(30) NOT NULL,
->
pass CHAR(40) NOT NULL,
->
nama_depan VARCHAR(20) NOT NULL,
->
nama_belakang VARCHAR(40) NOT NULL,
->
email VARCHAR(80) NOT NULL,
-> PRIMARY
KEY (id_pengguna));
Query OK, 0 rows affected (0.29 sec)
Jika diperlukan, Anda bisa memastikan
struktur database, sebagai berikut:
mysql> SHOW TABLES;
+-----------------+
| Tables_in_forum |
+-----------------+
| forums |
| pengguna |
| pesan |
+-----------------+
3 rows in set (0.00 sec)
mysql> SHOW COLUMNS FROM forums;
+----------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default |
Extra |
+----------+---------------------+------+-----+---------+----------------+
| id_forum | tinyint(3) unsigned | NO | PRI | NULL | auto_increment |
| nama |
varchar(60) | NO |
| NULL | |
+----------+---------------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)
mysql> SHOW COLUMNS FROM pesan;
+--------------------+-----------------------+------+-----+---------+----------------+
| Field |
Type | Null | Key |
Default | Extra |
+--------------------+-----------------------+------+-----+---------+----------------+
| id_pesan |
int(10) unsigned | NO | PRI | NULL | auto_increment |
| id_forum |
tinyint(3) unsigned | NO |
| NULL | |
| id_induk |
int(10) unsigned | NO |
| NULL | |
| id_pengguna |
mediumint(8) unsigned | NO | | NULL
| |
| subjek |
varchar(100) | NO | | NULL
| |
| tubuh |
longtext | NO |
| NULL | |
| tanggal_dimasukkan | timestamp | NO |
| NULL | |
+--------------------+-----------------------+------+-----+---------+----------------+
7 rows in set (0.01 sec)
mysql> SHOW COLUMNS FROM pengguna;
+---------------+-----------------------+------+-----+---------+----------------+
| Field |
Type | Null | Key |
Default | Extra |
+---------------+-----------------------+------+-----+---------+----------------+
| id_pengguna |
mediumint(8) unsigned | NO | PRI |
NULL | auto_increment |
| namapengguna |
varchar(30) | NO |
| NULL | |
| pass |
char(40) | NO |
| NULL | |
| nama_depan |
varchar(20) | NO |
| NULL | |
| nama_belakang | varchar(40) | NO |
| NULL | |
| email |
varchar(80) | NO |
| NULL | |
+---------------+-----------------------+------+-----+---------+----------------+
6 rows in set (0.01 sec)
Mengisi Database
Sekarang, Anda akan menambahkan
beberapa rekaman pada tabel forums, sebagai berikut:
mysql> INSERT INTO forums(nama) VALUES
->
('MySQL'), ('PHP'), ('Sport'), ('HTML'), ('CSS'), ('Java');
Query OK, 6 rows affected (0.04 sec)
Records: 6
Duplicates: 0 Warnings: 0
Dan menambahkan beberapa rekaman pada
tabel pengguna, sebagai berikut:
mysql>
INSERT INTO pengguna(namapengguna, pass, nama_depan, nama_belakang, email)
VALUES
-> ('pendobrak', SHA1('passku'),
'Rismon', 'Sianipar', 'rismon@contoh.com'),
-> ('pemberani', SHA1('passmu'),
'David', 'Rupidara', 'david@contoh.com');
Query OK, 2 rows affected (0.03 sec)
Records: 2
Duplicates: 0 Warnings: 0
Selanjutnya, Anda menambahkan beberapa
rekaman pada tabel pesan, sebagai berikut:
mysql> SELECT * FROM forums;
+----------+-------+
| id_forum | nama
|
+----------+-------+
| 1 |
MySQL |
| 2 |
PHP |
| 3 |
Sport |
| 4 |
HTML |
| 5 |
CSS |
| 6 |
Java |
+----------+-------+
6 rows in set (0.00 sec)
mysql> SELECT id_pengguna, namapengguna FROM
pengguna;
+-------------+--------------+
| id_pengguna | namapengguna |
+-------------+--------------+
|
1 | pendobrak |
|
2 | pemberani |
+-------------+--------------+
2 rows in set (0.00 sec)
mysql> INSERT INTO pesan (id_forum, id_induk,
->
id_pengguna, subjek, tubuh) VALUES
->
(1, 0, 1, 'Pertanyaan tentang normalisasi.',
->
'Saya bingung tentang normalisasi...'),
->
(1, 0, 2, 'Perancangan Database',
->
'Saya sedang menciptakan sebuah database baru dan
'>
memiliki masalah dengan struktur.
'>
Berapa banyak tabel yang diperlukan?...'),
->
(1, 2, 1, 'Perancangan Database',
->
'Jumlah tabel dalam database Anda sejumlah...'),
->
(1, 3, 2, 'Perancangan Database',
->
'Oke, terimakasih!'),
->
(2, 0, 2, 'Error PHP',
->
'Saya sedang menggunakan skrip PHP dan tidak bisa
'>
menggunakan contoh kalkulator...');
Query OK, 5 rows affected, 1 warning (0.04 sec)
Records: 5
Duplicates: 0 Warnings: 1
Memanfaatkan phpMyAdmin
Anda bisa memanfaatkan phpMyAdmin untuk
menambahkan rekaman pada tabel pengguna, dengan mengklik tab Insert, sebagai
berikut:
Anda bisa memanfaatkan phpMyAdmin untuk
menambahkan rekaman pada tabel pesan, dengan mengklik tab Insert, sebagai
berikut:
Menggabungkan Tabel
Penggabungan dalam (inner) menghasilkan
semua rekaman dari tabel-tabel ketika terjadi kecocokan. Sebagai contoh, untuk
mencari setiap pesan di dalam forum Java, penggabungan dalam akan dituliskan
sebagai berikut:
mysql> SELECT * FROM pesan INNER JOIN forums
-> ON
pesan.id_forum = forums.id_forum
->
WHERE forums.nama = 'Java';
+----------+----------+----------+-------------+-------------------+-------------------------------------+---------------------+----------+------+
|
id_pesan | id_forum | id_induk | id_pengguna | subjek | tubuh |
tanggal_dimasukkan | id_forum | nama |
+----------+----------+----------+-------------+-------------------+-------------------------------------+---------------------+----------+------+
| 19 | 6 | 0 | 4 | Mengapa? | Saya tidak paham... | 2014-08-15 23:53:15 | 6 | Java |
| 20 | 6 | 15 | 4 | Mengapa? Mengapa? | Saya sama
sekali tidak mengerti???? | 2014-08-15 23:53:42 | 6 | Java |
+----------+----------+----------+-------------+-------------------+-------------------------------------+---------------------+----------+------+
2
rows in set (0.00 sec)
Penggabungan dalam dapat pula
dituliskan tanpa secara formal menggunakan INNER JOIN, sebagai berikut:
mysql> SELECT * FROM pesan, forums
-> WHERE
pesan.id_forum = forums.id_forum
-> AND forums.nama
= 'Java';
+----------+----------+----------+-------------+-------------------+-------------------------------------+---------------------+----------+------+
| id_pesan |
id_forum | id_induk | id_pengguna | subjek | tubuh |
tanggal_dimasukkan | id_forum | nama |
+----------+----------+----------+-------------+-------------------+-------------------------------------+---------------------+----------+------+
| 19 | 6 | 0 | 4 | Mengapa? | Saya tidak paham... | 2014-08-15 23:53:15 | 6 | Java |
| 20 | 6 | 15 | 4 | Mengapa? Mengapa? | Saya sama
sekali tidak mengerti???? | 2014-08-15 23:53:42 | 6 | Java |
+----------+----------+----------+-------------+-------------------+-------------------------------------+---------------------+----------+------+
2 rows in
set (0.00 sec)
Penggabungan luar (outer) berbeda dari
penggabungan dalam dimana penggabungan luar menghasilkan rekaman-rekaman yang
tidak cocok dengan suatu kondisi. Ada tidak subtipe penggabungan luar: left,
right, dan full. Sebuah contoh penggabungan left adalah:
mysql>
SELECT * FROM forums LEFT JOIN pesan
-> ON forums.id_forum = pesan.id_forum;
+----------+-------+----------+----------+----------+-------------+---------------------------------+-------------------------------------------------+---------------------+
| id_forum | nama |
id_pesan | id_forum | id_induk | id_pengguna | subjek | tubuh | tanggal_dimasukkan |
+----------+-------+----------+----------+----------+-------------+---------------------------------+-------------------------------------------------+---------------------+
| 1 | MySQL | 1 | 1 | 0 | 1 | Pertanyaan tentang normalisasi.
| Saya bingung tentang normalisasi... | 0000-00-00 00:00:00 |
| 1 | MySQL | 2 | 1 | 0 | 2 | Perancangan Database | Saya sedang menciptakan sebuah
database baru | 0000-00-00 00:00:00 |
| 1 | MySQL | 3 | 1 | 2 | 1 | Perancangan Database | Jumlah tabel dalam database Anda
sejumlah... | 0000-00-00 00:00:00 |
| 1 | MySQL | 4 | 1 | 3 | 2 | Perancangan Database | Oke, terimakasih! | 0000-00-00
00:00:00 |
| 2 | PHP |
5 | 2 | 0 | 2 | Error PHP | Saya sedang menggunakan
skrip PHP dan tidak bisa
menggunakan contoh kalkulator... | 0000-00-00 00:00:00 |
| 2 | PHP |
6 | 2 | 5
| 1 | Error PHP | Pertanyaan seputar
sekuritas PHP... | 2014-08-15
23:45:09 |
| 2 | PHP |
7 | 2 | 6 | 3 | Error PHP | Saya belum mengerti
untuk menggunakan
metode sekuritas PHP... | 2014-08-15 23:46:09 |
| 2 | PHP |
8 | 2 | 7 | 1 | Error PHP | Ini yang saya belum
bisa... | 2014-08-15
23:46:40 |
| 2 | PHP |
9 | 2 | 0 | 3 | HTML Dinamis menggunakan
PHP | HTML Dinamis menggunakan
PHP...Apa itu? | 2014-08-15 23:49:01 |
| 2 | PHP |
10 | 2 | 16 | 1 | HTML Dinamis menggunakan
PHP | HTML Dinamis menggunakan PHP...
Saya belum bisa... | 2014-08-15
23:49:25 |
| 2 | PHP |
11 | 2 | 17 | 1 | HTML Dinamis menggunakan
PHP | HTML Dinamis menggunakan PHP...
Saya
masih baru belajar... | 2014-08-15 23:49:46 |
| 2 | PHP |
12 | 2 | 18 | 2 | HTML Dinamis menggunakan
PHP | HTML Dinamis menggunakan PHP...Ajarin
dong...? | 2014-08-15 23:50:05 |
| 3 | Sport | 13 | 3 | 0 | 2 | Rex Grossman | Rex Grossman...Siapa dia?
| 2014-08-15
23:50:41 |
| 3 | Sport | 14 |
3 | 9 | 1 | Rex Grossman | Rex Grossman...Saya tidak
tahu dia...? | 2014-08-15
23:51:02 |
| 4 | HTML |
15 | 4 | 0 | 3 | HTML versus XHTML | HTML versus XHTML...Apa
bedanya? | 2014-08-15
23:51:33 |
| 4 | HTML |
16 | 4 | 13 | 1 | HTML versus XHTML | HTML versus XHTML...Ajarin
dong? | 2014-08-15
23:51:51 |
| 5 | CSS | 17 |
5 | 0 | 3 | CSS Resources | Ajarin CSS ya?... | 2014-08-15
23:52:25 |
| 5 | CSS |
18 | 5 | 11 | 1 | CSS Resources | Itu untuk Apa???? | 2014-08-15
23:52:44 |
| 6 | Java |
19 | 6 | 0 | 4 | Mengapa? | Saya tidak paham... | 2014-08-15
23:53:15 |
| 6 | Java |
20 | 6 | 15 | 4 | Mengapa? Mengapa? | Saya sama sekali tidak
mengerti???? | 2014-08-15
23:53:42 |
+----------+-------+----------+----------+----------+-------------+---------------------------------+-------------------------------------------------+---------------------+
20 rows in set (0.00 sec)
Anda bisa membaca nama forum dan subjek
pesan untuk tiap rekaman di dalam tabel pesan, sebagai berikut:
mysql>
SELECT f.nama, m.subjek FROM forums
-> AS f INNER JOIN pesan AS m
-> USING(id_forum) ORDER BY f.nama;
+-------+---------------------------------+
|
nama | subjek |
+-------+---------------------------------+
|
CSS | CSS Resources |
|
CSS | CSS Resources |
|
HTML | HTML versus XHTML |
|
HTML | HTML versus XHTML |
|
Java | Mengapa? Mengapa? |
|
Java | Mengapa? |
|
MySQL | Perancangan Database |
|
MySQL | Perancangan Database |
|
MySQL | Perancangan Database |
|
MySQL | Pertanyaan tentang normalisasi. |
|
PHP | HTML Dinamis menggunakan PHP |
|
PHP | HTML Dinamis menggunakan PHP |
|
PHP | Error PHP |
|
PHP | HTML Dinamis menggunakan PHP |
|
PHP | Error PHP |
|
PHP | Error PHP |
|
PHP | HTML Dinamis menggunakan PHP |
|
PHP | Error PHP |
|
Sport | Rex Grossman |
|
Sport | Rex Grossman |
+-------+---------------------------------+
20
rows in set (0.00 sec)
Anda bisa pula membaca subjek dan
tanggal untuk tiap pesan yang dikirimkan oleh pengguna pendobrak, sebagai
berikut:
mysql> SELECT m.subjek,
->
DATE_FORMAT(m.tanggal_dimasukkan, '%M %D, %Y')
-> AS Date FROM
pengguna
-> AS u INNER JOIN
pesan AS m
->
USING(id_pengguna)
-> WHERE
u.namapengguna = 'pendobrak';
+---------------------------------+-------------------+
| subjek
| Date |
+---------------------------------+-------------------+
| Pertanyaan tentang normalisasi. | NULL |
| Perancangan Database
| NULL |
| Error PHP
| August 15th, 2014 |
| Error PHP
| August 15th, 2014 |
| HTML Dinamis menggunakan PHP
| August 15th, 2014 |
| HTML Dinamis menggunakan PHP
| August 15th, 2014 |
| Rex Grossman
| August 15th, 2014 |
| HTML versus XHTML
| August 15th, 2014 |
| CSS Resources
| August 15th, 2014 |
+---------------------------------+-------------------+
9 rows in set (0.00 sec)
Kemudian, Anda bisa membaca id pesan,
subjek, dan nama forum untuk tiap pesan yang dikirimkan oleh pengguna
pemberani, sebagai berikut:
mysql> SELECT m.id_pesan, m.subjek,
-> f.nama FROM
pengguna AS u INNER JOIN
-> pesan AS m
USING(id_pengguna)
-> INNER JOIN
forums AS f
-> USING(id_forum)
-> WHERE u.namapengguna
= 'pemberani';
+----------+------------------------------+-------+
| id_pesan | subjek | nama |
+----------+------------------------------+-------+
| 2 | Perancangan
Database | MySQL |
| 4 | Perancangan
Database | MySQL |
| 5 | Error
PHP | PHP |
| 12 | HTML Dinamis
menggunakan PHP | PHP |
| 13 | Rex
Grossman | Sport |
+----------+------------------------------+-------+
5 rows in set (0.00 sec)
Selanjutnya, Anda bisa membaca nama
pengguna, subjek pesan, dan nama forum untuk setiap pengguna, sebagai berikut:
mysql> SELECT u.namapengguna, m.subjek,
-> f.nama FROM
pengguna AS u LEFT JOIN
-> pesan AS m
USING(id_pengguna)
-> LEFT JOIN forums AS f
-> USING(id_forum);
+--------------+---------------------------------+-------+
| namapengguna | subjek | nama |
+--------------+---------------------------------+-------+
| pendobrak |
Pertanyaan tentang normalisasi. | MySQL |
| pemberani |
Perancangan Database | MySQL |
| pendobrak |
Perancangan Database | MySQL |
| pemberani |
Perancangan Database | MySQL |
| pemberani | Error
PHP | PHP |
| pendobrak | Error
PHP | PHP |
| pengamat | Error
PHP | PHP |
| pendobrak | Error
PHP | PHP |
| pengamat | HTML
Dinamis menggunakan PHP | PHP |
| pendobrak | HTML
Dinamis menggunakan PHP | PHP |
| pendobrak | HTML
Dinamis menggunakan PHP | PHP |
| pemberani | HTML
Dinamis menggunakan PHP | PHP |
| pemberani | Rex
Grossman | Sport |
| pendobrak | Rex
Grossman | Sport |
| pengamat | HTML
versus XHTML | HTML |
| pendobrak | HTML
versus XHTML | HTML |
| pengamat | CSS
Resources | CSS |
| pendobrak | CSS
Resources | CSS |
+--------------+---------------------------------+-------+
18 rows in set (0.00 sec)
Mengelompokkan Hasil Terseleksi
Anda bisa menghitung jumlah pengguna
yang terdaftar, sebagai berikut:
mysql> SELECT COUNT(id_pengguna) FROM pengguna;
+--------------------+
| COUNT(id_pengguna) |
+--------------------+
| 3 |
+--------------------+
1 row in set (0.00 sec)
Selanjutnya, Anda bisa menghitung
berapa kali setiap pengguna mengirimkan pesan, sebagai berikut:
mysql> SELECT namapengguna,
-> COUNT(id_pesan)
AS Number
-> FROM pengguna
LEFT JOIN pesan AS m
->
USING(id_pengguna) GROUP BY (m.id_pengguna);
+--------------+--------+
| namapengguna | Number |
+--------------+--------+
| pendobrak | 9 |
| pemberani | 5
|
| pengamat | 4 |
+--------------+--------+
3 rows in set (0.01 sec)
Berikutnya,
Anda bisa mencari dua pengguna yang paling banyak mengirimkan pesan, sebagai
berikut:
mysql>
SELECT namapengguna,
-> COUNT(id_pesan) AS Number
-> FROM pengguna LEFT JOIN pesan AS m
-> USING(id_pengguna) GROUP BY
(m.id_pengguna)
-> ORDER BY Number DESC LIMIT 2;
+--------------+--------+
|
namapengguna | Number |
+--------------+--------+
|
pendobrak | 9 |
|
pemberani | 5 |
+--------------+--------+
2
rows in set (0.00 sec)
Menambahkan Indeks
Anda
bisa menambahkan indeks pada kolom nama dalam tabel forums, sebagai berikut:
mysql> ALTER TABLE forums ADD UNIQUE(nama);
Query OK, 0 rows affected (0.32 sec)
Records: 0 Duplicates:
0 Warnings: 0
Anda
juga bisa menambahkan indeks pada tabel pesan, sebagai berikut:
mysql>
ALTER TABLE pesan
-> ADD INDEX(id_forum),
-> ADD INDEX(id_induk),
-> ADD INDEX(id_pengguna),
-> ADD FULLTEXT(tubuh, subjek),
-> ADD INDEX(tanggal_dimasukkan);
Query
OK, 0 rows affected, 1 warning (3.37 sec)
Records:
0 Duplicates: 0 Warnings: 1
Selanjutnya,
Anda menambahkan indeks pada tabel pengguna, sebagai berikut:
mysql>
ALTER TABLE pengguna
-> ADD UNIQUE(namapengguna),
->
ADD INDEX(pass, namapengguna),
-> ADD UNIQUE(email);
Query
OK, 0 rows affected (0.50 sec)
Records:
0 Duplicates: 0 Warnings: 0
Sekarang,
Anda bisa melihat struktur tiap tabel, sebagai berikut:
mysql> DESCRIBE forums;
+----------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default |
Extra |
+----------+---------------------+------+-----+---------+----------------+
| id_forum | tinyint(3) unsigned | NO | PRI | NULL | auto_increment |
| nama |
varchar(60) | NO | UNI | NULL | |
+----------+---------------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)
mysql> DESCRIBE pesan;
+--------------------+-----------------------+------+-----+---------+----------------+
| Field |
Type | Null | Key |
Default | Extra |
+--------------------+-----------------------+------+-----+---------+----------------+
| id_pesan |
int(10) unsigned | NO | PRI | NULL | auto_increment |
| id_forum |
tinyint(3) unsigned | NO | MUL | NULL |
|
| id_induk |
int(10) unsigned | NO | MUL | NULL |
|
| id_pengguna |
mediumint(8) unsigned | NO | MUL |
NULL | |
| subjek |
varchar(100) | NO |
| NULL | |
| tubuh |
longtext | NO | MUL | NULL |
|
| tanggal_dimasukkan | timestamp | NO | MUL | NULL | |
+--------------------+-----------------------+------+-----+---------+----------------+
7 rows in set (0.01 sec)
mysql> DESCRIBE pengguna;
+---------------+-----------------------+------+-----+---------+----------------+
| Field |
Type | Null | Key |
Default | Extra |
+---------------+-----------------------+------+-----+---------+----------------+
| id_pengguna |
mediumint(8) unsigned | NO | PRI |
NULL | auto_increment |
| namapengguna |
varchar(30) | NO | UNI | NULL |
|
| pass |
char(40) | NO | MUL | NULL |
|
| nama_depan |
varchar(20) | NO |
| NULL | |
| nama_belakang | varchar(40) | NO |
| NULL | |
| email |
varchar(80) | NO | UNI | NULL |
|
+---------------+-----------------------+------+-----+---------+----------------+
6 rows in set (0.01 sec)
Mengubah Tipe Tabel
Anda
bisa melihat informasi tabel, sebagai berikut:
Jika
diinginkan, Anda bisa mengubah tabel pesan menjadi MyISAM, sebagai berikut:
mysql>
ALTER TABLE pesan ENGINE=MYISAM;
Query
OK, 20 rows affected (0.48 sec)
Records:
20 Duplicates: 0 Warnings: 0
Anda
bisa mengamati perubahan yang terjadi. Tampilkan status tabel secara vertikal.
mysql> SHOW TABLE STATUS \G
*************************** 1. row ***************************
Name: forums
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 6
Avg_row_length: 2730
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: 7
Create_time:
2014-08-16 00:36:18
Update_time: NULL
Check_time: NULL
Collation:
latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
*************************** 2. row ***************************
Name: pengguna
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 3
Avg_row_length: 5461
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: 4
Create_time:
2014-08-16 00:39:52
Update_time: NULL
Check_time: NULL
Collation:
latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
*************************** 3. row ***************************
Name: pesan
Engine: MyISAM
Version: 10
Row_format: Dynamic
Rows: 20
Avg_row_length: 83
Data_length: 1676
Max_data_length: 281474976710655
Index_length: 9216
Data_free: 0
Auto_increment: 21
Create_time:
2014-08-16 00:46:22
Update_time: 2014-08-16
00:46:22
Check_time: NULL
Collation:
latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
3 rows in set (0.01 sec)
Melakukan Pencarian FULLTEXT
Anda
bisa melakukan pencarian FULLTEXT untuk kata database.
mysql>
USE forum;
Database
changed
mysql>
SELECT subjek, tubuh FROM pesan
-> WHERE MATCH(tubuh, subjek)
-> AGAINST('database');
+----------------------+--------------------------------------------------------------------------------------------------------------------+
| subjek | tubuh
|
+----------------------+--------------------------------------------------------------------------------------------------------------------+
| Perancangan Database | Jumlah tabel dalam
database Anda sejumlah...
|
| Perancangan Database | Saya sedang menciptakan
sebuah database baru dan
memiliki masalah dengan struktur.
Berapa banyak tabel yang diperlukan?... |
| Perancangan Database | Oke, terimakasih!
|
+----------------------+--------------------------------------------------------------------------------------------------------------------+
3 rows in set (0.12 sec)
Anda
juga bisa melakukan pencarian FULLTEXT
sembari menunjukkan relevansi, sebagai berikut:
Selain
itu, Anda bisa melakukan pencarian FULLTEXT menggunakan beberapa katakunci,
sebagai berikut:
mysql> SELECT subjek, tubuh FROM pesan
-> WHERE
MATCH(tubuh, subjek)
-> AGAINST('html
xhtml');
+------------------------------+-----------------------------------------------------------+
| subjek
| tubuh
|
+------------------------------+-----------------------------------------------------------+
| HTML versus XHTML
| HTML versus XHTML...Ajarin
dong? |
| HTML versus XHTML
| HTML versus XHTML...Apa bedanya? |
| HTML Dinamis menggunakan PHP | HTML Dinamis menggunakan
PHP...Saya masih baru belajar... |
| HTML Dinamis menggunakan PHP | HTML Dinamis menggunakan
PHP...Saya belum bisa... |
| HTML Dinamis menggunakan PHP | HTML Dinamis menggunakan
PHP...Ajarin dong...? |
| HTML Dinamis menggunakan PHP | HTML Dinamis menggunakan
PHP...Apa itu? |
+------------------------------+-----------------------------------------------------------+
6 rows in set (0.02 sec)
Melakukan Pencarian Boolean FULLTEXT
Anda
bisa melakukan pencarian boolean FULLTEXT yang mencari HTML, XHTML, atau (X)HTML,
sebagai berikut:
mysql> SELECT subjek, tubuh FROM pesan
-> WHERE
MATCH(tubuh, subjek)
-> AGAINST('#HTML'
IN BOOLEAN MODE)\G
*************************** 1. row ***************************
subjek: HTML Dinamis menggunakan PHP
tubuh: HTML Dinamis
menggunakan PHP...Apa itu?
*************************** 2. row ***************************
subjek: HTML Dinamis menggunakan PHP
tubuh: HTML Dinamis
menggunakan PHP...Saya belum bisa...
*************************** 3. row ***************************
subjek: HTML Dinamis menggunakan PHP
tubuh: HTML Dinamis
menggunakan PHP...Saya masih baru belajar...
*************************** 4. row ***************************
subjek: HTML Dinamis menggunakan PHP
tubuh: HTML Dinamis
menggunakan PHP...Ajarin dong...?
*************************** 5. row ***************************
subjek: HTML versus XHTML
tubuh: HTML versus
XHTML...Apa bedanya?
*************************** 6. row ***************************
subjek: HTML versus XHTML
tubuh: HTML versus XHTML...Ajarin
dong?
6 rows in set (0.00 sec)
Selanjutnya,
Anda bisa mencari kecocokan yang melibatkan database, dengan sebuah penekanan
pada format-format normal, sebagai berikut:
mysql> SELECT subjek, tubuh FROM pesan
-> WHERE
MATCH(tubuh, subjek)
->
AGAINST('>"normal form"* +database*'
-> IN BOOLEAN
MODE)\G
*************************** 1. row ***************************
subjek: Perancangan Database
tubuh: Saya sedang
menciptakan sebuah database baru dan
memiliki masalah dengan struktur.
Berapa banyak tabel yang diperlukan?...
*************************** 2. row ***************************
subjek: Perancangan Database
tubuh: Jumlah tabel dalam
database Anda sejumlah...
*************************** 3. row ***************************
subjek: Perancangan Database
tubuh: Oke, terimakasih!
3 rows in set (0.00 sec)
Melakukan Transaksi
Pertama-tama,
Anda perlu melakukan koneksi ke mysql client dan memilih database test. Karena
ini hanya demonstrasi, maka akan digunakan database tujuan-umum, test.
Selanjutnya,
Anda menciptakan tabel akun yang baru, sebagai berikut:
mysql>
USE test
Database
changed
mysql>
CREATE TABLE akun(
-> id INT UNSIGNED NOT NULL
AUTO_INCREMENT,
-> nama VARCHAR(40) NOT NULL,
-> saldo DECIMAL(10,2) NOT NULL DEFAULT
0.0,
-> PRIMARY KEY (id)
-> )ENGINE=InnoDB;
Query
OK, 0 rows affected (0.28 sec)
Selanjutnya,
Anda mengisi tabel tersebut, sebagai berikut:
mysql> INSERT INTO akun(nama, saldo)
-> VALUES ('Sarah
Palin', 345.67),
-> ('David
Girsang', 37839.46),
-> ('Krista
Simanungkalit', 7394.36);
Query OK, 3 rows affected (0.05 sec)
Records: 3 Duplicates:
0 Warnings: 0
Berikutnya,
Anda memulai transaksi dan menunjukkan isi terkini dari tabel, sebagai berikut:
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM akun;
+----+----------------------+----------+
| id | nama
| saldo |
+----+----------------------+----------+
| 1 | Sarah Palin |
345.67 |
| 2 | David Girsang | 37839.46 |
| 3 | Krista
Simanungkalit | 7394.36 |
+----+----------------------+----------+
3 rows in set (0.00 sec)
Kurangkan
Rp.100 dari akun David Girsang, sebagai berikut:
mysql> UPDATE akun
-> SET saldo =
(saldo - 100)
-> WHERE id = 2;
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed:
1 Warnings: 0
Tambahkan
Rp.100 pada akun Sarah Palin, sebagai berikut:
mysql> UPDATE akun
-> SET saldo =
(saldo + 100)
-> WHERE id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed:
1 Warnings: 0
Anda
bisa memastikan hasil yang didapatkan, sebagai berikut:
mysql> SELECT * FROM akun;
+----+----------------------+----------+
| id | nama
| saldo |
+----+----------------------+----------+
| 1 | Sarah Palin |
445.67 |
| 2 | David Girsang | 37739.46 |
| 3 | Krista
Simanungkalit | 7394.36 |
+----+----------------------+----------+
3 rows in set (0.00 sec)
Anda
bisa melihat runtun perintah MySQL pada gambar berikut:
Anda
bisa membatalkan transaksi yang telah dilakukan, sebagai berikut:
mysql> ROLLBACK;
Query OK, 0 rows affected (0.13 sec)
Anda
bisa memastikan hasil yang didapatkan, sebagai berikut:
mysql> SELECT * FROM akun;
+----+----------------------+----------+
| id | nama | saldo |
+----+----------------------+----------+
| 1 | Sarah Palin |
345.67 |
| 2 | David Girsang | 37839.46 |
| 3 | Krista
Simanungkalit | 7394.36 |
+----+----------------------+----------+
3 rows in set (0.00 sec)
Agar
transaksi tidak bisa dibatalkan dan bersifat permanen, Anda bisa memberikan
perintah MySQL berikut:
COMMIT;
SELECT * FROM akun;
No comments:
Post a Comment