IGOS Training Tool Kit
“RDBMS (Relational
DataBase Management
I. Pengantar RDBMS
1.1 Pendahuluan
SQL(Structured Query Language) adalah bahasa query yang standard yang digunakan sebagai suatu bahasa sederhana dan dasar, yang memungkinkan Anda untuk berkomunikasi dengan database, membaca, menulis, dan memperoleh informasi yang berguna dari database. Meskipun sifatnya nonprocedural, lebih mudah bekerja dengan SQL daripada dengan kebanyakan bahasa pemrograman seperti PHP, PERL, Java dan lain lain, namun kadangkala menyulitkan untuk beberapa kasus yang rumit bagi mereka yang baru mengenal SQL. Perintah atau statement SQL yang paling sederhana yang memungkinkan seorang user dapat menampilkan atau memperoleh data dari suatu tabel adalah perintah atau statement SELECT. Sesuai dengan namanya, dengan perintah SELECT seorang user dapat memilih data yang spesifik dari tabel untuk menampilkannya. Dengan mengasumsikan bahwa tabel dalam database Anda memiliki nama tabel 'mahasiswa', dengan struktur tabel sebagai berikut:
Kemudian Anda jalankan query seperti ini:
1.2 SQL92
SQL telah distandarisasi, dan versi saat ini mengacu pada SQL92. Beberapa database yang mendukung SQL seharusnya menyesuaikan dengan standard SQL saat ini. Standarisasi SQL telah mejadikan SQL sebagai perangkat atau tool istimewa yang digunakan dalam pengembangan dan desain web. Sebagian besar program atau software untuk pengembangan aplikasi web, terutama Allaire's Cold Fusion dan Macromedia Dreamweaver Ultradev, mengandalkan pada SQL atau perintahperintah SQL untuk menghubungkan dan memperoleh informasi dari database. Untuk informasi lebih detil tentang SQL92, kunjungi : http://developer.mimer.se/documentation/html_82/Mimer_SQL_Reference_Manual/Intro_S QL_Stds3.html
1.3 Relational Databases
1.3.1 Relational vs. flat file databases
Flat flie database adalah suatu database yang didesain menyertakan suatu tabel tunggal. Flat file database meletakkan seluruh data kedalam tabel tunggal, atau daftar, dengan kolomkolom yang merepresentasikan seluruh parameter. Sebuah flat file bisa terdiri dari banyak kolom, seringkali dengan duplikasi data yang cenderung menyebabkan kerusakan data (data corruption). Jika Anda memutuskan untuk menggabungkan data diantara dua flat file, maka Anda harus melakukan copy dan paste informasi yang relevan dari satu file ke file yang lainnya. Disini tidak ada otomatisasi diantara dua flat file. Jika Anda memiliki dua atau lebih flat file yang berisi data alamat klien, sebagai contoh, klien telah berpindah alamat, maka Anda harus merubah secara manual alamat klien tersebut yang ada dalam setiap flat file. Perubahan informasi dalam satu file tidak memiliki sangkut paut dengan file lainnya. Flat file menawarkan fungsionalitas untuk menyimpan informasi, memanipulasi kolomkolom, mencetak dan menampilkan informasi yang terformat, pertukaran informasi dengan orang lain melalui email dan melalui internet. Beberapa flat file bisa dikerjakan pada filefile eksternal, seperti text editor, agar memperluas fungsionalitas dan mengatur informasi yang berhubungan.Dilain pihak, suatu Relational database, menggabungkan tabeltabel dengan berbagai metode untuk dapat berkerjasama. Hubunganhubungan antar tabel data dapat dibandingkan, disatukan, dan ditampilkan dalam formform database. Sebagian besar relational database menawarkan fungsionalitas untuk berbagi (share) data:
melalui jaringan melalui internet dengan laptop dan perangkat elektronik lainnya seperti palm pilots Dengan softwaresoftware system yang lain Mendesain flat file database adalah sederhana, dan memerlukan sedikit pengetahuan desain database. Flat file dapat dikembangkan dengan hanya menggunakan satu database engine. Flat file dapat dibuat dalam relational database engine dengan tidak mengambil manfaat atau keuntungan dari konsepkonsep desain relasional. Mendesain suatu relational database memerlukan perencanaan yang lebih dari pada flat file database. Dengan flat file, menambah informasi sepertinya perlu dipertimbangkan. Dengan relational database, dapat menyimpan data kedalam tabeltabel sedemikian rupa sehingga hubungan antar tabel dapat dimengerti. Membangun suatu relational database sangat tergantung pada kemampuan Anda untuk menetapkan suatu model relasional. Model harus benarbenar menggambarkan penuh bagaimana data diorganisir dalam ketentuan struktur data, intergriti, query, manipulasi, dan penyimpanan.
Relational database memungkinkan useruser untuk mendefinisikan kolomkolom record tertentu sebagai key atau index, melakukan pencarian, menghubungkan recordrecord antar tabel dan menetapkan batasanbatasan integritas. Queryquery pencarian lebih cepat dan lebih akurat jika berdasarkan nilainilai yang telah diindex. Recordrecord tabel dapat dengan mudah dihubungkan dengan nilainilai yang telah diindex. Batasanbatasan integritas dapat ditetapkan untuk menjamin bahwa hubungan antar tabel tersebut syah. Jika Anda dapat membuat sebuah hubungan satukebanyak (onetomany) dalam tabeltabel data Anda , sebaiknya Anda menggunakan relational database karena flat file tidak cukup untuk menangani seluruh pemrosesan data yang Anda butuhkan.
Relational database menawarkan proses reporting yang lebih baik, dengan berbagai report generator yang memfilter dan menampilkan kolomkolom pilihan. Relational database menawarkan kemampuan membuat modulemodule reporting Anda sendiri. Sebagian besar relational database juga menawarkan kemampuan mengimpor dan mengekspor data dari software lainnya.
Terdapat tiga sistem relational database yang utama: proprietary, open source, dan embedded. Relational database yang proprietary biasanya memerlukan penggunaan bahasabahasa pengembangan yang juga bersifat proprietary guna menyempurnakan SQL. Sebagai contoh MS Access yang menggabungkan visual basic dengan SQL. Database database open source, seperti MySQL, didistribusikan dengan gratis agar mendorong pengembangan user. Embedded dan relational database dikemas sebagai bagian dari paket paket software lainnya, seperti paketpaket software taxpreparation. Vendor mensuplai database, dan seluruh perlengkapanperlengkapan manipulasi yang berhubungan, untuk mengontrol struktur database. Databasedatabase ini biasanya disertakan oleh perlengkapanperlengkapan yang mana menyediakan audit bekasbekas transaksi.
1.3.2 Normalisasi database
Jika Anda bekerja dengan database, maka Anda harus familiar dengan istilah “normalisasi”. Mungkin orang sering bertanya kepada Anda, “apakah databasenya sudah dinormalisasi ?” atau, “apakah databasenya dalam BCNF ?” . Namun dengan mengetahui prinsipprinsip dari normalisasi, dan dengan menerapkannya pada tugastugas desain database Anda maka semuanya itu bukanlah hal yang sulit, dan dapat meningkatkan performa DBMS Anda.
Normalisasi adalah suatu proses mengefisiensikan pengorganisasian data dalam suatu database. Ada dua tujuan dari proses normalisasi:
Untuk mengeliminasi atau menghilangkan duplikasi data (menyimpan data yang
sama kedalam lebih dari satu tabel)
Untuk menjamin bahwa ketergantungan data dapat dimengerti atau masuk akal
(hanya menyimpan data yang berhubungan dalam suatu tabel)
Kedua tujuan normalisasi tersebut mengurangi jumlah konsumsi space database, dan menjamin bahwa data secara logika disimpan.
Komunitas database telah mengembangkan petunjukpetunjuk untuk menjamin bahwa database dinormalisasi. Itu semua diacu sebagai bentukbentuk normal atau Nornal Forms (NF) dan serangkain petunjuk tersebut diberi nomor dari nomor satu (bentuk normalisasi yang paling rendah) sampai nomor lima (bentuk normal kelima atau 5NF). Dalam aplikasi aplikasi praktis, Anda akan sering menemukan 1NF, 2Nf, dan 3NF kadang bersama dengan 4 NF. Bentuk normal kelima sangat jarang ditemukan. Bentuk normal kesatu (1NF) menentukan aturantauran yang paling dasar untuk suatu pengaturan database: ● Menghilangkan duplikasi kolomkolom dalam tabel yang sama
● Membuat tabel terpisah untuk setiap grup data yang berhubungan dan
kolom yang unik (primary key)
Bentuk normal kedua (2NF) selanjutnya memusatkan perhatian pada konsep menghilangkan duplikasi data:
● Menemukan semua syaratsyarat bentuk normal kesatu
● Hilangkan subset data yang diterapkan pada beberapa baris dari sebuah tabel dan
letakkan kedalam tabel terpisah
● Buatlah relasi antara tabeltabel baru dan tabeltabel pendahulunya melalui
penggunaan Foreign Keys Bentuk normal ketiga (3NF) melakukan satu langkah besar selanjutnya: ● Menemukan semua syaratsyarat bentuk normal kedua ● Menghilangkan kolomkolom yang tidak secara langsung tergantung pada primary key Terakhir, bentuk normal keempat (4NF) memiliki satu syarat tambahan: ● Menemukan semua syaratsyarat bentuk normal ketiga
● Suatu relasi adalah dalam bentuk normal keempat (4NF) jika relasi itu tidak
memiliki ketergantungan banyak nilai (value)
Ingat, petunjuk normalisasi ini adalah bersifat komulatif. Untuk suatu database menjadi bentuk normal kedua (2NF), pertama harus terpenuhi dahulu seluruh kriteria bentuk normal kesatu (1NF).
1.3.3 Relasi Antar Tabel
Selain Anda mengetahui bentuk normal hal lain yang perlu Anda pahami adalah tipetipe relasi antar tabel. Tipe relasi amat penting untuk menjaga keutuhan Database Anda. Ringkasnya ada 3 tipe relasi yaitu relasi satukesatu, relasi satukebanyak dan relasi banyakkebanyak. 1.3.3.1 Relasi satukebanyak (OnetoMany) Relasi disebut relasi satu ke banyak apabila satu nilai pada sebuah kolom merujuk ke dua atau lebih kolom pada tabel yang lain, contoh sebagai berikut : Tabel A : perusahaan_ienisusaha
id_perusahaan nama_perusahaan id_jenis
1 Astra 1
2 Festo 1
4 Nurul Fikri Cipta Inovasi 2 5 HAFANA 2 6 Telkom 3 Tabel B : jenisusaha id_jenis nama_jenis 1 Manufaktur 2 Teknologi Informasi 3 Telekomunikasi Perhatikan bahwa id_jenis pada tabel perusahaan_jenisusaha merujuk pada id_jenis pada tabel jenisusaha untuk mengetahui atau memperoleh nama jenis usaha (nama_jenis). 1.3.3.2 Relasi satukesatu (OnetoOne) Relasi satukesatu terjadi apabila satu baris pada suatu tabel hanya merujuk ke satu baris di tabel lainnya, contoh sebagai berikut: Tabel A : eksekutif id_eksekutif nama 1 Akhtar Naufal Shagufta 2 Hana Fahmida Zahra 3 Umar Fawaz Tabel B : asisten
id_asisten nama_asisten id_eksekutif
1 Ayu 1
2 Fitria 2
3 Sandra 3
Perhatikan id_eksekutif pada tabel eksekutif tepat berelasi satu ke tabel asisten pada kolom id_eksekutif.
1.3.3.3 Relasi banyakkebanyak (ManytoMany)
Relasi banyakkebanyak terjadi bila beberapa baris pada sebuah tabel berelasi ke beberapa baris pada tabel yang lain. Jika terjadi kasus seperti ini Anda tidak dapat merepresentasikan relasi ini hanya dengan dua tabel Anda memerlukan satu tabel lain yang mewakili relasi banyakkebanyak itu. Sebagai contoh Anda ingin merelasikan tabel surat_berita dan tabel klien, pada kasus ini beberapa klien dapat memilih beberapa surat_berita sehingga satu surat_berita pun dapat merujuk ke beberapa klien maka untuk menggambarkan relasi seperti itu gunakan satu tabel tambahan. Sehingga hasilnya adalah seperti berikut : Tabel A : klien id_klien nama_klien 1 Akhtar Naufal Shagufta 2 Hana Fahmida Zahra 3 Umar Fawaz Tabel B : surat_berita id_sb nama_sb 1 Komputer 2 Politik 3 Populer Tabel C : klien_surat_berita
id_ksb id_klien id_sb
1 1 1 2 1 3 3 2 1 4 2 3 5 3 2 6 3 3
II. Pengantar MySQL
2.1 Pendahuluan
MySQL merupakan Database Management System SQL open source yang paling populer, yang dikembangkan, didistribusikan, dan didukung oleh MySQL AB. MySQL AB adalah sebuah perusahaan komersial, yang didirikan oleh para pengembang MySQL. MySQL AB adalah perusahaan open source generasi kedua yang menyatukan nilainilai dan metodologi open source dengan suatu model bisnis yang sukses. Berikut ini fiturfitur utama MySQL: MySQL adalah relational database management system Software MySQL adalah open source Database server MySQL sangat cepat, reliable, dan mudah digunakan Database server cMySQL bekerja dalam client/server atau embedded system2.2 Penyesuaian dengan standarstandar SQL
MySQL mendukung entrylevel SQL92. Entrylevel berisi serangkaian keistimewaan keistimewaan yang mendefinisikan dasardasar pemenuhan SQL92. Oracle menyesuaikan dengan SQL89, yang mana adalah suatu subset dari tipe SQL92 dengan tambahan tipetipe spesifik. Beberapa tipe SQL92 dipetakan kedalam tipetipe oracle. PostgreSQL menggunakan suatu subset dari bahasa SQL9299 yang diperluas dan bahasa SQL 3. Sintak tipetipe data SQL92 dipetakan langsung kedalam tipe asli postgreSQL.
2.3 Programprogram klien MySQL
Programprogram klien MySQL dapat dipanggil atau dijalankan dari commandline, seperti dari sebuah console prompt Windows, atau dari sebuah UNIX prompt shell. Ketika Anda menjalankan suatu program klien, Anda dapat menentukan opsiopsi untuk mengontrol tindak tanduk dari program klien. Beberapa opsi menjelaskan kepada program klien tentang bagaimana menghubungi server MySQL. Beberapa opsi lainnya menjelaskan kepada program klien aksi yang manakah yang harus dilakukan.
2.3.1 Program klien
mysql
Program klien mysql memungkinkan Anda mengirimkan permintaanpermintaan (query) ke server MySQL, dan menerima hasilnya. Untuk menentukan opsiopsi yang didukung oleh program mysql, jalankan perintah dengan opsi –help. Sebagai contoh, untuk mencari tahu bagaimana menggunakan mysql , ketiklah perintah berikut ini:
shell> mysql help Untuk mengetahui versi dari program mysql, gunakan opsi –version: shell> mysql version Untuk menghubungi server menggunakan program klien, klien harus mengetahui pada komputer yang manakah server MySQL aktif atau berjalan. Sebuah koneksi atau hubungan bisa dilakukan secara lokal pada suatu server MySQL yang berjalan pada komputer yang sama dengan komputer yang sedang menjalankan program klien mysql, atau dapat dilakukan secara jarak jauh (remote) ke suatu server MySQL yang berjalan pada komputer yang berbeda dengan komputer yang sedang menjalankan program klien mysql, Anda tentunya harus memiliki user account (username dan password) yang terdaftar pada server MySQL tersebut untuk dapat melakukan koneksi ke server. Dua buah opsi yang menunjukkan kepada klien dimanakah server MySQL berjalan, begitu juga tipe koneksi yang dilakukan. host=nama_komputer atau h nama_komputer
Opsi ini menentukan pada komputer yang manakah server MySQL aktif atau berjalan. Nilai dari opsi ini dapat berupa nama komputer atau nomor IP. Nilai default adalah localhost. port=nomor_port atau P nomor_port Opsi ini menunjukkan nomor port yang manakah yang dapat dihubungi pada komputer server, ini hanya diterapkan untuk koneksi TCP/IP. Default nomor port MySQL adalah 3306. Dua buah opsi yang menyediakan informasi indentifikasi, yaitu username dan password atau user account yang Anda akan gunakan untuk dapat mengakses server. user=username atau u username Opsi ini menentukan username untuk account MySQL Anda. password=password atau ppassword Opsi ini menentukan password untuk account MySQL Anda. Berikut ini contohcontoh bagaimana menggunakan opsiopsi program klien mysql untuk melakukan koneksi:
Koneksi ke server menggunakan default nama komputer dan default username
tanpa password:
shell> mysql
Koneksi ke server pada komputer lokal dengan nama user 'naufal', dan meminta
mysql untuk menanyakan password Anda:
shell> mysql host=localhost password user=naufal
Koneksi ke server dengan opsi yang sama dengan contoh sebelumnya, tetapi
menggunakan bentuk opsi singkat:
shell> mysql h localhost p u naufal
Koneksi ke server dengan IP address yang spesifik, dengan nama user 'naufal' dan
password 'rahasia':
Koneksi ke server pada localhost dengan default username dan password dan
dengan mengkompress paket data yang lewat atau melintas antara klien dan server:
shell> mysql host=localhost compress
2.3.2 Program klien mysqlimport
mysqlimport adalah program klien yang memuat filefile data kedalam tabeltabel. Program ini menyediakan antar muka commandline dengan pernyataan LOAD DATA INFILE. Hal ini berarti mysqlimport memeriksa opsiopsi yang diberikan pada command line dan membuat suatu pernyataan LOAD DATA INFILE yang berhubungan dengan aksi yang disebutkan oleh opsiopsi tersebut. Kemudian melakukan koneksi ke server dan untuk setiap file input, menghasilkan pernyataan LOAD DATA INFILE yang memuat file tersebut dengan benar kedalam tabel yang sesuai. Cara menjalankan perintah mysqlimport
pada commandline seperti berikut ini:
shell> mysqlimport options nama_database file_input
nama_database adalah nama dari database yang berisi tabel tabel yang akan diisi data, dan file_input adalah nama file yang berisi data yang akan dimuat ke tabel.
Setiap tabel yang akan diisi oleh mysqlimport harus sudah ada dalam database, dan setiap file input seharusnya hanya mengandung nilainilai data. mysqlimport tidak dimasudkan untuk memproses filefile input yang mengandung perintahperintah SQL (yaitu seperti yang dibuat dengan program mysqldump).
2.3.3 Program klien mysqldump
Program klien mysqldump mengekspor isi dari tabeltabel yang ada dalam suatu database ke suatu file. Program ini sangat berguna untuk membackup database, atau untuk mentransfer isi dari database ke server lain. mysqldump dapat menghasilkan filefile hasil dump berfornat SQL yang mengandung perintahperintah CREATE TABLE dan INSERT untuk membuat ulang filefile dump, atau dapat menghasilkan filefile data dengan delimiter tabulasi.
2.3.3.1 Operasi mysqldump
Secara default mysqldump menginterpretasi argumen pertama yang bukan option sebagai nama database dan akan mengekspor seluruh tabeltabel yang ada dalam database tersebut.
Perintah berikut ini akan mengekspor seluruh isi tabeltabel dalam database
sekolah kedalam suatu file dengan nama file 'sekolah.sql': shell> mysqldump sekolah > sekolah.sql Perintah mysqldump berikut ini disertai dengan 3 argumen yang bukan option, argumen pertama adalah nama database dan argumen ke duan dan ketiga adalah namanama tabel dalam database, hasil dump disimpan kedalam file dengan nama pelajar_guru.sql: shell> mysqldump sekolah pelajar guru > pelajar_guru.sql 2.3.3.2 Memuat ulang hasil mysqldump Untuk memuat ulang sebuah file dump berformat SQL yang dihasilkan oleh mysqldump, gunakan program klien mysql. Guna membuat salinan tabel pelajar dari database sekolah
kedalam database kampus, sebagai contoh, Anda dapat menjalankan perintah berikut ini:
shell> mysqldump opt sekolah pelajar > perlajar.sql shell> mysql kampus < pelajar.sql mysql dapat membaca dari sebuah pipe, sehingga Anda dapat mengkombinasikan dengan penggunaan perintah mysqldump dan mysql menjadi sebuah perintah tunggal. Contoh sebelumnya dapat ditulis menjadi berikut ini: shell> mysqldump opt sekolah pelajar | mysql kampus
2.3.4 Program klien mysqlcheck dan myisamchk
Program klien mysqlcheck dan myisamchk digunakan untuk memeriksa dan memperbaiki tabeltabel (khususnya tabel tabel MyISAM). Programprogram klien tersebut dapat membantu menjaga tabeltabel Anda terbebas dari masalahmasalah, atau memeperbaiki tabeltabel Anda jika terjadi masalah sebagai contoh tabeltabel MyISAM menderita kerusakan akibat server crash.
mysqlcheck dan myisamchk memiliki fungsi yang sama, tetapi mereka memiliki beberapa perbedaan. Berikut ini perbandingan antara kedua program tersebut:
Kedua program dapat memeriksa, memperbaiki dan menganalisa tabeltabel MyISAM. Mysqlcheck dapat juga mengoptimasi tabeltabel MyISAM, begitu juga tabeltabel InnoDB
dan menganalisa tabeltabel BDB. Ada operasioperasi tertentu yang hanya dapat dilakukan oleh myisamchk sedangkan mysqlcheck tidak, yaitu mendisable atau mengenable pengindekan(indexes).
2.4 Database secara umum dan manipulasi tabel
Setiap server MySQL memiliki suatu direktori data yang mana didalam direktori ini tabel tabel dan database berada dan dikelola. Server merepresentasikan hal berikut ini: MySQL menghubungkan masingmasing database dengan suatu direktori yang ada didalam direktori data (ini berarti direktori data adalah direktori parent dari semua direktoridirektori database). Sebuah direktori database memiliki nama yang sama dengan nama database itu sendiri. Sebagai contoh, suatu database diberi nama 'sekolah' maka direktori databasenya juga memiliki nama 'sekolah' yang berada dalam direktori data. MySQL menggunakan direktori database untuk mengatur komponenkomponen database yakni tabeltabel dan indekindek. Sebuah database bisa jadi kosong atau hanya berisi satu atau beberapa tabel. Database tidak beranak atau tidak dapat memiliki subsub database, dengan kata lain suatu database tidak lagi mengandung atau berisi database lainnya didalamnya. Setiap tabel dalam suatu database terdiri dari barisbaris dan kolomkolom. Suatu tabel bisa jadi kosong (tidak memiliki barisbaris data atau record), tetapi minimal harus memiliki sebuah kolom. Suatu tabel bisa juga diindek agar meningkatkan performa query. Setiap tabel dihubungkan dengan sebuah file formaAUTO_INCREMENT, diterapkan pada kolomkolom integer. Digunakan untuk menghasilkan integer dengan urutan nilai yang unik. Kolom demikian dalam suatu tabel hanya ada satu. BINARY, diterapkan pada CHAR dan VARCHAR
NULL dan NOT NULL, dapat diterapkan pada semua kolom
DEFAULT, menyediakan suatu nilai baku dalam kasus tidak ada nilai yang
diberikan.
PRIMARY KEY dan UNIQUEt dalam direktori database yang berisi definisi
definisi dan strukturstruktur tabel tersebut. Nama dari file format sama dengan nama tabel ditambah akhiran .frm. Sebagai contoh, file format untuk tabel pelajar
dalam database sekolah diberi nama pelajar.frm dan diletakkan dalam direktori sekolah yang berada dibawah direktori data server MySQL. Bergantung pada tipe tabel, storage engine untuk suatu tabel biasanya akan membuat filefile tambahan untuk tabel tersebut. Jika tabel pelajar memiliki tipe MyISAM, maka storage engine MyISAM akan membuat filefile data dan indek yang diberi nama pelajar.MYD dan pelajar.MYI yang masingmasing digunakan untuk menyimpan
barisbaris data dan indekindek. Jika tabel pelajar memiliki tipe InnoDB, MySQL masih membuat suatu file format pelajar.frm dalam direktori database, tetapi storage engine InnoDB menyimpan tabel data dan informasi indeks kedalam InnoDB tablespace.
2.5
Storage Engine
dan Tipetipe tabel
MySQL mendukung beberapa storage engine yang bertindak sebagai pengatur untuk berbagai tipe tabel yang berbeda. Storage engine MySQL mencakup keduanya yang mengatur tabeltabel yang transaksinya
aman (transactionsafe), dan yang mengatur tabeltabel yang transaksinya tidak aman (nontransactionsafe):
Storage engine asli adalah ISAM, yang menangani tabeltabel nontransaksi (non
transactional). Storage engine ISAM telah digantikan dengan MyISAM dan sudah lama tidak digunakan lagi. Pada MySQL 4.1 storage engine ini sudah kuno, bahkan pada MySQL 5.0 dihilangkan.
Storage engine MyISAM diperkenalkan pada MySQL 3.23.0. MyISAM merupakan
peningkatan untuk menggantikan ISAM. MyISAM menangani tabeltabel non transaksi (nontransactional). MyISAM memberikan kecepatan dalam proses penyimpanan dan pengambilan, begitu juga kemampuankemampuan pencarian keseluruhan teks (fulltext). MyISAM didukung dalam seluruh konfigurasi MySQL, dan secara default MyISAM menjadi storage engine yang digunakan dalam MySQL, kecuali jika Anda mengkonfigurasi MySQL menggunakan storage engien yang lainnya.
Storage engine MEMORY menyediakan tabeltabel inmemory. Storage engine
MERGE ditambahkan kedalam MySQL 3.23.25. Storage engine ini memungkinkan sekumpulan tabeltabel MyISAM yang identik untuk dikelola sebagai suatu tabel tunggal. Seperti MyISAM, Storage engine MEMORY dan MERGE menangani tabeltabel nontransasksi ( nontransactional), dan keduanya juga disertakan secara default dalam MySQL.
Catatan: Storage engine MEMORY pertama kali dikenal sebagai HEAP engine. Storage engine InnoDB dan BDB yang menangani tabeltabel transasctionsafe
diperkenalkan dalam versi MySQL 3.23 selanjutnya.BDB disertakan dalam distribusi binari MySQLMax pada sistem operasi – sistem operasi yang mendukungnya. InnoDB juga disertakan dalam distribusi binari MySQLMax untuk MySQL 3.23. Mulai dengan MySQL 4.0, InnoDB telah disertakan secara default dalam seluruh distribusi binari MySQL. Dalam distribusidistribusi source, Anda dapat mengenable atau mendisable storage engine storage engine tersebut
dengan mengkonfigurasi MySQL sesuai dengan kebutuhan Anda.
NDB cluster adalah storage engine yang digunakan oleh MySQL cluster untuk implementasi tabeltabel yang terpisah di beberapa komputer. Engine ini tersedia dalam distribusi source MySQL 4.1.2 dan distribusi binari MySQLMax 4.1.3. Storage engine ini saat ini didukung hana di Linux, Solaris, dan Mac OS X . MySQL berniat untuk mendukung engine ini pada platform sistem operasi lainnya seperti MS Windows, dan dalam rilis MySQL mendatang. Storage engine EXAMPLE adalah suatu sub engine yang tidak menangani apapun. Anda dapat membuat tabeltabel dengan engine ini, tetapi tidak ada data yang dapat disimpan atau diambil dalam tabel tersebut. Engine EXAMPLE ini disediakan sebagai contoh dalam kode sumber MySQL yang menggambarkan bagaimana memulai membuat storage engine baru. Ini umumnya untuk yang tertarik atau untuk para pengembang.
Storage engine ARCHIVE digunakan untuk penyimpanan sejumlah besar data tanpa pengindekan dengan sebuah footprint yang sangat kecil.
Storage engine CSV menyimpan data dalam file teks dengan menggunakan tanda koma sebagai format pemisah antar nilainilai dalam file teks tersebut.
Storage engine BLACKHOLE menerima tetapi tidak menyimpan data, selalu mengembalikan atau menampilkan sesuatu yang kosong.
Storage engine FEDERATED menyimpan data dalam remote database. Dalam MySQL 5.1, storage engine ini hanya bekerja dengan MySQL, dengan menggunakan MySQL C client API. Dalam rilis masa depan, dimaksudkan untuk memungkinkannya untuk terkoneksi dengan sumber data lainnya dengan menggunakan driverdriver atau metodemetode koneksi klien yang lainnya.
2.6 Tipetipe kolom
Untuk setiap tipe data, sintak yang ditampilkan menggunakan tanda kurung siku (square brackets) ([ ]) adalah untuk menunjukkan bagian dari sintak yang bersifat opsional. Contoh berikut ini menunjukkan bagaimana BIGINT dijelaskan dalam bab ini: BIGINT[(display_size)] Sebagai tambahan terhadap tipe BIGINT, banyak jenis tipe data MySQL lainnya yang mendukung spesifikasi dari ukuran.. Kecuali jika tidak dispesifikasikan, nilai tersebut harus berupa sebuah bilangan integer atau bilangan bulat antara 1 dan 255.2.6.1 NUMERIK
MySQL mendukung semua tipe data standar numerik(bilangan) SQL .Jenis ini meliputi tipe data bilangan bulat (INTEGER, SMALLINT, DESIMAL, dan NUMERIC), seperti halnya tipe data bilangan desimal (FLOAT, REAL, dan DOUBLE PRECISION). Keyword INT adalah suatu sinonim untuk BILANGAN BULAT (INTEGER), dan keyword DEC adalah satu sinonim untuk bilangan DESIMAL. Terhitung sejak MySQL 5.0.3, tipe data BIT tersedia untuk menyimpan nilainilai kolom bit. (Sebelum 5.0.3, MySQL menginterpretasikan BIT seperti TINYINT (1 ).) Di MySQL 5.0.3, BIT didukung hanya untuk MyISAM. MySQL 5.0.5 memperluas dukungan BIT pada MEMORY, InnoDB, dan BDB. Sebagai satu ekstensi ke SQL standar, MySQL juga mendukung jenis bilangan bulat TINYINT, MEDIUMINT, dan BIGINT.Untuk tipetipe bilangan bulat selalu disediakan atribut auto_increment, signed dan unsigned. Signed berarti nilai negatif ikut dalam deklarasi tersebut sedang unsigned hanya nilai positif. Jika unsigned tidak dideklarasikan maka nilai default adalah signed. INT/INTEGER Deklarasi : INT [(display_size)] [auto_increment] [unsigned] [zerofill] Penyimpanan: 4 byte Nilai yang dapat disimpan adalah integer 0 sampai dengan 4294967295 jika unsigned. – 2147483648 sampai dengan 214797647 jika signed. TINYINT Deklarasi : TINYINT [(display_size)] [auto_increment] [unsigned] [zerofill]
Penyimpanan: 1 byteAUTO_INCREMENT, diterapkan pada kolomkolom integer. Digunakan untuk menghasilkan integer dengan urutan nilai yang unik. Kolom demikian dalam suatu tabel hanya ada satu. ● BINARY, diterapkan pada CHAR dan VARCHAR ● NULL dan NOT NULL, dapat diterapkan pada semua kolom ● DEFAULT, menyediakan suatu nilai baku dalam kasus tidak ada nilai yang diberikan. PRIMARY KEY dan UNIQUE Nilai yang dapat disimpan adalah integer 0 sampai dengan 255 jika unsigned. 128 sampai dengan 127 jika signed.
MEDIUMINT
Deklarasi : MEDIUMINT [(display_size)] [auto_increment] [unsigned] [zerofill] Penyimpanan: 3 byte
Nilai yang dapat disimpan adalah integer 0 sampai dengan 16777215 jika unsigned. 83888608 sampai dengan 82888607 jika signed. BIGINT Deklarasi : BIGINT [(display_size)] [auto_increment] [unsigned] [zerofill] Penyimpanan: 8 byte Nilai yang dapat disimpan adalah integer 0 sampai dengan 18446744073709551615 jika unsigned. –9223372036854775807 sampai dengan 922337203685477580787 jika signed. SMALLINT Deklarasi : SMALLINT [(display_size)] [auto_increment] [unsigned] [zerofill] Penyimpanan: 2 byte Nilai yang dapat disimpan dengan jangkauan mulai dari 0 sampai dengan 65535 jika unsigned dan 32768 sampai 32767 jika signed. FLOAT Deklarasi : FLOAT [(display_size,digits)] [zerofill] Penyimpanan: 4 byte Float menyimpan bilangan real dan tidak dapat bersifat unsigned. Nilai presisi tunggal yang dapat disimpan adalah –3,402823466E+38 sampai dengan –1,1175494351E38,0, dan 1,1175494351E38 sampai dengan 3,402823466E+38. DOUBLE Deklarasi : DOUBLE [(M,D)] [zerofill] Penyimpanan: 8 byte
Double menyimpan bilangan real dengan presisi ganda. Nilai yang boleh adalah – 1,7976931348623167E+308 sampai dengan –2.2250738585072014E308,0, dan 2.2250738585072014E308 sampai dengan 1,7976931348623167E+308. Nilai M merupakan maksimal panjang tampilan. Nilai D merupakan nilai desimal.
DECIMAL Deklarasi : DECIMAL [(precision [,scale])] [zerofill] Penyimpanan: precision + 2 byte Menyimpan bilangan floating point dimana ketepatan adalah kritis, seperti untuk nilai mata uang. Tipe DECIMAL memerlukan Anda untuk menspesifikasikan precision dan scale. Precision adalah jumlah nilai digit yang berarti. Scale adalah jumlah digit yang mengikuti tanda desimal. Sebagai contoh, sebuah kolom BALANCE dideklarasikan sebagai DECIMAL(9,2) yang akan menyimpan sejumlah 9 digit berarti, dengan dua digit diantaranya berada disebelah kanan tanda desimal. Range nilai dari contoh deklarasi kolom BALANCE tersebut adalah mulai 9,999,999.99 sampai 9,999,999.99.
2.6.2 String
Tipe data string menyimpan bermacammacam jenis data teks. Terdapat sejumlah tipetipe data teks yang diakomodasi dengan beragam ukuran. Untuk masingmasing ukuran, ada suatu tipe yang menyusun dan membandingkan data secara casesensitive, sesuai dengan susunan karakter baku. Suatu tipe binari melakukan penyusunan dan perbandingan sederhana byte demi byte. Dengan kata lain, nilai binari adalah casesensitive. Untuk CHAR dan VARCHAR, tipetipe binari dideklarasikan dengan menggunakan atribut BINARY . Tipetipe TEXT, bagaimanapun juga, memiliki hubungan dengan tipetipe BLOB. BLOB Deklarasi: BLOB Bentuk binari dari TEXT. CHAR Deklarasi: CHAR(size) [BINARY] ukuran: ditetapkan oleh nilai ukuran dengan jangkauan sampai dengan 255 Penyimpanan: size byte Suatu kolom dengan nilai teks yang panjangnya tetap. Nilai string dengan jumlah karakter lebih sedikit dari ukuran kolom maka akan diisi dengan spasi. Spasi yang diisikan tersebut ketika diambil dari database akan dihilangkan.LONGBLOB Deklarasi: LONGBLOB Bentuk binari dari LONGTEXT LONGTEXT Deklarasi: LONGTEXT ukuran: 0 samapai 4294967295 Penyimpanan: panjang nilai + 4 byte Menyimpan nilai teks yang besar. Secara teori batas ukuran dari teks yang dapat disimpan dalam sebuah kolom LONGTEXT melampaui 4 GB, pada prakteknya kurang. Ini sehubungan dengan batasan dari protokol komunikasi MySQL, dan jumlah memori yang tersedia pada komunikasi antara klien dan server. MEDIUMBLOB Deklarasi: MEDIUMBLOB bentuk dari MEDIUMTEXT MEDIUMTEXT Deklarasi: MEDIUMTEXT ukuran: 0 sampai 16777215 Penyimpanan: panjang nilai + 3 byte Menyimpan nilai teks dengan ukuran menengah. TEXT Deklarasi: TEXT ukuran: 0 sampai 65535 Penyimpanan: panjang nilai + 2 byte Penyimpanan untuk sebagian besar teks. TINYBLOB Deklarasi: TINYBLOB
bentuk binari dari TINYTEXT TINYTEXT Deklarasi: TINYTEXT ukuran: 0 sampai 255 Penyimpanan: panjang nilai + 1 byte Menyimpan nilai teks yang pendek VARCHAR Deklarasi: VARCHAR(size) [BINARY] ukuran: ditetapkan oleh nilai ukuran dalam suatu jangkauan sampai 255. Penyimpanan: panjang nilai + 1 byte Menyimpan nilai teks yang panjangnya bervariasi.
2.6.3 Date
Tipetipe data date MySQL adalah perangkat yang fleksibel untuk menyimpan informasi tanggal dan waktu. Untuk memvalidasi nilai tanggal dan waktu, itu diserahkan pada aplikasi bukan database. MySQL hanya akan memeriksa bulan yang memiliki jangkauan 0 sampai 12, dan tanggal dari 0 smapai 31. February 31, 2006 adalah suatu contoh informasi tanggal MySQL yang sah. February 0, 2006 adalah informasi tanggal yang juga sah bagi MySQL. Dengan kata lain, Anda dapat menggunakan 0 untuk menandakan tanggal yang Anda tidak ketahui pasti.MySQL secara otomatis akan mengkonversi nilainilai tanggal dan waktu menjadi bilangan integer ketika digunakan dalam suatu konteks bilangan integer. DATE Deklarasi: DATE Format: YYYYMMDD (20060101) Penyimpanan: 3 byte Menyimpan tanggal dalam jangkauan dari 1 januari 1000 ('10000101') sampai dengan 31 Desember 9999 ('99991231') dalam almanak Gregorian.
DATETIME Deklarasi: DATETIME Format: YYYYMMDD hh:mm:ss (20060101 01:00:00) Penyimpanan: 8 byte Menyimpan informasi waktu yang spesifik dalam jangkauan dari 1 Januari 1000 12:00:00 AM ('10000101 00:00:00') sampai 31 Desember 9999 11:59:59 PM ('99991231 23:59:59') dalam almanak Gregorian. TIME Deklarasi: TIME Format: hh:mm:ss (06:00:00) Penyimpanan: 3 byte Menyimpan nilai waktu dalam jangkauan mulai dari tengah malam ('00:00:00') sampai 1 detik sebelum waktu tengah malam ('23:59:59'). TIMESTAMP Deklarasi: TIMESTAMP[(display_size)] Format: YYYYMMDDhhmmss(20010101060000) Penyimpanan: 4 byte Sebuah representasi dari sebuah penunjukan waktu ke detik dalam jangkauan dari tengah malam pada 1 januari 1970, sampai pada satu menit sebelum tengah malam pada 31 Desember 2037. Kegunaan utama adalah menjaga jejak dari perubahanperubahan tabel. Ketika Anda memasukkan suatu nilai NULL kedalam suatu kolom TIMESTAMP, maka tanggal dan waktu saat ini yang akan di masukkan. Jika Anda merubah beberapa nilai dari sebuah baris dengan suatu kolom TIMESTAMP, maka kolom TIMESTAMP yang pertama akan diupdate secara otomatis dengan tanggal dan waktu saat ini. YEAR Deklarasi: YEAR[(size)] Format: YYYY(2006) Penyimpanan: 1 byte
memungkinkan Anda untuk menyimpan tahun dengan menggunakan 2 digit dari 4 digit tahun. Jangkauan untuk suatu YEAR(4) adalah mulai 1900 sampai 2155, sedangkan YEAR(2) dari 1970 sampai 2069. Nilai size baku adalah YEAR(4).
2.6.4 Tipe data Komplek
Tipe data komplek MySQL yaitu ENUM dan SET adalah tipe string yang khusus. Mereka didaftarkan secara terpisah karena mereka secara konsep lebih komplek, dan merepresentasikan suatu bawaan tipe data SQL 3 yang didukung MySQL di masa datang. ENUM Deklarasi: ENUM(nilai1, nilai2, ...) Penyimpanan: 1255 anggota nilai: 1 byte / 25665535 anggota nilai: 2 byte Menyimpan satu nilai dari suatu daftar nilainilai teks yang mungkin yang sebelumnya sudah didefinisikan. Ketika Anda membuat sebuah kolom ENUM, Anda menyediakan suatu daftar dari seluruh nilainilai yang mungkin. Nilainilai yang dapat ditambahkan dan dirubah pada suatu kolom ENUM hanya yang terdfatar dalam daftar nilainilai teks yang mungkin tersebut. Jika Anda mencoba memasukkan suatu nilai yang tidak terdapat dalam daftar atau bukan bagian dari daftar maka akan menyebabkan sebuah string kosong yang akan disimpan. SET Deklarasi: SET(nilai1, nilai2, ....) Penyimpanan: 1 sampai 8 anggota nilai: 1 byte 9 sampai 16 anggota nilai: 2 byte 17 sampai 24 anggota nilai: 3 byte 25 sampai 32 anggota nilai: 4 byte 33 sampai 64 anggota nilai: 8 byte Sebuah daftar nilainilai yang diambil dari sekumpulan nilainilai yang sudah didefinisikan sebelumnya. Sebuah kolom dapat menyimpan beberapa atau tidak sama sekali nilainilai teks yang telah didefinisikan dalam pernyataan SET. SET pada dasarnya adalah sebuah ENUM yang memungkinkan setiap kolom untuk menyimpan lebih dari satu nilai.SET tidak menyimpan sesuai dengan indek, tetapi seperti suatu bitmap yang komplek. Suatu SET dengan anggotaanggota nilai Jeruk, Apel, Pir, dan Pisang, masingmasing elemen
dinyatakan oleh suatu bit 'on' dalam sebuah byte, sebagaimana ditunjukkan dibawah ini: Representasi Elemenelemen SET MySQL
Member Nilai Desimal Representasi secara Bit
Jeruk 1 0001 Apel 2 0010 Pir 4 0100 Pisang 8 1000 Dalam contoh ini, nilainilai Jeruk dan Pir disimpan dalam database sebagai 5 (0101). Anda dapat menyimpan suatu nilai maksimum 64 dalam suatu kolom SET. Meskipun Anda dapat memberi nilai yang sama beberapa kali dalam suatu pernyatan SQL pengubahan suatu kolom SET, hanya sebuah nilai yang sebenarnya disimpan.
2.7 Opsiopsi Kolom
Dalam MySQL, pada waktu pertama membuat tabel, atau dikemudian waktu, Anda dapat menambah, merubah opsiopsi kolom tabel. Opsiopsi kolom membatasi data agar dimasukkan sesuai dengan opsi yang telah ditetapkan.● UNSIGNED, membuat kolom tidak boleh memiliki nilai negatif ● ZEROFILL, mengisi lebar data yang ditampilkan dengan nol
● AUTO_INCREMENT, diterapkan pada kolomkolom integer. Digunakan untuk
menghasilkan integer dengan urutan nilai yang unik. Kolom demikian dalam suatu tabel hanya ada satu. ● BINARY, diterapkan pada CHAR dan VARCHAR ● NULL dan NOT NULL, dapat diterapkan pada semua kolom ● DEFAULT, menyediakan suatu nilai baku dalam kasus tidak ada nilai yang diberikan. ● PRIMARY KEY dan UNIQUE
2.8 Operator
MySQL menawarkan tiga jenis operator: arithmatic, compparison, dan logical.2.8.1 Peraturan ketentuan hak yang lebih tinggi
Ketika SQL mengandung pernyataan yang komplek, sub pernyataan dievaluasi berdasarkan ketentuan aturan MySQL yang lebih tinggi. Anda dapat megesampingkan ketentuan aturan MySQL yang lebih tinggi dengan mengurung suatu pernyataan dalam tanda kurung: Prioritas hak yang lebih tinggi Operatoroperator 1 BINARY 2 NOT 3 ^ 4 (unary minus) 5 * / % 6 + 7 << >> 8 & 9 | 10 <= >= = <=> <> IN IS LIKE REGEXP 11 BETWEEN CASE 12 AND 13 OR XOR2.8.2 Operator Arithmatic
Operatoroperator arithmatic melakukan arithmatic dasar antara dua buah nilai: Operator Deskripsi + Menambahkan dua buah nilai bilangan Mengurangi dua buah nilai bilangan * Mengalikan dua buah nilai bilangan / Membagi dua buah nilai bilangan % Memberikan sisa hasil bagi dua buah nilai bilangan | Melakukan operasi OR secara bit antara dua buah nilai bilangan bulat ^ Melakukan operasi eksklusif OR secara bit antara dua buah nilai bilangan bulat & Melakukan operasi AND secara bit antara dua buah nilai bilangan bulat<< Melakukan operasi geser kekiri secara bit pada sebuah nilai bilangan bulat >> Melakukan operasi geser kekanan secara bit pada sebuah nilai bilangan bulat
2.8.3 Operator Comparison
Operator comparison membandingkan nilainilai dan mengembalikan 1 jika perbandingan adalah benar (true), dan 0 (false) jika sebaliknya. Kecuali untuk operator <=>, nilai NULL mengakibatkan suatu operator comparison mengevaluasinya ke NULL. Operatoroperator Deskripsi <> atau != Mencocokkan baris jika kedua nilai tidak sama atau tidak sebanding <= Mencocokkan baris jika nilai sebelah kiri lebih kecil atau sama dengan nilai sebelah kanan < Mencocokkan baris jika nilai sebelah kiri lebih kecil dari nilai sebelah kanan >= Mencocokkan baris jika nilai sebelah kiri lebih besar atau sama dengan nilai sebelah kanan > Mencocokkan baris jika nilai sebelah kiri lebih besar dari nilai sebelah kanan nilai BETWEEN nilai1 AND nilai2 Mencocokkan baris jika nilai adalah antara nailai1 dan nilai2, atau sama dengan nilai1 atau nilai2 nilai IN (nilai1, nilai2,....) Mencocokkan baris jika nilai termasuk dalam daftar nilai nilai NOT IN (nilai1, nilai2,....) Mencocokkan baris jika nilai tidak termasuk dalam daftar nilai
nilai1 LIKE nilai2 Membandingkan nilai1 dan nilai2 dan mencocokkan baris jika mereka sesuai. Nilai disebelah kanan dapat berupa karakter wildcard '%', yang cocok dengan semua karakter (termasuk nol karakter), dan '_', yang mencocokkan tepat ke satu karakter. Penggunaan yang sering adalah membandingkan suatu nilai kolom dengan satu string yang mengandung wildcard (contoh: SELECT name FROM pegawai WHERE name LIKE 'B%').
nilai1 NOT LIKE nilai2 Membandingkan nilai1 dan nilai2 dan mencocokkan baris jika mereka berbeda. Ini identik dengan NOT (nilai1 LIKE nilai2)
nilai2 extended reguler expression dan mencocokkan baris jika kedua nilai sesuai. Nilai sebelah kanan dapat mengandung penuh konsep wildcard reguler expression UNIX (contoh: SELECT name FROM pegawai WHERE name RLIKE '^B.*' nilai1 NOT REGEXP nilai2 Membandingkan nilai1 dan nilai2 dengan menggunakan
extended reguler expression dan mencocokkan baris jika kedua nilai berbeda. Ini identik dengan NOT (nilai1 REGEXP nilai2).
2.8.4 Operator Logical
Operator logical memeriksa nilai kebenaran dari satu atau lebih pernyataan. Dalam istilah SQL, suatu operator logical memeriksa apakah operandoperand nya adalah 0, nonzero, atau NULL. Suatu nilai 0 berarti salah (false), nonzero berarti benar(true) dan NULL berarti tak bernilai. Operatoroperator Deskripsi NOT atau ! Melakukan suatu logika not(mengembalikan '1' jika nilai adalah 0, NULL jika nilai adalah NULL, jika tidak mengembalikan '0') OR atau || Melakukan suatu operasi logika or (mengembalikan '1' jika salah satu argumen atau nilai bukan nonzero atau bukan NULL, NULL jika salah satu argumen atau nilainya NULL, jika tidak mengembalikan '0') XOR Melakukan suatu operasi logika eksklusif or (mengembalikan '1' jika satu dan hanya satu argumen yang bukan 0 dan bukan NULL, NULL jika salah satu adalah NULL, jika tidak mengembalikan '0')AND atau && Melakukan operasi logika and (mengembalikan '0' jika salah satu dari argumen adalah 0, NULL jika salah satu argumen adalah NULL, jika tidak mengembalikan '1')
2.9 Memulai dan mengakhiri koneksi ke database server
Untuk koneksi ke database server, Anda biasanya perlu memberikan nama user MySQL dan password nya ketika menjalankan program klien mysql. Jika server berjalan pada komputer yang berbeda , Anda juga perlu memberikan nama komouter atau nomor IP komputer server database tersebut. Pembahasan lebih detil tentang program klien mysql telah dibahas dalam pembahasan sebelumnya.melakukan koneksi ke database server MySQL, seperti berikut ini:
Tanda prompt mysql> menjelaskan pada Anda bahwa mysql telah siap menerima perintah (command) dari Anda. Beberapa instalasi MySQL memungkinkan Anda untuk koneksi ke database server sebagai anonymous user (user tak bernama) pada komputer lokal (localhost).
Untuk mengakhiri koneksi dari database server , Anda dapat mengetikkan perimtah quit,
exit , atau (\q), seperti berikut ini:
mysql> q uit atau mysql> exit atau mysql> \q Berikut ini tabel yang menampilkan kondisi setiap prompt yang akan Anda lihat, dan kesimpulan mengenai apa yang terjadi dengan kondisi prompt seperti itu di dalam mysql: Prompt kesimpulan mysql> Siap menerima perintah baru > Menunggu baris perintah berikutnya dari suatu perintah terdiri dari banyak baris
'> Menunggu baris perintah berikutnya, dengan mengelompokkan sebuah string yang diawali dengan tanda kutip tunggal (')
“> Menunggu baris perintah berikutnya, dengan mengelompokkan sebuah string yang diawali dengan tanda kutip ganda(“)
`> Menunggu baris perintah berikutnya, dengan mengelompokkan sebuah identifier diawali dengan tanda backtick (`)
2.10 Membuat dan menggunakan database
Sebelum Anda dapat membuat sebuah tabel Anda harus terlebih dahulu membuat Database. Perintah SQL dapat Anda ketikkan dengan huruf besar maupun kecil. Hanya saja di sini kita menggunakan huruf besar agar Anda lebih mudah membedakan antara perintah SQL dengan objekobjek lainnya. Perlu diingat, setelah selesai mengetikkan perintah SQL pada prompt MySQL, Anda wajib mengetikkan tanda titik koma yang menandakan akhir dari perintah SQL. Sintak penulisan perintah untuk membuat database seperti berikut ini :
mysql> CREATE DATABASE database_name;
Hal yang harus diperhatikan dalam penamaan database adalah nama tidak boleh menggunakan katakata yang menjadi kosakata SQL seperti select karena hal itu akan membuat rancu. Perlu juga diperhatikan huruf besar atau huruf kecil sebuah nama database karena pada sistem UNIX huruf besar dan huruf kecil dibedakan. Pada contoh dibawah ini akan dibuat database dengan nama 'Perpustakaan' dan 'perpustakaan'.
Sesudah Anda membuat suatu database, selanjutnya jika Anda ingin 'perpustakaan' menjadi database yang Anda akses saat ini maka Anda dapat mengakses database tersebut dengan perintah sebagai berikut :
mysql>USE perpustakaan;
Atau Anda dapat juga mengakses database perpustakaan melalui commandline sebagai
2.11 Manipulasi tabel
Tabeltabel dapat dibuat dan dimodifikasi jika diperlukan. Jika Anda sudah memilih atau mengakses database maka Anda dapat membuat tabel sebagai berikut.
2.11.1 Membuat tabel
Setelah Anda memilih Database barulah Anda dapat membuat sebuah tabel, Sintak penulisan perintah membuat tabel sebagai berikut:
mysql> CREATE TABLE nama_tabel(
kolom1 tipe_data opsi_kolom,
kolom2 tipe_data opsi_kolom, ..., kolomN tipe_data opsi_kolom, PRIMARY KEY(nama_kolom), INDEX (nama_kolom) ) type=tipe_tabel Dalam pemakaian pernyataan create table Anda akan menemukan 2 opsi yang biasanya menyertai deklarasi definisi kolom yaitu null/ not null default Null/not null mengindikasikan apakah suatu kolom dapat menerima nilai null (nilai tiada). Jika dinyatakan null berarti null dapat terjadi dikolom tersebut sebaliknya bila diberi atribut not null maka nilai null tidak boleh pada kolom tersebut. Default menyatakan nilai baku yang akan dipakai jika dalam suatu proses pemasukan nilai ke kolom tersebut tidak diberi nilai. Contoh berikut akan membuat tabel dengan nama buku: Setelah Anda membuat tabel, perintah SHOW TABLES seharusnya menampilkan output sebagai berikut:
Untuk memeriksa tabel yang telah Anda buat sesuai dengan spesifikasi yang telah ditetapkan, gunakanlah perintah DESCRIBE atau DESC. Sebagai contoh jika Anda lupa nama kolom atau tipe kolom dari tabel yang telah Anda buat. Gunakanlah perintah seperti contoh dalam gambar berikut :
2.11.2 Menghapus tabel
Untuk menghapus tabel gunakan perintah berikut ini: mysql> DROP TABLE buku; atau mysql> DROP TABLE IF EXISTS buku;2.11.3 Merubah tabel
ALTER TABLE memungkinkan Anda untuk merubah struktur tabel yang ada. Anda dapat merubah tabel untuk keperluan: Menambah atau menghapus kolom Merubah nama atau definisi kolom Menambah atau menghapus index Menerapkan suatu susunan berbeda pada barisbaris Merubah nama tabel ALTER TABLE bekerja dengan cara membuat salinan tabel dari tabel yang asli yang bersifat sementara (temporer). Proses perubahan tabel dilakukan pada tabel salinan, kemudian tabel asli dihapus, dan yang baru dirubah namanya. Ketika perintah ALTER TABLE sedang dieksekusi, tabel asli masih dapat dibaca oleh klienklien. Proses perubahan dan penulisan terhadap tabel dihentikan sampai tabel yang baru siap, dan kemudian secara otomatis diarahkan ke tabel baru tanpa kegagalan dalam proses perubahan. Contoh berikut adalah perubahan tabel dengan menambah kolom. Gunakan keyword MODIFY atau CHANGE, jika Anda akan melakukan perubahan tipe data kolom. MODIFY dan CHANGE memiliki fungsi yang sama yaitu merubah tipe data kolom, hanya saja dengan CHANGE memungkinkan nama kolom juga dapat dirubah.
2.11.4 Merubah nama tabel
RENAME merubah nama tabel, dan juga bekerja dalam perintah ALTER TABLE: Merubah beberapa nama tabel sekaligus dapat dilakukan dengan satu perintah saja dimana tabeltabel dipisahakan dengan tanda koma, seperti berikut:Merubah tipe dan opsi kolom tabel dapat dilakukan juga bersamaan dengan merubah nama tabel dalam satu perintah seperti berikut ini:
2.12 Index
Ketika data dalam tabel bertambah besar jumlahnya, proses pembacaan data akan menjadi lambat. Index memungkinkan nilainilai kolom dapat ditemukan dengan lebih cepat, pengambilan atau pembacaan data berdasarkan index relatif lebih cepat. Agar performa query Anda terjaga secara, sangatlah penting mengindekskan (indexes) tabeltabel Anda. Index dapat melakukan pengunikkan (unique) untuk mencegah duplikasi.
MySQL mendukung empat tipe index:
Nonunique simple indexes
UNIQUE index, setiap nilai adalah berbeda dari yang lainnya.
PRIMARY KEY adalah suatu UNIQUE key yang tidak membolehkan nilai NULL. FULLTEXT dioptimasi untuk pencarian teks. Index dapat didefinisikan ketika tabel dibuat. Ini meliputi definisi index dalam perintah CREATE TABLE, bersama dengan pendefinisian kolom. Suatu definisi index terdiri dari suatu kata kunci yang menunjukkan tipe index, diikuti oleh suatu daftar namanama kolom yang akan dijadikan index didalam tanda kurung. Dengan mengasumsikan bahwa definisi tabel buku tanpa index tampak seperti berikut :
2.12.1 Nonunique index
Untuk membuat tabel dengan dengan kolomkolom yang sama seperti tabel buku sebelumnya, tetapi dengan suatu Nonunique index pada kolom 'tahun' , klausa INDEX disertakan dalam perintah CREATE TABLE berikut ini:
2.12.2 Unique index
Unique melakukan pengunikkan kolom dan mencegah duplikasi. Ini bermanfaat khususnya ketika menetapkan nilainilai untuk proses lookup, seperti id.2.12.3 Primary Key index
Dalam sebuah tabel hanya ada satu buah primary key. Primary key ada;ah suatu UNIQUE index yang tidak mengijinkan nilai NULL. Index dapat ditambahkan pada suatu tabel. Sebagai tambahan, proses penambahan index dapat dilakukan dengan menggunakan perintah ALTER TABLE, seperti berikut: mysql> ALTER TABLE buku ADD PRIMARY KEY (id)2.12.4 Menghapus index
Suatu index dapat dihapus dengan dengan perintah DROP INDEX atau ALTER TABLE, seperti berikut: mysql> DROP INDEX tahun ON buku mysql> ALTER TABLE buku DROP INDEX tahun mysql> ALTER TABLE buku DROP PRIMARY KEY Primary key index hanya dapat dihapus jika kolom yang merupakan index tersebut tidak memiliki atribut atau opsi auto_increment.2.13 MySQL query
MySQL mendukung penuh ANSI SQL92. Referensi SQL untuk MySQL adalah referensi SQL yang umum yang digunakan secara luas. SQL adalah bahasa query database yang serupa dengan bahasa inggris yang terdiri dari susunan kata kerja. Setiap susunan kata kerja ini, diawali dengan sebuah perintah SQL yang diikuti oleh keyword, literals, dan indentifiers, atau puctuation. Dalama bagian ini menggambarkan prinsipprinsip dasar penulisan perintahperintah SQL, bekerja dengan berbagai query, dari dasar hingga yang kompleks. Query menggambarkan beberapa hal tentang klien mysql: Ketika Anda menuliskan dan mengeksekusi perintah, program klien mysql
mengirimkannya ke server untuk dieksekusi dan menampilkan hasilnya, kemudian mencetak prompt mysql> kembali untuk menunjukkan bahwa klien mysql sudah siap menerima perintah lainnya.
Klien mysql menampilkan output dari query dalam bentuk tabular (terdiri dari baris
dan kolom). Baris pertama menunjukkan namanama kolom tabel. Dan barisbaris berikutnya dalah hasil query.
Klien mysql menampilkan juga informasi mengenai berapa banyak baris yang
dikembalikan dan berapa lama query tersebut dieksekusi, yang memberikan Anda ide pemikiran tentang performa server.
2.13.1 Perintah SELECT
Tidak ada gunanya menyimpan data kedalam database kecuali Anda bermaksud untuk menampilkan dan melakukan sesuatu terhadap data tersebut. Inilah fungsi dari perintah SELECT. Sintaks dasar dari perintah SELECT tampak seperti berikut ini:SELECT daftar_pilihan_kolom FROM daftar_tabel WHERE batasan_batasan_utama GROUP BY grup_kolom ORDER BY urutan_kolom HAVING batasan_batasan_tambahan LIMIT jumlah daftar_pilihan_kolom, menunjukkan kolomkolom apa saja yang akan dipilih atau ditampilkan daftar_tabel, menunjukkan dari tabel apa saja barisbaris data diambil atau dipilih batasan_batasan_utama, menunjukkan apa saja kondisikondisi baris data yang harus terpenuhi grup_kolom, menunjukkan bagaimana mengelompokkan hasilhasil query urutan_kolom, menunjukkan bagaimana mengurutkan hasilhasil query batasan_batasan_tambahan, menunjukkan apa saja kondisikondisi tambahan dari baris data yang harus terpenuhi jumlah, menunjukkan batas dari hasil query. 2.13.1.1 Pengambilan data sederhana Perintah SELECT sederhana untuk mengambil data dari suatu tabel dapat Anda lihat dalam contoh berikut ini: Untuk pengambilan data berdasarkan kolom kolom tertentu , tampak seperti berikut:
2.13.1.2 Membatasi suatu perintah SELECT dengan WHERE
Anda dapat mengambil atau memilih hanya barisbaris data tertentu saja dari tabel Anda:
2.13.1.3 Mengurutkan pemilihan data menggunakan ORDER BY
Dalam contoh sebelumnya, hasil barisbaris data yang ditampilkan tidak dalam urutan tertentu. Biasanya lebh mudah untuk menguji output dari query jika barisbaris data diurutkan. Untuk mengurutkan baris data, gunakan klausa ORDER BY, seperti berikut ini:
Pengurutan baku adalah ascending, dengan susunan urutan dimulai dari nilainilai yang paling kecil. Untuk mengurutkan dalam susunan yang berlawanan (descending), gunakan kata kunci DESC pada nama kolom yang akan Anda urutkan, seperti berikut ini:
2.13.1.4 Membatasi pengambilan data menggunakan klausa LIMIT
Klausa LIMIT memungkinkan Anda untuk membatasi output dari query. Klausa LIMIT sangat berguna, khususnya bersama dengan klausa ORDER BY. Ini berguna untuk mengambil barisbaris data berdasarkan posisinya dalam sekumpulan baris data hasil pemilihan. LIMIT mungkin diberikan dengan satu atau dua argumen, yang mana berupa bilangan bulat: LIMIT jumlah_baris LIMIT jumlah_diabaikan,jumlah_baris
jumlah_baris menunjukkan berapa banyak baris yang akan ditampilkan, sedangkan
jumlah_diabaikan menunjukkan berapa banyak baris data yang pertama dari hasil pengambilan data yang harus diabaikan untuk tidak ditampilkan. Berikut ini contoh penggunaan klausa LIMIT untuk menampilkan dua baris data yang pertama :
Jika LIMIT diikuti oleh dua bilangan bulat, jumlah_diabaikan dan jumlah_baris, LIMIT akan mengabaikan sejumlah baris data yang pertama yang ditetapkan oleh bilangan bulat yang pertama ( jumlah_diabaikan), dan hanya akan menampilkan sejumlah baris data berikutnya sebanyak yang ditetapkan oleh bilangan bulat yang kedua ( jumlah_baris).
Untuk mengabaikan dua baris data yang pertama dan menampilkan dua baris data berikutnya dapat Anda lihat dalam contoh berikut: 2.13.1.5 Mengelompokkan pemilihan baris data menggunakan klausa GROUP BY Klausa GROUP BY digunakan untuk memperoleh suatu rangkuman atau ringkasan yang menghasilkan nilainilai untuk subgrup dari sekumpulan baris data yang dipilih. Sebagai contoh kita memiliki tiga buah tabel yang terdiri dari tabel mahasiswa, matakuliah dan matakuliah_diikuti_mahasiswa. Skenario nya adalah kita akan menampilkan daftar mahasiswa beserta jumlah matakuliah yang diikutinya. Untuk itu jalankanlah query berikut ini: Dan hasil nya sebagai berikut:
2.13.2 Perintah INSERT
Perintah INSERT digunakan untuk menambahkan data baru kedalam tabel. Perintah INSERT memiliki dua buah format penulisan sebagai berikut:
INSERT INTO nama_tabel (daftar_kolom) VALUES (daftar_nilai); INSERT INTO nama_tabel SET nama_kolom=nilai_kolom;
Pada format yang pertama nama_tabel menunjukkan nama tabel yang akan ditambahkan data kedalamnya, daftar_kolom menunjukkan namanama kolom dari tabel yang dipisahkan menggunakan tanda koma, selanjutnya daftar_nilai adalah nilainilai (dipisahkan dengan tanda koma) yang berhubungan dengan masingmasing kolom yang disebutkan dalam daftar_kolom (jumlah kolom harus sama dengan jumlah nilai).Pada format yang kedua setelah klausa SET adalah daftar pasangan nama kolom dan nilainya masingmasing yang dipisahkan menggunakan tanda koma. Salah satu dari kedua format penulisan tersebut memungkinkan untuk menambahkan beberapa data sekaligus dengan sebuah perintah Berikut ini contohcontoh penulisan perintah INSERT dalam proses panambahan data kedalam tabel mahasiswa.
Format penulisan perintah INSERT dengan menggunkan klausa SET tampak sebagai berikut:
Jika Anda ingin menambahkan beberapa data sekaligus kedalam tabel mahasiswa dengan sebuah perintah saja, maka Anda dapat lakukan hal tersebut sebagaimana dalam contoh berikut ini:
2.13.3 Perintah REPLACE
Perintah REPLACE memiliki format penulisan perintah yang sama dengan INSERT, yaitu sebagai berikut: REPLACE INTO nama_tabel (daftar_kolom) VALUES (daftar_nilai); REPLACE INTO nama_tabel SET nama_kolom=nilai_kolom; Perintah REPLACE mengembalikan sebuah informasi yang menunjukkan jumlah baris yang dipengaruhi. Jika jumlah baris yang dipengaruhi oleh perintah REPLACE adalah satu, maka baris data hanya di tambahkan kedalam tabel tanpa ada proses mengganti baris data yang ada. Jika jumlah baris data yang dipengaruhi oleh perintah REPLACE adalah dua baris, maka ada sebuah baris yang dihapus sebelum proses penambahan baris data dilakukan, lihat contoh berikut ini:Keuntungan dari menggunakan perintah REPLACE adalah kita dapat menjalankan perintah DELETE dan INSERT sekaligus dalam sebuah operasi tunggal. Disini tidak ada kebutuhan untuk melakukan penguncian tabel secara eksplisit sebagaimana yang mungkin ada ketika Anda memutuskan untuk memisahkan perintah DELETE dan INSERT.
2.13.4 Perintah UPDATE
Perintah UPDATE digunakan untuk merubah isi dari barisbaris data yang ada. Untuk menggunakannya, sebutkan nama tabel yang akan dirubah isi barisbaris datanya, sertakan klausa SET yang diikuti dengan daftar pasangan nama kolom dan nilainya , dan biasanya perintah UPDATE diikuti dengan klausa WHERE yang menentukan barisbaris data mana sajakah yang akan dirubah. Berikut ini format penulisan perintah UPDATE: UPDATE nama_tabel SET nama_kolom1=nilai1, nama_kolom2=nilai2...WHERE ...; Sebagai contoh dalam tabel mahasiswa, kita akan merubah nilai kolom alamat dari sebuah baris data yang memiliki mahasiswa_id=1016, sebagaimana yang tampak berikut ini:2.13.5 Perintah DELETE
Untuk menghapus barisbaris data yang ada dalam tabel, gunakanlah perintah DELETE. Perintah DELETE memungkinkan penggunaan klausa WHERE untuk menentukan baris baris data mana saja yang akan dihapus. Jika Anda tidak menyertakan klausa WHERE maka akan berakibat seluruh baris data yang ada dalam tabel akan dihapus, Untuk menghapus seluruh baris data yang ada dalam tabel format penulisannya seperti berikut ini: DELETE FROM nama_tabel; Sedangkan untuk menghapus barisbaris data tertentu saja, format penulisannya seperti berikut ini: DELETE FROM nama_tabel WHERE ...; Sebagai contoh, kita akan menghapus baris data yang ada dalam tabel mahasiswa yang memiliki mahasiswa_id=1016, seperti berikut ini:
2.14 Join tabel
Pada dasarnya join tabel adalah mengkombinasikan dua buah tabel berdasarkan perbandingan nilainilai kolom yang dipilih. Join tabel menghasilkan barisbaris data yang hanya ada selama query itu dibuat atau dijalankan. Menggunakan join untuk secara temporer menciptakan barisbaris data yang lengkap dari suatu database yang membagi datadata yang berhubungan melalui atau ke beberapa tabel terpisah (hasil dari normalisasi).
2.14.1 Crossjoin
Crossjoin antar dua buah tabel, mengambil data dari baris data dalam tabel 1 dan menggabungkannya dengan/ke setiap barisbaris data dari tabel 2. Hal ini dapat dilakukan dengan dua format penulisan, seperti contoh berikut: mysql> SELECT nama_matakuliah, nama_depan FROM matakuliah, mahasiswa; mysql> SELECT nama_matakuliah, nama_depan FROM matakuliah CROSS JOIN mahasiswa;