Tutorial MySQL
Di susun Oleh :
Ramalia sekedang
3 tkj-5
Menjalankan MySQL
Menjalankan MySQL dapat dilakukan melalui menu Windows: Start -> Programs -> MySQL ->
MySQL Server 5.0 -> MySQL Command Line Client. Kemudian Anda masukkan password
yang telah Anda buat pada saat instalasi MySQL.
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 60
Server version: 5.0.45-community-nt MySQL Community Edition (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
Menampilkan database
Kita coba dengan perintah "SHOW DATABASES" yang akan menampilkan database yang ada di
dalam sistem MySQL kita.
mysql> show databases ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
---------------------+
3 rows in set (0.00 sec)
Catatan: Istilah database perlu dipahami dengan baik. Database di dalam MySQL adalah
sekumpulan tabel-tabel. Jumlah tabel minimal satu buah, dan maksimalnya tidak terbatas.
Semakin banyak tabel, maka akan semakin besar ukuran database Anda. Yang membatasi besarnya
database adalah kemampuan sistem operasi kita, dan juga jumlah kapasitas ruang dalam haarddisk
dan memori komputer Anda. Keterangan selengkapnya mengenai hal ini dapat dilihat pada situs
MySQL (http://www.mysql.com).
Membuat database baru
Sudah ada 3 buah database di dalam sistem MySQL. Sekarang kita akan membuat sebuah database
untuk latihan kita. Gunakan perintah "CREATE DATABASE" untuk membuat sebuah database.
mysql> create database latihan1 ;
Query OK, 1 row affected (0.02 sec)
Anda perhatikan dari dua perintah MySQL di atas,bahwa setiap perintah selalu diakhiri dengan
tanda ";" (titik-koma). Memang pada umumnya perintah-perintah MySQL diakhiri oleh tanda ";"
ini. Perhatikan perintah dibawah ini bila ditulis tanpa tanda titik-koma ";'.
mysql> create database latihan2
->
Sistem MySQL akan menampilkan tanda panah '->' yang menyatakan bahwa perintah MySQL
tersebut dianggap belum selesai (karena belum diakhiri dengan tanda titik-koma ';').
Sekarang kita lengkapi perintah sebelumnya dengan tanda titik-koma ';'
mysql> create database latihan2
-> ;
Query OK, 1 row affected (0.02 sec)
Nah, semuanya berjalan normal bukan? :) Mari kita lanjutkan tutorialnya...
Kita periksa lagi hasil dari perintah di atas dengan "SHOW DATABASE".
mysql> show databases ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| latihan1 |
| latihan2 |
| mysql |
| test |
+--------------------+
5 rows in set (0.00 sec)
Menghapus database
Kita tidak memerlukan database latihan2, maka kita dapat menghapusnya dengan perintah DROP
DATABASE. Hati-hati dalam menggunakan perintah DROP DATABASE ini, karena database
beserta seluruh isinya akan lenyap dari muka bumi tanpa bisa kita kembalikan lagi! Parahnya lagi,
sistem MySQL tidak memberikan pertanyaan konfirmasi kepada Anda sebelum melakukan proses
penghapusan database ini!
mysql> drop database latihan2 ;
Query OK, 0 row affected (0.02 sec)
Anda bisa memeriksanya lagi hasil dari perintah di atas dengan "SHOW DATABASE".
mysql> show databases ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| latihan1 |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
Anda perhatikan, database latihan2 sudah menghilang. Sekali lagi, hati-hati dalam menggunakan
perintah DROP DATABASE!
Memilih dan membuka sebuah database
Sekarang kita pilih database "latihan1" dan kita buka dengan perintah "USE"
mysql> use latihan1 ;
Database change
Melihat isi sebuah database
Untuk melihat apa isi dari sebuah database, kita gunakan perintah "SHOW TABLES". Mari kita
coba.
mysql> show tables ;
Empty set (0.00 sec)
Hasil dari perintah SHOW TABLES diatas adalah "Empty Set", yang berarti belum ada tabel
apapun didalam database latihan1.
Membuat tabel baru
Kita akan membuat sebuah tabel baru dengan menggunakan perintah "CREATE TABLE".
Contohnya sebagai berikut..
mysql> create table karyawan ;
ERROR 1113 (42000): A table must have at least 1 column
Ternyata ada kesalahan yang terjadi. Untuk membuat sebuah tabel di MySQL, kita harus
menentukan minimal satu buah field/kolom di dalamnya. Sekrang kita ubah perintah di atas menjadi
sebagai berikut...
mysql> create table karyawan
-> (nopeg INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
-> nama VARCHAR(50) NOT NULL)
-> ;
Query OK, 0 rows affected (0.14 sec)
Cukup panjang ya perubahan perintahnya. Mungkin sintaks perintahnya agak membingungkan pada
awalnya. Tidak apa-apa, nanti akan kita bahas artinya. Secara umum, kita akan membuat sebuah
tabel Karyawan dengan 2 buah kolom/field. Kolom pertama adalah NOPEG dengan jenis data
bilangan bulat (INTeger), tanpa tanda negatif (UNSIGNED), yang akan bertambah nilainya secara
otomatis (AUTO_INCREMENT), dan kolom NOPEG adalah kolom utama (PRIMARY KEY).
Kemudian pada kolom kedua, NAMA akan menampung nama karyawan, dengan jenis data
VARiabel CHARacter, lebar datanya dapat menampung maksimal 50 karakter, dan tidak boleh
dikosongkan (NOT NULL). Kurang lebih seperti itulah ceritanya.. :)
Kita lihat kembali apa isi dari database latihan1:
mysql> show tables ;
+--------------------+
| Tables_in_latihan1 |
+--------------------+
| karyawan |
+--------------------+
1 row in set (0.00 sec)
Dari hasil perintah di atas, kita lihat bahwa database latihan1 telah memiliki sebuah tabel yang
bernama karyawan. Selanjutnya kita akan lihat apa struktur dari tabel karyawan tersebut.
Melihat struktur tabel
Untuk melihat struktur sebuah tabel dapat menggunakan perintah "DESCRIBE" atau bisa juga
menggunakan perintah "SHOW COLUMNS FROM". Contohnya berikut ini...
mysql> describe karyawan ;
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| nopeg | int(10) unsigned | NO | PRI | NULL | auto_increment |
| nama | varchar(50) | NO | | | |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.02 sec)
Atau menggunakan perintah "SHOW COLUMNS FROM..."
mysql> show columns from karyawan ;
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| nopeg | int(10) unsigned | NO | PRI | NULL | auto_increment |
| nama | varchar(50) | NO | | | |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
Tidak ada perbedaan hasil dari dua perintah di atas, bukan? Sekarang kita buat sebuah tabel baru
lagi, kita namakan saja tabel contoh1.
mysql> create table contoh1
-> (noid INT)
-> ;
Query OK, 0 rows affected (0.13 sec)
Sekarang kita lihat berapa tabel yang ada di dalam database latihan1:
mysql> show tables ;
+--------------------+
| Tables_in_latihan1 |
+--------------------+
| contoh1 |
| karyawan |
+--------------------+
2 rows in set (0.00 sec)
Menghapus tabel
Tabel contoh1 yang baru saja kita buat ini akan kita hapus kembali. Perintah untuk menghapus
sebuah tabel dalam MySQL adalah "DROP TABLE". Cukup mirip dengan perintah menghapus
database, bukan? Kita harus menggunakan perintah "DROP" ini dengan kehati-hatian yang tinggi.
Sistem MySQL tidak akan memberikan peringatan awal atau konfirmasi untuk proses penghapusan
tabel. Dan bila sudah dihapus, maka tabel tersebut tidak bisa lagi kita kembalikan. Maka, berhatihatilah!
mysql> drop table contoh1 ;
Query OK, 0 rows affected (0.03 sec)
Kita lihat lagi tabel yang ada di dalam database latihan1:
mysql> show tables ;
+--------------------+
| Tables_in_latihan1 |
+--------------------+
| karyawan |
+--------------------+
1 rows in set (0.00 sec)
Mengubah struktur sebuah tabel
Ada saatnya kita perlu mengubah struktur tabel yang pernah kita buat sebelumnya. Pengubahan
struktur bisa dalam hal penambahan kolom (ADD), pengubahan lebar dan jenis kolom (MODIFY),
atau bisa saja penghapusan kolom dan indeks (DROP), penggantian nama kolom (CHANGE),
pengantian nama tabel (RENAME), dan sebagainya. Apa pun juga yang anda lakukan pada kolom
tersebut tentu akan mempunyai dampak langsung pada data-data yang sudah ada. Nah, sekarang
kita perlu menambahkan beberapa kolom baru, yaitu kolom jenis kelamin, kota, tanggal lahir dan
kodepos pada tabel karyawan.
Perintah untuk mengubah struktur tabel adalah "ALTER TABLE". Mari kita coba...
mysql> alter table karyawan
-> ADD jenkelamin CHAR(2) NOT NULL,
-> ADD kota VARCHAR(25) NOT NULL,
-> ADD kodepos CHAR(5) NOT NULL,
-> ADD tgllahir DATE
-> ;
Query OK, 0 rows affected (0.20 sec)
Records: 0 Duplicates: 0 Warnings: 0
Sekarang kita lihat hasilnya:
mysql> describe karyawan ;
+------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+----------------+
| nopeg | int(10) | NO | PRI | NULL | auto_increment |
| nama | varchar(50) | NO | | | |
| jenkelamin | char(2) | YES | | NULL | |
| kota | varchar(25) | NO | | | |
| kodepos | char(5) | NO | | | |
| tgllahir | date | YES | | NULL | |
+------------+-------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)
Mungkin ada baiknya kalau nama kolom nopeg kita ubah aja menjadi noid. Begitupun dengan nama
kolom jenkelamin, kita ubah namanya menjadi jenkel saja. Dalam pengubahan kolom ini sebaiknya
'sifat-sifat' kolom yang asli tetap ditulis ulang. Misal bila kolom nopeg memiliki sifat
'auto_increment', maka selama sifat itu tetap dipertahankan, maka dia (auto_increment) harus ditulis
ulang. Begini caranya...
Mengubah kolom jenkelamin menjadi jenkel, sekaligus mengubah jenis datanya dari CHAR(2)
menjadi CHAR(1):
mysql> alter table karyawan
-> change jenkelamin jenkel char(1) ;
Query OK, 0 rows affected (0.24 sec)
Records: 0 Duplicates: 0 Warnings: 0
Mengubah kolom nopeg menjadi noid, tanpa mengubah jenis datanya (tetap INT(10), dan tetap
auto_increment):
mysql> alter table karyawan
-> change nopeg noid int(10) auto_increment
-> ;
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0
Sekarang kita lihat struktur tabel setelah pengubahan:
mysql> describe karyawan ;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| noid | int(10) | NO | PRI | NULL | auto_increment |
| nama | varchar(50) | NO | | | |
| jenkel | char(1) | YES | | NULL | |
| kota | varchar(25) | NO | | | |
| kodepos | char(5) | NO | | | |
| tgllahir | date | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)
Bagaimana, sudah sesuai dengan perubahan struktur yang kita inginkan, bukan? Nah, sekarang
bagaimana kalau kita ingin mengubah nama tabel karyawan menjadi tabel pegawai? Silakan dicoba
dibawah ini:
mysql> alter table karyawan
-> rename pegawai ;
Query OK, 0 rows affected (0.09 sec)
Kita lihat lagi hasilnya:
mysql> show tables ;
+--------------------+
| Tables_in_latihan1 |
+--------------------+
| pegawai |
+--------------------+
1 row in set (0.00 sec)
Sekarang kita kembalikan lagi nama tabel pegawai menjadi karyawan. Tetapi dengan perintah yang
berbeda, yaitu "RENAME TABLE".
mysql> rename table pegawai
-> to karyawan
-> ;
Query OK, 0 rows affected (0.06 sec)
Jangan lupa untuk memeriksa hasilnya:
mysql> show tables ;
+--------------------+
| Tables_in_latihan1 |
+--------------------+
| karyawan |
+--------------------+
1 row in set (0.00 sec)
Nah, sampai sejauh ini tidak sulit kan untuk mempelajari MySQL? Sekarang kita lanjutkan dengan
cara-cara pengisian data. Yuuukk..
Mengisi data ke dalam tabel
Kita akan mulai mengisi data karyawan ke dalam tabel. Perintah yang digunakan adalah "INSERT
INTO". Caranya sebagai berikut:
mysql> insert into karyawan
-> (nama, jenkel, kota, kodepos, tgllahir)
-> values
-> ("Ahmad Zobari", "L", "Bandung","41011","1977-10-02")
-> ;
Query OK, 1 row affected (0.17 sec)
Anda perhatikan bahwa dalam pemasukkan data yang berjenis karakter, selalu diapit dengan tanda
kutip ganda ("). Bisa juga digunakan tanda kutip tunggal ('). Tetapi jangan dicampur dengan tanda
kutip ganda dan tanda kutip tunggal, misal: "Ahmad Sobari'. Perhatikan juga pada penulisan tanggal
lahir, menggunakan format "tahun-bulan-tanggal". Memang agak janggal. Tapi begitulah memang
standar MySQL untuk format penulisan tanggal. Kalau Anda perhatikan lebih teliti, mengapa kita
tidak memasukkan data untuk kolom "noid"? Ini karena sifat kolom noid yang auto_increment,
sehingga dia akan secara otomatis berisi dengan angka 1, dan terus bertambah 1, seiring dengan
penambahan data.
Nah, kita akan masukkan 4 buah record lagi dengan cara:
mysql> insert into karyawan
-> (nama, jenkel, kota, kodepos, tgllahir)
-> values
-> ("Sundariwati", "P", "Bandung", "40123", "1978-11-12"),
-> ("Ryan Cakep", "L", "Jakarta", "12111", "1981-03-21"),
-> ("Zukarman","L", "Bekasi", "17211", "1978-08-10"),
-> ("Yuliawati", "P", "Bogor", "00000", "1982-06-09")
-> ;
Query OK, 4 rows affected (0.05 sec)
Records: 4 Duplicates: 0 Warnings: 0
Sekarang kita coba memasukkan data dengan cara yang lain lagi:
mysql> insert into karyawan
-> set nama="Mawar",
-> jenkel="P",
-> kota="Bogor",
-> kodepos="12345",
-> tgllahir="1985-07-07"
-> ;
Query OK, 1 row affected (0.05 sec)
Kita sudah memasukkan beberapa data. Bagaimana untuk melihat data-data yang sudah kita
masukkan tadi?
Melihat data pada tabel
Kita bisa melihat data yang ada di dalam tabel dengan menggunakan perintah "SELECT". Perintah
SELECT adalah perintah yang akan sering kita gunakan nantinya. Kita mulai dengan cara yang
paling sederhana dulu yaa..
mysql> select * from karyawan ;
+------+--------------+--------+---------+---------+------------+
| noid | nama | jenkel | kota | kodepos | tgllahir |
+------+--------------+--------+---------+---------+------------+
| 1 | Ahmad Sobari | L | Bandung | 41011 | 1977-10-02 |
| 2 | Sundariwati | P | Bandung | 40123 | 1978-11-12 |
| 3 | Ryan Cakep | L | Jakarta | 12111 | 1981-03-21 |
| 4 | Zukarman | L | Bekasi | 17211 | 1978-08-10 |
| 5 | Yuliawati | P | Bogor | 00000 | 1982-06-09 |
| 6 | Mawar | P | Bogor | 12345 | 1985-07-07 |
+------+--------------+--------+---------+---------+------------+
6 rows in set (0.02 sec)
Perintah di atas menampilkan seluruh data yang ada di dalam tabel karyawan, karena menggunakan
tanda asterik "*" di dalam perintah SELECT. Bagaimana kalau kita hanya mau menampilkan
kolom nama dan jenis kelamin saja?
mysql> select nama, jenkel from karyawan
-> ;
+--------------+--------+
| nama | jenkel |
+--------------+--------+
| Ahmad Sobari | L |
| Sundariwati | P |
| Ryan Cakep | L |
| Zukarman | L |
| Yuliawati | P |
| Mawar | P |
+--------------+--------+
6 rows in set (0.00 sec)
Kalau kita hanya mau menampilkan data-data karyawan yang berjenis kelamin perempuan saja,
bagaimana caranya? Cukup dengan menambahkan perintah "WHERE" pada "SELECT"
mysql> select nama, jenkel from karyawan
-> where jenkel="P"
-> ;
+-------------+--------+
| nama | jenkel |
+-------------+--------+
| Sundariwati | P |
| Yuliawati | P |
| Mawar | P |
+-------------+--------+
3 rows in set (0.00 sec)
Kita tampilkan data berdasarkan urutan nama karyawan dengan menambahkan perintah
"ORDER BY" pada "SELECT":
mysql> select * from karyawan
-> order by nama ;
+------+--------------+--------+---------+---------+------------+
| noid | nama | jenkel | kota | kodepos | tgllahir |
+------+--------------+--------+---------+---------+------------+
| 1 | Ahmad Sobari | L | Bandung | 41011 | 1977-10-02 |
| 6 | Mawar | P | Bogor | 12345 | 1985-07-07 |
| 3 | Ryan Cakep | L | Jakarta | 12111 | 1981-03-21 |
| 2 | Sundariwati | P | Bandung | 40123 | 1978-11-12 |
| 5 | Yuliawati | P | Bogor | 00000 | 1982-06-09 |
| 4 | Zukarman | L | Bekasi | 17211 | 1978-08-10 |
+------+--------------+--------+---------+---------+------------+
6 rows in set (0.00 sec)
Atau diurut berdasarkan kota:
mysql> select * from karyawan
-> order by kota ;
+------+--------------+--------+---------+---------+------------+
| noid | nama | jenkel | kota | kodepos | tgllahir |
+------+--------------+--------+---------+---------+------------+
| 1 | Ahmad Sobari | L | Bandung | 41011 | 1977-10-02 |
| 2 | Sundariwati | P | Bandung | 40123 | 1978-11-12 |
| 4 | Zukarman | L | Bekasi | 17211 | 1978-08-10 |
| 5 | Yuliawati | P | Bogor | 00000 | 1982-06-09 |
| 6 | Mawar | P | Bogor | 12345 | 1985-07-07 |
| 3 | Ryan Cakep | L | Jakarta | 12111 | 1981-03-21 |
+------+--------------+--------+---------+---------+------------+
6 rows in set (0.00 sec)
Atau diurut berdasarkan tanggal lahir:
mysql> select * from karyawan
-> order by tgllahir ;
+------+--------------+--------+---------+---------+------------+
| noid | nama | jenkel | kota | kodepos | tgllahir |
+------+--------------+--------+---------+---------+------------+
| 1 | Ahmad Sobari | L | Bandung | 41011 | 1977-10-02 |
| 4 | Zukarman | L | Bekasi | 17211 | 1978-08-10 |
| 2 | Sundariwati | P | Bandung | 40123 | 1978-11-12 |
| 3 | Ryan Cakep | L | Jakarta | 12111 | 1981-03-21 |
| 5 | Yuliawati | P | Bogor | 00000 | 1982-06-09 |
| 6 | Mawar | P | Bogor | 12345 | 1985-07-07 |
+------+--------------+--------+---------+---------+------------+
6 rows in set (0.00 sec)
Nah kalo yang sekarang diurut berdasarkan nama, tetapi dengan urutan terbalik (descending).
Cukup dengan menambahkan perintah "DESC" pada SELECT:
mysql> select * from karyawan
-> order by nama DESC ;
+------+--------------+--------+---------+---------+------------+
| noid | nama | jenkel | kota | kodepos | tgllahir |
+------+--------------+--------+---------+---------+------------+
| 4 | Zukarman | L | Bekasi | 17211 | 1978-08-10 |
| 5 | Yuliawati | P | Bogor | 00000 | 1982-06-09 |
| 2 | Sundariwati | P | Bandung | 40123 | 1978-11-12 |
| 3 | Ryan Cakep | L | Jakarta | 12111 | 1981-03-21 |
| 6 | Mawar | P | Bogor | 12345 | 1985-07-07 |
| 1 | Ahmad Sobari | L | Bandung | 41011 | 1977-10-02 |
+------+--------------+--------+---------+---------+------------+
6 rows in set (0.00 sec)
Bisa juga kalau yang diurutnya adalah tanggal lahir secara urutan terbalik (descending):
mysql> select * from karyawan
-> order by tgllahir DESC ;
+------+--------------+--------+---------+---------+------------+
| noid | nama | jenkel | kota | kodepos | tgllahir |
+------+--------------+--------+---------+---------+------------+
| 6 | Mawar | P | Bogor | 12345 | 1985-07-07 |
| 5 | Yuliawati | P | Bogor | 00000 | 1982-06-09 |
| 3 | Ryan Cakep | L | Jakarta | 12111 | 1981-03-21 |
| 2 | Sundariwati | P | Bandung | 40123 | 1978-11-12 |
| 4 | Zukarman | L | Bekasi | 17211 | 1978-08-10 |
| 1 | Ahmad Sobari | L | Bandung | 41011 | 1977-10-02 |
+------+--------------+--------+---------+---------+------------+
6 rows in set (0.00 sec)
Ternyata kita perlu menambahkan sebuah kolom field lagi, yaitu kolom gaji. Kolom Gaji
merupakan kolom numerik yang menampung data gaji pokok karyawan per bulannya. Jadi, yang
kita perlukan adalah jenis data INTeger dengan lebar data 12 digit. Penerapannya sebagai berikut
dengan menggunakan perintah ALTER.
mysql> alter table karyawan
-> ADD gaji INT(12) NOT NULL default 0
-> ;
Query OK, 6 rows affected (0.25 sec)
Records: 6 Duplicates: 0 Warnings: 0
Kita periksa struktur tabelnya dulu:
mysql> describe karyawan ;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| noid | int(10) | NO | PRI | NULL | auto_increment |
| nama | varchar(50) | NO | | | |
| jenkel | char(1) | YES | | NULL | |
| kota | varchar(25) | NO | | | |
| kodepos | char(5) | NO | | | |
| tgllahir | date | YES | | NULL | |
| gaji | int(12) | NO | | 0 | |
+----------+-------------+------+-----+---------+----------------+
7 rows in set (0.01 sec)
Ya, kolom gaji sudah ditambahkan ke dalam tabel karyawan. Sekarang kita akan menambahkan
data gaji kepada tiap-tiap karyawan yang ada. Untuk memudahkan, kita tampilkan dulu semua data
yang ada di tabel karyawan:
mysql> select * from karyawan ;
+------+--------------+--------+---------+---------+------------+------+
| noid | nama | jenkel | kota | kodepos | tgllahir | gaji |
+------+--------------+--------+---------+---------+------------+------+
| 1 | Ahmad Sobari | L | Bandung | 41011 | 1977-10-02 | 0 |
| 2 | Sundariwati | P | Bandung | 40123 | 1978-11-12 | 0 |
| 3 | Ryan Cakep | L | Jakarta | 12111 | 1981-03-21 | 0 |
| 4 | Zukarman | L | Bekasi | 17211 | 1978-08-10 | 0 |
| 5 | Yuliawati | P | Bogor | 00000 | 1982-06-09 | 0 |
| 6 | Mawar | P | Bogor | 12345 | 1985-07-07 | 0 |
+------+--------------+--------+---------+---------+------------+------+
6 rows in set (0.00 sec)
Meng-update data pada tabel
Sekarang kita masukkan data gaji masing-masing karyawan dengan menggunakan perintah
UPDATE. Kita mulai dari Ahmad Sobari, dengan noid=1:
mysql> update karyawan
-> set gaji=1000000
-> where noid=1 ;
Query OK, 1 row affected (0.09 sec)
Rows matched: 1 Changed: 1 Warnings: 0
Periksa dulu hasilnya:
mysql> select * from karyawan
-> where noid=1 ;
+------+--------------+--------+---------+---------+------------+---------+
| noid | nama | jenkel | kota | kodepos | tgllahir | gaji |
+------+--------------+--------+---------+---------+------------+---------+
| 1 | Ahmad Sobari | L | Bandung | 41011 | 1977-10-02 | 1000000 |
+------+--------------+--------+---------+---------+------------+---------+
1 row in set (0.00 sec)
Kita lanjutkan dengan karyawan lainnya, seperti Sundariwati dengan noid=2, Ryan Cakep dengan
noid=3, dan seterusnya. Sayangnya, perintah ini hanya bisa dilakukan satu per satu. Jadi, Anda
harus sabar menjalankan perintah di bawah ini yaa..:
mysql> update karyawan
-> set gaji=1250000 where noid=2 ;
Query OK, 1 row affected (0.39 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update karyawan
-> set gaji=1500000 where noid=3 ;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update karyawan
-> set gaji=1750000 where noid=4 ;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update karyawan
-> set gaji=2000000 where noid=5 ;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update karyawan
-> set gaji=2250000 where noid=6 ;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
Kita periksa semua hasilnya:
mysql> select * from karyawan ;
+------+--------------+--------+---------+---------+------------+---------+
| noid | nama | jenkel | kota | kodepos | tgllahir | gaji |
+------+--------------+--------+---------+---------+------------+---------+
| 1 | Ahmad Sobari | L | Bandung | 41011 | 1977-10-02 | 1000000 |
| 2 | Sundariwati | P | Bandung | 40123 | 1978-11-12 | 1250000 |
| 3 | Ryan Cakep | L | Jakarta | 12111 | 1981-03-21 | 1500000 |
| 4 | Zukarman | L | Bekasi | 17211 | 1978-08-10 | 1750000 |
| 5 | Yuliawati | P | Bogor | 00000 | 1982-06-09 | 2000000 |
| 6 | Mawar | P | Bogor | 12345 | 1985-07-07 | 2250000 |
+------+--------------+--------+---------+---------+------------+---------+
6 rows in set (0.00 sec)
Cukup mudah kan? Nah, itulah dasar-dasar menggunakan perintah MySQL. Sekarang kita
membutuhkan lebih banyak data untuk latihan kita. Ya minimal sekitar 30-an data lagi. Tapi apakah
ada cara lain yang lebih mudah dibanding harus mengetikkan datanya satu per satu? Kan kalo kita
ketik satu per satu, faktor resiko kesalahan ketik karena faktor kelelahan, dan sebagainya.
Untungnya untuk pemasukan data masal kita bisa menggunakan cara yang lebih mudah.
Pemasukan data secara masal
Untuk pemasukan data secara masal, kita menggunakan data-data yang telah ditulis dalam sebuah
file teks biasa. File ini kita namakan tambahdata.txt, dan untuk contoh ini kita simpan di dalam
folder C:\Data\. Anda dapat mengunduh (download) file tambahdata.txt dari situs ini. Silakan saja
klik disini untuk download file tambahdata.txt.
Perintah yang kita gunakan adalah "".
mysql> load data local infile 'C:\\data\\tambahdata.txt'
-> into table karyawan
-> fields terminated by ','
-> lines terminated by '\n'
-> ;
Query OK, 36 rows affected, 36 warnings (0.47 sec)
Records: 36 Deleted: 0 Skipped: 0 Warnings: 0
Sekarang kita lihat hasilnya di tabel karyawan:
mysql> select * from karyawan ;
+------+--------------+--------+------------+---------+------------+---------+
| noid | nama | jenkel | kota | kodepos | tgllahir | gaji |
+------+--------------+--------+------------+---------+------------+---------+
| 1 | Ahmad Sobari | L | Bandung | 41011 | 1977-10-02 | 1000000 |
| 2 | Sundariwati | P | Bandung | 40123 | 1978-11-12 | 1250000 |
| 3 | Ryan Cakep | L | Jakarta | 12111 | 1981-03-21 | 1500000 |
| 4 | Zukarman | L | Bekasi | 17211 | 1978-08-10 | 1750000 |
| 5 | Yuliawati | P | Bogor | 00000 | 1982-06-09 | 2000000 |
| 6 | Mawar | P | Bogor | 12345 | 1985-07-07 | 2250000 |
| 7 | Sobari | L | Jakarta | 41011 | 1976-10-02 | 1100000 |
| 8 | Melia | P | Bandung | 40123 | 1979-11-12 | 1200000 |
| 9 | Zanda Cute | L | Jakarta | 12111 | 1980-03-21 | 1300000 |
| 10 | Maman | L | Bekasi | 17211 | 1977-08-10 | 1400000 |
| 11 | Yenny | P | Bogor | 00000 | 1985-06-09 | 1150000 |
| 12 | Rossa | P | Jakarta | 12345 | 1987-07-07 | 1350000 |
| 13 | Dadan | L | Bandung | 41011 | 1975-10-02 | 1450000 |
| 14 | Wawan | P | Semarang | 40123 | 1971-11-12 | 1600000 |
| 15 | The Cute | L | Jakarta | 12111 | 1977-03-21 | 1700000 |
| 16 | Marpaung | L | Surabaya | 17211 | 1988-08-10 | 1800000 |
| 17 | Yono | P | Bogor | 00000 | 1989-06-09 | 1900000 |
| 18 | Dian | P | Jakarta | 12345 | 1980-07-07 | 1650000 |
| 19 | Donno | L | Bandung | 41011 | 1971-10-02 | 1850000 |
| 20 | Ratu | P | Yogyakarta | 40123 | 1972-11-12 | 1950000 |
| 21 | Bambang | L | Jakarta | 12111 | 1982-03-21 | 2100000 |
| 22 | Dadang | L | Surabaya | 17211 | 1977-08-10 | 2200000 |
| 23 | Yuliawati | P | Bogor | 00000 | 1974-06-09 | 2300000 |
| 24 | Miranda | P | Bogor | 12345 | 1980-07-07 | 2400000 |
| 25 | Subur | L | Bandung | 41011 | 1977-10-02 | 2150000 |
| 26 | Banowati | P | Malang | 40123 | 1978-11-12 | 2350000 |
| 27 | Gungun | L | Jakarta | 12111 | 1981-03-21 | 2450000 |
| 28 | Gunadi | L | Bekasi | 17211 | 1978-08-10 | 2125000 |
| 29 | Yossy | P | Bogor | 00000 | 1982-06-09 | 2225000 |
| 30 | Melia | P | Malang | 12345 | 1981-07-07 | 2325000 |
| 31 | Anwar | L | Purwakarta | 41011 | 1972-10-02 | 2425000 |
| 32 | Susilowati | P | Bandung | 40123 | 1973-11-12 | 1125000 |
| 33 | Rahmat | L | Jakarta | 12111 | 1977-03-21 | 1225000 |
| 34 | Zamzam | L | Bekasi | 17211 | 1974-08-10 | 1325000 |
| 35 | Nenny | P | Medan | 00000 | 1972-06-09 | 1425000 |
| 36 | Mardiatun | P | Bogor | 12345 | 1975-07-07 | 1625000 |
| 37 | Andika | L | Bandung | 41011 | 1978-10-02 | 1725000 |
| 38 | Siti | P | Medan | 40123 | 1988-11-12 | 1825000 |
| 39 | Rohimat | L | Jakarta | 12111 | 1980-03-21 | 1925000 |
| 40 | Beno | L | Bekasi | 17211 | 1978-08-10 | 1175000 |
| 41 | Yanti | P | Jakarta | 00000 | 1981-06-09 | 1275000 |
| 42 | Miranti | P | Medan | 12345 | 1975-07-07 | 1375000 |
+------+--------------+--------+------------+---------+------------+---------+
42 rows in set (0.00 sec)
Kita sudah memiliki lebih banyak data. Cukuplah untuk bahan latihan-latihan berikutnya...
Operator Pembanding dan Operator Logika
Sudah saatnya kita melangkah ke permainan data yang lebih mengasyikan lagi dengan
menggunakan dua operator, yaitu Operator Pembanding dan Operator Logika. Kedua jenis
operator ini akan sering digunakan dalam proses "query" data.
Operator Pembanding
Operator Pembanding Keterangan
Lebih besar >
Lebih kecil <=
Lebih besar atau sama dengan >=
Lebih kecil atau sama dengan <=
Sama dengan =
Tidak sama dengan <>
Operator Logika
Operator Logika Keterangan
Dan AND atau &&
Atau OR atau ||
Lebih besar atau sama
dengan
NOT atau !
Lebih kecil atau sama dengan <=
Tidak sama dengan <>
Berikut ini adalah penerapan dari kedua operator di atas:
Kita tampilkan data karyawan yang tanggal lahirnya sebelum tanggal 1 Januari 1980, dan
tampilan data diurut berdasarkan nama. Cukup hanya kolom nama, jenis kelamin dan tanggal lahir
saja yang ditampilkan:
mysql> select nama, jenkel, tgllahir
-> from karyawan
-> where tgllahir < "1980-01-01"
-> order by nama ;
+--------------+--------+------------+
| nama | jenkel | tgllahir |
+--------------+--------+------------+
| Ahmad Sobari | L | 1977-10-02 |
| Andika | L | 1978-10-02 |
| Anwar | L | 1972-10-02 |
| Banowati | P | 1978-11-12 |
| Beno | L | 1978-08-10 |
| Dadan | L | 1975-10-02 |
| Dadang | L | 1977-08-10 |
| Donno | L | 1971-10-02 |
| Gunadi | L | 1978-08-10 |
| Maman | L | 1977-08-10 |
| Mardiatun | P | 1975-07-07 |
| Melia | P | 1979-11-12 |
| Miranti | P | 1975-07-07 |
| Nenny | P | 1972-06-09 |
| Rahmat | L | 1977-03-21 |
| Ratu | P | 1972-11-12 |
| Sobari | L | 1976-10-02 |
| Subur | L | 1977-10-02 |
| Sundariwati | P | 1978-11-12 |
| Susilowati | P | 1973-11-12 |
| The Cute | L | 1977-03-21 |
| Wawan | P | 1971-11-12 |
| Yuliawati | P | 1974-06-09 |
| Zamzam | L | 1974-08-10 |
| Zukarman | L | 1978-08-10 |
+--------------+--------+------------+
25 rows in set (0.00 sec)
MySQL memiliki kelonggaran dalam penulisan tanggal selama formatnya mengikuti aturan
"tahun-bulan-tanggal". Misal "1971-11-12" dapat ditulis 1971-11-12, atau 1971#11#12, atau
19711112, atau 711112.
Kita lihat contohnya dibawah ini dimana tanggal "1980-01-01" ditulis dengan 19800101
mysql> select nama, jenkel, tgllahir
-> from karyawan
-> where tgllahir < 19800101
-> and jenkel="L"
-> order by nama ;
+--------------+--------+------------+
| nama | jenkel | tgllahir |
+--------------+--------+------------+
| Ahmad Sobari | L | 1977-10-02 |
| Andika | L | 1978-10-02 |
| Anwar | L | 1972-10-02 |
| Beno | L | 1978-08-10 |
| Dadan | L | 1975-10-02 |
| Dadang | L | 1977-08-10 |
| Donno | L | 1971-10-02 |
| Gunadi | L | 1978-08-10 |
| Maman | L | 1977-08-10 |
| Rahmat | L | 1977-03-21 |
| Sobari | L | 1976-10-02 |
| Subur | L | 1977-10-02 |
| The Cute | L | 1977-03-21 |
| Zamzam | L | 1974-08-10 |
| Zukarman | L | 1978-08-10 |
+--------------+--------+------------+
15 rows in set (0.00 sec)
Kita lihat contohnya di bawah ini bila tanggal "1980-01-01" ditulis dengan cara 800101.
mysql> select nama, jenkel, tgllahir
-> from karyawan
-> where tgllahir < 800101
-> and jenkel="L"
-> order by nama;
+--------------+--------+------------+
| nama | jenkel | tgllahir |
+--------------+--------+------------+
| Ahmad Sobari | L | 1977-10-02 |
| Andika | L | 1978-10-02 |
| Anwar | L | 1972-10-02 |
| Beno | L | 1978-08-10 |
| Dadan | L | 1975-10-02 |
| Dadang | L | 1977-08-10 |
| Donno | L | 1971-10-02 |
| Gunadi | L | 1978-08-10 |
| Maman | L | 1977-08-10 |
| Rahmat | L | 1977-03-21 |
| Sobari | L | 1976-10-02 |
| Subur | L | 1977-10-02 |
| The Cute | L | 1977-03-21 |
| Zamzam | L | 1974-08-10 |
| Zukarman | L | 1978-08-10 |
+--------------+--------+------------+
15 rows in set (0.00 sec)
Kita lihat contohnya di bawah ini bila tanggal "1980-01-01" ditulis dengan cara "1980#01#01".
mysql> select nama, jenkel, tgllahir
-> from karyawan
-> where tgllahir < "1980#01#01"
-> and jenkel="L"
-> order by nama ;
+--------------+--------+------------+
| nama | jenkel | tgllahir |
+--------------+--------+------------+
| Ahmad Sobari | L | 1977-10-02 |
| Andika | L | 1978-10-02 |
| Anwar | L | 1972-10-02 |
| Beno | L | 1978-08-10 |
| Dadan | L | 1975-10-02 |
| Dadang | L | 1977-08-10 |
| Donno | L | 1971-10-02 |
| Gunadi | L | 1978-08-10 |
| Maman | L | 1977-08-10 |
| Rahmat | L | 1977-03-21 |
| Sobari | L | 1976-10-02 |
| Subur | L | 1977-10-02 |
| The Cute | L | 1977-03-21 |
| Zamzam | L | 1974-08-10 |
| Zukarman | L | 1978-08-10 |
+--------------+--------+------------+
15 rows in set (0.00 sec)
Kita lihat contohnya di bawah ini bila tanggal "1980-01-01" ditulis dengan cara "1980.01.01".
mysql> select nama,jenkel, tgllahir
-> from karyawan
-> where tgllahir < "1980.01.01"
-> and jenkel="L"
-> order by nama ;
+--------------+--------+------------+
| nama | jenkel | tgllahir |
+--------------+--------+------------+
| Ahmad Sobari | L | 1977-10-02 |
| Andika | L | 1978-10-02 |
| Anwar | L | 1972-10-02 |
| Beno | L | 1978-08-10 |
| Dadan | L | 1975-10-02 |
| Dadang | L | 1977-08-10 |
| Donno | L | 1971-10-02 |
| Gunadi | L | 1978-08-10 |
| Maman | L | 1977-08-10 |
| Rahmat | L | 1977-03-21 |
| Sobari | L | 1976-10-02 |
| Subur | L | 1977-10-02 |
| The Cute | L | 1977-03-21 |
| Zamzam | L | 1974-08-10 |
| Zukarman | L | 1978-08-10 |
+--------------+--------+------------+
15 rows in set (0.00 sec)
Perhatikan semua hasil di atas sama walaupun cara penulisan tanggalnya berbeda-beda (tetapi
formatnya tetap mengikuti "tahun-bulan-tanggal").
Sekarang kita tampilkan data karyawan yang tanggal lahirnya antara tanggal 1 Januari 1980 dan
31 Desember 1985, dan tampilan data diurut berdasarkan nama. Cukup hanya kolom nama, jenis
kelamin dan tanggal lahir saja yang ditampilkan:
mysql> select nama, jenkel, tgllahir
-> from karyawan
-> where tgllahir >= "1980-01-01"
-> and tgllahir <= "1985-12-31"
-> order by nama ;
+------------+--------+------------+
| nama | jenkel | tgllahir |
+------------+--------+------------+
| Bambang | L | 1982-03-21 |
| Dian | P | 1980-07-07 |
| Gungun | L | 1981-03-21 |
| Mawar | P | 1985-07-07 |
| Melia | P | 1981-07-07 |
| Miranda | P | 1980-07-07 |
| Rohimat | L | 1980-03-21 |
| Ryan Cakep | L | 1981-03-21 |
| Yanti | P | 1981-06-09 |
| Yenny | P | 1985-06-09 |
| Yossy | P | 1982-06-09 |
| Yuliawati | P | 1982-06-09 |
| Zanda Cute | L | 1980-03-21 |
+------------+--------+------------+
13 rows in set (0.00 sec)
Sekarang kita tampilkan data karyawan yang tanggal lahirnya antara tanggal 1 Januari 1980 dan
31 Desember 1985, dan tampilan data diurut berdasarkan nama. Cukup hanya kolom nama, jenis
kelamin dan tanggal lahir saja, serta hanya yang berjenis kelamin laki-laki yang ditampilkan:
mysql> select nama, jenkel, tgllahir
-> from karyawan
-> where tgllahir >= "1980-01-01"
-> and tgllahir <= "1985-12-31"
-> and jenkel="L"
-> order by nama ;
+------------+--------+------------+
| nama | jenkel | tgllahir |
+------------+--------+------------+
| Bambang | L | 1982-03-21 |
| Gungun | L | 1981-03-21 |
| Rohimat | L | 1980-03-21 |
| Ryan Cakep | L | 1981-03-21 |
| Zanda Cute | L | 1980-03-21 |
+------------+--------+------------+
5 rows in set (0.00 sec)
Bagaimana, semakin menarik kan? Kita lanjutkan dengan menampilkan semua data karyawan
dengan usianya pada saat ini. Untuk masalah ini memang cukup panjang solusinya. Tidak apa-apa,
kita coba saja ya. Disini kita memerlukan bantuan beberapa fungsi-fungsi yang sudah disediakan
oleh MySQL. Kita lihat dulu ya..:
mysql> select nama, tgllahir,
-> current_date AS SEKARANG,
-> (year(current_date) - year(tgllahir))
-> - (right(current_date,5) < right(tgllahir,5)) AS USIA
-> from karyawan ;
+--------------+------------+------------+------+
| nama | tgllahir | SEKARANG | USIA |
+--------------+------------+------------+------+
| Ahmad Sobari | 1977-10-02 | 2007-08-30 | 29 |
| Sundariwati | 1978-11-12 | 2007-08-30 | 28 |
| Ryan Cakep | 1981-03-21 | 2007-08-30 | 26 |
| Zukarman | 1978-08-10 | 2007-08-30 | 29 |
| Yuliawati | 1982-06-09 | 2007-08-30 | 25 |
| Mawar | 1985-07-07 | 2007-08-30 | 22 |
| Sobari | 1976-10-02 | 2007-08-30 | 30 |
| Melia | 1979-11-12 | 2007-08-30 | 27 |
| Zanda Cute | 1980-03-21 | 2007-08-30 | 27 |
| Maman | 1977-08-10 | 2007-08-30 | 30 |
| Yenny | 1985-06-09 | 2007-08-30 | 22 |
| Rossa | 1987-07-07 | 2007-08-30 | 20 |
| Dadan | 1975-10-02 | 2007-08-30 | 31 |
| Wawan | 1971-11-12 | 2007-08-30 | 35 |
| The Cute | 1977-03-21 | 2007-08-30 | 30 |
| Marpaung | 1988-08-10 | 2007-08-30 | 19 |
| Yono | 1989-06-09 | 2007-08-30 | 18 |
| Dian | 1980-07-07 | 2007-08-30 | 27 |
| Donno | 1971-10-02 | 2007-08-30 | 35 |
| Ratu | 1972-11-12 | 2007-08-30 | 34 |
| Bambang | 1982-03-21 | 2007-08-30 | 25 |
| Dadang | 1977-08-10 | 2007-08-30 | 30 |
| Yuliawati | 1974-06-09 | 2007-08-30 | 33 |
| Miranda | 1980-07-07 | 2007-08-30 | 27 |
| Subur | 1977-10-02 | 2007-08-30 | 29 |
| Banowati | 1978-11-12 | 2007-08-30 | 28 |
| Gungun | 1981-03-21 | 2007-08-30 | 26 |
| Gunadi | 1978-08-10 | 2007-08-30 | 29 |
| Yossy | 1982-06-09 | 2007-08-30 | 25 |
| Melia | 1981-07-07 | 2007-08-30 | 26 |
| Anwar | 1972-10-02 | 2007-08-30 | 34 |
| Susilowati | 1973-11-12 | 2007-08-30 | 33 |
| Rahmat | 1977-03-21 | 2007-08-30 | 30 |
| Zamzam | 1974-08-10 | 2007-08-30 | 33 |
| Nenny | 1972-06-09 | 2007-08-30 | 35 |
| Mardiatun | 1975-07-07 | 2007-08-30 | 32 |
| Andika | 1978-10-02 | 2007-08-30 | 28 |
| Siti | 1988-11-12 | 2007-08-30 | 18 |
| Rohimat | 1980-03-21 | 2007-08-30 | 27 |
| Beno | 1978-08-10 | 2007-08-30 | 29 |
| Yanti | 1981-06-09 | 2007-08-30 | 26 |
| Miranti | 1975-07-07 | 2007-08-30 | 32 |
+--------------+------------+------------+------+
42 rows in set (0.00 sec)
Kita lanjutkan dengan menampilkan data karyawan yang usianya sama atau dibawah 25 tahun.
Nah bagaimana caranya?:
mysql> select nama, tgllahir,
-> current_date AS SEKARANG,
-> (year(current_date) - year(tgllahir))
-> - (right(current_date,5) < right(tgllahir,5))
-> AS USIA
-> from karyawan
-> where ((year(current_date) - year(tgllahir))
-> - (right(current_date,5) < right(tgllahir,5)))
-> <= 25 ;
+-----------+------------+------------+------+
| nama | tgllahir | SEKARANG | USIA |
+-----------+------------+------------+------+
| Yuliawati | 1982-06-09 | 2007-08-30 | 25 |
| Mawar | 1985-07-07 | 2007-08-30 | 22 |
| Yenny | 1985-06-09 | 2007-08-30 | 22 |
| Rossa | 1987-07-07 | 2007-08-30 | 20 |
| Marpaung | 1988-08-10 | 2007-08-30 | 19 |
| Yono | 1989-06-09 | 2007-08-30 | 18 |
| Bambang | 1982-03-21 | 2007-08-30 | 25 |
| Yossy | 1982-06-09 | 2007-08-30 | 25 |
| Siti | 1988-11-12 | 2007-08-30 | 18 |
+-----------+------------+------------+------+
9 rows in set (0.00 sec)
Cukup panjang perintahnya ya. Disini kita menggunakan fungsi CURRENT_DATE yang
mengambil nilai dari tanggal saat ini pada sistem komputer Anda. YEAR adalah fungsi yang
mengambil nilai tahun. Kemudian AS adalah singkatan dari AliaS, yang seolah-olah memberikan
nama lain (alias name) pada kolom atau pada hasil suatu proses. Sedangkan RIGHT adalah fungsi
yang mengambil nilai dari sekian karakter dari sisi kanan sebuah target. Misal RIGHT("TOMAT",
3) maka akan menghasilkan karakter "MAT".
Baik kita lanjutkan tutorial ini dengan perintah-perintah lainnya. Mari...
Kita akan menampilkan karyawan yang kota kelahirannya di "Bandung":
mysql> select * from karyawan
-> where kota="Bandung" ;
+------+--------------+--------+---------+---------+------------+---------+
| noid | nama | jenkel | kota | kodepos | tgllahir | gaji |
+------+--------------+--------+---------+---------+------------+---------+
| 1 | Ahmad Sobari | L | Bandung | 41011 | 1977-10-02 | 1000000 |
| 2 | Sundariwati | P | Bandung | 40123 | 1978-11-12 | 1250000 |
| 8 | Melia | P | Bandung | 40123 | 1979-11-12 | 1200000 |
| 13 | Dadan | L | Bandung | 41011 | 1975-10-02 | 1450000 |
| 19 | Donno | L | Bandung | 41011 | 1971-10-02 | 1850000 |
| 25 | Subur | L | Bandung | 41011 | 1977-10-02 | 2150000 |
| 32 | Susilowati | P | Bandung | 40123 | 1973-11-12 | 1125000 |
| 37 | Andika | L | Bandung | 41011 | 1978-10-02 | 1725000 |
+------+--------------+--------+---------+---------+------------+---------+
8 rows in set (0.03 sec)
Kita tampilkan karyawan yang kota kelahirannya bukan di Bandung:
mysql> select * from karyawan
-> where kota != "bandung" ;
+------+------------+--------+------------+---------+------------+---------+
| noid | nama | jenkel | kota | kodepos | tgllahir | gaji |
+------+------------+--------+------------+---------+------------+---------+
| 3 | Ryan Cakep | L | Jakarta | 12111 | 1981-03-21 | 1500000 |
| 4 | Zukarman | L | Bekasi | 17211 | 1978-08-10 | 1750000 |
| 5 | Yuliawati | P | Bogor | 00000 | 1982-06-09 | 2000000 |
| 6 | Mawar | P | Bogor | 12345 | 1985-07-07 | 2250000 |
| 7 | Sobari | L | Jakarta | 41011 | 1976-10-02 | 1100000 |
| 9 | Zanda Cute | L | Jakarta | 12111 | 1980-03-21 | 1300000 |
| 10 | Maman | L | Bekasi | 17211 | 1977-08-10 | 1400000 |
| 11 | Yenny | P | Bogor | 00000 | 1985-06-09 | 1150000 |
| 12 | Rossa | P | Jakarta | 12345 | 1987-07-07 | 1350000 |
| 14 | Wawan | P | Semarang | 40123 | 1971-11-12 | 1600000 |
| 15 | The Cute | L | Jakarta | 12111 | 1977-03-21 | 1700000 |
| 16 | Marpaung | L | Surabaya | 17211 | 1988-08-10 | 1800000 |
| 17 | Yono | P | Bogor | 00000 | 1989-06-09 | 1900000 |
| 18 | Dian | P | Jakarta | 12345 | 1980-07-07 | 1650000 |
| 20 | Ratu | P | Yogyakarta | 40123 | 1972-11-12 | 1950000 |
| 21 | Bambang | L | Jakarta | 12111 | 1982-03-21 | 2100000 |
| 22 | Dadang | L | Surabaya | 17211 | 1977-08-10 | 2200000 |
| 23 | Yuliawati | P | Bogor | 00000 | 1974-06-09 | 2300000 |
| 24 | Miranda | P | Bogor | 12345 | 1980-07-07 | 2400000 |
| 26 | Banowati | P | Malang | 40123 | 1978-11-12 | 2350000 |
| 27 | Gungun | L | Jakarta | 12111 | 1981-03-21 | 2450000 |
| 28 | Gunadi | L | Bekasi | 17211 | 1978-08-10 | 2125000 |
| 29 | Yossy | P | Bogor | 00000 | 1982-06-09 | 2225000 |
| 30 | Melia | P | Malang | 12345 | 1981-07-07 | 2325000 |
| 31 | Anwar | L | Purwakarta | 41011 | 1972-10-02 | 2425000 |
| 33 | Rahmat | L | Jakarta | 12111 | 1977-03-21 | 1225000 |
| 34 | Zamzam | L | Bekasi | 17211 | 1974-08-10 | 1325000 |
| 35 | Nenny | P | Medan | 00000 | 1972-06-09 | 1425000 |
| 36 | Mardiatun | P | Bogor | 12345 | 1975-07-07 | 1625000 |
| 38 | Siti | P | Medan | 40123 | 1988-11-12 | 1825000 |
| 39 | Rohimat | L | Jakarta | 12111 | 1980-03-21 | 1925000 |
| 40 | Beno | L | Bekasi | 17211 | 1978-08-10 | 1175000 |
| 41 | Yanti | P | Jakarta | 00000 | 1981-06-09 | 1275000 |
| 42 | Miranti | P | Medan | 12345 | 1975-07-07 | 1375000 |
+------+------------+--------+------------+---------+------------+---------+
34 rows in set (0.00 sec)
Perintah di atas dapat juga menggunakan tanda "<>', dan hasilnya tetap sama dengan di atas:
mysql> select * from karyawan
-> where kota <> "bandung" ;
+------+------------+--------+------------+---------+------------+---------+
| noid | nama | jenkel | kota | kodepos | tgllahir | gaji |
+------+------------+--------+------------+---------+------------+---------+
| 3 | Ryan Cakep | L | Jakarta | 12111 | 1981-03-21 | 1500000 |
| 4 | Zukarman | L | Bekasi | 17211 | 1978-08-10 | 1750000 |
| 5 | Yuliawati | P | Bogor | 00000 | 1982-06-09 | 2000000 |
| 6 | Mawar | P | Bogor | 12345 | 1985-07-07 | 2250000 |
| 7 | Sobari | L | Jakarta | 41011 | 1976-10-02 | 1100000 |
| 9 | Zanda Cute | L | Jakarta | 12111 | 1980-03-21 | 1300000 |
| 10 | Maman | L | Bekasi | 17211 | 1977-08-10 | 1400000 |
| 11 | Yenny | P | Bogor | 00000 | 1985-06-09 | 1150000 |
| 12 | Rossa | P | Jakarta | 12345 | 1987-07-07 | 1350000 |
| 14 | Wawan | P | Semarang | 40123 | 1971-11-12 | 1600000 |
| 15 | The Cute | L | Jakarta | 12111 | 1977-03-21 | 1700000 |
| 16 | Marpaung | L | Surabaya | 17211 | 1988-08-10 | 1800000 |
| 17 | Yono | P | Bogor | 00000 | 1989-06-09 | 1900000 |
| 18 | Dian | P | Jakarta | 12345 | 1980-07-07 | 1650000 |
| 20 | Ratu | P | Yogyakarta | 40123 | 1972-11-12 | 1950000 |
| 21 | Bambang | L | Jakarta | 12111 | 1982-03-21 | 2100000 |
| 22 | Dadang | L | Surabaya | 17211 | 1977-08-10 | 2200000 |
| 23 | Yuliawati | P | Bogor | 00000 | 1974-06-09 | 2300000 |
| 24 | Miranda | P | Bogor | 12345 | 1980-07-07 | 2400000 |
| 26 | Banowati | P | Malang | 40123 | 1978-11-12 | 2350000 |
| 27 | Gungun | L | Jakarta | 12111 | 1981-03-21 | 2450000 |
| 28 | Gunadi | L | Bekasi | 17211 | 1978-08-10 | 2125000 |
| 29 | Yossy | P | Bogor | 00000 | 1982-06-09 | 2225000 |
| 30 | Melia | P | Malang | 12345 | 1981-07-07 | 2325000 |
| 31 | Anwar | L | Purwakarta | 41011 | 1972-10-02 | 2425000 |
| 33 | Rahmat | L | Jakarta | 12111 | 1977-03-21 | 1225000 |
| 34 | Zamzam | L | Bekasi | 17211 | 1974-08-10 | 1325000 |
| 35 | Nenny | P | Medan | 00000 | 1972-06-09 | 1425000 |
| 36 | Mardiatun | P | Bogor | 12345 | 1975-07-07 | 1625000 |
| 38 | Siti | P | Medan | 40123 | 1988-11-12 | 1825000 |
| 39 | Rohimat | L | Jakarta | 12111 | 1980-03-21 | 1925000 |
| 40 | Beno | L | Bekasi | 17211 | 1978-08-10 | 1175000 |
| 41 | Yanti | P | Jakarta | 00000 | 1981-06-09 | 1275000 |
| 42 | Miranti | P | Medan | 12345 | 1975-07-07 | 1375000 |
+------+------------+--------+------------+---------+------------+---------+
34 rows in set (0.00 sec)
Sekarang kita tampilkan karyawan dengan kota kelahiran bukan di Bandung, Jakarta dan Bekasi.
Tampilan data diurut berdasarkan nama kota. Bagaimana bentuk perintahnya?
mysql> select * from karyawan
-> where kota <> "bandung"
-> and kota <> "Jakarta"
-> and kota <> "Bekasi"
-> order by kota ;
+------+-----------+--------+------------+---------+------------+---------+
| noid | nama | jenkel | kota | kodepos | tgllahir | gaji |
+------+-----------+--------+------------+---------+------------+---------+
| 5 | Yuliawati | P | Bogor | 00000 | 1982-06-09 | 2000000 |
| 36 | Mardiatun | P | Bogor | 12345 | 1975-07-07 | 1625000 |
| 29 | Yossy | P | Bogor | 00000 | 1982-06-09 | 2225000 |
| 24 | Miranda | P | Bogor | 12345 | 1980-07-07 | 2400000 |
| 23 | Yuliawati | P | Bogor | 00000 | 1974-06-09 | 2300000 |
| 17 | Yono | P | Bogor | 00000 | 1989-06-09 | 1900000 |
| 6 | Mawar | P | Bogor | 12345 | 1985-07-07 | 2250000 |
| 11 | Yenny | P | Bogor | 00000 | 1985-06-09 | 1150000 |
| 30 | Melia | P | Malang | 12345 | 1981-07-07 | 2325000 |
| 26 | Banowati | P | Malang | 40123 | 1978-11-12 | 2350000 |
| 38 | Siti | P | Medan | 40123 | 1988-11-12 | 1825000 |
| 35 | Nenny | P | Medan | 00000 | 1972-06-09 | 1425000 |
| 42 | Miranti | P | Medan | 12345 | 1975-07-07 | 1375000 |
| 31 | Anwar | L | Purwakarta | 41011 | 1972-10-02 | 2425000 |
| 14 | Wawan | P | Semarang | 40123 | 1971-11-12 | 1600000 |
| 16 | Marpaung | L | Surabaya | 17211 | 1988-08-10 | 1800000 |
| 22 | Dadang | L | Surabaya | 17211 | 1977-08-10 | 2200000 |
| 20 | Ratu | P | Yogyakarta | 40123 | 1972-11-12 | 1950000 |
+------+-----------+--------+------------+---------+------------+---------+
18 rows in set (0.00 sec)
Hampir mirip dengan perintah di atas, tetapi selain diurut berdasarkan kota, nama karyawan pun
ikut diurut. Kita coba dengan perintah dibawah:
mysql> select * from karyawan
-> where kota <> "bandung"
-> and kota <> "Jakarta"
-> and kota <> "Bekasi"
-> order by kota and nama ;
+------+-----------+--------+------------+---------+------------+---------+
| noid | nama | jenkel | kota | kodepos | tgllahir | gaji |
+------+-----------+--------+------------+---------+------------+---------+
| 5 | Yuliawati | P | Bogor | 00000 | 1982-06-09 | 2000000 |
| 38 | Siti | P | Medan | 40123 | 1988-11-12 | 1825000 |
| 36 | Mardiatun | P | Bogor | 12345 | 1975-07-07 | 1625000 |
| 35 | Nenny | P | Medan | 00000 | 1972-06-09 | 1425000 |
| 31 | Anwar | L | Purwakarta | 41011 | 1972-10-02 | 2425000 |
| 30 | Melia | P | Malang | 12345 | 1981-07-07 | 2325000 |
| 29 | Yossy | P | Bogor | 00000 | 1982-06-09 | 2225000 |
| 26 | Banowati | P | Malang | 40123 | 1978-11-12 | 2350000 |
| 24 | Miranda | P | Bogor | 12345 | 1980-07-07 | 2400000 |
| 23 | Yuliawati | P | Bogor | 00000 | 1974-06-09 | 2300000 |
| 22 | Dadang | L | Surabaya | 17211 | 1977-08-10 | 2200000 |
| 20 | Ratu | P | Yogyakarta | 40123 | 1972-11-12 | 1950000 |
| 17 | Yono | P | Bogor | 00000 | 1989-06-09 | 1900000 |
| 16 | Marpaung | L | Surabaya | 17211 | 1988-08-10 | 1800000 |
| 14 | Wawan | P | Semarang | 40123 | 1971-11-12 | 1600000 |
| 11 | Yenny | P | Bogor | 00000 | 1985-06-09 | 1150000 |
| 6 | Mawar | P | Bogor | 12345 | 1985-07-07 | 2250000 |
| 42 | Miranti | P | Medan | 12345 | 1975-07-07 | 1375000 |
+------+-----------+--------+------------+---------+------------+---------+
18 rows in set (0.00 sec)
Coba perhatikan hasilnya. Apakah ini hasil yang kita inginkan? Keliatannya ada yang tidak beres...
Kita coba lagi dengan menambah tanda kurung ( dan ) pada bagian perintah "ORDER BY", siapa
tahu berhasil:
mysql> select * from karyawan
-> where kota <> "bandung"
-> and kota <> "Jakarta"
-> and kota <> "Bekasi"
-> order by (kota and nama) ;
+------+-----------+--------+------------+---------+------------+---------+
| noid | nama | jenkel | kota | kodepos | tgllahir | gaji |
+------+-----------+--------+------------+---------+------------+---------+
| 5 | Yuliawati | P | Bogor | 00000 | 1982-06-09 | 2000000 |
| 38 | Siti | P | Medan | 40123 | 1988-11-12 | 1825000 |
| 36 | Mardiatun | P | Bogor | 12345 | 1975-07-07 | 1625000 |
| 35 | Nenny | P | Medan | 00000 | 1972-06-09 | 1425000 |
| 31 | Anwar | L | Purwakarta | 41011 | 1972-10-02 | 2425000 |
| 30 | Melia | P | Malang | 12345 | 1981-07-07 | 2325000 |
| 29 | Yossy | P | Bogor | 00000 | 1982-06-09 | 2225000 |
| 26 | Banowati | P | Malang | 40123 | 1978-11-12 | 2350000 |
| 24 | Miranda | P | Bogor | 12345 | 1980-07-07 | 2400000 |
| 23 | Yuliawati | P | Bogor | 00000 | 1974-06-09 | 2300000 |
| 22 | Dadang | L | Surabaya | 17211 | 1977-08-10 | 2200000 |
| 20 | Ratu | P | Yogyakarta | 40123 | 1972-11-12 | 1950000 |
| 17 | Yono | P | Bogor | 00000 | 1989-06-09 | 1900000 |
| 16 | Marpaung | L | Surabaya | 17211 | 1988-08-10 | 1800000 |
| 14 | Wawan | P | Semarang | 40123 | 1971-11-12 | 1600000 |
| 11 | Yenny | P | Bogor | 00000 | 1985-06-09 | 1150000 |
| 6 | Mawar | P | Bogor | 12345 | 1985-07-07 | 2250000 |
| 42 | Miranti | P | Medan | 12345 | 1975-07-07 | 1375000 |
+------+-----------+--------+------------+---------+------------+---------+
18 rows in set (0.00 sec)
Hm, masih belum tepat juga. Kita coba lagi:
mysql> select * from karyawan
-> where kota <> "bandung"
-> and kota <> "Jakarta"
-> and kota <> "Bekasi"
-> order by kota, nama ;
+------+-----------+--------+------------+---------+------------+---------+
| noid | nama | jenkel | kota | kodepos | tgllahir | gaji |
+------+-----------+--------+------------+---------+------------+---------+
| 36 | Mardiatun | P | Bogor | 12345 | 1975-07-07 | 1625000 |
| 6 | Mawar | P | Bogor | 12345 | 1985-07-07 | 2250000 |
| 24 | Miranda | P | Bogor | 12345 | 1980-07-07 | 2400000 |
| 11 | Yenny | P | Bogor | 00000 | 1985-06-09 | 1150000 |
| 17 | Yono | P | Bogor | 00000 | 1989-06-09 | 1900000 |
| 29 | Yossy | P | Bogor | 00000 | 1982-06-09 | 2225000 |
| 5 | Yuliawati | P | Bogor | 00000 | 1982-06-09 | 2000000 |
| 23 | Yuliawati | P | Bogor | 00000 | 1974-06-09 | 2300000 |
| 26 | Banowati | P | Malang | 40123 | 1978-11-12 | 2350000 |
| 30 | Melia | P | Malang | 12345 | 1981-07-07 | 2325000 |
| 42 | Miranti | P | Medan | 12345 | 1975-07-07 | 1375000 |
| 35 | Nenny | P | Medan | 00000 | 1972-06-09 | 1425000 |
| 38 | Siti | P | Medan | 40123 | 1988-11-12 | 1825000 |
| 31 | Anwar | L | Purwakarta | 41011 | 1972-10-02 | 2425000 |
| 14 | Wawan | P | Semarang | 40123 | 1971-11-12 | 1600000 |
| 22 | Dadang | L | Surabaya | 17211 | 1977-08-10 | 2200000 |
| 16 | Marpaung | L | Surabaya | 17211 | 1988-08-10 | 1800000 |
| 20 | Ratu | P | Yogyakarta | 40123 | 1972-11-12 | 1950000 |
+------+-----------+--------+------------+---------+------------+---------+
18 rows in set (0.00 sec)
Nah, ternyata sekarang baru berhasil. Coba sekali lagi perhatikan permintaannya: "tampilkan
karyawan dengan kota kelahiran bukan di Bandung, Jakarta dan Bekasi. Tampilan data diurut
berdasarkan nama kota dan juga nama karyawan." Walaupun ada kata "dan" di sini, tetapi tidak
semata-mata kita bisa menggunakan operator logika AND. Memang diperlukan kejelian dan cobacoba
dalam permainan logika ini.
Fungsi Statistik Dasar
Sekarang siapa saja yang gajinya diantara Rp 1.500.000 dan Rp 2.500.000? Tampilan data diurut
berdasarkan kolom gaji dan nama karyawan
mysql> select * from karyawan
-> where gaji >= 1500000
-> and gaji <= 2500000
-> order by gaji, nama ;
+------+------------+--------+------------+---------+------------+---------+
| noid | nama | jenkel | kota | kodepos | tgllahir | gaji |
+------+------------+--------+------------+---------+------------+---------+
| 3 | Ryan Cakep | L | Jakarta | 12111 | 1981-03-21 | 1500000 |
| 14 | Wawan | P | Semarang | 40123 | 1971-11-12 | 1600000 |
| 36 | Mardiatun | P | Bogor | 12345 | 1975-07-07 | 1625000 |
| 18 | Dian | P | Jakarta | 12345 | 1980-07-07 | 1650000 |
| 15 | The Cute | L | Jakarta | 12111 | 1977-03-21 | 1700000 |
| 37 | Andika | L | Bandung | 41011 | 1978-10-02 | 1725000 |
| 4 | Zukarman | L | Bekasi | 17211 | 1978-08-10 | 1750000 |
| 16 | Marpaung | L | Surabaya | 17211 | 1988-08-10 | 1800000 |
| 38 | Siti | P | Medan | 40123 | 1988-11-12 | 1825000 |
| 19 | Donno | L | Bandung | 41011 | 1971-10-02 | 1850000 |
| 17 | Yono | P | Bogor | 00000 | 1989-06-09 | 1900000 |
| 39 | Rohimat | L | Jakarta | 12111 | 1980-03-21 | 1925000 |
| 20 | Ratu | P | Yogyakarta | 40123 | 1972-11-12 | 1950000 |
| 5 | Yuliawati | P | Bogor | 00000 | 1982-06-09 | 2000000 |
| 21 | Bambang | L | Jakarta | 12111 | 1982-03-21 | 2100000 |
| 28 | Gunadi | L | Bekasi | 17211 | 1978-08-10 | 2125000 |
| 25 | Subur | L | Bandung | 41011 | 1977-10-02 | 2150000 |
| 22 | Dadang | L | Surabaya | 17211 | 1977-08-10 | 2200000 |
| 29 | Yossy | P | Bogor | 00000 | 1982-06-09 | 2225000 |
| 6 | Mawar | P | Bogor | 12345 | 1985-07-07 | 2250000 |
| 23 | Yuliawati | P | Bogor | 00000 | 1974-06-09 | 2300000 |
| 30 | Melia | P | Malang | 12345 | 1981-07-07 | 2325000 |
| 26 | Banowati | P | Malang | 40123 | 1978-11-12 | 2350000 |
| 24 | Miranda | P | Bogor | 12345 | 1980-07-07 | 2400000 |
| 31 | Anwar | L | Purwakarta | 41011 | 1972-10-02 | 2425000 |
| 27 | Gungun | L | Jakarta | 12111 | 1981-03-21 | 2450000 |
+------+------------+--------+------------+---------+------------+---------+
26 rows in set (0.00 sec)
Sekarang berapa orang karyawan yang gajinya di bawah Rp 2.000.000?
mysql> select count(*) from karyawan
-> where gaji < 2000000 ;
+----------+
| count(*) |
+----------+
| 29 |
+----------+
1 row in set (0.01 sec)
Berapakah gaji rata-rata karyawan?
mysql> select avg(gaji) from karyawan ;
+--------------+
| avg(gaji) |
+--------------+
| 1719642.8571 |
+--------------+
1 row in set (0.41 sec)
Berapakah nilai gaji yang terbesar?
mysql> select max(gaji) from karyawan ;
+-----------+
| max(gaji) |
+-----------+
| 2450000 |
+-----------+
1 row in set (0.00 sec)
Berapakah nilai gaji yang terkecil?
mysql> select min(gaji) from karyawan ;
+-----------+
| min(gaji) |
+-----------+
| 1000000 |
+-----------+
1 row in set (0.00 sec)
Dan berapakah jumlah gaji seluruh karyawan?
mysql> select sum(gaji) from karyawan ;
+-----------+
| sum(gaji) |
+-----------+
| 72225000 |
+-----------+
1 row in set (0.00 sec)
Operator Precedence
Operator precedence adalah tingkatan hirarki dalam memproses serangkaian operator.
Tingkatan
hirarki
Jenis Operator
Paling Tinggi BINARY
NOT !
- (unary minus)
* / %
+ -
<< >>
&
|
< <= = <=> != <> >= > IN IS LIKE
REGEXP RLIKE
BETWEEN
AND &&
Paling Rendah OR ||
Semakin keatas posisi operator, maka semakin tinggi tingkat hirarki operator tersebut. Begitu pula
sebaliknya, semakin rendah posisinya maka akan semakin lemah hirarkinya.
Untuk operator yang sama kuat, misal + dan - digabung dengan operator * / %, maka akan
ditentukan hirarkinya tergantung dari posisi mana yang paling kiri/paling awal ditemukan. Dan
untungnya posisi hirarki ini dapat diubah dengan bantuan tanda kurung "(" dan ")". Sekarang kita
lihat penerapannya.
mysql> select 10+15-11*2, (10+15-11)*2,
-> 2*6-5, 2*(6-5) ;
+------------+--------------+-------+---------+
| 10+15-11*2 | (10+15-11)*2 | 2*6-5 | 2*(6-5) |
+------------+--------------+-------+---------+
| 3 | 28 | 7 | 2 |
+------------+--------------+-------+---------+
1 row in set (0.00 sec)
Anda bisa perhatikan bahwa walaupun angka dan operatornya sama, tapi hasilnya bisa berbeda.
Dan itu karena adanya peranan dari tanda kurung "(" dan ")" yang akan mengubah peta posisi
hirarki operator....
Operator LIKE, NOT LIKE, REGEXP
Operator LIKE, NOT LIKE, REGEXP akan banyak kita gunakan terutama dalam operasi
karakter.
Sekarang kita kan coba menggunakan operator LIKE. Operator LIKE ini digunakan untuk mencari
data yang "menyerupai" atau "hampir sama" dengan kriteria tertentu. Biasanya untuk mencari
data string/teks. Simbol "%" digunakan untuk membantu pelaksanaan operator LIKE. Posisi "%"
sangat berpengaruh dalam menentukan kriteria. Kita langsung dengan contoh-contohnya saja ya
biar lebih jelas penggunaannya...
Tampilkan data karyawan yang namanya berawalan huruf "a": (perhatikan posisi simbol persennya
"%")
mysql> select noid, nama
-> from karyawan
-> where nama LIKE "a%" ;
+------+--------------+
| noid | nama |
+------+--------------+
| 1 | Ahmad Sobari |
| 31 | Anwar |
| 37 | Andika |
+------+--------------+
3 rows in set (0.00 sec)
Tampilkan data karyawan yang namanya berawalan huruf "d":
mysql> select noid, nama
-> from karyawan
-> where nama LIKE "d%" ;
+------+--------+
| noid | nama |
+------+--------+
| 13 | Dadan |
| 18 | Dian |
| 19 | Donno |
| 22 | Dadang |
+------+--------+
4 rows in set (0.00 sec)
Tampilkan data karyawan yang namanya berakhiran huruf "i". Perhatikan posisi penulisan tanda
"%".:
mysql> select noid, nama
-> from karyawan
-> where nama LIKE "%i" ;
+------+--------------+
| noid | nama |
+------+--------------+
| 1 | Ahmad Sobari |
| 2 | Sundariwati |
| 5 | Yuliawati |
| 7 | Sobari |
| 23 | Yuliawati |
| 26 | Banowati |
| 28 | Gunadi |
| 32 | Susilowati |
| 38 | Siti |
| 41 | Yanti |
| 42 | Miranti |
+------+--------------+
11 rows in set (0.00 sec)
Tampilkan data karyawan yang namanya berakhiran "wati":
mysql> select noid, nama
-> from karyawan
-> where nama LIKE "%wati" ;
+------+-------------+
| noid | nama |
+------+-------------+
| 2 | Sundariwati |
| 5 | Yuliawati |
| 23 | Yuliawati |
| 26 | Banowati |
| 32 | Susilowati |
+------+-------------+
5 rows in set (0.00 sec)
Bagaimana caranya agar operator LIKE dapat membedakan huruf besar dan kecil... Sederhana saja,
cukup dengan menambahkan kata BINARY saja setelah perintah LIKE (sehingga perintahnya
menjadi LIKE BINARY). Kita lihat contohnya...
mysql> select noid, nama
-> from karyawan
-> where nama LIKE BINARY "a%" ;
Empty set (0.34 sec)
Kenapa hasilnya menjadi "Empty set"? Kita coba dengan mengubah perintah tadi menjadi:
mysql> select noid, nama
-> from karyawan
-> where nama LIKE BINARY "A%" ;
+------+--------------+
| noid | nama |
+------+--------------+
| 1 | Ahmad Sobari |
| 31 | Anwar |
| 37 | Andika |
+------+--------------+
3 rows in set (0.00 sec)
Ya dengan menggunakan LIKE BINARY, penulisan huruf "a" akan dibedakan artinya dengan "A".
Jelas kan?
Sekarang bagaimana kalau kita ingin menampilkan data, dengan kriteria bukan diawal atau diakhir
kalimat, tapi berada diantara sebuah kata/kalimat? Misal ada berapa nama karyawan yang
memiliki kata "lia"?
mysql> select noid, nama
-> from karyawan
-> where nama LIKE BINARY "%lia%" ;
+------+-----------+
| noid | nama |
+------+-----------+
| 5 | Yuliawati |
| 8 | Melia |
| 23 | Yuliawati |
| 30 | Melia |
+------+-----------+
4 rows in set (0.00 sec)
Atau memiliki kata"Di" pada namanya?
mysql> select noid, nama
-> from karyawan
-> where nama LIKE BINARY "%Di%" ;
+------+------+
| noid | nama |
+------+------+
| 18 | Dian |
+------+------+
1 row in set (0.00 sec)
Operator REGEXP (singkatan dari REGular EXPressions) merupakan bentuk lain dari operator
LIKE, dengan fungsi yang lebih disempurnakan. Operator REGEXP biasanya ditemani juga dengan
simbol-simbol tertentu dalam melaksanakan tugasnya, seperti:
Simbol Keterangan
.
Satu tanda titik (.) untuk mewakili satu
karakter
[?]
Untuk mewakili beberapa karakter atau
range yang ditentukan.
^
Untuk posisi awal dari sebuah kriteria
yang ditentukan
$
Untuk posisi akhir dari sebuah kriteria
yang ditentukan
Kita langsung saja pada contohnya. Tampilkan nama karyawan yang berawalan huruf 'a':
mysql> select noid, nama
-> from karyawan
-> where nama REGEXP "^a" ;
+------+--------------+
| noid | nama |
+------+--------------+
| 1 | Ahmad Sobari |
| 31 | Anwar |
| 37 | Andika |
+------+--------------+
3 rows in set (0.00 sec)
Tampilkan data karyawan yang namanya berawalan huruf "d".
mysql> select noid, nama
-> from karyawan
-> where nama REGEXP "^d" ;
+------+--------+
| noid | nama |
+------+--------+
| 13 | Dadan |
| 18 | Dian |
| 19 | Donno |
| 22 | Dadang |
+------+--------+
4 rows in set (0.00 sec)
Tampilkan nama karyawan yang berawalan huruf 'a' sampai dengan huruf 'd':
mysql> select noid, nama
-> from karyawan
-> where nama REGEXP "^[a-d]"
-> order by nama ;
+------+--------------+
| noid | nama |
+------+--------------+
| 1 | Ahmad Sobari |
| 37 | Andika |
| 31 | Anwar |
| 21 | Bambang |
| 26 | Banowati |
| 40 | Beno |
| 13 | Dadan |
| 22 | Dadang |
| 18 | Dian |
| 19 | Donno |
+------+--------------+
10 rows in set (0.00 sec)
Tampilkan data karyawan yang namanya berakhiran huruf "i":
mysql> select noid, nama
-> from karyawan
-> where nama REGEXP "i$"
-> order by nama ;
+------+--------------+
| noid | nama |
+------+--------------+
| 1 | Ahmad Sobari |
| 26 | Banowati |
| 28 | Gunadi |
| 42 | Miranti |
| 38 | Siti |
| 7 | Sobari |
| 2 | Sundariwati |
| 32 | Susilowati |
| 41 | Yanti |
| 5 | Yuliawati |
| 23 | Yuliawati |
+------+--------------+
11 rows in set (0.00 sec)
Tampilkan data karyawan yang namanya berakhiran "wati":
mysql> select noid, nama
-> from karyawan
-> where nama REGEXP "wati$"
-> order by nama ;
+------+-------------+
| noid | nama |
+------+-------------+
| 26 | Banowati |
| 2 | Sundariwati |
| 32 | Susilowati |
| 5 | Yuliawati |
| 23 | Yuliawati |
+------+-------------+
5 rows in set (0.00 sec)
Tampilkan nama karyawan yang panjangnya 10 karakter:
mysql> select noid, nama
-> from karyawan
-> where nama REGEXP "^..........$" ;
+------+------------+
| noid | nama |
+------+------------+
| 3 | Ryan Cakep |
| 9 | Zanda Cute |
| 32 | Susilowati |
+------+------------+
3 rows in set (0.00 sec)
Atau perintah diatas bisa juga ditulis dengan:
mysql> select noid, nama
-> from karyawan
-> where nama REGEXP "^.{10}$" ;
+------+------------+
| noid | nama |
+------+------------+
| 3 | Ryan Cakep |
| 9 | Zanda Cute |
| 32 | Susilowati |
+------+------------+
3 rows in set (0.00 sec)
Menjalankan MySQL
Untuk menjalankan MySQL cukup dengan mengetikan mysql pada system prompt
Bentuk umum perintah
mysql database –h host –u user –p password
Dengan windows
Menu Start All Program MySQL MySQL server 5.1
pilih dan klik Command line client
Aplikasi xampp
Aktifkan menu cmd.exe pada menu start run ketik cmd OK
Ketik cd “c:\program file\xampp\mysql\bin “
Aktifkan mysql dengan : mysql –u root –p password (tekan enter)
Muncul menu :
MySQL Prompt
Dalam penulisan di dalam MySQL tidak membedakan huruf besar dan huruf kecil, yang membedakan adalah sistem operasi yang digunakan :
1. Sistem operasi Unix/Linux akan membedakan huruf besar dan kecil
2. Sistem operasi windows tidak membedakan
Menampilkan Bantuan
Untuk mengaktifkan bantuan sederhana – HELP dengan mengetikan pada MySQL prompt help atau \h
Mengetahui versi MySQL
Perintah umum
SELECT VERSION() ;
Pengetikan:
mysql>select version() ;
Cara pengetikan perintah
Cara pengetikan boleh dilakukan dengan dua cara, yaitu :
mysql>select version() ;
Atau
mysql>select
>version()
>;
Kedua cara perintah tersebut hasilnya akan sama
Untuk mengakhir setiap perintah diakhir oleh tanda titik koma ”;”
Jika tidakdiakhiri oleh tanda ”;”, MySQL menunggu perintah selanjutnya.
Membatalkan perintah
Untuk membatalkan perintah di prompt MySQL, tambahkan perintah backslas cancel atau ” \c ” diakhir perintah .
mysql>select
>version()
>\c
Menampilkan Database
Perintah
SHOW DATABASES
Contoh
mysql> show databases ;
Akan menampilkan semua database yang ada dan atau yang sudah pernah dibuat
Memberikan catatan
Perintah
Awalan /* dan akhiran */ : Dapat digunakan lebih dari satu baris
Awalan # : Digunakan untuk satu baris
Contoh
mysql> /* perintah untuk menampilkan
> database */
> show databases ;
mysql> show databases # tampilkan database
> ;
Contoh tampilan pertama
Data base yang sudah ada pada MySQL
Membuat Database Baru
Perintah
CREATE DATABASE database
Contoh
mysql> create database latihan1
Query OK, 1 row affected (0.01 sec)
Ini tanda database latihan1 telah dibuat
Untuk memastikan lakukan perintah show databases
Memilih database yang akan digunakan
Perintah
USE database
Contoh
mysql> use latihan1 ;
Database changed
Tanda database latihan1 aktif
Menampilkan Tabel
Perintah
SHOW TABLES
Contoh
mysql> use latihan1 ;
mysql> show tables ;
Empty set (0.00) sec
Membuat Tabel Baru
Perintah
CREATE TABLE table (field spesifikasi_field, ... )
Jika sudah terdapat database, maka dapat memulai membuat tabel,untuk contoh membuat tabel.
Contoh
Membuat tabel karyawan
Langkah :
- Aktifkan database
- Lakukan pembuatan teble dengan create
mysql> create table karyawan
- > (nopeg int unsigned auto_increment primary key,
- > nama varchar(35) not null,
- > gender varchar(2),
Tanda belum pernah membuat tabel
- > alamat varchar(30),
- > kota varchar(15),
- > tgllahir date null default ’0000-00-00’) ;
Query OK, 0 row affected (0.02 sec)
Keterangan :
Integer : Bilangan bulat
Unsigned : Tanpa tanda negatif
Auto_increment : Akan bertambah nilainya secara otomatis
Primary key : Kolom (key) pertama
Variable character : Jenis data alfabeta
(...) : Jumlah karakter
Not null : Tidak boleh dikosongkan
Date : Format petanggalan
Untuk memastikan apakah tabel karyawan sudah ada pada database latihan 1,lakukan perintah show tables
mysql> show tables ;
Menampilkan Struktur Tabel
Perintah
SHOW COLUMNS FROM tabel
atau
DESCRIBE tabel
Contoh
mysql> show columns from karyawan ;
tampilan :
Tabel karyawan sudah dibuat
Mengubah Struktur Tabel
Perintah
ALTER TABLE tabel jenis_pengubahan
Dalam perintah ALTER dapat melakukan :
Menambah kolom : ADD
Mengganti nama tabel : RENAME
Menghapus kolom atau indek : DROP
Mengubah jenis kolom : MODIFY
Menganti nama kolom sekaligus jenis kolom : CHANGE
Contoh menambah satu kolom, yaitu kodepos
mysql> alter table karyawan
> add kodepos varchar(5)
> ;
Tampilan :
Setiap penambahan kolom secara default selalu diletakan diakhir tabel.
Jika mengingikan letak kodepos setelah kolom kota, maka pada saat menambahkan kolom gunakan perintah :
mysql> alter table karyawan
> add kodepos2 varchar(5)
> after kota
> ;
Tampilan
Menghapus kolom
Perintah gunakan alter table yaitu drop
Contoh
Untuk menghapus kodepos2
mysql> alter table karyawan
> drop kodepos2 ;
Tampilan :
Kolom kodepos2 telah dihapus.
Mengisi Data
Perintah bentuk pertama
INSERT INTO tabel (kolom1, kolom2,...)
VALUES (data_kolom1, data_kolom2,...)
Contoh
mysql> insert into karyawan
> (nama, gender, alamat, kota, tgllahir, kodepos)
> values
> (’Ahmad’,’LK’,’Pasar Minggu no 2’,’Jakarta’,’1985-09-25’,’15617’)
> ;
Tampilan
Perintah bentuk kedua
INSERT INTO tabel
SET kolom1 = data_kolom1,
Kolom 2 = data_kolom2,...
Contoh
mysql> insert into karyawan
> set nama = ’budi’,
> gender = ’LK’,
> alamat = ’Kerinci N0 12’,
> kota = ’Depok’,
> tgllahir =’1995-07-17’,
> kodepos = ’17415’ ;
tampilan
Perintah bentuk ketiga
INSERT INTO tabel
VALUES (data_kolom1, data_kolom2,...)
Contoh tampilan
Menampilkan Data
Perintah
SELECT kolom FROM tabel WHERE kriteria
ORDER BY kolom
Jika akan menampilkan seluruh data dalam kolom gunakan tanda asterik (*)
Contoh
mysql> select * from karyawan
> ;
Tampilan :
MySQL (My Structured Query Languange) adalah sebuah program pembuat database yang bersifat open source dan berjalan di semua platform baik Windows maupun Linux. Selain itu, MySQL juga merupakan program pengakses database yang bersifat jaringan sehingga dapat digunakan untuk aplikasi Multi User (Banyak Pengguna).
Sebagai sebuah program penghasil database, MySQL tidak dapat berjalan sendiri tanpa adanya sebuah aplikasi lain (interface). Oleh karena itu harus ada software pendukung antara lain PHP (Paper Hipertext Preposesor), Visual Delphi, Visual Basic, Cold Fusion, dan lain-lain.
MySQL memiliki layer utama seperti layer DOS yaitu memiliki prompt utama yang disebut mysql, tetapi sekarang ada suatu program dump yang dibuat seperti web berjalan di bawah server database yang
disebut PhpMyAdmin. Untuk memprogram database lewat prompt harus paham dan hafal mengenai perintah query tetapi dengan PhpMyAdmin pengaksesan akan terasa singkat dan lebih mudah karena sudah ada Graphic User Interface (GUI) yang memudahkan dalam pembuatan database serta pengaksesan perintah-perintah Query.
MySQL, juga merupakan sebuah implementasi dari sistem manajemen basisdata relasional (RDBMS) yang didistribusikan secara gratis dibawah lisensi GPL (General Public License). Setiap pengguna dapat secara bebas menggunakan MySQL, namun dengan batasan perangkat lunak tersebut tidak boleh dijadikan produk turunan yang bersifat komersial. MySQL sebenarnya merupakan turunan salah satu konsep utama dalam basisdata yang telah ada sebelumnya; SQL (Structured Query Language). SQL adalah sebuah konsep pengoperasian basisdata, terutama untuk pemilihan atau seleksi dan pemasukan data, yang memungkinkan pengoperasian data dikerjakan dengan mudah secara otomatis.
Kehandalan suatu sistem basisdata (DBMS) dapat diketahui dari cara kerja pengoptimasi-nya dalam melakukan proses perintah-perintah SQL yang dibuat oleh pengguna maupun program-program aplikasi yang memanfaatkannya. Sebagai peladen basis data, MySQL mendukung operasi basisdata transaksional maupun operasi basisdata non-transaksional. Pada modus operasi non-transaksional, MySQL dapat dikatakan unggul dalam hal unjuk kerja dibandingkan perangkat lunak peladen basisdata kompetitor lainnya. Namun demikian pada modus non-transaksional tidak ada jaminan atas reliabilitas terhadap data yang tersimpan, karenanya modus non-transaksional hanya cocok untuk jenis aplikasi yang tidak membutuhkan reliabilitas data seperti aplikasi blogging berbasis web (wordpress), CMS, dan sejenisnya. Untuk kebutuhan sistem yang ditujukan untuk bisnis sangat disarankan untuk menggunakan modus basisdata transaksional, hanya saja sebagai konsekuensinya unjuk kerja MySQL pada modus transaksional tidak secepat unjuk kerja pada modus non-transaksional.
MySQL memiliki beberapa keistimewaan, antara lain :
1. Portabilitas. MySQL dapat berjalan stabil pada berbagai sistem operasi seperti Windows, Linux, FreeBSD, Mac Os X Server, Solaris, Amiga, dan masih banyak lagi.
2. Perangkat lunak sumber terbuka. MySQL didistribusikan sebagai perangkat lunak sumber terbuka, dibawah lisensi GPL sehingga dapat digunakan secara gratis.
3. Multi-user. MySQL dapat digunakan oleh beberapa pengguna dalam waktu yang bersamaan tanpa mengalami masalah atau konflik.
4. ‘Performance tuning’, MySQL memiliki kecepatan yang menakjubkan dalam menangani query sederhana, dengan kata lain dapat memproses lebih banyak SQL per satuan waktu.
5. Ragam tipe data. MySQL memiliki ragam tipe data yang sangat kaya, seperti signed / unsigned integer, float, double, char, text, date, timestamp, dan lain-lain.
6. Perintah dan Fungsi. MySQL memiliki operator dan fungsi secara penuh yang mendukung perintah Select dan Where dalam perintah (query).
7. Keamanan. MySQL memiliki beberapa lapisan keamanan seperti level subnetmask, nama host, dan izin akses user dengan sistem perizinan yang mendetail serta sandi terenkripsi.
8. Skalabilitas dan Pembatasan. MySQL mampu menangani basis data dalam skala besar, dengan jumlah rekaman (records) lebih dari 50 juta dan 60 ribu tabel serta 5 milyar baris. Selain itu batas indeks yang dapat ditampung mencapai 32 indeks pada tiap tabelnya.
9. Konektivitas. MySQL dapat melakukan koneksi dengan klien menggunakan protokol TCP/IP, Unix soket (UNIX), atau Named Pipes (NT).
10. Lokalisasi. MySQL dapat mendeteksi pesan kesalahan pada klien dengan menggunakan lebih dari dua puluh bahasa. Meski pun demikian, bahasa Indonesia belum termasuk di dalamnya.
11. Antar Muka. MySQL memiliki antar muka (interface) terhadap berbagai aplikasi dan bahasa pemrograman dengan menggunakan fungsi API (Application Programming Interface).
12. Klien dan Peralatan. MySQL dilengkapi dengan berbagai peralatan (tool)yang dapat digunakan untuk administrasi basis data, dan pada setiap peralatan yang ada disertakan petunjuk online.
13. Struktur tabel. MySQL memiliki struktur tabel yang lebih fleksibel dalam menangani ALTER TABLE, dibandingkan basis data lainnya semacam PostgreSQL ataupun Oracle.
Terdapat beberapa API (Application Programming Interface) tersedia yang memungkinkan aplikasi-aplikasi komputer yang ditulis dalam berbagai bahasa pemrograman untuk dapat mengakses basis data MySQL antara lain: bahasa pemrograman C, C++, C#, bahasa pemrograman Eiffel, bahasa pemrograman Smalltalk, bahasa pemrograman Java, bahasa pemrograman Lisp, Perl, PHP, bahasa pemrograman Python, Ruby, REALbasic dan Tcl. Sebuah antarmuka ODBC memanggil MyODBC yang memungkinkan setiap bahasa pemrograman yang mendukung ODBC untuk berkomunikasi dengan basis data MySQL. Kebanyakan kode sumber MySQL dalam ANSI C.
MySQL sangat populer dalam aplikasi web seperti MediaWiki (perangkat lunak yang dipakai Wikipedia dan proyek-proyek sejenis) dan PHP-Nuke dan berfungsi sebagai komponen basis data dalam LAMP. Popularitas sebagai aplikasi web dikarenakan kedekatannya dengan popularitas PHP, sehingga seringkali disebut sebagai Dynamic Duo. Text dicoret
MySQL adalah sebuah perangkat lunak sistem manajemen basis data SQL (bahasa Inggris: database management system) atau DBMS yang multithread, multi-user, dengan sekitar 6 juta instalasi di seluruh dunia. MySQL AB membuat MySQL tersedia sebagai perangkat lunak gratis dibawah lisensi GNU General Public License (GPL), tetapi mereka juga menjual dibawah lisensi komersial untuk kasus-kasus dimana penggunaannya tidak cocok dengan penggunaan GPL.
Tidak sama dengan proyek-proyek seperti Apache, dimana perangkat lunak dikembangkan oleh komunitas umum, dan hak cipta untuk kode sumber dimiliki oleh penulisnya masing-masing, MySQL dimiliki dan disponsori oleh sebuah perusahaan komersial Swedia MySQL AB, dimana memegang hak cipta hampir atas semua kode sumbernya. Kedua orang Swedia dan satu orang Finlandia yang mendirikan MySQL AB adalah: David Axmark, Allan Larsson, dan Michael "Monty" Widenius.
MySQL memiliki beberapa keistimewaan, antara lain :
1. Portabilitas. MySQL dapat berjalan stabil pada berbagai sistem operasi seperti Windows, Linux, FreeBSD, Mac Os X Server, Solaris, Amiga, dan masih banyak lagi.
2. Perangkat lunak sumber terbuka. MySQL didistribusikan sebagai perangkat lunak sumber terbuka, dibawah lisensi GPL sehingga dapat digunakan secara gratis.
3. Multi-user. MySQL dapat digunakan oleh beberapa pengguna dalam waktu yang bersamaan tanpa mengalami masalah atau konflik.
4. 'Performance tuning', MySQL memiliki kecepatan yang menakjubkan dalam menangani query sederhana, dengan kata lain dapat memproses lebih banyak SQL per satuan waktu.
5. Ragam tipe data. MySQL memiliki ragam tipe data yang sangat kaya, seperti signed / unsigned integer, float, double, char, text, date, timestamp, dan lain-lain.
6. Perintah dan Fungsi. MySQL memiliki operator dan fungsi secara penuh yang mendukung perintah Select dan Where dalam perintah (query).
7. Keamanan. MySQL memiliki beberapa lapisan keamanan seperti level subnetmask, nama host, dan izin akses user dengan sistem perizinan yang mendetail serta sandi terenkripsi.
8. Skalabilitas dan Pembatasan. MySQL mampu menangani basis data dalam skala besar, dengan jumlah rekaman (records) lebih dari 50 juta dan 60 ribu tabel serta 5 milyar baris. Selain itu batas indeks yang dapat ditampung mencapai 32 indeks pada tiap tabelnya.
9. Konektivitas. MySQL dapat melakukan koneksi dengan klien menggunakan protokol TCP/IP, Unix soket (UNIX), atau Named Pipes (NT).
10. Lokalisasi. MySQL dapat mendeteksi pesan kesalahan pada klien dengan menggunakan lebih dari dua puluh bahasa. Meski pun demikian, bahasa Indonesia belum termasuk di dalamnya.
11. Antar Muka. MySQL memiliki antar muka (interface) terhadap berbagai aplikasi dan bahasa pemrograman dengan menggunakan fungsi API (Application Programming Interface).
12. Klien dan Peralatan. MySQL dilengkapi dengan berbagai peralatan (tool)yang dapat digunakan untuk administrasi basis data, dan pada setiap peralatan yang ada disertakan petunjuk online.
13. Struktur tabel. MySQL memiliki struktur tabel yang lebih fleksibel dalam menangani ALTER TABLE, dibandingkan basis data lainnya semacam PostgreSQL ataupun Oracle
MySQL database adalah salah satu fasitas di hosting yang berfungsi untuk menyimpan data, contoh website yang menggunakan database adalah wordpress, joomla, dan website lainnya. Dan di Asian Brain Hosting sendiri masing-masing paket memiliki quota database yang berbeda, misal untuk paket basic MySQL database 4 Artinya bahwa hosting tersebut sudah mendukung MySQL Database hingga 4 buah. Untuk membuat Database di hosting ini harus melalui cpanel.
Tidak ada komentar:
Posting Komentar