PRAKTIKUM II
TIPE DATA DAN OPERATOR MySQL
A. LATAR BELAKANG
Pemahaman yang baik tentang jenis dan karakteristik tipe data dan operator yang ada, akan sangat membantu pengguna dalam melakukan query data pada software aplikasi server database. Tanpa pemahaman yang memadai tentang hal tersebut dapat berakibat pada ketidakvalidan data yang dihasilkan dari sebuah perintah query.
MySQL sebagai software server database, juga mengenal berbagai macam jenis tipe data dan operator. Masing-masing tipe data dan operator memiliki karakteristik yang berbeda dengan lainnya. Guna membantu peningkatan pemahaman mahasiswa dalam menggunakan berbagai macam tipe data dan operator yang ada dalam MySQL, diperlukan tindakan uji coba dalam praktikum berikut ini.
B. TUJUAN
Kompetensi yang diharapkan dapat tercapai setelah melakukan praktikum ini adalah mahasiswa dapat menjelaskan dan menggunakan berbagai macam tipe data dan operator MySQL dalam query data dengan baik.
C. ALAT-ALAT DAN BAHAN YANG DIGUNAKAN
Praktikum ini membutuhkan ketersediaan alat-alat dan bahan praktikum berupa sejumlah perangkat keras (hardware) dan perangkat lunak (software). Hardware dan software yang dibutuhkan sebelum melakukan praktikum ini adalah;
1. Satu komputer yang akan digunakan sebagai Server dan sejumlah komputer yang digunakan sebagai Client dan terhubung dalam jaringan komputer baik dengan menggunakan kabel maupun dengan jaringan tanpa kabel (nirkabel)
D. TEORI DASAR
1. Tipe Data Dalam MySQL
Secara umum jenis atau tipe data yang dikenal dalam MySQL dibagi menjadi 4 jenis, yaitu: Numeric Values, yaitu angka atau bilangan.
String/Character Values, yaitu teks atau karakter. Date and Time Values, yaitu tanggal dan waktu.
NULL
Numeric Values, adalah angka atau bilangan seperti 10; 123; 100.50; -10; 1.2E+17; 2.7e-11; dan sebagainya. Jenis data bilangan dibagi lagi menjadi dua, yaitu Bilangan Bulat (integer) dan Bilangan Pecahan (Floating point). Kedua jenis bilangan ini dapat bernilai positif (+) dan juga negatif (-). Jika bilangan tersebut menggunakan tanda (+) atau (-), maka disebut SIGNED. Sebaliknya, bila tanpa tanda apapun disebut UNSIGNED. Karena tanda (+) dapat diabaikan penulisannya, maka pada bilangan yang bernilai positif disebut juga unsigned.
Character Values, adalah semua karakter (atau teks) yang penulisannya diapit oleh tanda kutip, baik kutip tunggal maupun kutip ganda. Untuk angka yang ditulis dengan tanda kutip akan dianggap sebagai karakter atau string (bukan Numeric Values). Adapun contoh penulisan teks yang benar adalah sebagai berikut:
"Jl. Surabaya No. 34" 'Kota Malang'
"Saya suka masakan ini" „123456'
"Saya akan berkunjung ke rumahmu pada hari Jum'at depan"
Date and Time Values, format standar (default) penulisan tanggal adalah "Tahun-Bulan-Tanggal" (“YYYY-MM-DD”). Misalkan untuk 22 Januari 2002, dituliskan "2002-01-22". Untuk menarnpilankannya, kita bisa menggunakan fungsi DATE_FORMAT() yang dapat disesuaikan dengan kebutuhan kita. Untuk penulisan waktu, formatnya adalah
"Jam:Menit:Detik" (“HH:MM:SS”). Contoh, "13:55:07". Data tanggal dan waktu bisa digabung penulisannya, menjadi “2002-01-22 13:55:07”.
secara tuntas. Oleh sebab itu, data tersebut bisa diwakili dengan NULL, alias belum diketahui atau kosong.
2. Tipe Data Kolom Pada MySQL
Tipe data kolom merupakan rincian dari tipe data yang diterapkan pada setiap kolom/field sebuah tabel. Penentuan tipe data kolom, dapat dilakukan saat pembuatan tabel dengan perintah CREATE TABLE. Adapun tipe data kolom dapat dikelompokkan sebagai berikut:
2.1 Tipe Data Kolom Numerik dan Atributnya
Tabel 1: Tipe Data Kolom Numerik Tipe Data
Kolom
Bentuk Penulisan Jangkauan Nilai Ukuran
TINYINT TINYINT [(M)] [UNSIGNED] [ZEROFILL]
Bilangan bulat dengan kisaran nilai: SIGNED: -128 s/d 127
UNSIGNED: 0 s/d 255
1 Byte
SMALLINT SMALLINT [(M)] [UNSIGNED] [ZEROFILL]
Bilangan bulat dengan kisaran nilai: SIGNED: -32768 s/d 32767
UNSIGNED: 0 s/d 65535
2 Byte
MEDIUMINT MEDIUMINT [(M)] [UNSIGNED] [ZEROFILL]
Bilangan bulat dengan kisaran nilai: SIGNED: -8388608 s/d 8388607 UNSIGNED: 0 s/d 1677215
3 Byte
INT INT [(M)]
[UNSIGNED] [ZEROFILL]
Bilangan bulat dengan kisaran nilai SIGNED:-2147683648 s/d 2147683647 UNSIGNED: 0 s/d 4294967295
4 Byte
BIGINT BIGINT [(M)] [UNSIGNED] [ZEROFILL]
Bilangan bulat dengan kisaran nilai: SIGNED: -9223372036854775808 s/d 9223372036854775807
UNSIGNED:0 s/d 18446744073709551615
8 Byte
Bilangan pecahan presisi tunggal dengan kisaran nilai: Nilai minimum (tanpa nilai nol) 1.175494351E-38
Nilai maksimum (tanpa nilai nol) 6.402823466E+38
Bilangan pecahan presisi ganda
(double precision) dengan kisaran nilai: Nilai minimun (tanpa nilai nol)
2.2250738580720E-308
Nilai maksimum (tanpa nilai nol) ±1.7976931348623157E+308
8 Byte
DECIMAL DECIMAL [(M,D)] Bilangan desimal, dengan nilai M Byte tergantung pada besaran M dan D.
M Byte
2.2 Tipe Data Kolom String/Character
Tipe Data Kolom
Bentuk Penulisan Keterangan Ukuran
CHAR CHAR(M) Data string dengan lebar data yang tetap(M). Maksimum lebar data 255 karakter
M Byte
VARCHAR VARCHAR(M)
Data string dengan lebar data yang bervariasi(M). Maksimum lebar data 255 karakter
M Byte
2.3 Tipe Data Kolom BLOB dan TEXT
Tabel 3: Tipe Data Kolom BLOB dan Text
Jenis Kolom Keterangan Ukuran
TINYBLOB Data binary dengan lebar data maksimum 255 karakter M+1 Byte
BLOB Data binary dengan lebar data maksimum 65.535 karakter M+2 Byte
MEDIUMBLOB Data binary dengan lebar data maksimum 16.777.215 karakter M+3 Byte
LONGBLOB Data binary dengan lebar data maksimum 4.294.967.295
karakter M+4 Byte
TINYTEXT Data text dengan lebar data maksimum 255 karakter M+1 Byte
TEXT Data text dengan lebar data maksimum 65.535 karakter M+2 Byte
MEDIUMTEXT Data text dengan lebar data maksimum 16.777.215 karakter M+3 Byte
LONGTEXT Data text dengan lebar data maksimum 4.294.967.295 karakter M+4 Byte Catatan: M merupakan nilai maksimum yang diperkenankan dengan kisaran 1 s/d 255.
2.4 Tipe Data Kolom ENUM dan SET
ENUM (enumeration) dan SET (himpunan) adalah tipe data khusus. Kolomnya harus diisi dengan nilai pilihan yang sudah ditentukan pada saat deklarasi ENUM dan SET. Perbedaan diantara kedua tipe data tersebut adalah, pada ENUM hanya bisa dipilih salah satu dari pilihan yang ada. Sedangkan pada SET, dapat dipilih satu atau lebih dari pilihan yang ada. Bentuk umum pendeklarasian kedua tipe data tersebut adalah sebagai berikut;
Tabel 4: Tipe Data Kolom ENUM dan SET
Jenis Kolom Bentuk Dasar Keterangan
ENUM ENUM(nilai1, nilai2, ….., nilaiN)
Hanya dapat menampung 1 data saja dari pilihan data yang ada atau NULL, dengan jumlah pilihan maksimum 65.535 pilihan data.
Jenis Kolom Bentuk Dasar Keterangan pilihan data.
Beberapa contoh pendeklarasian tipe data ENUM adalah sebagai berikut; Jenis_Kelamin ENUM(“L”, “P”)
Status_Pernikahan ENUM(“Menikah”, ”Lajang”, ”Janda”, ”Duda”) Status_Karyawan ENUM(“Karyawan Tetap”, “Karyawan Honorer”) Ukuran_Baju ENUM(“S”, ”M”, ”L”, ”XL”)
Pada ENUM, kita hanya boleh memilih salah satu dari pilihan Jenis_Kelamin (“L” atau “P”), Status_Pernikahan (“Menikah”, “Lajang”, “Janda” atau “Duda”), dan seterusnya. Pada
SET kita bisa memilih minimal satu dari pilihan yang ada. Misal pada Menu_Pilihan (seperti contoh tipe data SET), kita bisa memilih Nasi Goreng saja, bisa juga Mie Rebus dan Juice Apokat, atau bahkan kita pilih sernuanya (“Nasi Goreng”, “Mie Rebus”, “Juice Apokat”, “Ayam
Bakar”). Contoh pendeklarasian Set adalah sebagai berikut :
Menu_Pilihan SET(“Nasi Goreng”, “Mie Rebus”, “Juice Apokat”, “Ayam Bakar”)
Merek_Mobil SET(“Mercedes Benn”, “BMW”, “Audi”, "Toyota”, “Mitsubishi”, ”Suzuki”)
Hobby SET(“Makan”, “Tidur”, “Olah Raga”, “Travelling”, “Baca”)
2.5 Tipe Data Kolom Date dan Time
Tipe data kolom Date dan Time digunakan untuk menampung data tanggal dan jam. Pada MySQL data tanggal dan jam, dapat pada beberapa tipe data dalam kelompok tipe data Date and Time. Berikut ini erdpat beberapa tipe data Date and Time beserta format penulisannya;
3. Jenis Operator Pada MySQL
1.1 Operator Logika
Tabel 5: Operator Logika
Operator Fungsi Contoh
NOT atau ! Sebagai NEGASI (bukan) dari suatu nilai
NOT Perempuan atau !Perempuan
OR atau ||
ATAU, akan bernilai benar bila salah satu atau kedua ekspresi adalah benar.
Buah=”Jambu” OR Buah=”Mangga” Atau
Buah=”Jambu” || Buah=”Mangga”
AND atau &&
Buah=”Jambu” && Hewan=”Monyet”
1.2 Operator Aritmatika
Tabel 6: Operator Aritmatika Operato
r
Fungsi
+ Melakukan penjumlahan pada operasi matematika - Melakukan pengurangan pada operasi matematika * Melakukan perkalian pada operasi matematika
/ Melakukan pembagian pada operasi matematika
% Melakukan proses modulus (mencari sisa bagi) pada operasi matematika
1.3 Operator Pembanding
Tabel 7: Operator Pembanding/Relasi
Operator Fungsi Contoh
= Sama dengan Nama=”anwar”
Harga=45610
> Lebih dari TinggiBadan>150
< Kurang dari TinggiBadan<150
>= Lebih dari atau sama dengan TinggiBadan>=150
<= Kurang dari atau sama dengan TinggiBadan<=150
!= atau <> Tidak sama dengan
Nama!=”anwar” Harga<>100 3!=2
Operator Fungsi Contoh
IS NULL Apakah nilai NULL Nama IS NULL
BETWEEN …
AND Apakah suatu nilai berada diantara nilai
Harga BETWEEN 150 AND 500
IN Apakah suatu nilai berada diantara nilai pilihan yang ada
Nama IN (“Anwar”, “Amir”)
NOT IN Apakah suatu nilai tidak berada diantara nilai pilihan yang ada
Nama NOT IN (“Anwar”, “Amir”
LIKE Apakah suatu nilai memiliki kriteria nilai yang ada
Nama LIKE “An%”
NOT LIKE Apakah suatu nilai tidak memiliki kriteria nilai yang ada
Nama NOT LIKE “An%”
REGEXP Nilai menjadi benar bila kedua nilai tersebut sama
a REGEXP b
NOT REGEXP Nilai menjadi benar bila kedua nilai tersebut tidak sama
a NOT REGEXP b
<=> Nilai menjadi benar bila kedua nilai tersebut sama
a <=> b
2. Urutan Prioritas Operator
Memahami urutan prioritas operator, akan sangat membantu kita dalam penulisan perintah-perintah MySQL, sehingga dalam menampilkan data sesuai dengan yang kita harapkan. Adapun urutan prioritas operator adalah sebagai berikut;
Urutan
Prioritas Operator
10 BETWEEN 11 AND atau &&
12 OR atau ||
E. LANGKAH-LANGKAH PRAKTIKUM
Guna membantu pemahaman kita dalam menggunakan berbagai macam operator dan tipe data, lakukan beberapa perintah query berikut ini;
a. Kesimpulan apa yang dapat diambil dari penggunaan operator aritmatika berikut?
mysql>SELECT 10 + 20, 15.4 + 13.2, “24JAM” + “30HARI”,
->“12 BULAN” + “1 TAHUN”, “My” + “SQL”; mysql>SELECT 10 - 20, 15.4 - 13.2, “24JAM” - “30HARI”, ->“12 BULAN” - “1 TAHUN”, “My” - “SQL”, -(7 - 5); mysql>SELECT 20 % 2, 15.4 % 13.2, -25 % 4, 1 / 0;
b. Kesimpulan apa yang dapat diambil dari penggunaan operator pembanding berikut? mysql>USE mysql;
mysql>SELECT “a” > “A”; mysql>SELECT 10 <= 20;
mysql>SELECT user FROM user WHERE user != “anto”; mysql>SELECT user FROM user WHERE user IS NOT NULL; mysql>SELECT 110 BETWEEN 100 AND 500;
mysql>SELECT user FROM user WHERE user NOT LIKE “a%”;
mysql>SELECT user FROM user WHERE user IN (“anto”, “andi”);
c. Buatlah database latihdb dan table teman; mysql>CREATE DATABASE latihdb; mysql>USE latihdb;
mysql>CREATE TABLE teman
->(noid INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, ->nama VARCHAR(35) NOT NULL,
->kelamin ENUM(„L‟,‟P‟),
->tmp_lahir VARCHAR(35) NOT NULL,
->tgl_lahir DATE NULL DEFAULT “0000-00-00”, ->alamat VARCHAR(50) NOT NULL,
d. Isilah table teman dengan data sebagai berikut;
Tabel 9: Data Table Teman Noid Nama Klm Tempat
Lahir
Tanggal Lahir
Alamat Kota
1 Ahmad Subhan L Medan 1977-09-29 Jl. Arjono 123 Medan
2 Benny Sukmana L Bogor 1971-06-22 Jl. Letjend. Sutoyo 87 Bandung
3 Subono L Semarang 1975-04-19 Jl. Panglima Sudirman 63 Solo
4 Richard Buntaran L Medan 1981-05-17 Jl. Untung Suropati 312 Malang
5 Carla Karmelita P Manado 1978-06-09 Jl. Merdeka Barat 90 Jakarta
6 Chintiawati P Cianjur 1976-01-13 Jl. Kesatrian 100 Surabaya
7 Oka Sulaksana P Denpasar 1978-11-07 Jl. Daan Mogot 75 Jakarta
8 Dwi Dirgantara L Surabaya 1975-02-07 Jl. Sidotopo IV/621B Surabaya
9 Ramli Sokoco L Madiun 1982-04-17 Jl. Sunan Giri 54 Madiun
10 Sri Sundari P Samarang 1978-12-19 Jl. Ambarawa 93 Samarang
11 Dwikoro Jatmiko L Bogor 1976-06-16 Jl. Sungai Citarum 23 Bogor
12 Dhamayanti P Cirebon 1984-08-18 Jl. Gatot Subroto 124 Cirebon
13 Dharmanwangsa L Batam 1977-07-09 Jl. Kolonel Sugiono 77 Bandung
14 Syarifa Firdaus P Cianjur 1986-01-19 Jl. Raden Rahmad 32 Malang
15 Royan Surya L Bogor 1979-01-23 Jl. Asparagus 93 Bogor
16 Ginanjar L Cibinong 1979-03-21 Jl. Ahmad Yani 100 Riau
17 Gina Sonia P Bogor 1982-09-12 Jl. Citarum 53 Bogor
18 Bartiniwati P Surakarta 1975-04-12 Jl. Sidoutomo 2 Kepanjen Malang
19 Ian Sulistio L Palembang 1978-10-11 Jl. Raden Saleh II/42 Surabaya
20 Indri Jelita P Bengkulu 1983-07-19 Jl. Ahmad Yani 21 Bengkulu
21 Junita Santiago P Padang 1980-11-09 Jl. Mayjend. Panjaitan 45 Padang
22 Moh. Umar P Malang 1973-12-25 Jl. Citandui 52 Malang
23 Aisyah Kamila L Semarang 1980-10-03 Jl. Panglima Sudirman 15 Semarang
24 Rita Nurjannah P Surabaya 1981-10-10 Jl. Sidodadi 76 Surabaya
25 Indah Mumpuni P Malang 1974-02-09 Jl. Sumbing 123 Malang
Perintah untuk menambahkan data pada table teman, adalah sebagai berikut,
mysql>INSERT INTO teman VALUES(“1”, “Ahmad Subhan”, “L” “Medan”, ->“1977-09-29”, “Jl. Arjono 123”, “Medan”); dan seterusnya.
e. Tampilkan seluruh data teman; mysql>SELECT * FROM teman;
f. Tampilkan seluruh data teman untuk field noid, nama, tempat lahir dan tanggal lahir; mysql>SELECT noid, nama, tmp_lahir, tgl_lahir FROM teman;
g. Tampilkan data teman untuk field noid, nama, tempat lahir dan tanggal lahir hanya untuk
jenis kelamin perempuan (“P”);
mysql>SELECT noid, nama, tmp_lahir, tgl_lahir FROM teman WHERE kelamin=”P”; h. Tampilkan data teman untuk field noid, nama, tempat lahir dan tanggal lahir hanya untuk
jenis kelamin laki-laki (“L” atau NOT “P”);
mysql>SELECT noid, nama, tmp_lahir, tgl_lahir FROM teman ->WHERE NOT kelamin=”P”; atau
mysql>SELECT noid, nama, tmp_lahir, tgl_lahir FROM teman ->WHERE kelamin!=”P”; atau
mysql>SELECT noid, nama, tmp_lahir, tgl_lahir FROM teman ->WHERE kelamin=”L”;
i. Tampilkan data teman yang lahir bukan di Malang;
mysql>SELECT * FROM teman WHERE NOT tmp_lahir=”Malang”; atau
mysql>SELECT * FROM teman WHERE tmp_lahir!=”Malang”;
j. Tampilkan data teman yang lahir di Malang atau di Surabaya atau di Bogor; mysql>SELECT * FROM teman
->WHERE tmp_lahir IN (”Malang”, “Surabaya”, “Bogor”); atau mysql>SELECT * FROM teman
->WHERE tmp_lahir=”Malang” OR tmp_lahir=“Surabaya” ->OR tmp_lahir= “Bogor”;
k. Tampilkan data teman yang lahir bukan di Malang, Surabaya atau Bogor; mysql>SELECT * FROM teman
->WHERE tmp_lahir NOT IN (”Malang”, “Surabaya”, “Bogor”); atau mysql>SELECT * FROM teman
->WHERE tmp_lahir!=”Malang” AND tmp_lahir!=“Surabaya” ->AND tmp_lahir!=“Bogor”;
l. Tampilkan data teman yang lahir antara 01-01-1973 hingga 31-12-1977, urut tanggal lahir; mysql>SELECT * FROM teman
m. Tampilkan data teman yang lahir antara 01-01-1973 hingga 31-12-1977 dan berjenis kelamin laki-laki (L), urut nama;
mysql>SELECT * FROM teman
->WHERE tgl_lahir BETWEEN “1973-01-01” AND “1977-12-31” ->AND kelamin=”L” ORDER BY nama;
n. Tampilkan data teman yang namanya berawalan “a” dengan tidak membedakan hurup kapital, urut nama;
mysql>SELECT * FROM teman WHERE nama LIKE “a%” ORDER BY nama;
p. Tampilkan data teman yang namanya berakhiran “a” dengan tidak membedakan hurup kapital, urut nama;
mysql>SELECT * FROM teman WHERE nama LIKE “%a” ORDER BY nama;
q. Tampilkan data teman yang namanya mengandung “n” dengan tidak membedakan hurup kapital, urut nama;
mysql>SELECT * FROM teman WHERE nama LIKE “%n%”
->AND kelamin=”L” ORDER BY nama;
r. Tampilkan data teman yang namanya bukan berakhiran “n” dan bukan berakhiran “a” dengan tidak membedakan hurup kapital, urut nama;
mysql>SELECT * FROM teman WHERE nama NOT LIKE “%n”
->AND nama NOT LIKE ”%a” ORDER BY nama;
t. Tampilkan data teman untuk field noid, nama dan alamat untuk data yang beralamat NULL, urut nama;
mysql>SELECT noid, nama, alamat FROM teman WHERE alamat IS NULL ->ORDER BY nama;
u. Tampilkan data teman untuk field noid, nama dan alamat untuk data yang tidak beralamat NULL, urut nama;
mysql>SELECT noid, nama, alamat FROM teman WHERE alamat IS NOT NULL ->ORDER BY nama;
v. Tampilkan data teman untuk data yang namanya berakhiran “a”;
Penjelasan
Perintah SELECT digunakan untuk menyeleksi data yang akan ditampilkan. Data yang diseleksi untuk ditampilkan dapat berupa hasil ekspresi matematis, logika, pembandingan maupun data yang berasal dari objek-objek dari database seperti TABLE ataupun VIEW.
Bentuk umum dari perintah SELECT adalah sebagai berikut;
SELECT
[ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr, ...
[INTO OUTFILE 'file_name' export_options
| INTO DUMPFILE 'file_name']
[FROM table_references
[WHERE where_definition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_definition]
[ORDER BY {col_name | expr | position}
[ASC | DESC] , ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]