SlideShare ist ein Scribd-Unternehmen logo
1 von 20
1




                                      BAB 1


                                     MYSQL




1.1 Pendahuluan


MySQL dikembangkan oleh sebuah perusahaan Swedia bernama MySQL AB, yang
kala itu bernama TcX DataKonsult AB, sejak sekitar 1994–1995, meski cikal bakal
kodenya bisa disebut sudah ada sejak 1979. Tujuan mula-mula TcX membuat MySQL
pada waktu itu juga memang untuk mengembangkan aplikasi Web untuk klien TcX
adalah perusahaan pengembang software dan konsultan database. Kala itu Michael
Widenius, atau ―Monty‖, pengembang satu-satunya di TcX, memiliki aplikasi
UNIREG dan rutin ISAM yang dibuat sendiri dan sedang mencari antarmuka SQL
untuk ditempelkan di atasnya. Mula-mula TcX memakai mSQL, atau ―mini SQL‖.


       Barangkali mSQL adalah satu-satunya kode database open source yang
tersedia dan cukup sederhana saat itu, meskipun sudah ada Postgres. Namun ternyata,
menurut Monty, mSQL tidaklah cukup cepat maupun fleksibel. Versi pertama mSQL
bahkan tidak memiliki indeks. Setelah mencoba menghubungi David Hughes pembuat
mSQL dan ternyata mengetahui bahwa David tengah sibuk mengembangkan versi
dua, maka keputusan yang diambil Monty yaitu membuat sendiri mesin SQL yang
antarmukanya mirip dengan mSQL tapi memiliki kemampuan yang lebih sesuai
kebutuhan. Lahirlah MySQL.


       Nama MySQL (baca: mai es ki el) tidak jelas diambil dari mana. Ada yang
bilang ini diambil dari huruf pertama dan terakhir nama panggilan Michael Widenius,
Monty. Ada lagi yang bilang kata My diambil dari nama putri Monty, yang memang
diberi nama My—karena Monty memang aslinya seorang Finlandia. Tapi sebetulnya
kalau source code MySQL dilirik, prefiks my memang sudah terbubuhi di mana-mana
2



prefiks ini sering menjadi prefiks umum kalau seseorang membuat kode kustom
tersendiri untuk sesuatu. Kalau Anda betul-betul penasaran mana yang benar,
mungkin bisa bertanya langsung kepada Monty.


       MySQL versi 1.0 dirilis Mei 1996 secara terbatas kepada empat orang. Baru di
bulan Oktober versi 3.11.0 dilepas ke publik. Namun mula-mula kode ini tidak
diberikan di bawah lisensi General Public License, melainkan lisensi khusus yang
intinya kurang lebih begini: ―Source code MySQL dapat dilihat dan gratis, serta
server MySQL dapat dipakai tanpa biaya tapi hanya untuk kebutuhan nonkomersial.
Untuk kebutuhan komersial (misal : mengemas dan menjual MySQL, atau
menyertakan MySQL dalam program komersial lain) Anda harus bayar lisensi.‖


       Sementara distribusi Windows MySQL sendiri dirilis secara shareware.
Barulah pada Juni 2000 MySQL AB mengumumkan bahwa sejak versi 3.23.19,
MySQL adalah software bebas berlisensi GPL. Artinya, ―Source code MySQL dapat
dilihat dan gratis, serta server MySQL dapat dipakai tanpa biaya untuk kebutuhan apa
pun. Tapi jika Anda memodifikasi source code, Anda juga harus melepasnya di bawah
lisensi yang sama, yaitu GPL.‖ Kini perusahaan MySQL AB, yang beranggotakan
sekitar 10 programmer dan 10 karyawan lain itu, memperoleh pemasukan terutama
dari jasa konsultasi seputar MySQL.


       Versi publik pertama, yang hanya berjalan di Linux dan Solaris serta sebagian
besar masih belum terdokumentasi itu, dengan berangsur-angsur diperbaiki dan
ditambah fitur demi fiturnya tapi tetap dengan fokus utama pengembangan pada
kelangsingan dan kecepatan. Artinya, fitur yang menyebabkan MySQL menjadi
lambat tidaklah ditambahkan, atau ditunda dulu, atau ditambahkan tapi menjadi fitur
yang opsional.


       Versi awal MySQL ini, meski sudah bisa dipakai untuk aplikasi Web
sederhana, belumlah memadai sama sekali untuk aplikasi bisnis. Contohnya, JOIN
sederhana sudah ada, tapi tidak ada HAVING baru di bulan Desember ditambahkan.
Sudah ada tipe data TIMESTAMP dan kolom autoupdate, tapi tidak ada system-
generated number (sequence) baru di akhir 1996 juga ditambahkan modifier kolom
3



AUTO_INCREMENT. Sudah ada LIMIT tapi GROUP BY dan ORDER BY memiliki
keterbatasan. Dan seterusnya.


       Barulah di versi-versi akhir 3.22—sepanjang 1998–1999—MySQL menjadi
semakin popular dan dilirik orang. Stabilitasnya sudah baik. Kecepatannya meningkat.
Sudah tersedia di berbagai platform, termasuk Windows. Seri 3.22 ini banyak dipakai
di berbagai instalasi, mungkin hingga sekarang, sehingga MySQL AB tetap
memberikan dukungan technical support untuk seri ini.




1.2 Relational Database Management System (RDBMS)


MySQL adalah Relational Database Management System (RDBMS) yang
didistribusikan secara gratis dibawah lisensi GPL (General Public License). Dimana
setiap orang bebas untuk menggunakan MySQL, namun tidak boleh dijadikan produk
turunan yang bersifat komersial.


       MySQL sebenarnya merupakan turunan salah satu konsep utama dalam
database sejak lama, yaitu SQL (Structured Query Language). SQL adalah sebuah
konsep pengoperasian database, terutama untuk pemilihan atau seleksi dan
pemasukan data, yang memungkinkan pengoperasian data dikerjakan dengan mudah
secara otomatis.


       Keandalan suatu sistem database (DBMS) dapat diketahui dari cara kerja
optimizer-nya dalam melakukan proses perintah-perintah SQL, yang dibuat oleh user
maupun program-program aplikasinya.


       Sebagai database server, MySQL dapat dikatakan lebih unggul dibandingkan
database server lainnya dalam query data. Hal ini terbukti untuk query yang
dilakukan oleh single user, kecepatan query MySQL bisa sepuluh kali lebih cepat dari
PostgreSQL dan lima kali lebih cepat dibandingkan Interbase.
4



1.3 Fitur MySQL


Kalau di seri 3.22 MySQL mulai diadopsi banyak orang dan meningkat populasi
penggunanya, maka di seri 3.23 dan 4.0-lah terjadi banyak peningkatan dari sisi
teknologi. Ini tidak terlepas dari tuntutan pemakai yang semakin mengandalkan
MySQL, namun membutuhkan fitur-fitur yang lebih banyak lagi. Seri 3.23. Di seri
3.23 MySQL menambahkan tiga jenis tabel baru: pertama MyISAM, yang sampai
sekarang menjadi tipe tabel default; kedua BerkeleyDB, yang pertama kali
menambahkan kemampuan transaksi pada MySQL; dan ketiga InnoDB, primadona
baru yang potensial. Seri 4.x.


       Di seri yang baru berjalan hingga 4.0 tahap alfa ini, pengembang MySQL
berjanji akan menjadikan MySQL satu derajat lebih tinggi lagi. Fitur-fitur yang sejak
dulu diminta akan dikabulkan, seperti subselek (di 4.1), union (4.0), foreign key
constraint (4.0 atau 4.1—meski InnoDB sudah menyediakan ini di 3.23.x), stored
procedure (4.1), view (4.2), cursor (4.1 atau 4.2), trigger (4.1). MySQL AB tetap
berdedikasi mengembangkan dan memperbaiki MySQL, serta mempertahankan
MySQL sebagai database open source terpopuler.




1.4 Keistimewaan MySQL


Sebagai database server yang memiliki konsep database modern, MySQL memiliki
banyak sekali keistimewaan. Berikut ini beberapa keistimewaan yang dimiliki oleh
MySQL, antara lain :


   a. Portabilitas, MySQL dapat berjalan stabil pada berbagai sistem operasi seperti
       Windows, Linux, FreeBSD, Mac Os X Server, Solaris, Amiga, dan masih
       banyak lagi.


   b. Perangkat lunak sumber terbuka, MySQL didistribusikan sebagai perangkat
       lunak sumber terbuka, dibawah lisensi GPL sehingga dapat digunakan secara
       gratis.
5



c. Multi-user, MySQL dapat digunakan oleh beberapa pengguna dalam waktu
   yang bersamaan tanpa mengalami masalah atau konflik.


d. Performance tuning, MySQL memiliki kecepatan yang menakjubkan dalam
   menangani query sederhana, dengan kata lain dapat memproses lebih banyak
   SQL per satuan waktu.


e. Ragam tipe data, MySQL memiliki ragam tipe data yang sangat kaya, seperti
   signed / unsigned integer, float, double, char, text, date, timestamp, dan lain-
   lain.


f. Perintah dan Fungsi, MySQL memiliki operator dan fungsi secara penuh yang
   mendukung perintah Select dan Where dalam perintah (query).


g. Keamanan, MySQL memiliki beberapa lapisan keamanan seperti level
   subnetmask, nama host, dan izin akses user dengan sistem perizinan yang
   mendetail serta sandi terenkripsi.


h. 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.


i. Konektivitas, MySQL dapat melakukan koneksi dengan klien menggunakan
   protokol TCP/IP, Unix soket (UNIX), atau Named Pipes (NT).


j. Lokalisasi, MySQL dapat mendeteksi pesan kesalahan pada klien dengan
   menggunakan lebih dari dua puluh bahasa. Meski pun demikian, bahasa
   Indonesia belum termasuk di dalamnya.


k. Antar Muka, MySQL memiliki antar muka (interface) terhadap berbagai
   aplikasi dan bahasa pemrograman dengan menggunakan fungsi API
   (Application Programming Interface).
6



   l. 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.


   m. Struktur tabel, MySQL memiliki struktur tabel yang lebih fleksibel dalam
        menangani ALTER TABLE, dibandingkan basis data lainnya semacam
        PostgreSQL ataupun Oracle.


   Dengan keistimewaan di atas ada beberapa alasan yang menjadikan MySQL
sehingga sangat populer, diantaranya :


   a.   Bersifat free dan open source (FOSS).
   b.   Banyak digunakan di web hosting dengan paket yang sangat ekonomis.
   c.   Mendukung berbagai storage engine yang bisa kita ganti pada level table.
   d.   Memiliki komunitas pengguna yang luas dan saling membantu.
   e.   Besar dan luasnya komunitas pengembang / developer MySQL.
   f.   Waktu yang singkat dalam siklus pengembangan dan perbaikan kesalahan.
   g.   Arsitektur yang sangat baik dengan pilihan berbagai storage engine.
   h.   Kaya akan fitur dan utilitas baik dari komunitas maupun korporasi.
   i.   Memiliki support berbayar untuk pelanggan korporasi (corporate customers)
        sehingga terjamin.




1.5 Ketentuan Memberi Perintah dalam MySQL


Seperti halnya dalam membuat setiap program kita harus terlebih dahulu mengetahui
ketentuan - ketentuan yang harus dibuat dalam memberi perintah kepada program
tersebut. Begitu halnya juga seperti MySQL, berikut ini merupakan beberapa
ketentuan dalam memberi perintah di MySQL :


   a. Setiap perintah harus diakhiri dengan tanda titik koma (;) atau dengan
        memberikan perintah g atau G. Namun, pada umumnya user menggunakan
        tanda titik koma untuk mengakhiri perintah pada MySQL.
7



      b. Setiap perintah akan disimpan dalam buffer (memori sementara) untuk
         menyimpan histori perintah-perintah yang pernah diberikan.


      c. Perintah-perintah yang bukan SQL dapat dipendekkan dengan menggunakan 
         dan huruf depan perintah.


      d. Perintah help atau h digunakan untuk menampilkan daftar dan aturan
         memberikan perintah di lingkungan MySQL.


      e. Perintah-perintah dalam lingkungan MySQL tidak menerapkan aturan case
         sensitive, tetapi case insensitive yaitu perintah bisa dituliskan dalam huruf
         besar atau pun huruf kecil.


      f. Aturan case sensitive diterapkan pada penamaan objek-objek dalam database
         seperti nama database atau nama table, namun aturan ini hanya ada dalam
         lingkungan Unix dan Linux.


      g. Untuk melihat perintah-perintah yang sudah pernah kita ketikkan, tekan
         tombol tanda panah atas.




1.6 Bahasa Pemrograman


Terdapat beberapa API (Application Programming Interface) tersedia yang
memungkinkan aplikasi-aplikasi komputer yang ditulis dalam berbagai bahasa
pemrograman untuk dapat mengakses basis data MySQL.


         Beberapa aplikasi komputer tersebut 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.
8



       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.




1.7 Normalisasi dan Pemodelan


Normalisasi, skema, entiti-atribut, primary key (PK) dan foreign key (FK), tabel entiti,
tabel relasi, OLTP & OLA semuanya adalah istilah-istilah yang umum dijumpai
dalam pemodelan fisik database. Sayangnya, banyak programer pemula tidak
memiliki kemampuan modeling. Sehingga jika disuruh mendesain skema database
(sekumpulan tabel-tabel beserta nama field dan tipenya) hasilnya tidak optimal bahkan
berantakan. Skema yang buruk berakibat terjadinya duplikasi data, tidak scalable,
performance yang buruk, tidak memenuhi requirements, dsb.


       Modeling tentunya tidak bisa diajarkan dalam 1–2 hari. Anda perlu membaca
buku-buku mengenai pemodelan database dan belajar dari pengalaman maupun dari
model-model yang sudah ada. Tapi beberapa nasihat yang mungkin bisa saya berikan
di sini adalah sebagai berikut :


       Satu, langkah pertama dalam pemodelan adalah menemukan entiti-entiti. Entiti
bisa dibilang ―objek‖ yang akan kita geluti. Misalnya, customer, produk, dan
transaksi. Setiap entiti umumnya ditaruh dalam satu tabel, tabel ini disebut tabel entiti.


       Langkah kedua adalah mencari atribut-atribut entiti tersebut. Misalnya tabel
customers memiliki atribut sapaan, nama, alamat (jalan + kota + kodepos + propinsi +
negara), tanggal record ini ditambahkan, dsb.


       Langkah ketiga adalah mencari relasi di antara entiti-entiti. Umumnya relasi
adalah satu dari: 1-1, 1-many, many-many. Misalnya, relasi antara transaksi dan
produk adalah many-many, artinya sebuah transaksi pembelian dapat berisi banyak
produk dan sebuah produk tentu saja dapat dibeli dalam lebih dari satu transaksi.
Setiap relasi juga akan ditempatkan pada tabel, yaitu tabel relasi.
9



       Dua, dalam pemodelan tidak ada istilah model yang benar atau salah. Yang
ada adalah model yang tepat dan tidak tepat untuk keperluan tertentu. Misalnya, untuk
aplikasi sederhana modelnya sederhana. Semakin kompleks aplikasi, model pun
semakin rumit (jumlah entiti, relasi, dan atribut akan bertambah). Pada umumnya,
seiring kompleksitas bertambah, yang tadinya atribut akan berubah menjadi entiti
dikarenakan adanya kenyataan hubungan 1-many/many-many antara atribut.
Contohnya, tabel customers memiliki atribut alamat. Jika kita ingin mendukung
banyak alamat untuk satu customers, maka alamat akan menjadi entiti dan menempati
tabel sendiri. Lalu kita membuat tabel relasi customers-alamat.
10




                                        BAB 2


                            SINTAKS DALAM MYSQL




Berikut ini akan diberikan pengenalan tentang sintaks SQL dalam MySQL yang
sederhana dan paling sering digunakan baik untuk penggunaan biasa ataupun untuk
administratif. Berikut adalah beberapa sintaks dasar SQL dalam MySQL.


2.1 Level Database


2.1.1 Membuat database


Untuk membuat database baru, sehingga tidak berlaku jika database sudah ada atau
anda tidak memiliki privilege. Sintaksnya :
create database nama_db;




2.1.2 Menghapus database


Untuk menghapus database beserta seluruh table di dalamnya. Perintah ini tidak
berlaku jika database tidak ada atau anda tidak memiliki privilege. Sintaksnya :
drop database nama_db;




2.1.3 Menggunakan database


Untuk menjadikan database menjadi default dan referensi dari table yang nantinya
anda gunakan. Perintah ini tidak berlaku jika database tidak ada atau anda tidak
memiliki privilege. Sintaksnya :
11



use nama_db;




2.1.4 Menampilkan database


Untuk menampilkan daftar yang ada dalam system saat itu. Sintaksnya :
show databases;




2.2 Level Tabel


2.2.1 Membuat tabel


Untuk membuat table minimal anda harus menentukan namanya dan tipe kolom yang
anda inginkan. Sintaks yang paling sederhana (tanpa ada definisi lain) adalah :
CREATE TABLE nama_tbl
(kolom1 tipekolom1(),kolom2 tipekolom2(), …)


       Contoh, Anda ingin membuat table dengan nama profil yang memiliki kolom
nama (bertipe char, lebar 20), kolom umur (bertipe integer), kolom jenis_kelamin
(bertipe enum, berisi M dan F). Sintaksnya :
CREATE TABLE profil (
nama CHAR(20), umur INT NOT NULL,
jenis_kelamin ENUM(‗F‘,‘M‘) )


       Sedangkan perintah yang agak lengkap dalam membuat sebuah table adalah
dengan menyertakan definisi tertentu. Misalnya perintah seperti ini :
CREATE TABLE peserta (
Nama CHAR(30) NOT NULL,
BidangStudi ENUM(‗TS‘,‘WD‘) NOT NULL,
PRIMARY KEY (No),
INDEX (Nama, BidangStudi) )
12



         Perintah di atas berarti membuat table peserta dengan kolom No sebagai
PRIMARY KEY yaitu indeks table yang unik yang tidak bisa diduplikat dengan
atribut AUTO_INCREMENT yaitu kolom yang otomatis dapat mengurutkan angka
yang diisikan padanya. Sedangkan kolom Nama dan BidangStudi dijadikan indeks
biasa.




2.2.2 Membuat indeks pada tabel


Menambahkan indeks pada table yang sudah ada baik yang unik ataupun yang biasa.
Sintaksnya :
CREATE INDEX nama_index ON nama_tbl (nama_kolom)
CREATE UNIQUE INDEX nama_index ON nama_tbl (nama_kolom)




2.2.3 Menghapus tabel


Untuk menghapus table dalam database tertentu. Jika dilakukan maka semua isi,
indeks dan atribut lain akan terhapus. Sintaksnya :
DROP TABLE nama_tbl




2.2.4 Menghapus indeks


Untuk menghapus indeks pada suatu table. Sintaksnya :
DROP INDEX nama-index ON nama_tbl




2.2.5 Melihat informasi tabel


Untuk melihat table apa saja yang ada di database tertentu. Sintaksnya :
SHOW TABLES FROM nama_db
13



       Sedangkan untuk melihat deskripsi table atau informasi tentang kolom
gunakan sintaks :
DESC nama_tbl nama_kolom
atau
SHOW COLUMNS FROM nama_tbl FROM nama_db




2.2.6 Mendapatkan atau menampilkan informasi dari tabel


Untuk menampilkan isi table dengan option-option tertentu. Misalnya untuk
menampilkan seluruh isi table digunakan :
SELECT * FROM nama_tbl


Untuk menampilkan kolom-kolom tertentu saja :
SELECT kolom1,kolom2,... FROM nama_tbl


Untuk menampilkan isi suatu kolom dengan kondisi tertentu
SELECT kolom1 FROM nama_tbl WHERE kolom2=isikolom




2.2.7 Modifikasi struktur tabel


Dapat digunakan untuk mengganti nama table atau mengubah strukturnya seperti
manambah kolom atau indeks, menghapus kolom atau indeks, mengubah tipe kolom
dsb. Sintaks umum :
ALTER TABLE nama_tbl action


Untuk menambah kolom baru di tempat tertentu dapat menggunakan :
ALTER TABLE nama_tbl
ADD kolom_baru type() definisi
14



Untuk menambah kolom_baru bertipe integer setelah kolom1 digunakan :
ALTER TABLE nama_tbl
ADD kolom_baru INT NOT NULL AFTER kolom1


Untuk menambah indeks baru pada table tertentu baik yang unik ataupun yang biasa:
ALTER TABLE nama_tbl ADD INDEX nama_index (nama_kolom)
ALTER TABLE nama_tbl ADD UNIQUE nama_indeks (nama_kolom)
ALTER TABLE nama_tbl ADD PRIMARY KEY nama_indeks (nama_kolom)


       Untuk mengubah nama kolom dan definisinya, misalnya mengubah nama
kolom_baru dengan tipe integer menjadi new_kolom dengan tipe char dengan lebar 30
digunakan:
ALTER TABLE nama_tbl
CHANGE kolom_baru new_kolom CHAR(30) NOT NULL


       Untuk menghapus suatu kolom dan seluruh atributnya, misal menghapus
kolom1 :
ALTER TABLE nama_tbl DROP kolom1


Untuk menghapus indeks baik yang unik ataupun yang biasa digunakan :
ALTER TABLE nama_tbl DROP nama_index
ALTER TABLE nama_tbl DROP PRIMARY KEY




2.2.8 Modifikasi informasi dalam tabel


Untuk menambah record atau baris baru dalam table, sintaksnya :
INSERT INTO nama_tbl (nama_kolom) VALUES (isi_kolom)
atau
INSERT INTO nama_tbl SET nama_kolom=isi_kolom
15



       Misalnya untuk menambah dua baris pada table profil dengan isi nama =
deden & ujang dan isi umur = 17 & 18 adalah :
INSERT INTO profil (nama,umur) VALUES (deden,17), (ujang,18)
atau
INSERT INTO profil SET nama=deden, umur=17
INSERT INTO profil SET nama=ujang, umur=18


       Untuk memodifikasi record atau baris yang sudah ada yang bersesuaian
dengan suatu kolom. Misalnya untuk mengubah umur deden menjadi 18 pada contoh
di atas dapat digunakan sintaks :
UPDATE profil SET umur=18 WHERE nama=deden


       Untuk menghapus record atau baris tertentu dalam suatu table. Misalnya untuk
menghapus baris yang ada nama ujang digunakan sintaks :
DELETE FROM profil WHERE nama=ujang


Jika WHERE tidak disertakan maka semua isi dalam table profil akan terhapus.




2.3 Tipe-tipe Dalam MySQL


MySQL dapat mengetahui beberapa tipe data antara lain :




2.3.1 Data numerik


MySQL dapat menerima masukan berupa angka-angka yang dibagi atas integer
(angka tanpa pecahan) dan floating-point (angka dengan pecahan). MySQL juga
mengerti notasi scientific yaitu integer atau floating-point yang diikuti tanda ‗e‘ atau
‗E‘, tanda ‗+‘ atau ‗-‗. Misalnya angka 1.34E+12 atau 3.23e-5.
16



2.3.2 Data karakter/string


Merupakan deretan huruf yang membentuk kata yang diapit oleh tanda petik (‗ ‘) atau
tanda petik ganda (― ‖).




2.3.3 Data waktu


Merupakan data yang berisi tanggal (date) dan jam (time) misalnya ―2001-10-15‖
untuk tanggal dengan format YYYY-MM-DD dan ―12:45:15‖ untuk jam dengan
format hh:mm:ss.




2.4 Tipe-tipe Kolom MySQL


Setiap table yang dibuat dalam database selalu terdiri atas kolom-kolom. Katika anda
membuatnya dengan perintah CREATE TABLE, anda harus menentukan tipe masing-
masing kolom. Tiap tipe kolom memiliki karakteristik berikut :


   a. Jenis harga apa yang dapat diisikan
   b. Berapa banyak ruang yang dapat menampung harga tersebut
   c. Bagaimana harga dari tipe tersebut dibandingkan dan disaring
   d. Apakah tipe tersebut boleh mengisi dengan NULL atau tidak
   e. Apakah tipe tersebut boleh diindeks atau tidak


Secara garis besar kolom MySQL terbagi menjadi tiga tipe yaitu :
   a. Tipe kolom Numerik
   b. Tipe kolom Karakter/String
   c. Tipe kolom Waktu
17



2.4.1 Tipe numerik


Tipe ini untuk harga integer dan floating-point. Untuk integer kolom haruslah
PRIMARY KEY atau indeks yang unik jika ia diberi atribut AUTO_INCREMENT
(dapat otomatis mengurutkan angka). Jika diberikan atribut UNSIGNED berarti angka
tidak boleh negatif. Sedangkan atribut ZEROFILL menandakan bahwa angka diawali
dengan angka nol.


   a. TINYINT, berarti integer dengan range yang sangat kecil yaitu –27 sampai
      27-1 atau 0 sampai 28-1 jika UNSIGNED. Atribut yang dibolehkan adalah
      AUTO_INCREMENT,UNSIGNED, dan ZEROFILL. Harga default adalah
      NULL jika bisa atau 0 jika NOT NULL dengan peyimpanan 1 byte.


   b. SMALLINT, berarti integer dengan range yang kecil yaitu –215 sampai 215-1
      atau 0 sampai 216-1 jika UNSIGNED. Atribut yang dibolehkan adalah
      AUTO_INCREMENT,UNSIGNED, dan ZEROFILL. Harga default adalah
      NULL jika bisa atau 0 jika NOT NULL dengan peyimpanan 2 byte.


   c. MEDIUMINT, berarti integer dengan range yang sangat kecil yaitu –223
      sampai 223-1 atau 0 sampai 224-1 jika UNSIGNED. Atribut yang dibolehkan
      adalah AUTO_INCREMENT,UNSIGNED, dan ZEROFILL. Harga default
      adalah NULL jika bisa atau 0 jika NOT NULL dengan peyimpanan 3 byte.


   d. INT, berarti integer dengan range yang normal yaitu –231 sampai 231-1 atau 0
      sampai    232-1   jika   UNSIGNED.     Atribut   yang   dibolehkan   adalah
      AUTO_INCREMENT,UNSIGNED, dan ZEROFILL. Harga default adalah
      NULL jika bisa atau 0 jika NOT NULL dengan peyimpanan 4 byte.


   e. BIGINT, berarti integer dengan range yang sangat kecil yaitu –263 sampai
      263-1 atau 0 sampai 264-1 jika UNSIGNED. Atribut yang dibolehkan adalah
      AUTO_INCREMENT,UNSIGNED, dan ZEROFILL. Harga default adalah
      NULL jika bisa atau 0 jika NOT NULL dengan peyimpanan 8 byte.
18



   f. FLOAT,        berarti    floating-point    dengan   range   kecil   yaitu   antara
       +1.175494351E-38 sampai +3.402823466E+38 serta dengan single presisi.
       Atribut yang dibolehkan adalah ZEROFILL. Harga default NULL jika bisa
       atau 0 jika NOT NULL. Tempat penyimpanan 4 byte.


   g. DOUBLE,        berarti    floating-point   dengan   range   besar   yaitu   antara
       +2.22507385072014E-308 sampai +1.7976931348623157E308 serta dengan
       double presisi. Atribut yang dibolehkan adalah ZEROFILL. Harga default
       NULL jika bisa atau 0 jika NOT NULL. Tempat penyimpanan 8 byte.


   h. DECIMAL(M,D) atau NUMERIC(M,D), berarti floating-point yang tersimpan
       sebagai string (1 byte untuk setiap digit, tanda desimal, atau tanda ‘-‗). Range
       harga sama seperti DOUBLE. Atribut yang dibolehkan adalah ZEROFILL.
       Tempat penyimpanan sebesar M byte. Jika D diisi 0 berarti tidak punya nilai
       desimal.




2.4.2 Tipe string


Tipe data berikut ini merupakan tipe data yang digunakan sebagai tempat
penyimpanan karakter, antara lain :


   a. CHAR(M), karakter dengan panjang 0 sampai M byte. Atribut yang
       dibolehkan adalah BINARY. Harga default adalah NULL jika bisa atau ― ―
       jika NOT NULL. Tempat pemyimpanan M byte.


   b. VARCHAR, variabel karakter dengan panjang 0 sampai M byte. Atribut yang
       dibolehkan adalah BINARY. Harga default adalah NULL jika bisa atau ― ―
       jika NOT NULL. Tempat pemyimpanan M+1 byte.


   c. TINYTEXT, teks berukuran kecil dengan panjang 0 sampai 28-1 byte. Harga
       default adalah NULL jika bisa atau ― ― jika NOT NULL. Tempat penyimpanan
       sebanyak panjang harga plus 1 byte.
19




   d. TEXT, teks yang normal dengan panjang 0 sampai 216-1 byte. Harga default
       adalah NULL jika bisa atau ― ― jika NOT NULL. Tempat penyimpanan
       sebanyak panjang harga plus 2 byte.


   e. MEDIUMTEXT Teks berukuran sedang dengan panjang 0 sampai 224-1 byte.
       Harga default adalah NULL jika bisa atau ― ― jika NOT NULL. Tempat
       penyimpanan sebanyak panjang harga plus 3 byte.


   f. LONGTEXT, teks berukuran besar dengan panjang 0 sampai 232-1 byte.
       Harga default adalah NULL jika bisa atau ― ― jika NOT NULL. Tempat
       penyimpanan sebanyak panjang harga plus 4 byte.


   g. ENUM(―harga1‖,‖harga2‖,…), berarti kolom hanya boleh diisi dengan salah
       satu dari harga yang ada. Harga default adalah NULL jika bisa atau harga1 jika
       NOT NULL. Tempat penyimpanan adalah 1 byte untuk enumerasi dengan
       anggota 1 sampai 255 dan 2 byte untuk enumerasi dengan anggota 256 sampai
       65535.


   h. SET(―harga1‖,‖harga2‖,…), berarti kolom boleh dikosongi atau diisi dengan
       beberapa harga dari daftar harga yang ada. Harga default adalah NULL jika
       bisa atau ‖ ― jika NOT NULL. Tempat penyimpanan adalah 1 byte untuk set
       dengan anggota 1 sampai 8, 2 byte untuk set dengan anggota 9 sampai 16, 3
       byte untuk set dengan anggota 17 sampai 24, 4 byte untuk set dengan anggota
       25 sampai 32, atau 8 byte untuk set dengan anggota 33 sampai 64.




2.4.3 Tipe Waktu


Tipe data berikut ini merupakan tipe data yang digunakan sebagai tempat
penyimpanan data waktu, antara lain :
20



a. DATE, untuk kolom tanggal dengan format YYYY-MM-DD dan range antara
   ―1000-01-01‖ sampai ―9999-12-31‖. Harga default adalah NULL jika bisa atau
   ―0000-00-00‖ jika NOT NULL. Tempat penyimpanan 3 byte.


b. TIME, untuk kolom jam dengan format hh:mm:ss atau -hh:mm:ss untuk harga
   negatif. Range harga antara ―-838:59:59‖ sampai ―838:59:59‖. Harga default
   adalah NULL jika bisa atau ―00:00:00‖ jika NOT NULL. Tempat
   penyimpanan 3 byte.


c. DATETIME, gabungan antar hari dan jam dengan format YYYY-MM-DD
   hh:mm:ss dan range antar ―1000-01-01 00:00:00‖ sampai ―9999-12-31
   23:59:59‖. Harga default adalah NULL jika bisa atau ―0000-00-00 00:00:00‖
   jika NOT NULL. Tempat penyimpanan 8 byte.


d. TIMESTAMP, hampir sama dengan DATETIME tapi dengan format
   YYYYMMDDhhmmss dan range antara 19700101000000 sampai suatu saat
   di tahun 2037. Harga default adalah hari dan jam saat itu. Tempat
   penyimpanan 4 byte.


e. YEAR, untuk kolom tahun dengan format YYYY dan range antara 1900
   sampai 2155. Harga default adalah NULL jika bisa atau 0000 jika NOT
   NULL. Tempat penyimpanan 3 byte.

Weitere ähnliche Inhalte

Was ist angesagt?

PEMBUATAN TABEL DALAM DATABASE
PEMBUATAN TABEL DALAM DATABASEPEMBUATAN TABEL DALAM DATABASE
PEMBUATAN TABEL DALAM DATABASERäjù GùÑáwàn
 
Artikel windows dan linux.....
Artikel windows dan linux.....Artikel windows dan linux.....
Artikel windows dan linux.....kiuk08
 
Jenis Layanan & Macam Sistem Operasi Jaringan
Jenis Layanan & Macam Sistem Operasi JaringanJenis Layanan & Macam Sistem Operasi Jaringan
Jenis Layanan & Macam Sistem Operasi JaringanA Sisdianto Sumarna
 
Sistem operasi jaringan
Sistem operasi jaringanSistem operasi jaringan
Sistem operasi jaringanIHTIAR
 
Tugas sim, theresia hanitalia, , yananto mihadi p., s.e., m.si., cma. dbms (d...
Tugas sim, theresia hanitalia, , yananto mihadi p., s.e., m.si., cma. dbms (d...Tugas sim, theresia hanitalia, , yananto mihadi p., s.e., m.si., cma. dbms (d...
Tugas sim, theresia hanitalia, , yananto mihadi p., s.e., m.si., cma. dbms (d...TheodoraTerdunGintin
 
SIM.ROJIKIN.Prof.Dr.Ir.Hapzi Ali,MM,CMA.SISTEM MANAJEMEN DATABASE.UNIVERSITAS...
SIM.ROJIKIN.Prof.Dr.Ir.Hapzi Ali,MM,CMA.SISTEM MANAJEMEN DATABASE.UNIVERSITAS...SIM.ROJIKIN.Prof.Dr.Ir.Hapzi Ali,MM,CMA.SISTEM MANAJEMEN DATABASE.UNIVERSITAS...
SIM.ROJIKIN.Prof.Dr.Ir.Hapzi Ali,MM,CMA.SISTEM MANAJEMEN DATABASE.UNIVERSITAS...Nurlelah Nurlelah
 
Review sistem operasi
Review sistem operasiReview sistem operasi
Review sistem operasiNikiHidayati
 
Manajemen jaringan server c kelompok 4-artayahonest
Manajemen jaringan server c   kelompok 4-artayahonestManajemen jaringan server c   kelompok 4-artayahonest
Manajemen jaringan server c kelompok 4-artayahonestArtaya Honest
 
mageia 3
mageia 3mageia 3
mageia 3Rian R
 
Bab12 backup dan restore basis data
Bab12 backup dan restore basis dataBab12 backup dan restore basis data
Bab12 backup dan restore basis dataAgung Sakepris
 
Kelebihan dan kekurangan database engine
Kelebihan dan kekurangan database engineKelebihan dan kekurangan database engine
Kelebihan dan kekurangan database engineroji muhidin
 

Was ist angesagt? (18)

PEMBUATAN TABEL DALAM DATABASE
PEMBUATAN TABEL DALAM DATABASEPEMBUATAN TABEL DALAM DATABASE
PEMBUATAN TABEL DALAM DATABASE
 
Artikel windows dan linux.....
Artikel windows dan linux.....Artikel windows dan linux.....
Artikel windows dan linux.....
 
Jenis Layanan & Macam Sistem Operasi Jaringan
Jenis Layanan & Macam Sistem Operasi JaringanJenis Layanan & Macam Sistem Operasi Jaringan
Jenis Layanan & Macam Sistem Operasi Jaringan
 
Sistem operasi jaringan
Sistem operasi jaringanSistem operasi jaringan
Sistem operasi jaringan
 
Windows 2000
Windows 2000Windows 2000
Windows 2000
 
Pel myswl
Pel myswlPel myswl
Pel myswl
 
Nos
NosNos
Nos
 
Tugas sim, theresia hanitalia, , yananto mihadi p., s.e., m.si., cma. dbms (d...
Tugas sim, theresia hanitalia, , yananto mihadi p., s.e., m.si., cma. dbms (d...Tugas sim, theresia hanitalia, , yananto mihadi p., s.e., m.si., cma. dbms (d...
Tugas sim, theresia hanitalia, , yananto mihadi p., s.e., m.si., cma. dbms (d...
 
Ppt db2
Ppt db2Ppt db2
Ppt db2
 
SIM.ROJIKIN.Prof.Dr.Ir.Hapzi Ali,MM,CMA.SISTEM MANAJEMEN DATABASE.UNIVERSITAS...
SIM.ROJIKIN.Prof.Dr.Ir.Hapzi Ali,MM,CMA.SISTEM MANAJEMEN DATABASE.UNIVERSITAS...SIM.ROJIKIN.Prof.Dr.Ir.Hapzi Ali,MM,CMA.SISTEM MANAJEMEN DATABASE.UNIVERSITAS...
SIM.ROJIKIN.Prof.Dr.Ir.Hapzi Ali,MM,CMA.SISTEM MANAJEMEN DATABASE.UNIVERSITAS...
 
Review sistem operasi
Review sistem operasiReview sistem operasi
Review sistem operasi
 
Manajemen jaringan server c kelompok 4-artayahonest
Manajemen jaringan server c   kelompok 4-artayahonestManajemen jaringan server c   kelompok 4-artayahonest
Manajemen jaringan server c kelompok 4-artayahonest
 
Artikel Windows Vs Linux
Artikel Windows Vs LinuxArtikel Windows Vs Linux
Artikel Windows Vs Linux
 
mageia 3
mageia 3mageia 3
mageia 3
 
Bab12 backup dan restore basis data
Bab12 backup dan restore basis dataBab12 backup dan restore basis data
Bab12 backup dan restore basis data
 
Mysql
MysqlMysql
Mysql
 
Kelebihan dan kekurangan database engine
Kelebihan dan kekurangan database engineKelebihan dan kekurangan database engine
Kelebihan dan kekurangan database engine
 
Makalah unix
Makalah unixMakalah unix
Makalah unix
 

Ähnlich wie Database dan MySQL

My sql dari pemula hingga mahir
My sql dari pemula hingga mahirMy sql dari pemula hingga mahir
My sql dari pemula hingga mahirDenny Yahya
 
Zulkifli 201613012_tugas 5
Zulkifli 201613012_tugas 5Zulkifli 201613012_tugas 5
Zulkifli 201613012_tugas 5zulk ifli
 
SI & PI, Hariz Abdul Najib, Hapzi Ali, DBMS Dalam Sistem Informasi, Universit...
SI & PI, Hariz Abdul Najib, Hapzi Ali, DBMS Dalam Sistem Informasi, Universit...SI & PI, Hariz Abdul Najib, Hapzi Ali, DBMS Dalam Sistem Informasi, Universit...
SI & PI, Hariz Abdul Najib, Hapzi Ali, DBMS Dalam Sistem Informasi, Universit...Hariz Harahap
 
My sql dari pemula hingga mahir (achmad solichin, achmatim.net)
My sql dari pemula hingga mahir (achmad solichin, achmatim.net)My sql dari pemula hingga mahir (achmad solichin, achmatim.net)
My sql dari pemula hingga mahir (achmad solichin, achmatim.net)theddy_wijaya
 
Si & Pi, cilin christianto, hapzi ali, database management sistem dalam kegia...
Si & Pi, cilin christianto, hapzi ali, database management sistem dalam kegia...Si & Pi, cilin christianto, hapzi ali, database management sistem dalam kegia...
Si & Pi, cilin christianto, hapzi ali, database management sistem dalam kegia...Cilin christianto
 
Laporan Pemrograman API
Laporan Pemrograman APILaporan Pemrograman API
Laporan Pemrograman APIFarisLufhy
 
Pembuatan tabel dalam database
Pembuatan tabel dalam databasePembuatan tabel dalam database
Pembuatan tabel dalam databasedefriharmegi
 
Bab 4 tools-pemrograman-web-dan-database
Bab 4 tools-pemrograman-web-dan-databaseBab 4 tools-pemrograman-web-dan-database
Bab 4 tools-pemrograman-web-dan-databasefebeniken
 
1. Modul Praktikum SI0044 Basis Data Dasar.pdf
1. Modul Praktikum SI0044 Basis Data Dasar.pdf1. Modul Praktikum SI0044 Basis Data Dasar.pdf
1. Modul Praktikum SI0044 Basis Data Dasar.pdfkusariwati pauntu
 
Tugas[4] 0317-[rachmawan darma]-[1311500100].
Tugas[4] 0317-[rachmawan darma]-[1311500100].Tugas[4] 0317-[rachmawan darma]-[1311500100].
Tugas[4] 0317-[rachmawan darma]-[1311500100].Rachmawan Darma
 
Comparing top 5 popular DBMS: oracle, mysql, ms sql server, postgree, mongoDB
Comparing top 5 popular DBMS: oracle, mysql, ms sql server, postgree, mongoDBComparing top 5 popular DBMS: oracle, mysql, ms sql server, postgree, mongoDB
Comparing top 5 popular DBMS: oracle, mysql, ms sql server, postgree, mongoDBWildan Maulana
 
1705552010_socmedparalelA_tugas akhir
1705552010_socmedparalelA_tugas akhir1705552010_socmedparalelA_tugas akhir
1705552010_socmedparalelA_tugas akhiraditya heru
 

Ähnlich wie Database dan MySQL (20)

Bab. 1
Bab. 1Bab. 1
Bab. 1
 
My sql dari pemula hingga mahir
My sql dari pemula hingga mahirMy sql dari pemula hingga mahir
My sql dari pemula hingga mahir
 
Zulkifli 201613012_tugas 5
Zulkifli 201613012_tugas 5Zulkifli 201613012_tugas 5
Zulkifli 201613012_tugas 5
 
SI & PI, Hariz Abdul Najib, Hapzi Ali, DBMS Dalam Sistem Informasi, Universit...
SI & PI, Hariz Abdul Najib, Hapzi Ali, DBMS Dalam Sistem Informasi, Universit...SI & PI, Hariz Abdul Najib, Hapzi Ali, DBMS Dalam Sistem Informasi, Universit...
SI & PI, Hariz Abdul Najib, Hapzi Ali, DBMS Dalam Sistem Informasi, Universit...
 
My sql dari pemula hingga mahir (achmad solichin, achmatim.net)
My sql dari pemula hingga mahir (achmad solichin, achmatim.net)My sql dari pemula hingga mahir (achmad solichin, achmatim.net)
My sql dari pemula hingga mahir (achmad solichin, achmatim.net)
 
Modul MySQL
Modul MySQLModul MySQL
Modul MySQL
 
Si & Pi, cilin christianto, hapzi ali, database management sistem dalam kegia...
Si & Pi, cilin christianto, hapzi ali, database management sistem dalam kegia...Si & Pi, cilin christianto, hapzi ali, database management sistem dalam kegia...
Si & Pi, cilin christianto, hapzi ali, database management sistem dalam kegia...
 
Java souce code
Java souce codeJava souce code
Java souce code
 
Laporan Pemrograman API
Laporan Pemrograman APILaporan Pemrograman API
Laporan Pemrograman API
 
Mysql Sebagai Pengolah Data
Mysql Sebagai Pengolah DataMysql Sebagai Pengolah Data
Mysql Sebagai Pengolah Data
 
Pembuatan tabel dalam database
Pembuatan tabel dalam databasePembuatan tabel dalam database
Pembuatan tabel dalam database
 
Bab 4 tools-pemrograman-web-dan-database
Bab 4 tools-pemrograman-web-dan-databaseBab 4 tools-pemrograman-web-dan-database
Bab 4 tools-pemrograman-web-dan-database
 
Mengapa Harus MySQL
Mengapa Harus MySQLMengapa Harus MySQL
Mengapa Harus MySQL
 
1. Modul Praktikum SI0044 Basis Data Dasar.pdf
1. Modul Praktikum SI0044 Basis Data Dasar.pdf1. Modul Praktikum SI0044 Basis Data Dasar.pdf
1. Modul Praktikum SI0044 Basis Data Dasar.pdf
 
Tugas[4] 0317-[rachmawan darma]-[1311500100].
Tugas[4] 0317-[rachmawan darma]-[1311500100].Tugas[4] 0317-[rachmawan darma]-[1311500100].
Tugas[4] 0317-[rachmawan darma]-[1311500100].
 
Comparing top 5 popular DBMS: oracle, mysql, ms sql server, postgree, mongoDB
Comparing top 5 popular DBMS: oracle, mysql, ms sql server, postgree, mongoDBComparing top 5 popular DBMS: oracle, mysql, ms sql server, postgree, mongoDB
Comparing top 5 popular DBMS: oracle, mysql, ms sql server, postgree, mongoDB
 
Makalah casandra facebook
Makalah casandra facebookMakalah casandra facebook
Makalah casandra facebook
 
Management database
Management databaseManagement database
Management database
 
Pengantar MySQL
Pengantar MySQL Pengantar MySQL
Pengantar MySQL
 
1705552010_socmedparalelA_tugas akhir
1705552010_socmedparalelA_tugas akhir1705552010_socmedparalelA_tugas akhir
1705552010_socmedparalelA_tugas akhir
 

Database dan MySQL

  • 1. 1 BAB 1 MYSQL 1.1 Pendahuluan MySQL dikembangkan oleh sebuah perusahaan Swedia bernama MySQL AB, yang kala itu bernama TcX DataKonsult AB, sejak sekitar 1994–1995, meski cikal bakal kodenya bisa disebut sudah ada sejak 1979. Tujuan mula-mula TcX membuat MySQL pada waktu itu juga memang untuk mengembangkan aplikasi Web untuk klien TcX adalah perusahaan pengembang software dan konsultan database. Kala itu Michael Widenius, atau ―Monty‖, pengembang satu-satunya di TcX, memiliki aplikasi UNIREG dan rutin ISAM yang dibuat sendiri dan sedang mencari antarmuka SQL untuk ditempelkan di atasnya. Mula-mula TcX memakai mSQL, atau ―mini SQL‖. Barangkali mSQL adalah satu-satunya kode database open source yang tersedia dan cukup sederhana saat itu, meskipun sudah ada Postgres. Namun ternyata, menurut Monty, mSQL tidaklah cukup cepat maupun fleksibel. Versi pertama mSQL bahkan tidak memiliki indeks. Setelah mencoba menghubungi David Hughes pembuat mSQL dan ternyata mengetahui bahwa David tengah sibuk mengembangkan versi dua, maka keputusan yang diambil Monty yaitu membuat sendiri mesin SQL yang antarmukanya mirip dengan mSQL tapi memiliki kemampuan yang lebih sesuai kebutuhan. Lahirlah MySQL. Nama MySQL (baca: mai es ki el) tidak jelas diambil dari mana. Ada yang bilang ini diambil dari huruf pertama dan terakhir nama panggilan Michael Widenius, Monty. Ada lagi yang bilang kata My diambil dari nama putri Monty, yang memang diberi nama My—karena Monty memang aslinya seorang Finlandia. Tapi sebetulnya kalau source code MySQL dilirik, prefiks my memang sudah terbubuhi di mana-mana
  • 2. 2 prefiks ini sering menjadi prefiks umum kalau seseorang membuat kode kustom tersendiri untuk sesuatu. Kalau Anda betul-betul penasaran mana yang benar, mungkin bisa bertanya langsung kepada Monty. MySQL versi 1.0 dirilis Mei 1996 secara terbatas kepada empat orang. Baru di bulan Oktober versi 3.11.0 dilepas ke publik. Namun mula-mula kode ini tidak diberikan di bawah lisensi General Public License, melainkan lisensi khusus yang intinya kurang lebih begini: ―Source code MySQL dapat dilihat dan gratis, serta server MySQL dapat dipakai tanpa biaya tapi hanya untuk kebutuhan nonkomersial. Untuk kebutuhan komersial (misal : mengemas dan menjual MySQL, atau menyertakan MySQL dalam program komersial lain) Anda harus bayar lisensi.‖ Sementara distribusi Windows MySQL sendiri dirilis secara shareware. Barulah pada Juni 2000 MySQL AB mengumumkan bahwa sejak versi 3.23.19, MySQL adalah software bebas berlisensi GPL. Artinya, ―Source code MySQL dapat dilihat dan gratis, serta server MySQL dapat dipakai tanpa biaya untuk kebutuhan apa pun. Tapi jika Anda memodifikasi source code, Anda juga harus melepasnya di bawah lisensi yang sama, yaitu GPL.‖ Kini perusahaan MySQL AB, yang beranggotakan sekitar 10 programmer dan 10 karyawan lain itu, memperoleh pemasukan terutama dari jasa konsultasi seputar MySQL. Versi publik pertama, yang hanya berjalan di Linux dan Solaris serta sebagian besar masih belum terdokumentasi itu, dengan berangsur-angsur diperbaiki dan ditambah fitur demi fiturnya tapi tetap dengan fokus utama pengembangan pada kelangsingan dan kecepatan. Artinya, fitur yang menyebabkan MySQL menjadi lambat tidaklah ditambahkan, atau ditunda dulu, atau ditambahkan tapi menjadi fitur yang opsional. Versi awal MySQL ini, meski sudah bisa dipakai untuk aplikasi Web sederhana, belumlah memadai sama sekali untuk aplikasi bisnis. Contohnya, JOIN sederhana sudah ada, tapi tidak ada HAVING baru di bulan Desember ditambahkan. Sudah ada tipe data TIMESTAMP dan kolom autoupdate, tapi tidak ada system- generated number (sequence) baru di akhir 1996 juga ditambahkan modifier kolom
  • 3. 3 AUTO_INCREMENT. Sudah ada LIMIT tapi GROUP BY dan ORDER BY memiliki keterbatasan. Dan seterusnya. Barulah di versi-versi akhir 3.22—sepanjang 1998–1999—MySQL menjadi semakin popular dan dilirik orang. Stabilitasnya sudah baik. Kecepatannya meningkat. Sudah tersedia di berbagai platform, termasuk Windows. Seri 3.22 ini banyak dipakai di berbagai instalasi, mungkin hingga sekarang, sehingga MySQL AB tetap memberikan dukungan technical support untuk seri ini. 1.2 Relational Database Management System (RDBMS) MySQL adalah Relational Database Management System (RDBMS) yang didistribusikan secara gratis dibawah lisensi GPL (General Public License). Dimana setiap orang bebas untuk menggunakan MySQL, namun tidak boleh dijadikan produk turunan yang bersifat komersial. MySQL sebenarnya merupakan turunan salah satu konsep utama dalam database sejak lama, yaitu SQL (Structured Query Language). SQL adalah sebuah konsep pengoperasian database, terutama untuk pemilihan atau seleksi dan pemasukan data, yang memungkinkan pengoperasian data dikerjakan dengan mudah secara otomatis. Keandalan suatu sistem database (DBMS) dapat diketahui dari cara kerja optimizer-nya dalam melakukan proses perintah-perintah SQL, yang dibuat oleh user maupun program-program aplikasinya. Sebagai database server, MySQL dapat dikatakan lebih unggul dibandingkan database server lainnya dalam query data. Hal ini terbukti untuk query yang dilakukan oleh single user, kecepatan query MySQL bisa sepuluh kali lebih cepat dari PostgreSQL dan lima kali lebih cepat dibandingkan Interbase.
  • 4. 4 1.3 Fitur MySQL Kalau di seri 3.22 MySQL mulai diadopsi banyak orang dan meningkat populasi penggunanya, maka di seri 3.23 dan 4.0-lah terjadi banyak peningkatan dari sisi teknologi. Ini tidak terlepas dari tuntutan pemakai yang semakin mengandalkan MySQL, namun membutuhkan fitur-fitur yang lebih banyak lagi. Seri 3.23. Di seri 3.23 MySQL menambahkan tiga jenis tabel baru: pertama MyISAM, yang sampai sekarang menjadi tipe tabel default; kedua BerkeleyDB, yang pertama kali menambahkan kemampuan transaksi pada MySQL; dan ketiga InnoDB, primadona baru yang potensial. Seri 4.x. Di seri yang baru berjalan hingga 4.0 tahap alfa ini, pengembang MySQL berjanji akan menjadikan MySQL satu derajat lebih tinggi lagi. Fitur-fitur yang sejak dulu diminta akan dikabulkan, seperti subselek (di 4.1), union (4.0), foreign key constraint (4.0 atau 4.1—meski InnoDB sudah menyediakan ini di 3.23.x), stored procedure (4.1), view (4.2), cursor (4.1 atau 4.2), trigger (4.1). MySQL AB tetap berdedikasi mengembangkan dan memperbaiki MySQL, serta mempertahankan MySQL sebagai database open source terpopuler. 1.4 Keistimewaan MySQL Sebagai database server yang memiliki konsep database modern, MySQL memiliki banyak sekali keistimewaan. Berikut ini beberapa keistimewaan yang dimiliki oleh MySQL, antara lain : a. Portabilitas, MySQL dapat berjalan stabil pada berbagai sistem operasi seperti Windows, Linux, FreeBSD, Mac Os X Server, Solaris, Amiga, dan masih banyak lagi. b. Perangkat lunak sumber terbuka, MySQL didistribusikan sebagai perangkat lunak sumber terbuka, dibawah lisensi GPL sehingga dapat digunakan secara gratis.
  • 5. 5 c. Multi-user, MySQL dapat digunakan oleh beberapa pengguna dalam waktu yang bersamaan tanpa mengalami masalah atau konflik. d. Performance tuning, MySQL memiliki kecepatan yang menakjubkan dalam menangani query sederhana, dengan kata lain dapat memproses lebih banyak SQL per satuan waktu. e. Ragam tipe data, MySQL memiliki ragam tipe data yang sangat kaya, seperti signed / unsigned integer, float, double, char, text, date, timestamp, dan lain- lain. f. Perintah dan Fungsi, MySQL memiliki operator dan fungsi secara penuh yang mendukung perintah Select dan Where dalam perintah (query). g. Keamanan, MySQL memiliki beberapa lapisan keamanan seperti level subnetmask, nama host, dan izin akses user dengan sistem perizinan yang mendetail serta sandi terenkripsi. h. 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. i. Konektivitas, MySQL dapat melakukan koneksi dengan klien menggunakan protokol TCP/IP, Unix soket (UNIX), atau Named Pipes (NT). j. Lokalisasi, MySQL dapat mendeteksi pesan kesalahan pada klien dengan menggunakan lebih dari dua puluh bahasa. Meski pun demikian, bahasa Indonesia belum termasuk di dalamnya. k. Antar Muka, MySQL memiliki antar muka (interface) terhadap berbagai aplikasi dan bahasa pemrograman dengan menggunakan fungsi API (Application Programming Interface).
  • 6. 6 l. 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. m. Struktur tabel, MySQL memiliki struktur tabel yang lebih fleksibel dalam menangani ALTER TABLE, dibandingkan basis data lainnya semacam PostgreSQL ataupun Oracle. Dengan keistimewaan di atas ada beberapa alasan yang menjadikan MySQL sehingga sangat populer, diantaranya : a. Bersifat free dan open source (FOSS). b. Banyak digunakan di web hosting dengan paket yang sangat ekonomis. c. Mendukung berbagai storage engine yang bisa kita ganti pada level table. d. Memiliki komunitas pengguna yang luas dan saling membantu. e. Besar dan luasnya komunitas pengembang / developer MySQL. f. Waktu yang singkat dalam siklus pengembangan dan perbaikan kesalahan. g. Arsitektur yang sangat baik dengan pilihan berbagai storage engine. h. Kaya akan fitur dan utilitas baik dari komunitas maupun korporasi. i. Memiliki support berbayar untuk pelanggan korporasi (corporate customers) sehingga terjamin. 1.5 Ketentuan Memberi Perintah dalam MySQL Seperti halnya dalam membuat setiap program kita harus terlebih dahulu mengetahui ketentuan - ketentuan yang harus dibuat dalam memberi perintah kepada program tersebut. Begitu halnya juga seperti MySQL, berikut ini merupakan beberapa ketentuan dalam memberi perintah di MySQL : a. Setiap perintah harus diakhiri dengan tanda titik koma (;) atau dengan memberikan perintah g atau G. Namun, pada umumnya user menggunakan tanda titik koma untuk mengakhiri perintah pada MySQL.
  • 7. 7 b. Setiap perintah akan disimpan dalam buffer (memori sementara) untuk menyimpan histori perintah-perintah yang pernah diberikan. c. Perintah-perintah yang bukan SQL dapat dipendekkan dengan menggunakan dan huruf depan perintah. d. Perintah help atau h digunakan untuk menampilkan daftar dan aturan memberikan perintah di lingkungan MySQL. e. Perintah-perintah dalam lingkungan MySQL tidak menerapkan aturan case sensitive, tetapi case insensitive yaitu perintah bisa dituliskan dalam huruf besar atau pun huruf kecil. f. Aturan case sensitive diterapkan pada penamaan objek-objek dalam database seperti nama database atau nama table, namun aturan ini hanya ada dalam lingkungan Unix dan Linux. g. Untuk melihat perintah-perintah yang sudah pernah kita ketikkan, tekan tombol tanda panah atas. 1.6 Bahasa Pemrograman Terdapat beberapa API (Application Programming Interface) tersedia yang memungkinkan aplikasi-aplikasi komputer yang ditulis dalam berbagai bahasa pemrograman untuk dapat mengakses basis data MySQL. Beberapa aplikasi komputer tersebut 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.
  • 8. 8 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. 1.7 Normalisasi dan Pemodelan Normalisasi, skema, entiti-atribut, primary key (PK) dan foreign key (FK), tabel entiti, tabel relasi, OLTP & OLA semuanya adalah istilah-istilah yang umum dijumpai dalam pemodelan fisik database. Sayangnya, banyak programer pemula tidak memiliki kemampuan modeling. Sehingga jika disuruh mendesain skema database (sekumpulan tabel-tabel beserta nama field dan tipenya) hasilnya tidak optimal bahkan berantakan. Skema yang buruk berakibat terjadinya duplikasi data, tidak scalable, performance yang buruk, tidak memenuhi requirements, dsb. Modeling tentunya tidak bisa diajarkan dalam 1–2 hari. Anda perlu membaca buku-buku mengenai pemodelan database dan belajar dari pengalaman maupun dari model-model yang sudah ada. Tapi beberapa nasihat yang mungkin bisa saya berikan di sini adalah sebagai berikut : Satu, langkah pertama dalam pemodelan adalah menemukan entiti-entiti. Entiti bisa dibilang ―objek‖ yang akan kita geluti. Misalnya, customer, produk, dan transaksi. Setiap entiti umumnya ditaruh dalam satu tabel, tabel ini disebut tabel entiti. Langkah kedua adalah mencari atribut-atribut entiti tersebut. Misalnya tabel customers memiliki atribut sapaan, nama, alamat (jalan + kota + kodepos + propinsi + negara), tanggal record ini ditambahkan, dsb. Langkah ketiga adalah mencari relasi di antara entiti-entiti. Umumnya relasi adalah satu dari: 1-1, 1-many, many-many. Misalnya, relasi antara transaksi dan produk adalah many-many, artinya sebuah transaksi pembelian dapat berisi banyak produk dan sebuah produk tentu saja dapat dibeli dalam lebih dari satu transaksi. Setiap relasi juga akan ditempatkan pada tabel, yaitu tabel relasi.
  • 9. 9 Dua, dalam pemodelan tidak ada istilah model yang benar atau salah. Yang ada adalah model yang tepat dan tidak tepat untuk keperluan tertentu. Misalnya, untuk aplikasi sederhana modelnya sederhana. Semakin kompleks aplikasi, model pun semakin rumit (jumlah entiti, relasi, dan atribut akan bertambah). Pada umumnya, seiring kompleksitas bertambah, yang tadinya atribut akan berubah menjadi entiti dikarenakan adanya kenyataan hubungan 1-many/many-many antara atribut. Contohnya, tabel customers memiliki atribut alamat. Jika kita ingin mendukung banyak alamat untuk satu customers, maka alamat akan menjadi entiti dan menempati tabel sendiri. Lalu kita membuat tabel relasi customers-alamat.
  • 10. 10 BAB 2 SINTAKS DALAM MYSQL Berikut ini akan diberikan pengenalan tentang sintaks SQL dalam MySQL yang sederhana dan paling sering digunakan baik untuk penggunaan biasa ataupun untuk administratif. Berikut adalah beberapa sintaks dasar SQL dalam MySQL. 2.1 Level Database 2.1.1 Membuat database Untuk membuat database baru, sehingga tidak berlaku jika database sudah ada atau anda tidak memiliki privilege. Sintaksnya : create database nama_db; 2.1.2 Menghapus database Untuk menghapus database beserta seluruh table di dalamnya. Perintah ini tidak berlaku jika database tidak ada atau anda tidak memiliki privilege. Sintaksnya : drop database nama_db; 2.1.3 Menggunakan database Untuk menjadikan database menjadi default dan referensi dari table yang nantinya anda gunakan. Perintah ini tidak berlaku jika database tidak ada atau anda tidak memiliki privilege. Sintaksnya :
  • 11. 11 use nama_db; 2.1.4 Menampilkan database Untuk menampilkan daftar yang ada dalam system saat itu. Sintaksnya : show databases; 2.2 Level Tabel 2.2.1 Membuat tabel Untuk membuat table minimal anda harus menentukan namanya dan tipe kolom yang anda inginkan. Sintaks yang paling sederhana (tanpa ada definisi lain) adalah : CREATE TABLE nama_tbl (kolom1 tipekolom1(),kolom2 tipekolom2(), …) Contoh, Anda ingin membuat table dengan nama profil yang memiliki kolom nama (bertipe char, lebar 20), kolom umur (bertipe integer), kolom jenis_kelamin (bertipe enum, berisi M dan F). Sintaksnya : CREATE TABLE profil ( nama CHAR(20), umur INT NOT NULL, jenis_kelamin ENUM(‗F‘,‘M‘) ) Sedangkan perintah yang agak lengkap dalam membuat sebuah table adalah dengan menyertakan definisi tertentu. Misalnya perintah seperti ini : CREATE TABLE peserta ( Nama CHAR(30) NOT NULL, BidangStudi ENUM(‗TS‘,‘WD‘) NOT NULL, PRIMARY KEY (No), INDEX (Nama, BidangStudi) )
  • 12. 12 Perintah di atas berarti membuat table peserta dengan kolom No sebagai PRIMARY KEY yaitu indeks table yang unik yang tidak bisa diduplikat dengan atribut AUTO_INCREMENT yaitu kolom yang otomatis dapat mengurutkan angka yang diisikan padanya. Sedangkan kolom Nama dan BidangStudi dijadikan indeks biasa. 2.2.2 Membuat indeks pada tabel Menambahkan indeks pada table yang sudah ada baik yang unik ataupun yang biasa. Sintaksnya : CREATE INDEX nama_index ON nama_tbl (nama_kolom) CREATE UNIQUE INDEX nama_index ON nama_tbl (nama_kolom) 2.2.3 Menghapus tabel Untuk menghapus table dalam database tertentu. Jika dilakukan maka semua isi, indeks dan atribut lain akan terhapus. Sintaksnya : DROP TABLE nama_tbl 2.2.4 Menghapus indeks Untuk menghapus indeks pada suatu table. Sintaksnya : DROP INDEX nama-index ON nama_tbl 2.2.5 Melihat informasi tabel Untuk melihat table apa saja yang ada di database tertentu. Sintaksnya : SHOW TABLES FROM nama_db
  • 13. 13 Sedangkan untuk melihat deskripsi table atau informasi tentang kolom gunakan sintaks : DESC nama_tbl nama_kolom atau SHOW COLUMNS FROM nama_tbl FROM nama_db 2.2.6 Mendapatkan atau menampilkan informasi dari tabel Untuk menampilkan isi table dengan option-option tertentu. Misalnya untuk menampilkan seluruh isi table digunakan : SELECT * FROM nama_tbl Untuk menampilkan kolom-kolom tertentu saja : SELECT kolom1,kolom2,... FROM nama_tbl Untuk menampilkan isi suatu kolom dengan kondisi tertentu SELECT kolom1 FROM nama_tbl WHERE kolom2=isikolom 2.2.7 Modifikasi struktur tabel Dapat digunakan untuk mengganti nama table atau mengubah strukturnya seperti manambah kolom atau indeks, menghapus kolom atau indeks, mengubah tipe kolom dsb. Sintaks umum : ALTER TABLE nama_tbl action Untuk menambah kolom baru di tempat tertentu dapat menggunakan : ALTER TABLE nama_tbl ADD kolom_baru type() definisi
  • 14. 14 Untuk menambah kolom_baru bertipe integer setelah kolom1 digunakan : ALTER TABLE nama_tbl ADD kolom_baru INT NOT NULL AFTER kolom1 Untuk menambah indeks baru pada table tertentu baik yang unik ataupun yang biasa: ALTER TABLE nama_tbl ADD INDEX nama_index (nama_kolom) ALTER TABLE nama_tbl ADD UNIQUE nama_indeks (nama_kolom) ALTER TABLE nama_tbl ADD PRIMARY KEY nama_indeks (nama_kolom) Untuk mengubah nama kolom dan definisinya, misalnya mengubah nama kolom_baru dengan tipe integer menjadi new_kolom dengan tipe char dengan lebar 30 digunakan: ALTER TABLE nama_tbl CHANGE kolom_baru new_kolom CHAR(30) NOT NULL Untuk menghapus suatu kolom dan seluruh atributnya, misal menghapus kolom1 : ALTER TABLE nama_tbl DROP kolom1 Untuk menghapus indeks baik yang unik ataupun yang biasa digunakan : ALTER TABLE nama_tbl DROP nama_index ALTER TABLE nama_tbl DROP PRIMARY KEY 2.2.8 Modifikasi informasi dalam tabel Untuk menambah record atau baris baru dalam table, sintaksnya : INSERT INTO nama_tbl (nama_kolom) VALUES (isi_kolom) atau INSERT INTO nama_tbl SET nama_kolom=isi_kolom
  • 15. 15 Misalnya untuk menambah dua baris pada table profil dengan isi nama = deden & ujang dan isi umur = 17 & 18 adalah : INSERT INTO profil (nama,umur) VALUES (deden,17), (ujang,18) atau INSERT INTO profil SET nama=deden, umur=17 INSERT INTO profil SET nama=ujang, umur=18 Untuk memodifikasi record atau baris yang sudah ada yang bersesuaian dengan suatu kolom. Misalnya untuk mengubah umur deden menjadi 18 pada contoh di atas dapat digunakan sintaks : UPDATE profil SET umur=18 WHERE nama=deden Untuk menghapus record atau baris tertentu dalam suatu table. Misalnya untuk menghapus baris yang ada nama ujang digunakan sintaks : DELETE FROM profil WHERE nama=ujang Jika WHERE tidak disertakan maka semua isi dalam table profil akan terhapus. 2.3 Tipe-tipe Dalam MySQL MySQL dapat mengetahui beberapa tipe data antara lain : 2.3.1 Data numerik MySQL dapat menerima masukan berupa angka-angka yang dibagi atas integer (angka tanpa pecahan) dan floating-point (angka dengan pecahan). MySQL juga mengerti notasi scientific yaitu integer atau floating-point yang diikuti tanda ‗e‘ atau ‗E‘, tanda ‗+‘ atau ‗-‗. Misalnya angka 1.34E+12 atau 3.23e-5.
  • 16. 16 2.3.2 Data karakter/string Merupakan deretan huruf yang membentuk kata yang diapit oleh tanda petik (‗ ‘) atau tanda petik ganda (― ‖). 2.3.3 Data waktu Merupakan data yang berisi tanggal (date) dan jam (time) misalnya ―2001-10-15‖ untuk tanggal dengan format YYYY-MM-DD dan ―12:45:15‖ untuk jam dengan format hh:mm:ss. 2.4 Tipe-tipe Kolom MySQL Setiap table yang dibuat dalam database selalu terdiri atas kolom-kolom. Katika anda membuatnya dengan perintah CREATE TABLE, anda harus menentukan tipe masing- masing kolom. Tiap tipe kolom memiliki karakteristik berikut : a. Jenis harga apa yang dapat diisikan b. Berapa banyak ruang yang dapat menampung harga tersebut c. Bagaimana harga dari tipe tersebut dibandingkan dan disaring d. Apakah tipe tersebut boleh mengisi dengan NULL atau tidak e. Apakah tipe tersebut boleh diindeks atau tidak Secara garis besar kolom MySQL terbagi menjadi tiga tipe yaitu : a. Tipe kolom Numerik b. Tipe kolom Karakter/String c. Tipe kolom Waktu
  • 17. 17 2.4.1 Tipe numerik Tipe ini untuk harga integer dan floating-point. Untuk integer kolom haruslah PRIMARY KEY atau indeks yang unik jika ia diberi atribut AUTO_INCREMENT (dapat otomatis mengurutkan angka). Jika diberikan atribut UNSIGNED berarti angka tidak boleh negatif. Sedangkan atribut ZEROFILL menandakan bahwa angka diawali dengan angka nol. a. TINYINT, berarti integer dengan range yang sangat kecil yaitu –27 sampai 27-1 atau 0 sampai 28-1 jika UNSIGNED. Atribut yang dibolehkan adalah AUTO_INCREMENT,UNSIGNED, dan ZEROFILL. Harga default adalah NULL jika bisa atau 0 jika NOT NULL dengan peyimpanan 1 byte. b. SMALLINT, berarti integer dengan range yang kecil yaitu –215 sampai 215-1 atau 0 sampai 216-1 jika UNSIGNED. Atribut yang dibolehkan adalah AUTO_INCREMENT,UNSIGNED, dan ZEROFILL. Harga default adalah NULL jika bisa atau 0 jika NOT NULL dengan peyimpanan 2 byte. c. MEDIUMINT, berarti integer dengan range yang sangat kecil yaitu –223 sampai 223-1 atau 0 sampai 224-1 jika UNSIGNED. Atribut yang dibolehkan adalah AUTO_INCREMENT,UNSIGNED, dan ZEROFILL. Harga default adalah NULL jika bisa atau 0 jika NOT NULL dengan peyimpanan 3 byte. d. INT, berarti integer dengan range yang normal yaitu –231 sampai 231-1 atau 0 sampai 232-1 jika UNSIGNED. Atribut yang dibolehkan adalah AUTO_INCREMENT,UNSIGNED, dan ZEROFILL. Harga default adalah NULL jika bisa atau 0 jika NOT NULL dengan peyimpanan 4 byte. e. BIGINT, berarti integer dengan range yang sangat kecil yaitu –263 sampai 263-1 atau 0 sampai 264-1 jika UNSIGNED. Atribut yang dibolehkan adalah AUTO_INCREMENT,UNSIGNED, dan ZEROFILL. Harga default adalah NULL jika bisa atau 0 jika NOT NULL dengan peyimpanan 8 byte.
  • 18. 18 f. FLOAT, berarti floating-point dengan range kecil yaitu antara +1.175494351E-38 sampai +3.402823466E+38 serta dengan single presisi. Atribut yang dibolehkan adalah ZEROFILL. Harga default NULL jika bisa atau 0 jika NOT NULL. Tempat penyimpanan 4 byte. g. DOUBLE, berarti floating-point dengan range besar yaitu antara +2.22507385072014E-308 sampai +1.7976931348623157E308 serta dengan double presisi. Atribut yang dibolehkan adalah ZEROFILL. Harga default NULL jika bisa atau 0 jika NOT NULL. Tempat penyimpanan 8 byte. h. DECIMAL(M,D) atau NUMERIC(M,D), berarti floating-point yang tersimpan sebagai string (1 byte untuk setiap digit, tanda desimal, atau tanda ‘-‗). Range harga sama seperti DOUBLE. Atribut yang dibolehkan adalah ZEROFILL. Tempat penyimpanan sebesar M byte. Jika D diisi 0 berarti tidak punya nilai desimal. 2.4.2 Tipe string Tipe data berikut ini merupakan tipe data yang digunakan sebagai tempat penyimpanan karakter, antara lain : a. CHAR(M), karakter dengan panjang 0 sampai M byte. Atribut yang dibolehkan adalah BINARY. Harga default adalah NULL jika bisa atau ― ― jika NOT NULL. Tempat pemyimpanan M byte. b. VARCHAR, variabel karakter dengan panjang 0 sampai M byte. Atribut yang dibolehkan adalah BINARY. Harga default adalah NULL jika bisa atau ― ― jika NOT NULL. Tempat pemyimpanan M+1 byte. c. TINYTEXT, teks berukuran kecil dengan panjang 0 sampai 28-1 byte. Harga default adalah NULL jika bisa atau ― ― jika NOT NULL. Tempat penyimpanan sebanyak panjang harga plus 1 byte.
  • 19. 19 d. TEXT, teks yang normal dengan panjang 0 sampai 216-1 byte. Harga default adalah NULL jika bisa atau ― ― jika NOT NULL. Tempat penyimpanan sebanyak panjang harga plus 2 byte. e. MEDIUMTEXT Teks berukuran sedang dengan panjang 0 sampai 224-1 byte. Harga default adalah NULL jika bisa atau ― ― jika NOT NULL. Tempat penyimpanan sebanyak panjang harga plus 3 byte. f. LONGTEXT, teks berukuran besar dengan panjang 0 sampai 232-1 byte. Harga default adalah NULL jika bisa atau ― ― jika NOT NULL. Tempat penyimpanan sebanyak panjang harga plus 4 byte. g. ENUM(―harga1‖,‖harga2‖,…), berarti kolom hanya boleh diisi dengan salah satu dari harga yang ada. Harga default adalah NULL jika bisa atau harga1 jika NOT NULL. Tempat penyimpanan adalah 1 byte untuk enumerasi dengan anggota 1 sampai 255 dan 2 byte untuk enumerasi dengan anggota 256 sampai 65535. h. SET(―harga1‖,‖harga2‖,…), berarti kolom boleh dikosongi atau diisi dengan beberapa harga dari daftar harga yang ada. Harga default adalah NULL jika bisa atau ‖ ― jika NOT NULL. Tempat penyimpanan adalah 1 byte untuk set dengan anggota 1 sampai 8, 2 byte untuk set dengan anggota 9 sampai 16, 3 byte untuk set dengan anggota 17 sampai 24, 4 byte untuk set dengan anggota 25 sampai 32, atau 8 byte untuk set dengan anggota 33 sampai 64. 2.4.3 Tipe Waktu Tipe data berikut ini merupakan tipe data yang digunakan sebagai tempat penyimpanan data waktu, antara lain :
  • 20. 20 a. DATE, untuk kolom tanggal dengan format YYYY-MM-DD dan range antara ―1000-01-01‖ sampai ―9999-12-31‖. Harga default adalah NULL jika bisa atau ―0000-00-00‖ jika NOT NULL. Tempat penyimpanan 3 byte. b. TIME, untuk kolom jam dengan format hh:mm:ss atau -hh:mm:ss untuk harga negatif. Range harga antara ―-838:59:59‖ sampai ―838:59:59‖. Harga default adalah NULL jika bisa atau ―00:00:00‖ jika NOT NULL. Tempat penyimpanan 3 byte. c. DATETIME, gabungan antar hari dan jam dengan format YYYY-MM-DD hh:mm:ss dan range antar ―1000-01-01 00:00:00‖ sampai ―9999-12-31 23:59:59‖. Harga default adalah NULL jika bisa atau ―0000-00-00 00:00:00‖ jika NOT NULL. Tempat penyimpanan 8 byte. d. TIMESTAMP, hampir sama dengan DATETIME tapi dengan format YYYYMMDDhhmmss dan range antara 19700101000000 sampai suatu saat di tahun 2037. Harga default adalah hari dan jam saat itu. Tempat penyimpanan 4 byte. e. YEAR, untuk kolom tahun dengan format YYYY dan range antara 1900 sampai 2155. Harga default adalah NULL jika bisa atau 0000 jika NOT NULL. Tempat penyimpanan 3 byte.