UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
KATA PENGANTAR Puji syukur penulis panjatkan ke Hadirat Allah SWT yang telah melimpahkan rahmat, karunia, nikmat kesehatan, nikmat kesempatan serta hidayah-Nya sehingga penyusunan modul pembelajaran dengan j udul “Pemograman Basis Data Lantu (MySQL) dapat diselesaikan dengan baik. Sasaran dari penyusunan modul ini adalah agar mahasiswa dapat menggunakan Mysql sebagai server database dan mengimplementasikan MySQL dengan program lain sehingga menghasilkan suatu produk yang berguna. Terimakasih penulis ucapkan kepada semua pihak yang telah membantu dalam penulisan modul Pemograman Basis Data Lanjut (MySQL) ini, Penulis mengharapkan saran dan kritik yang membangun demi kesempurnaan modul ini. Semoga modul ini dapat bermanfaat khususnya bagi para pembaca.
1
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
BAB BAB II
MENGENAL MYSQL
Standar Kompetensi: 1. Mahasiswa dapat dapat mengetahui, mengetahui, memahami, memahami, menguasai menguasai dan mampu mampu mengimplementasikan teori, konsep dan prinsip pemograman database MySQL dengan logika pemograman yang besar, ringkas, dan tetpat dalam penerapannya di bidang teknologi informasi
1.1 Pendahulua Pendahuluan n Seiring degan waktu, banyak perkembangan yang terjadi pada dunia internet termasuk pesatnya perkembangan perangkat lunak Apache MySQL dan PHP
yang
selalu
di-update
oleh
produsennya
masing-masing,
sebagai
pertimbangan, versi terbaru dari Apache 2.2.11 , versi terbaru dari PHP adalah
PHP 5.2.9, dan versi terbaru dari MySQL adalah MySQL 5.1.32. 1.2 Apat Apat Itu MySQL? MySQL? MySQL (bisa dibaca dengan mai-es-ki-el atau bisa juga mai-se-kuel ) adalah
suatu
perangkat
lunak
Database
Relasi
(Relational
Database
Management System atau RDBMS), seperti halnya ORACLE, Postgresql, MS SQL, dan sebagainya. Jangan di salah artikan MySQL dengan SQL, Oke…. SQL (singaktan dari Structured Query Language) sendiri adalah suatu sintaks perintah-perintah tertentu atau atau bahasa (pemograman) yang digunakan digunakan untuk mengelola suatu database. Jadi, MySQL dan SQL adalah dua ‘makhluk’ yang berbeda. Eh…, kok makhluk ya… Mudahnya, MySQL adalah softwarenya, dan SQL adalah bahasa perintahnya.
1.3 MySQL Sebagai Database Database Server Software Software database database mulai bermuncula bermunculan n seiring seiring dengan bertambah bertambahnya nya kebutuhan akan database server. Salah satu dari pendatang baru dalam dunia database adalah MySQL, sebuar server/client database SQL yang berasal dari Skandinavia. MySQL terdiri atas server SQL, client program untuk mengakses server, tools untuk administrasi, dan interface program untuk menulis program sendiri. Pengembangan MySQL dimulai pada tahun 1979 dengan tool database UNIREG yang dibuat oleh Micheal “Monty” Widenius untuk perusahaan TcX di
2
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
Swedia. Swedia. Kemudian Kemudian pada tahun tahun 1994, TcX mulai mencari mencari server server SQL untuk mengembangkan aplikasi Web. Mereka menguji beberapa server komersial namun semuanya masih terelalu lambat untu tabel-tabel TcX yang besar. Tahun 1995 David Axmark dari Detro HB berusaha menekan TcX untuk merelease MySQL di Internet. Ia juga membuat dokumentasi MySQL yang dibuild untuk GNU configure utility. MySQL 3.11.1 dipublikasikan di dunia tahun 1996 dan didistribusikan untuk linux dan Solaris. Sekarang ini MySQL bekerja untuk banyak platform serta tersedia source codenya.
1.4 Mengapa Memilih MySQL MySQL Jika anda mencari system manajemen database yang murah atau bahkan gratis, ada beberapa pilihan antara lain MySQL, mSQL, PostgresSQL, atau salah satu dari produk vendor komersial yang gratis. Ketika dibandingkan antara MySQL dengan system database yang lain, maka perlu dipikirkan apa yang paling penting untuk anda. Apakah performa, support, fitur-fitur SQL, kondisi keamanan dan lisensi, atau masalah harga. Dengan pertimbangan tersebut, tersebut, MySQL memiliki banyak hal yang bisa ditawarkan, antara lain: ü Kecepatan
Banyak ahli berpendapat MySQL merupakan server tercepat ü Kemudahan penggunaan
MySQL punya performa tinggi namun merupakan database yang simple sehingga mudah disetup dan dikonfigurasi. ü Harga
MySQL cenderung gratis untuk penggunaan tertentu. ü Mendukung query language
MySQL mengerti bahasa SQL (Structured Query Language) yang merupakan pilihan system database modern. Anda juga dapat mengakses MySQL lewat protocol ODBC (Open Database Connectivity) buata Microsoft.
3
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
ü Kapabilitas
Banyak klien dapat mengakses server dalam satu waktu. Mereka dapat menggunakan banyak database secara simultan. ü Kapabilitas
Banyak klien dapat mengakses server dalam satu waktu. Mereka dapat menggunakan banyak database secara simultan. ü Konektifitas dan sekuritas
Database MySQL dapat diakses dari semua tempat di Internet dengan h ak akses tertentu. ü Pertabilitas
MySQL dapat berjalan dalam banyak varian UNIX dengan baik, sebaik seperti saat berjalan di system system non-UNIX. ü Distribusi yang terbuka
MySQL mudah didapatkan dan memiliki source code yang boleh disebarluaskan sehingga bisa dikembangkan lebih lan jut. Sedangkan pengguna database MySQL di antara lain adalah: ·
Silicon Graphics (http://www.sql.com (http://www.sql.com))
·
Siemens (http://www.siemens.com (http://www.siemens.com))
·
Terjemahan Terjemahan Al Qu ran dalam bahasa Indonesia (http://netmon.itb.ac.id/~quran/ http://netmon.itb.ac.id/~quran/))
·
ITB digital Library (http://digital.lib.itb.ac.id (http://digital.lib.itb.ac.id))
·
Game Strategi Online Multiplayer Kurusetra (http://www.kurusetra.com ( http://www.kurusetra.com)) Bagaimanapun, mungkin yang paling menarik dari semua karakteristik di
atas adalah kenyataannya bahwa MySQL gratis (free). Hal ini benar karena T.c.X menawarkan MySQL sebagai produk gratis untuk umum.
4
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
1.5 Mengenal SQL (Structured (Structured Query Language) Language) SQL
(Structured Query Language) adalah sebuah sebuah bahasa permintaan
database yang terstruktur. Bahasa SQL ini dibuat sebagai bahasa yang dapat merelasikan beberapa tabel dalam database maupun merelasikan antar database. SQL dibagi menjadi tiga bentuk Query, yaitu: 1.5.1 1.5.1
DDL DDL (Data (Data Def Defin init iton on Lang Languag uage) e)
DDL adalah sebuah metode Query SQL yang berguna untuk mendefinisikan data pada sebuah Database, Query yang dimiliki DDL adalah: ·
CREAT CREATE E
: Digu Digunak nakan an untuk untuk memb membuat uat Data Databas base e dan dan Tabe Tabell
·
DROP ROP
: Digu Diguna nak kan untu untuk k me mengha nghap pus Tab Tabel dan dan Data Databa basse
·
ALTE ALTER R
: Digu Diguna naka kan n untu untuk k mel melak akuk ukan an peru peruba baha han n stru strukt ktur ur tab tabe el yang telah dibuat, baik menambah Field (Add), mengganti mengganti nama Field (Change) ataupun menamakannya kembali (Rename), dan menghapus Field (Drop)
1.5.2 1.5.2
DML DML (Data (Data Mani Manipul pulat atio ion n Lang Langua uage ge))
DML adalah sebuah metode Query yang dapat digunakan apabila DDL telah terjadi, sehingga fungsi dari Query DML ini untuk melakukan pemanipulasian database yang telah dibuat. Query yang dimiliki DML adalah: ·
INSE INSERT RT
: Digu Digunak nakan an untuk untuk mema memasu sukk kkan an dat data a pada pada Tab Tabel el Data Databas base e
·
UPDAT UPDATE E
: Digu Digunak nakan an untuk untuk pengub pengubaha ahan n terha terhadap dap data data yang yang ada pada Tabel di Database
·
DELE DELETE TE
: Digu Digunak nakan an untuk untuk peng pengha hapu pusa san n dat data a pad pada a Tab Tabel el Datatabse
·
SELE SELECT CT
: Digu Digunak nakan an untuk untuk memu memunc nculk ulkan an data data dari dari Tabe Tabell di di database
5
By: Jaroji, S. Kom
UNISI
1.5.3 1.5.3
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
DCL DCL (Dat (Data a Contr Control ol Lang Langua uage ge))
DCL adalah sebuah metode Query SQL yang digunakan untuk memberikan hak otorisasi mengakses Database, mengalokasikan space, pendefinisian space, space, dan pengauditan penggunaan database. Query yang dimiliki oleh DCL adalah:
·
GRANT
: Un Untuk mengizinkan user mengakses tabel dan database
·
REVOKE REVOKE GRAN GRANT T
: Digunak Digunakan an untuk untuk pengub pengubaha ahan n terha terhadap dap data data yang yang ada pada Tabel di Database
6
·
COMMIT
: Me Membuat save point penyimpanan database
·
ROLLBACK
: Membatalkan penyimpanan database
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
BAB II
FUNGSI-FUNGSI PADA MYSQL
2.1 Mengaktifk Mengaktifkan an Direktori Direktori MySQ MySQLL Sever Untuk dapat menggunakan MySQL terlebih dahulu aktifkan Server MySQL dengan menghidupkan daemond MySQL. Program MySQL yang digunakan pada modul ini adalah AppServ AppServ 2.5.9. Oleh karena karena itu, untuk menjalankan menjalankan daemond MySQL terdapat pada direktori direktori C;\AppServ\MySQL\bin C;\AppServ\MySQL\bin Untuk masuk kedalam server MySQL, bukalah MS-DOS Promt anda melalui Run kemudian ketikan Command atau Cmd . Selanjutnya masuklah ke dalam direktori MySQL di Instalasi AppServ. Maka anda dapat masuk ke dalam direktori MySQL melalui Command Prompt.
2.2 Mengaktifk Mengaktifkan an Direktori Direktori MySQ MySQLL Sever MySQL adalah sebuah database server yang sangat aman. MySQL memiliki kemampuan manajemen user dalam mengakses. Jadi, tidak sembarang user dapat mengakses. Maka sebelum anda memiliki User untuk mengakses MySQL anda juga d apat mengakses database menggunakan user root . Berikut adalah perintah yang digunakan untuk mengkoneksikan kedalam server MySQL: Shell > mysql –u root –p Enter password: ****
7
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
Keterangan: tanda –u menerangkan bahwa kita masuk menggunakan username bernama root, tanda –p menyatakan kita masuk menggunakan password. Setelah kita melakukan login dengan username root dan password root maka akan muncul MySQL Command Line Client Console berikut:
Untuk dapat keluar dari Server MySQL, kita dapat mengetikan instruksi quit atau \q: Mysql>quit Bye Atau Mysql>\q Bye
2.3 Bantua Bantuan n dalam dalam MySQL MySQL MySQL menyediakan beberapa fasilitas bantuan yang berguna untuk mendokumentasikan
atau
memanipulasikan
server
yaitu
dengan
cara
mengetikan intruksi \h atau \?
Mysql> \h Semua Query harus diakhiri dengan tanda titik koma (;). Tanda ini menunjukkan bahwa query telah berakhir dan siap di eksekusi. eksekusi.
8
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
Help
·
(\h) : Digunakan untuk menampilkan file bantuan pada MySQL
·
?
(\?)
: Perintah ini sama dengan perintah help
·
Clear
(\c)
: Berguna untuk membersihkan atau menggagalkan semua perintah yang telah berjalan dalam suatu prompt
Connect
·
(\r)
: untuk melakukan penyegara aran koneksi ke dalam database yang ada pada server host
Ego Ego
·
(\G) (\G) : bergun berguna a
untuk untuk
menam menampilk pilkan an
data
secara secara
horizontal ·
Go
(\g)
: memberi perintah server untuk mengeksekusi
·
Tee
(\T)
: mengatur tempat file yang akan didokumentasi
Contoh
: mysql > \T d:\data.doc Logging to file ‘d:\data.doc;’
Note
·
(\t)
: akhir
dari
(\T)
yang
berguna
untuk
mendokumentasikan semua query Print
·
(\p) : mencetak
semua
query
yang
telah
kita
perintahkan ke layar ·
Prompt
(\R) : Mengubah prompt standar sesuai keinginan
·
Source
(\.)
: Berguna un untuk mengeksekusi qu query dari lu luar ya yang ber ekstensi .sql
9
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
BAB III
ADMINISTRASI MYSQL
MySQL selaku database server yang mampu berjalan pada jaringan, tentu saja MySQL harus memiliki kemampuan khusus yang berguna untuk melakukan manajemen user atau mendukung system database yang bersifat client/server. client/server.
3.1 Memb Membua uatt Use Userr Baru Baru Untuk dapat menciptakan user baru pada database mysql yang terdapat pada tabel user. Dapat dilakukan dengan menggunakan pernyataan SQL bernama INSERT. Sintaknya seperti berikut: INSERT INTO user(host,user,password) VALUES (‘%’,’username’,’password’);
Contoh: Mysql>INSERT INTO user(host,user,password) VALUES (‘localhost’,’budi’,MD5(‘paswortku’));
Query OK, 1 row affected, 4 warnings (0 .00 sec) Setelah anda memberikan perintah diatas, b erikan perintah:
FLUSH PRIVILEGES; Contoh: Mysql> FLUSH PRIVILEGES; Query Ok, 0 rows affected (0,00 sec)
3.2 Membua Membuatt User User Bar Baru u Apabila user telah dibuat terlebih dahulu namun lupa untuk memberikan Hak Wewenang User. Kita dapat memberikan hak wewenang dengan menggunakan perintah: Query UPDATE. Sintax yang digunakan sebagai berikut:
UPDATE user SET select_priv=’y’,insert_priv=’y’,update_priv=’y’, Delete_priv=’y’,create_priv=’y’,drop_priv= Delete_priv=’y’,create_priv=’y’,drop_priv=’y’,alter_priv=’y’ ’y’,alter_priv=’y’
WHERE user=’budi’;
10
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
DDL
BAB IV
(DATA DEFINITION LANGUAGE) DDL
adalah
sebuah
metode
Query
SQL
yang
berguna
untuk
mendefinisikan data pada sebuah Database.
4.1 Type Type Data Data pada MySQL MySQL Tipe data adalah suatu bentuk pemodelan data yang dideklarasikan pada saat melakukan pembuatan tabel. Tipe data ini akan mempengaruhi setiap data yang akan dimasukkan ke dalam sebuah tabel. Data yang akan dimasukkan harus sesuai dengan tipe data yang dideklarasikan. Berbagai type data pada MySQL dapat dilihat pada t abel berikut:
TIPE DATA TINYINT
SMALLINT
MEDIUMINT INT
INT
INTEGER BIGINT
FLOAT DOUBLE REAL DEC DECIMA IMAL(M,D (M,D))
NUM NUMERIC ERIC(M (M,D ,D))
KETERANGAN Ukurang 1 byte. Bilangan bulat terkecil, dengan jangkauan untuk bilangan bertanda: -128 sampai dengan 127 dan untuk yang tidak bertanda: 0 s/d 255. Bilangan tak bertanda dengan kata UNSIGNED Ukuran 2 byte. Bilangan bulat dengan jangkauan untuk bil an angan bertanda: -32768 s/d 32767 dan untuk yang tidak bertanda: 0 s/d 65536 Ukuran 3 byte. te. Bilan langan bulat dengan jangkauan auan untuk tuk bilan langan bertanda : -8388608 s/d 8388607 dan untuk yang tidak bertanda : 0 s/d 16777215 Ukuran 4 byte. Bilangan bulat dengan jangkauan untuk bil angan bertanda : -2147483648 s/d 2147483647 dan untuk yang tidak bertanda : 0 s/d 4294967295 Ukuran 4 byte. Sinonim dari int Ukuran 8 byte. Bilangan bulat terbesar dengan jangkauan untuk bilangan bertanda : -9223372036854775808 s/d 9223372036854775807 dan untuk yang tidak bertanda : 0 s/d 1844674473709551615 Ukuran 4 byte. Bilangan pecahan Ukuran 8 byte. Bilangan pecahan Ukuran 8 byte. Sinonim dari DOUBLE Uku Ukuran ran M byte yte. Bil Bila angan ngan pecah ecaha an, mis misal aln nya DEC DECIM IMA AL(5,2 (5,2 dapat apat digunakan untuk menyimpan bilangan -99,99 s/d 99,99 Uku Ukuran ran M byte yte. Sin Sinonim onim dari ari DEC DECIMAL IMAL,, misal isaln nya NUME NUMER RIC(5 IC(5,2 ,2)) dapat apat digunakan untuk menyimpan bilangan -99,99 s/d 99,99
Type Data untuk Bilangan (Number)
11
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
TIPE DATA DATETIME DATE TIME IMESTAMP TIME YEAR
KETERANGAN Ukuran 8 byte. Kombinasi tanggal dan jam, dengan jangkauan ‘1000-01-01 00:00:00’ s/d ‘9999-12-31 23:59:59’ Ukuran 3 Byte. Tanggal dengan jangkauan dari ‘1000-01-01’ ‘9999-12-31’ Ukuran 4 byte. Kombinasi asi tanggal da dan jam, am, dengan jang angkau kauan ‘1970-01-01 00:00:00’ s/d ‘2037’ Ukuran 3 byte. Waktu dengan jangkauan dari ‘839:59:59’ ‘838:59:59’ Ukuran 1 byte. Data tahun antara 1901 s/d 2155
dari s/d dari s/d
Type Data untuk Tanggal dan Jam
TIPE DATA
KETERANGAN
CHAR
VARCHAR
TINY INYBLOB, TINY INYTEXT EXT BLOB, TEXT MEDIUMBL MEDIUMBLOB, OB, MEDIUMT MEDIUMTEXT EXT LONGB ONGBLLOB, LONGTE NGTEX XT
ENUM(‘nilai1’,’nilai2’,.. ENUM(‘nilai1’,’nilai2’,...,’nilaiN’) .,’nilaiN’)
SET(‘nilai SET(‘nilai1’,’ 1’,’nila nilai2’, i2’,..., ...,’nila ’nilaiN’) iN’)
Mampu menangani data hi ngga 255 karakter. Tipe data CHAR mengharuskan mengharuskan untuk memasukkan data yang telah ditentukan oleh kita. Mampu menangani data hi ngga 255 karakter. Tipe data VARCHAR tidak mengharuskan untuk memasukkan data yang telah ditentukan oleh kita. Uku Ukuran 255 byte. te. Mampu men menang angani ani data samp ampai 2^8-1 data. ata. Ukuran 65535 byte. Type string yang mampu menangani data hingga 2^16-1 (16M-1) data. Ukuran Ukuran 1677721 16777215 5 byte byte.. Mampu Mampu menyimpan menyimpan data data hingga hingga 2^241 (16M-1) data. Uku Ukuran 429496729 7295 byt byte e. Mamp Mampu u men menyim yimpan dat data a hin hing gga berukuran GIGA BYTE. Tipe data ini memiliki batas penyimpanan hingga 2^32-1 (4G-1) data. Ukuran 1 atau 2 byte. byte. Tergantung Tergantung jumlah nilai nilai enumerasinya enumerasinya (maksimum 65535 nilai) 1,2,3,4 1,2,3,4 atau 8 byte, byte, tergantu tergantung ng jumlah jumlah anggota anggota himpunan himpunan (maksimum 64 anggota)
Type Data untuk Karakter dan Lain-lain
12
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
4.2 Mencipta Menciptakan kan Database Database Database adalah sebuah media utama yang harus dibuat dalam membangun sebuah basis data agar nantinya dapat kita letakkan beberapa tabel dengan kolomnya ( fieldnya). Perintah yang digunakan untuk menciptakan database pada MySQL dengan syntax berikut:
CREATE DATABASE nama_database; Contoh: Mysql > CREATE DATABASE dokter; Query OK, 1 row affected (0.11 sec) Pada contoh diatas, query OK menyatakan bahwa pembuatan database dengan nama dokter terlah berhasil dibuat, untuk melihat database yang ada pada MySQL dapat menggunakan syntax berikut:
SHOW DATABASES; Contoh:
4.3 Meng Mengha hapu puss Data Databa base se Untuk menghapus database yang telah dibuat dapat menggunakan query SQL berikut:
DROP DATABASE nama_database;
13
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
Drop berarti menghapus. Query SQL ini berfungsi untuk menghapus sebuah database, seperti contoh berikut:
4.4 Mencip Mencipta taka kan n Tabel Tabel Tabel adalah obyek utama yang harus ada pada sebuah database karena di dalamnya semua data akan disimpan. Tabel terletak pada sebuah database, sehingga pembuatan tabel dilakukan setelah sebuah database telah dibuat. Dalam tabel terdapat baris dan kolom. Baris diistilahkan dengan recordset dan kolom dengan field. Recordset
Field
Kode D01 D02
Nama Dr. Boy Trimoyo Dr. Umar
Untuk membuat sebuah sebuah tabel
Alamat Bandung Jakarta
No. HP 08123491111 08134999999
atau lebih, database harus diaktifkan
terlebih terlebih dahulu dahulu karena karena tabel akan akan dibuat ke dalam database database yang yang akan diaktifkan. Syntax untuk mengaktifkan mengaktifkan database adalah adal ah sebagai berikut:
USE nama_database; Contoh: Mysql > USE dokter; Database changed Setelah masuk ke ke dalam database yang yang dipilih, anda dapat membuat membuat sebuah tabel atau lebih. Untuk membuat tabel dapat menggunakan syntak di bawah ini:
14
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
CREATE TABLE nama_tabel ( Field-1 type(length), Field-2 type(length), Field-3 type(length),
…, Field-N type(length));
Contoh:
Pada contoh di atas, query OK menyatakan bahwa pembuatan tabel dengan nama tb_dokter berhasil dibuat, untuk melihat tabel yang ada pada database dapat menggunakan syntax berikut: b erikut:
SHOW TABLES; 4.5 Melihat Melihat Struktur Struktur Tabel Tabel Setelah tabel dibuat, anda dapat melihat tipe data dan panjang recordset dengan cara menampilkan struktur tabel. Perintah yang digunakan untuk menampilkan struktur tabel adalah:
DESC nama_tabel ; Atau:
DESCRIBE nama_tabel ; Contoh:
15
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
4.6 Mengha Menghapus pus Tabel Tabel Untuk menghapus tabel yang telah dibuat dapat menggunakan query SQL berikut:
DROP TABLE nama_tabel ; Drop berarti menghapus. Query SQL ini berfungsi untuk menghapus sebuah tabel, seperti contoh berikut: Mysql > DROP TABLE dokter; Query OK, 0 rows affected (0.03 sec)
4.7 Membuat Membuat Kunci Kunci Primer Primer (Primary (Primary Key) Key) Dalam membuat sebuah database, kita akan menemukan sebuah record yang datanya tidak boleh sama dengan record yang lain. Agar data tidak kembar maka harus dibuat kolom yang dideklarasikan sebagai kunci primary ( primary key ), ), Primary key hanya diperbolehkan dibuat satu kunci. Syntax untuk primary key ) adalah: menciptakan kunci primer ( primary
CREATE TABLE nama_tabel ( Field-1 type(length) primary key, Field-2 type(length), Field-3 type(length),
…, Field-N type(length));
Contoh:
16
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
4.8 Membuat Membuat Kolom Unik (Unique) (Unique) Kolom Unique adalah sebuah bentuk kolom yang tidak mengizinkan adanya data kembar. Apabila pada proses input terdapat data kembar maka proses tersebut akan digagalkan atau ditolah oleh database. Syntax untuk menciptakan kolom unik (Unique) adalah:
CREATE TABLE nama_tabel ( Field-1 type(length) primary key, Field-2 type(length), Field-3 type(length),
…, Field-N type(length)
UNIQUE (field)); Contoh:
4.9 Meman Memanipu ipulas lasii Tabel Tabel Perubaha tabel yang telah dibuat akan selalu dilakukan meingingat perkembangan database, termasuk diantaranya menambahkan beberapa field pada tabel, mengganti nama field atau tabel, menghapus field dan mengganti type data.
4.9.1 4.9.1 Menam Menambah bah Field Field pada pada Tabel Tabel Untuk melakukan penambahan field maka ALTER spesifikasi yang digunakan adalah ADD. Syntax yang digunakan adalah:
ALTER TABLE nama_tabel ADD nama_field type data(length);
17
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
Contoh:
4.9.2 4.9.2 Mengg Menggan anti ti Nama Nama Field Field dan dan Nama Nama Tab Tabel el Query SQL untuk merubah nama kolom ( field ) adalah sebagai berikut: ALTER TABLE nama_tabel CHANGE field_lama field_baru type_data(length); Contoh:
Sedangkan query SQL untuk mengganti nama tabel adalah sebagai berikut:
ALTER TABLE nama_tabel_lama RENAME nama_tabel_baru; Atau:
RENAME TABLE nama_tabel_lama TO nama_tabel_baru;
18
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
Contoh:
4.9.3 4.9.3 Memo Memodi difik fikas asii Tipe Tipe Data Data Query SQL untuk melakukan modifikasi terhadap field yang sudah dibuat adalah MODIFY, dengan format syntax sebagai berikut: berikut:
ALTER TABLE nama_tabel MODIFY field type_data(length); Contoh: Misalnya pada tabel tb_dokter terdapat field jenis_kelamin dengan tipe data char(1) kemudian diganti menjadi tipe tipe data enum(‘P’,’W’);
19
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
4.9.4 4.9.4 Mengha Menghapus pus Field Field pada pada Tabel Tabel Pada pembuatan tabel sering kali terjadi kesalahan seperti pada field tabel yang berlebih dan lain-lain. Untuk melakukan penghapusan field maka ALTER spesifikasi yang digunakan adalah DROP, Syntax yang digunakan adalah:
ALTER TABLE nama_tabel DROP nama_field ;
20
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
DML
BAB IV
(DATA MANIPULTAION LANGUAGE) DML adalah sebuah metode query yang dapat digunakan apabila DDL telah terjadi, sehingga fungsi dari Query DML ini untuk melakukan pemanipulasion database yang telah dibuat. Buatlah database payroll dan didalamnya buat pula tabel tb_karyawan dengan struktur tabel seperti berikut:
FIELD
TYPE
LENGTH
Noid
Int
3
Nama
Varchar
35
Jenkel
Char
1
Kota
Varchar
30
Kodepos
Varhcar
6
Tgllahir
Date
KETERANGAN Primary key, auto_increment
4.1 Mengisi Mengisi data data ke dalam dalam tabel tabel Memasukkan data atau entry data, di semua semua program yang menggunakan menggunakan query SQL sebagai standar permintaanya, digunakan perintah INSERT. Syarat untuk memasukkan data adalah telah terciptanya tabel pada sebuah database. Syntax yang digunakan adalah:
INSERT INTO nama_tabel (field-1,field-2,…,field-N) VALUES(value-1,value-2,…,value-N); Kita akan mulai mengisi data karyawan ke dalam tabel. Cara pertama sebagai berikut: Mysq Mysql l
> -> -> ->
inse insert rt int into o tb_k tb_kar arya yawan wan (nama,jenkel,kota,kodepos,tgllahir) (nama,jenkel,kota,kodepos,tgllahir) values ('Ahmad Zobari','L','Pekanb Zobari','L','Pekanbaru','28421','1980-10aru','28421','1980-10-02'); 02');
Query OK, 1 row affected (0.03 sec)
21
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
Jika diperhatikan bahwa dalam pemasukan data yang berjenis karakter. Selalu diapit dengan tanpda kutip (‘). Bisa juga digunakan tanda kutip ganda (“). Tetapi jangan dicampur dengan tanda kutip ganda dan tanda kutip tunggal. Pada contoh di atas, perhatikan ketika penulisan tanggal lahir, menggunakan format ‘tahun-
bulan-tanggal ’. Memang agak janggal, tapi begitulah memang standar MySQL untuk format penulisan tanggal. Kalau Ada perhatikan lebih teliti, mengapa kita tidak memasukkan data untuk kolom ‘noid’? ini karena sifat kolom noid yang auto_increment . Sehingga di akan secara otomatis berisi angka 1, dan terus
bertambah 1, seiring dengan penambahan data. Nah, kita akan memasukkan memasukkan 3 buah record lagi dengan cara: mysql> insert into tb_karyawan -> (nama,jenkel,kota,kod (nama,jenkel,kota,kodepos,tgllahir) epos,tgllahir) -> values -> ('Sundariwati','P','P ('Sundariwati','P','Pekanbaru','28761','1 ekanbaru','28761','1978-11-12'), 978-11-12'), -> ('Rudi','L','Tembilah ('Rudi','L','Tembilahan','28654','1988-12an','28654','1988-12-07'), 07'), -> ('Zulkarman','L','Bekasi','17211','1978-10('Zulkarman','L','Bekasi','17211','1978-10-10'); 10'); Query OK, 3 rows affected (0.05 sec) Records: 3 Duplicates: 0 Warnings: 0
Sekarang kita coba memasukkan data dengan cara yang kedua: mysql> insert into tb_karyawan -> set nama='Yuliawati', -> jenkel='P', -> kota='Bandung', -> kodepos='12993', -> tgllahir='1982-12-06'; Query OK, 1 row affected (0.03 sec)
Dan kita akan mencoba cara yang ketiga seperti berikut: mysql> insert into tb_karyawan -> values('Mawar','P','J values('Mawar','P','Jakarta','12123','198 akarta','12123','1985-09-01'); 5-09-01'); ERROR 1136 (21S01): Column count doesn't match value count at row 1
Lho, aduh…., kok error ya? Kenapa nich?, col…. J, Perhatikan pada pesan error yang terjadi. Di sana dinyatakan bahwa b ahwa jumlah kolom tidak sesuai dengan jumlah masukan data yang ada. Okelah kalau begitu, kita ingat kalo jumlah kolom ada 6, yaitu noid, nama, jenkel, kota, kodepos dan tgllahir. Sedangkan data yang kita masukkan untuk 5 kolom saja, yaitu nama, jenkel, kota, kodepos dan tgllahir. Jadi gimana duonk dengan nasibnya kolom noid? Masa dicuekin aja sich? Itu sebabnya jadi error. Walaupun kolom noid ini sifatnya AUTO_INCREMENT , khusus untuk bentuk ketiga ini dia harus diisi juga dengan nilai DEFAULTNA yaitu “NULL” sehingga perintah diatas kita ubah sedikit menjadi:
22
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
mysql> mysql> insert insert into tb_karyawa tb_karyawan n -> values(NULL,'Mawar','P values(NULL,'Mawar','P','Jakarta','12123',' ','Jakarta','12123','1985-09-01'); 1985-09-01'); Query OK, 1 rows affected affected (0.03 (0.03 sec) sec)
Kita sudah memasukan beberapa data. Bagaimana untuk melihat data-data yang sudah kita masukkan tadi?.
4.2 Mengisi Mengisi data data ke dalam dalam tabel tabel Kita dapat melihat data yang ada di dalam tabel dengan menggunakan perintah SELECT. Perintah ini adalah perintah yang akan sering kita gunakan nantinya. Kita mulai dengan cara paling p aling sederhana terlebih dahulu. mysql> select * from tb_karyawan; +------+--------------+----+------+--------------+--------+------------+------------+---------+----+---------+------------+ ---------+ | noid | nama | jenkel | kota | kodepos | tgllahir | +------+--------------+----+------+--------------+--------+------------+------------+---------+--+---------+------------+ -----------+ | 1 | Ahmad Zobari | L | Pekanbaru | 28421 | 1980-10-02 | | 2 | Sundariwati Sundariwat i | P | Pekanbaru | 28761 | 1978-11-12 | | 3 | Rudi | L | Tembilahan | 28654 | 1988-12-07 | | 4 | Zulkarman | L | Bekasi | 17211 | 1978-10-10 | | 5 | Yuliawati | P | Bandung | 12993 | 1982-12-06 | +------+--------------+----+------+--------------+--------+------------+------------+---------+--+---------+------------+ -----------+ 5 rows in set (0.00 sec)
Perintah di atas menampilkan seluruh data yang ada di dalam tabel tb_karyawan, karena menggunakan tanda asterisk (*) di dalam perintah SELECT. Bagaimana kalau kita hanya ingin menampilkan kolom nama dan jenis kelamin saja? mysql> select nama,jenkel from tb_karyawan; +--------------+--------+ | nama | jenkel | +--------------+--------+ | Ahmad Zobari | L | | Sundariwati | P | | Rudi | L | | Zulkarman | L | | Yuliawati | P | +--------------+--------+ 5 rows in set (0.00 sec)
Kalau kita hanya ingin menampilkan data-data karyawan yang berjenis kelamin perempuan saja, bagaimana caranya? Cukup dengan menambahkan perintah
WHERE pada SELECT
23
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
mysql> select nama,jenkel from tb_karyawan -> where jenkel='P'; +-------------+--------+ | nama | jenkel | +-------------+--------+ | Sundariwati | P | | Yuliawati | P | +-------------+--------+ 2 rows in set (0.02 sec)
Menampilkan data berdasarkan urutan nama karyawan dengan menambahkan perintah ORDER BY pada SELECT mysql> select * from tb_karyawan -> order by nama; +------+--------------+----+------+--------------+--------+------------+------------+---------+--+---------+------------+ -----------+ | noid | nama | jenkel | kota | kodepos | tgllahir | +------+--------------+----+------+--------------+--------+------------+------------+---------+--+---------+------------+ -----------+ | 1 | Ahmad Zobari | L | Pekanbaru | 28421 | 1980-10-02 | | 3 | Rudi | L | Tembilahan | 28654 | 1988-12-07 | | 2 | Sundariwati | P | Pekanbaru | 28761 | 1978-11-12 | | 5 | Yuliawati | P | Bandung | 12993 | 1982-12-06 | | 4 | Zulkarman | L | Bekasi | 17211 | 1978-10-10 | +------+--------------+----+------+--------------+--------+------------+------------+---------+----+---------+------------+ ---------+ 5 rows in set (0.00 sec)
Atau diurutkan berdasarkan kota: mysql> select * from tb_karyawan -> order by kota; +------+--------------+----+------+--------------+--------+------------+------------+---------+--+---------+------------+ -----------+ | noid | nama | jenkel | kota | kodepos | tgllahir | +------+--------------+----+------+--------------+--------+------------+------------+---------+--+---------+------------+ -----------+ | 5 | Yuliawati | P | Bandung | 12993 | 1982-12-06 | | 4 | Zulkarman | L | Bekasi | 17211 | 1978-10-10 | | 1 | Ahmad Zobari | L | Pekanbaru | 28421 | 1980-10-02 | | 2 | Sundariwati Sundariwat i | P | Pekanbaru | 28761 | 1978-11-12 | | 3 | Rudi | L | Tembilahan | 28654 | 1988-12-07 | +------+--------------+----+------+--------------+--------+------------+------------+---------+--+---------+------------+ -----------+ 5 rows in set (0.00 sec)
Nah kalo yang sekarang diurutkan berdasarkan nama, tetapi dengan urutan terbalik (descending). Cukup dengan d engan menambahkan perintah DESC pada SELECT: mysql> select * from tb_karyawan -> order by nama desc; +------+--------------+----+------+--------------+--------+------------+------------+---------+----+---------+------------+ ---------+ | noid | nama | jenkel | kota | kodepos | tgllahir | +------+--------------+----+------+--------------+--------+------------+------------+---------+--+---------+------------+ -----------+ | 4 | Zulkarman | L | Bekasi | 17211 | 1978-10-10 | | 5 | Yuliawati | P | Bandung | 12993 | 1982-12-06 | | 2 | Sundariwati Sundariwat i | P | Pekanbaru | 28761 | 1978-11-12 | | 3 | Rudi | L | Tembilahan | 28654 | 1988-12-07 | | 1 | Ahmad Zobari | L | Pekanbaru | 28421 | 1980-10-02 | +------+--------------+----+------+--------------+--------+------------+------------+---------+--+---------+------------+ -----------+ 5 rows in set (0.00 sec)
24
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
Ternyata kita perlu menambahkan sebuah kolom lagi, yaitu kolom gaji. Kolom gaji merupakan kolom numeric yang menampung data gaji pokok karyawan per bulannya. Jadi, kita memerlukan kolom dengan jenis data INT dengan lebar data 12 digit. Penerapannya sebagai berikut: mysql> alter table tb_karyawan -> add gaji int(12) not null default 0; Query OK, 5 rows affected (0.25 sec) Records: 5 Duplicates: 0 Warnings: 0
Sekarang kita kita cek dulu struktur struktur tabelnya: mysql> describe tb_karyawan; +----------+-------------+---+----------+-------------+------+-----+----+-----+---------+------------+----------------+ ---------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+---+----------+-------------+------+-----+-------+-----+---------+-----------+----------------+ -------+ | noid | int(3) | NO | PRI | NULL | auto_increment auto_increment | | nama | varchar(35) | YES | | NULL | | | jenkel | char(1) | YES | | NULL | | | kota | varchar(30) | YES | | NULL | | | kodepos | varchar(6) | YES | | NULL | | | tgllahir | date | YES | | NULL | | | gaji | int(12) | NO | | 0 | | +----------+-------------+---+----------+-------------+------+-----+----+-----+---------+------------+----------------+ ---------+ 7 rows in set (0.05 sec)
Tru data yang ada pada kolom gaji gimana? Kan blum di inputkan. OK, kita cek terlebih dahulu.
Loh, kok NOL ya?, sebab waktu kita menambahkan fiel gaji tadi, sudah kita set NOT NULL dan nilai defaultnya NOLL
4.3 Meng-Upd Meng-Update ate Data Data Pada Pada Tabel Tabel Sekarang kita memasukan data gaji masing-masing karyawan dengan menggunakan perintah UPDATE, kita mulai dari Ahmad Zobari, dengan noid=1; mysql> update tb_karyawan set gaji=1000000 -> where noid=1; Query OK, 1 row affected (0.03 sec) Rows matched: 1 Changed: 1 Warnings: 0
25
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
Perikasa dulu hasilnya:
Ok, ternyata gajinya sudah berubah. Kalu begitu kita lanjutkan untuk mengisi data gaji karyawan yang lain. mysql> update tb_karyawan -> set gaji=1000000 where noid=1; Query OK, 1 row affected (0.03 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> update tb_karyawan -> set gaji=1250000 where noid=2; Query OK, 1 row affected (0.03 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> update tb_karyawan -> set gaji=1500000 where noid=3; Query OK, 1 row affected (0.03 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> update tb_karyawan -> set gaji=1750000 where noid=4; Query OK, 1 row affected (0.03 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> update tb_karyawan -> set gaji=2000000 where noid=5; Query OK, 1 row affected (0.03 sec) Rows matched: 1 Changed: 1 Warnings: 0
Kita periksa semua hasilnya
26
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
4.4 Menghapus Data Pada Pada Tabel Ada kalanya untuk beberapa kebutuhan kita harus menghapus data yang sudah kita inputkan. Perintah SQL yang kita gunakan adalah DELETE
DELETE FROM nama_table WHERE kondisi ; Misalnya karyawan yang nama Yuliawati dengan noid: 5, akan kita hapus. Maka perintahs SQl SQl yang yang digunakan adalah: mysql> delete from tb_karyawan -> where noid=5; Query OK, 1 row affected (0.02 sec)
Ok, kita cek hasilnya. Apa yang terjadi?
27
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
DATABASE RELATIONAL
BAB V 5.1 Model Model Data Databa base se Mode
database
adalah
suatu
konsep
yang
terintegrasi
dalam
menggabungkan hubungan (relationship) antar data dan batasan-batasan (constraint) data dalam suatu system database. Model yang paling umum, berdasarkan pada bagaimana hubungan antar record dalam database (Record Base Data Models). Terdapat tiga jenis, yaitu: a. Model Model Database Database Hirarki Hirarki (Hierar (Hierarchical chical Database Database Model) Model) b. Model Model Database Database Jaring Jaringan an (Network (Network Database Database Model) Model) c. Model Model Database Database Relasi Relasi (Relationa (Relationall Database Database Model) Model) Model database hirarki dan jaringan merupakan model database yang tidak banyak lagi dipakai saat ini. Karena adanya berbagai kelemahan dan hanya cocok untuk struktur hirarki dan jaringan saja. Artinya tidak mengakomodir untuk berbagai macam jenis persoalan dalam suatu system database. Yang paling banyak dipakai saat ini adalah model database relasi, karena mampu mengakomodir berbagai masalah dalam system database. Berikut keterangan tentang model database ini.
5.2 Model Model Data Databa base se Model database relasi merupakan model database yang paling banyak digunakan saat ini, karena paling sederhana dan mudah digunakan serta yang paling penting adalah kemampuannya dalam mengakomodasi berbagai kebutuhan pengelolaan database. Sebuah database dalam model ini disusun ), field ), dalam bentuk tabel dua dimensi yang terdiri dari baris ( record ) dan kolom ( field pertemuan antara baris dan kolom disebut item data (data value), tabel-tabel yang ada di hubungkan (relationship ) sedemikian rupa menggunakan field-field kunci (key field ) sehingga dapat meminimalkan duplikasi data. Model database relasi ini dikemukakan pertama kali oleh E.F. Codd, salah seorang pakar dalam bidang database. Sering juga model ini disebut Database relasi.
28
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
5.3 Tingkata Tingkatan n Data Dalam Dalam Database Database Relasi Relasi Dalam suatu system database relasi, data yang tersimpan dalam DBMS mempunyai tingkatan-tingkatan, sebagai berikut:
a. Karakter (Characters ) Merupakan bagian terkecil dalam database, dapat berupa karakter numeric numeric (angka (angka 0 s.d 9,) huruf (A – Z, a – z) ataupun karak karakter-k ter-karakte arakterr khusus, seperti seperti *,&.%,# dan dan lain-lain.
b. Fiel Field d atau atau Att Attri ribu bute te Merupakan bagian dari record yang menunjukkan suatu item data yang sejenis. Misalnya: field nama, field NIM dan sebagainya. Setiap field haru mempunyai nama dan tipe data tertentu. Isi dari field di sebut Data Value. Dalam tabel database, field ini sebut ju ga kolom.
c. Reco Record rd ata atau Tupp Tupple le Tuple/Record adalah kumpulan data value dari attribute yang berkaitan sehingga dapat menjelaskan sebuah entity secara lengkap. Misal: Record entity mahasiswa adalah kumpulan data value dari field nobp, nama, jurusan dan alamat per-barisnya. Dalam tabel database, record disebut juga dengan baris.
d. Table/ ble/En Enti tity ty Entity merupakan sesuatu yang dapat diidentifikasi dari suatu system database, bisa berupa objek, orang, tempat, kejadian atau konsep yang informasinya akan disimpan di database. Missal pada system database akademik, yang menjadi entity adalah mahasiswa, dosen, matakuliah dan lain-lain. Dalam aplikasi nantinya. Penggunaan istilah entity sering disamakan dengan istilah Tabel (entity =table). =table). Disebut tabel, karena dalam merepresentasikan datanya di atur dalam bentuk baris dan kolom. Baris mewakili 1 record dan kolom mewakili 1 field. Dalam system database tradisional. Entity/table ini disebut juga dengan file.
e. Databas base Kumpulan dari tabel-tabel yang saling berelasi, disusun secara logis, sehingga menghasilkan informasi yang bernilai guna dalam proses pengambilan keputusan.
5.4 Sifat Yang Melekat Melekat Pada Suatu Tabel Tabel ·
Tidak boleh ada record yang sama (kembar)
·
Urutan record tidak terlalu penting, karena data dalam record dapat diurut sesuai dengan kebutuhan
29
By: Jaroji, S. Kom
UNISI
·
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
Setiap field harus mempunyai nama yang unik (tidak boleh ada yang sama)
·
Setiap field harus mempunyai tipe data dan karakteristik karakteristik tertentu
5.5 Jenis Hubungan Hubungan Antar Tabel Jenis hubungan antar tabel dalam model database relasi, juga didefinisikan dengan. ·
Satu ke Satu (One to One)
·
Satu ke Banyak (One to Many)
·
Banyak ke Satu (Many to One)
·
Banyak ke Banyak (Many to Many)
a. Satu Satu ke Sat Satu u (One (One to One) One) Relasi tabel one-to-one (satu-ke-satu) adalah relasi 2 tabel dengan primary key (PK) dan foreign key (FK). Ini dilakukan dengan meletakkan kolom one-to-one ke tabel baru. Sebetulnya relasi ini jarang digunakan. Namun ada beberapa alasan relasi ini digunakan: 1. Memindahka Memindahkan n data ke ke tabel tabel lain memungkink memungkinkan an untuk membuat membuat query yang lebih cepat 2. Mengisolasi Mengisolasi dan menghind menghindarka arkan n nilai NULL NULL pada pada tabel tabel utama utama 3. Membuat Membuat sebagian sebagian data sukses sukses diakses diakses Contoh tabel: Tbl_pegawai: -
id_pegawai (PK)
-
nama_depan
-
nama_balakang
tbl_gaji -
kode_as _asuransi nsi (P (PK)
-
level_gaji
-
id_pegawai (FK)
tabel pegawai dan gaji didesain one-to-one untuk mendapatkan mendapatkan keuntungan: 1. Query untuk untuk mendapa mendapatkan tkan kode_asur kode_asuransi ansi lebih cepat cepat 2. Data Data gaji gaji leb lebih ih aman aman
b. Satu Satu ke Banya Banyak k (One (One to Many) Many) Artinya satu record pada entry A ber-relasi dengan beberapa record pada entry B, tetapi tidak sebaliknya, stiap record pada entry B ber-relasi paling banyak satu record dengan entry A. dalam diagram E-R, relasi ini disimbolkan dengan angka 1 untuk menyatakan satu dan hurus M a tau N untuk menyatakan banyak.
30
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
Contoh: Dalam proses belajar mengajar di sekolah dasar misalnya, satu orang guru mengajar beberapa (banyak) murid, tetapi satu kelas (beberapa murid) hanya di ajar oleh satu guru.
c. Banyak Banyak ke Bany Banyak ak (Ma (Many ny to to Man Many) y) Artinya beberapa record pada entry A dapat ber-relasi dengan beberapa record juga pada entry B, begitu juga sebaliknya. Beberapa record pada entry B dapat ber-realasi dengan beberapa record juga pada entry A. dalam diagram E-R, relasi ini disimbolkan dengan huruf M untuk menyatakan banyak ke banyak. Contoh: Dalam hubungan antara mahasiswa dengan dosen pada perguruan tinggi. Yaitu seorang dosen mengajar banyak mahasiswa, sebaliknya seorang mahasiswa dapat diajar oleh beberapa dosen. Sehingga terjadi hubungan banyak ke banyak.
5.6 Relasi Database dengan MySQL MySQL mempunyai kemampuan untuk menggabungkan dua tabel atau lebih guna mendapatkan informasi yang diinginkan. Prosess yang dilakukan dengna nama JOIN. Dalam penggabungan dari beberapa tabel ( join join) ada beberapa hal yang perlu diperhatikan, antara lain: 1. Setiap Setiap kolom kolom disebu disebutt denga dengan n bentu bentuk k 2. Tabel-tab Tabel-tabel el yang dilibatka dilibatkan n dalam query query perlu disebut disebutkan kan dalam dalam klause FROM FROM dengan antar tabel pisah oleh koma. koma. 3. Kondisi Kondisi dalam dalam WHERE WHERE menent menentukan ukan macam macam join join yang yang terbentuk terbentuk Sebelum kita lanjut membahas tentang relasi database di MySQL kita akan membuat database baru…, oke. J. Mari kita buat database baru. Misalnya: Anda diminta untuk membuat sistem penjualan barang oleh marketing freelance di perusahaan Oryn Textile, Barang berupa Kaos Kaki @ Rp. 3500.
1. Kitab buat buat databa database, se, dbOryn dbOryn (masih (masih ingatkan ingatkan gimana gimana buatny buatnya??? a???? ? J) 2. Kita Kita buat buat dua dua tabel tabel seba sebagai gai beri berikut kut:: a. tabel tb_market tb_marketing ing (untuk (untuk mencatat mencatat data marketing) marketing) b. Tabel Tabel tb_jual tb_jual (untuk (untuk mencat mencatat at penjual penjualan an barang) barang) 3. Berikut Berikut strukt struktur ur tabeln tabelnya: ya: Tabel tb_marketing +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | NoId | char(4) | NO | PRI | NULL | | | Nama | varchar(20) | NO | | NULL | | | NoHP | varchar(15) | NO | | NULL | | | Alamat | varchar(30) | NO | | NULL | | +--------+-------------+------+-----+---------+-------+
31
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
Tabel tb_jual +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | NoJual | char(4) | NO | PRI | NULL | | | NoId | char(4) | NO | | NULL | | | TglJual | date | YES | | NULL | | | Quantity | smallint(3) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+
4. Isikan Isikan data data pada pada tabel tabel seperti seperti berikut berikut ini: Tabel tb_marketing +------+---------------+-------------+-------------------+ | NoId | Nama | NoHP | Alamat | +------+---------------+-------------+-------------------+ | M001 | Dwi Apri | 08129877444 | Gumpang Kartasura | | M002 | Pipin Wahyuni | 09787736633 09787736633 | Gebyok Kartasura | | M003 | Haryanto | 08127866666 | Gedongan Solo | | M004 | Wijiyanto | 08123477777 | Tipes Sleman | | M005 | Srimulat | 08190097744 | Bojonegoro | +------+---------------+-------------+-------------------+
Tabel tb_jual +--------+------+------------+----------+ | NoJual | NoId | TglJual | Quantity | +--------+------+------------+----------+ | J001 | M001 | 2010-01-13 | 25 | | J002 J002 | M002 M002 | 2010-0 2010-01-1 1-13 3 | 20 | | J003 | M004 | 2010-01-13 | 30 | | J004 | M006 | 2010-01-13 | 15 | +--------+------+------------+----------+ Jika kita perhatikan di tabel tb_jual, tidak menginformasikan nama Marketing yang melakukan penjualan. Mari kita coba menuliskan perintah SQL untuk menampilkan NoJual, NoId, Nama, TglJual dan Quantity, tentunya dengan menggunakan relasi. Berikut perintah SQL yang digunakan: mysql> SELECT NoJual, NoId, Nama, TglJual, Quantity -> FROM tb_marketing,tb_jual -> WHERE tb_marketing.NoId = tb_jual.NoId; ERROR 1052 (23000): Column 'NoId' in field list is ambiguous
Perhatikan hasil di atas, terdapat ERROR 1052… (dst). Kenapa terjadi seperti itu? Disebutkan bahwa terdapat field NoId ambiguous. Gimana sih…? Bingung ne…. Okey, kita bahas pelan-pelan. Field NoId dimiliki oleh dua tabel yaitu
32
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
tb_marketing dan tb_jual. Sehingga terdapat data ambigu karena tidak menjelaskan field NoId tersebut berasal dari tabel yang mana. Soulisnya… mysql> SELECT NoJual, tb_marketing.NoId, Nama, TglJual, Quantity -> FROM tb_marketing,tb_ju tb _marketing,tb_jual al -> WHERE tb_marketing.NoId = tb_jual.NoId; +--------+------+---------------+----------+--------+------+ ---------------+------------+----------+ -+----------+ | NoJual | NoId | Nama | TglJual | Quantity | +--------+------+---------------+----+--------+------+ ---------------+------------+----------+ -------+----------+ | J001 | M001 | Dwi Apri | 2010-01-13 | 25 | | J002 | M002 | Pipin Wahyuni | 2010-01-13 | 20 | | J003 | M004 | Wijiyanto | 2010-01-13 | 30 | +--------+------+---------------+------------+----------+ 3 rows in set (0.02 sec)
Perhatikan hasil/tabel di atas pada judul kolom Nama. Jika Anda menginginkan agar pada saat hasil ditmapilkan judul kolom Nama diperjelas diganti menjadi
Nama Marketing. Maka MySQL menyediakan perintah AS (kepanjangan AliaS) untuk mengganti judul kolom pada saat ditampilkan (catatan: perintah AS tidak akan merubah structural tabel, jadi nama field pada tb_marketing tb_marketing tetap Nama). mysql> SELECT NoJual, tb_marketing.NoId, Nama AS Nama_Marketing, -> TglJual,Quantity -> FROM tb_marketing,tb_jual -> WHERE tb_marketing.NoId=tb_jual.NoId; +--------+------+----------------+------------+----------+ | NoJual | NoId | Nama_Marketing | TglJual | Quantity | +--------+------+----------------+------------+----------+ | J001 | M001 | Dwi Apri | 2010-01-13 | 25 | | J002 | M002 | Pipin Wahyuni | 2010-01-13 | 20 | | J003 | M004 | Wijiyanto | 2010-01-13 | 30 | +--------+------+----------------+------------+----------+ 3 rows in set (0.00 sec)
Dari data tersebut, dapat kita lihat bahwa pada tabel tb_marketing, tidak terdapat record dengan NoId M006, dan begitu pula pada tabel tb_jual tidak terdapat record dengan NoId M003 dan M005. Apabila dilakukan join seperti perintah di atas maka beberapa record tidak akan tampil seperti yang kita mau. mysql> SELECT NoJual, tb_marketing.NoId, Nama, TglJual, Quantity -> FROM tb_marketing,tb_ju tb _marketing,tb_jual al -> WHERE tb_marketing.NoId = tb_jual.NoId;
33
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
Hanya akan menampilkan: +--------+------+---------------+-----+--------+------+ ---------------+------------+----------+ ------+----------+ | NoJual | NoId | Nama | TglJual | Quantity | +--------+------+---------------+----------+--------+------+ ---------------+------------+----------+ -+----------+ | J001 | M001 | Dwi Apri | 2010-01-13 | 25 | | J002 | M002 | Pipin Wahyuni | 2010-01-13 | 20 | | J003 | M004 | Wijiyanto | 2010-01-13 | 30 | +--------+------+---------------+----------+--------+------+ ---------------+------------+----------+ -+----------+ 3 rows in set (0.02 sec)
Lalu dimana yang memiliki No ID M003 dan M005?, untuk itulah ada beberapa join khusus. Kondisi Where Where menentukan macam join yang terbentuknya macammacammacam bentuk penggabungan (join). 1. CROSS JOIN, JOIN, Cross Join merupaka merupakan n bentuk penggabungan penggabungan yang yang paling sederhana, tanpa ada kondisi. Bentuk Umum: SELECT field1,field2 FROM tabel1 CROSS JOIN tabel2; 2. INNER JO JOIN Hampir sama dengan cross join tetapi diikuti d engan kondisi Bentuk Umum: SELECT field FROM tabel1 I NNER JOIN tabel2 ON Kondisi 3. STRA STRAIG IGHT HT JOIN JOIN Straight Join identik dengan inner join tetapi tidak mengenal klausa where Bentuk Umum: SELECT field FROM tabel1 STRAIGHT JOIN tabel2 4. LEFT LEFT (OUT (OUTER ER)) JOI JOIN N Akan menampilkan tabel disebelah kanannya dengan NULL jika tidak terdapat hubungan antara tabel disebelah kiri. Bentuk Umum: SELECT field FROM tabel1 LEFT JOIN tabel2 ON kondisi 5. RIGH RIGHT T (OU (OUTE TER) R) JOIN JOIN Kebalikan dari LEFT JOIN Bentuk Umum: SELECT field FROM tabel1 RIGHT JOIN tabel2 ON kondisi Contoh: Penggunaan LEFT JOIN
34
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
Penggunaan RIGHT JOIN
Note: penggunaan SELECT * pada LEFT atau RIGHT join akan menampilkan column yang redudansi, jadi?? Kita lanjut…. Kan…. Mari kita bandingkan dengan penggunaan NATURAL JOIN
Ternyata sama dengan query yang pertama. Jadi bisa dikatakan bahwa ini penyederhanaan query pertama, namun menghapus column yang redudansi.
35
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
BAB VI
MySQL & Visual Basic 6.0
6.1 Pemograma Pemograman n Database Database Pemograman database (Database Programming) merupakan suatu bentuk
pemograman
alternative
untuk
pengolahan
database.
Dengan
pemograman database kita dapat secara leluasa mengatur tampilan dan alur kerja sebuah database dengan lebih baik. Visual Basic merupakan salah salah satu bahasa pemograman yang yang telah mendukung mendukung pemograman database. database. Visual basic dapat dihubungkan dengan program aplikasi pengolah data lain seperti access, MySQL, SQL Server dan sebagainya. Alur kerja pemograman database dalam Visual Basic dapat dijelaskan melalui gambar berikut:
6.2 Pemog Pemogra rama man n Data Databas base e Untuk mengkoneksikan VB dengan MySQL terlebih dahulu Anda harus meninstal MySQL ODBC Connector 5.1 (Jika Anda menggunakan MySQL Server 5)
36
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
atau MySQL ODBC Connector 3.51 (Jika anda menggunakan MySQL versi 3 atau 4). Software tersebut bisa Anda download di situsnya MySQL www.mysql.com Pada bab ini saya akan menggunakan ADODB untuk menghubungkan VB dengan MySQL (MySQL yang saya gunakan adalah MySQL Server 5.x)
A. Lang Langka kahh-La Lang ngka kah h Konek Koneksi si ·
Buka Microsoft Visual Basic 6.0, Buatlah prosedur baru di MDI Form. Form Anda atau di Module (dan pastikan kalau di Module, prosedur Anda adalah Public sehingga dapat dipanggil dari form Anda). Berikan nama prosedur itu yang mewakili mewakili dengan koneksi koneksi Anda. Misalnya, bukaKoneksi, Ketikkan prosedur berikut:
·
Untuk memanggil prosedur itu, cukup panggil di form utama anda (atau form dimana anda mau memulai koneksi anda) dengan mengetik:
Call bukaKoneksi atau bukaKoneksi ·
Dan seperti biasa, ketika anda menutup aplikasi, anda harus menutup dulu koneksi anda ke MySQL. Biasanya prosedur tutup koneksi ini saya taruh di balok b alok MDIForm_Unload
37
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
B. Tambah, Ubah dan Hapus data Berikut adalah lan gkah-langkah bagaimana Anda menambah/menyimpan data, mengubah data dan menghapus data pada table yang telah Anda buat di MySQL. Misalnya saya membuat tabel tbmhs dengan field (NIM,Nama) ·
Rancang form di VB seperti berikut ini:
·
Atur propertinya seperti berikut ini: Control
Property
Name
Label
Caption
NIM
Label
Caption
Nama
Text
Name
txtNim
Text
Name
txtNama
Command
Name
cmdTambah
Caption
&Tambah
Name
cmdUbah
Caption
&Ubah
Name
cmdHapus
Caption
&Hapus
Command Command
38
By: Jaroji, S. Kom
UNISI
PEMOGR PEMOGRAMAN AMAN III III (VB+ (VB+MyS MySQL) QL) | 2010 2010
·
Kode program buka koneksi di Form_Load: Private Sub Form_Load(); bukaKoneksi End Sub
·
Kode program menambah/menyimpan data ke tabel: Private Sub cmdTambah_Click(); Dim strInsert As String strInser strInsert t = “INSERT “INSERT INTO tbmhs tbmhs VALUES VALUES “ & _ “(‘” & txtNIM txtNIM.Te .Text xt &”’,’” &”’,’” & txtNam txtNama.T a.Text ext & “’)”; “’)”; Con.Execute strInsert; End Sub
·
Kode program mengubah data Private Sub cmdUbah_Click(); Dim strEdit As String strE strEdi dit t = “UP “UPDA DATE TE tbmh tbmhs s SET SET Nama Nama=’ =’”& ”& txtN txtNIM IM.T .Tex ext t &”’ &”’ “ & _ “WHERE “WHERE NIM NIM = ‘” ‘” & txtN txtNIM IM.T .Text ext & “’”; “’”; Con.Execute strEdit; End Sub
·
Kode program menghapus menghapus data Private Sub cmdHapus_Click(); Dim strHapu strHapus s As String String str strHapu Hapus s = “DE “DELETE LETE FRO FROM tbm tbmhs” hs” “ & _ “WHER “WHERE E NIM = ‘” & txtNI txtNIM. M.Tex Text t & “’”; “’”; Con.Execute strHapus; End Sub
dari kondisi program di atas, dapat Anda lihat bahwa perintah untuk menambah data, mengubah data dan menghapus data di Visual Basic bisa menggunakan bahasa SQL seperti yang sudah dipelajari pada babbab sebelumnya. sebelumnya.
Tantangan: Jika perintah perintah tambah tambah,, ubah ubah dan hapus data di VB bisa menggunakan menggunakan bahasa SQL. Bagaimana jika Anda diminta membuat membuat program di VB untuk membuat tabel baru disertai struktur tabel yang melengkapinya (Field type, field size dst), Silakan Anda temukan solusinya berdasarkan syntax SQL yang telah Anda pelajari di bab-bab b ab-bab sebelumnya. sebelumnya.
Pustaka. Apri, Setyorini, dkk. Pemograman basis data lanjut , STMIK Duta Bangsa www.mysql.com
39
By: Jaroji, S. Kom