Pertemuan 9 Struktur Query Language(SQL) INDIKATOR
1. Membuat table dan memodifikasi tabel dengan perintah SQL 2. Memahami integrity Constraint -
Primary key
-
Foreign key
Pendahuluan SQL ( Structured Query Language ) adalah bahasa stndart yang digunakan untuk mengakses server database . Semenjak tahun 70-an bahasa ini telah dikembangkan oleh IBM, yang kemudian diikuti dengan adanya Oracle, menggunakan SQL, proses
Informix dan Sybase. Dengan
akses database menjadi lebih user-friendly dibandingkan
dengan misalnya dBase ataupun
Clipper
yang
masih
menggunakan
perintah
–
perintah pemrograman murni. Selain MySQL, ada beberapa jenis pemograman yang berorientasi database yang dapat digunakan untuk aplikasi di web seperti ORACLE. Oracle merupakan sebuah perusahaan besar di dunia yang cakupan bisnis salah satunya adalah penjualan software dan pembuatan software database yang diperuntukkan bagi perusahaan-perusahaan besar di dunia. Karena softwarenya
tidak bebas di “pasaran” atau tidak free software
maka sebagian besar perusahaan kecil atau menengah atau programmer web masih menggunakan database MySQL sebagai software database perusahaan atau webnya. Modul Teori Database – Aknela 2013
49
Berita
terayar
mengabarkan
bahwa
ORACLE
merupakan perusahaan yang
mendapatkan keuntungan terbesar dalam bisnis software database.MySQL adalah sebuah server database SQL multiuser dan multi-threaded. SQL sendiri adalah salah satu bahasa database yang paling populer di dunia. Implementasi program server database ini adalah program daemon 'mysqld' dan beberapa program lain serta beberapa pustaka. MySQL dibuat oleh TcX dan telah dipercaya mengelola sistem dengan 40 buah database berisi 10,000 tabel dan 500 di antaranya memiliki 7 juta baris (kira-kira 100 gigabyte data). Database ini dibuat untuk keperluan sistem database yang cepat, handal dan mudah
digunakan. Walaupun memiliki kemampuan yang cukup baik, MySQL untuk
sistem operasi Unix bersifat freeware, dan terdapat versi shareware untuk sistem operasi windows. Menurut pembuatnya, MySQL disebut seperti "my-ess-que-ell" dan bukan my-sequel ! Sebagaimana database sistem yang lain, dalam SQL juga dikenal hierarki server dengan
database-database.
Tiap-tiap
memiliki field-field. Umumnya
database memiliki tabel-tabel. Tiap-tiap tabel
informasi
tersimpan
secara logik merupakan struktur 2 dimensi
dalam tabel
–
tabel
yang
terdiri atas baris dan kolom.Field-
field tersebut dapat berupa data seperti int , realm char, date, time dan lainnya. SQL tidak memiliki fasilitas pemrograman yang lengkap, tidak ada looping ,misalnya.
Sehingga
untuk
ataupun
percabangan
menutupi kelemahan ini perlu digabung dengan bahasa
pemrograman semisal C. Tipe Data Beberapa
jenis
tipe data dalam MySQL memiliki
tipe
tersendiri dalam tiap
field di table databasenya. MySQL mengenal beberapa type data field, yaitu : 1. Tipe data numerik Tipe data numerik dapat dibedakan menajdi dua kelompok, yaitu tipe data integer dan tipe data floating point. Tipe data integer untuk data bilangan bulat sedangkan tipe data floating point digunakan untuk bilangan desimal.
Modul Teori Database – Aknela 2013
50
Tipe data numeric dapat kita sajikan dalam table di bawah ini :
Besar kebutuhan memori penyimpanan untuk masin-masing tipe data di atas sebagai berikut
Yang termasuk dalam tipe data string adalah tipe-tipe data berikut :
3. Tipe data waktu Yang termasuk dalam tipe data tanggal dan waktu adalah sebagai berikut :
Modul Teori Database – Aknela 2013
51
Tipe data char() dan varchar() pada prinsipnya sama. Yang menjadi perbedaannya adalah
pada
jumlah
memori
yang
dibutuhkan
untuk penyimpanan. Memori
penyimpanan yang dibutuhkan tipe data char() bersifat statis, besarnya tergantung pada
berapa
jumlah
karakter
dideklarasikan. Sebaliknya,
yang ditetapkan
pada
saat
field
tersebut
tipe data varchar() besar memori penyimpanan tergantung
terhadap berapa karakter yang digunakan ditambah 1 byte yang berisi data jumlah karakter yang digunakan. Pengantar Sintak Dasar MySQL
merupakan
bahasa
pemograman
database
di
mana penulisan
sintaknya tidak serumit bahasa pemograman lainnya seperti java, C++ dan sebagainya. Satu hal yang perlu diingat bahwa setiap penulisan script MySQL di Dos-Prompt harus selalu diakhiri dengan tanda titik koma (;). Di dalam source MySQL yang telah terinstal secara default telah terisi database yang bernama mysql
sebuah
dan tes . Untuk dapat menampilkan apasaja nama
database yang telah ada maupun yang akan kita buat, gunakan sintak : Mysql> show databases; Perhatikan contoh di bawah ini :
Modul Teori Database – Aknela 2013
52
Contoh databases;
di
berarti
atas kita
menunjukkan bahwa dengan menggunakan sintak dapat
menampilkan
seluruh nama
database
show
yang telah
ada.Sintak untuk bisa masuk kedalam salah satu system database tersebut adalah : Mysql>use nama_database; Perhatikan gambar di bawah ini :
Dengan mengetikkan sintak use mysql; dan keluar kalimat database change, berarti kita telah masuk ke dalam database mysql yang telah ada. Di setiap database tentu ada terdapat beberapa table yang menjadi komponen dasar sebuah database. Sintak untuk menampilkan seluruh table yang telah ada di dalam database mysql adalah : mysql>show tables; perhatikan gambar di bawah:
Dari gambar di atas, kita dapat melihat bahwa di dalam database mysql sudah ada beberapa table yang telah default dari mysql-nya sendiri. Didalam database tersebut ada table columns_priv (columns_privilege), db, host, tables_privilege, dan user di mana tiap
tablenya memiliki
fungsi tertentu yang dapat diakses oleh tiap user. Database
mysql ini biasanya sering digunakan bagi webmaster sebagai tempat penyimpanan data,
Modul Teori Database – Aknela 2013
53
karena table-table yang telah ada dan table yang dibutuhkan sebagian besar telah terpenuhi. Fungsi tiap table tersebut akan kita bahas di bawah ini. Object Database •
Object-object Database terdiri dari :
Statement CREATE TABLE •
Untuk membuat table dibuat perintah CREATE TABLE. CREATE TABLE [schema, ] table ( column datatype [DEFAULT expr][,…]);
Penggunaan DEFAULT •
DEFAULT digunakan untuk memberi nilai default pada kolom yang dimaksud.
•
Contoh : secara default tanggal mulai bekerja adalah sama dengan tanggal system
•
saat data dimasukkan, jadi : … hiredate DATE DEFAULT SYSDATE, …
Pembuatan Tabel dalam Database (SQL) •
Contoh pembuatan suatu table :
Modul Teori Database – Aknela 2013
54
•
Untuk menampilkan struktur dari table :
•
Terdapat 2 (dua) macam table dalam Oracle Database :
1. Tabel User yaitu table yang dibuat dan dipelihara oleh user, berisi informasi user. 2. Data Dictionary yaitu table yang dibuat dan dipelihara oleh Oracle server, dan berisi informasi database Melakukan query pada Data Dictionary -
USER_ Berisi object yang dimiliki oleh user.
-
ALL_ Semua object yang dapat diakses oleh user, baik yang dimiliki dimil atau pun yang tidak tapi user punya hak akses atas object yang tidak dimiliki tsb
-
DBA_ User dengan privilege DBA yang dapat mengakses sembarang object dalam database
-
V$_ Menampilkan performansi server database dan penguncian, hanya dapat diakses oleh DBA.
Modul Teori Database – Aknela 2013
55
Pembuatan Tabel dengan Subquery •
Table dapat dibuat dengan perintah CREATE TABLE dikombinasikan dengan pilihan AS subquery. Untuk mencocokkan kolom yang sesuai dengan kolom yang ada pada subquery.
•
Hasilnya adalah table dept30 yang berisi data pegawai yang bekerja di department 30 pada table pegawai.
• Statement ALTER TABLE Perintah ALTER TABLE digunakan untuk :
Modul Teori Database – Aknela 2013
56
Menambah kolom baru Memodifikasi kolom yang sudah ada Mendefinisi nilai default untuk kolom baru •
Menambahkan Kolom baru ke dalam Tabel
Sintak dari perintah ALTER TABLE untuk menambah kolom baru pada table : ALTER TABLE table ADD (column datatype [DEFAULT expr] [, column datatype] … ); •
Memodifikasi Kolom pada Tabel
Sintak dari perintah ALTER TABLE untuk memodifikasi kolom pada Tabel : •
ALTER TABLE table
•
MODIFY (column datatype [DEFAULT expr][, column datatype] … );
Menghapus Tabel
Modul Teori Database – Aknela 2013
57
•
Melakukan penghapusan table dengan perintah DROP, berarti mengerjakan hal berikut :
-
Semua data dan struktur dari table akan dihapus
-
Semua transaksi pending akan di-commit
-
Semua indeks akan dihapus
-
Perintah drop ini tidak bisa di-rollback
Definisi Constraint Contsraint adalah batasan atau aturan yang ada pada table. Constraint mencegah penghapusan data dari suatu table yang mempunyai keterkaitan dengan table yang lain. Misal terdapat keterkaitan antara table department dengan table pegawai. Dimana pada table pegawai menyimpan informasi kolom nomer department yang juga terdapat pada table department. Jika baris dengan nomer department ‘10’ akan dihapus dari table department, sedangkan terdapat data pegawai yang bekerja pada department tersebut, maka dengan adanya constraint antara dua table, penghapusan tersebut tidak bisa dilakukan. •
SQL menyediakan beberapa tipe constraint berikut :
NOT NULL
PRIMARY KEY
FOREIGN KEY
NOT NULL Constraint •
Suatu kolom yang didefinisikan dengan constraint NOT NULL tidak boleh berisi nilai NULL.
•
Kolom yang befungsi sebagai kunci primer (primary key) otomatis tidak boleh NULL.
Modul Teori Database – Aknela 2013
58
PRIMARY KEY Constraint •
Constraint PRIMARY KEY membentuk key yang unik untuk suatu table. Kolom yang didefinisikan sebagai PRIMARY KEY akan mengidentifikasi suatu baris data menjadi unik.
FOREIGN KEY Constraint •
FOREIGN KEY constraint didefinisikan pada suatu kolom yang ada pada suatu table, dimana kolom tersebut juga dimiliki oleh table yang lain sebagai suatu PRIMARY KEY.
Menambahkan suatu Constraint
Modul Teori Database – Aknela 2013
59
•
Untuk menambahkan suatu Constraint, digunakan perintah ALTER TABLE.
•
Cara penulisan : ALTER TABLE table ADD [CONSTRAINT constraint] type
(column);
Menghapus Constraint •
Untuk menghapus suatu Constraint, juga digunakan perintah ALTER TABLE.
Cara penulisan :
ALTER TABLE table DROP [CONSTRAINT constraint] type (column);
•
Untuk menghapus kolom yang merupakan PRIMARY KEY yang ada pada table parent yang berhubungan dengan suatu kolom pada table child -> kolom ini merupakan FOREIGN KEY dalam table parent, digunakan perintah CASCADE.
Modul Teori Database – Aknela 2013
60
Menonaktifkan (disabling) Constraint •
Untuk menonaktifkan constraint digunakan klausa DISABLE.
Mengaktifkan (enabling) Constraint •
Untuk mengaktifkan kembali constraint, digunakan klausa ENABLE
Menampilkan Constraint •
Tabel USER_CONSTRAINT menyimpan informasi tentang constraint.
•
Kolom tipe constraint (constraint_type) dapat berisi : C untuk constraint CHECK,R untuk referential integrity atau FOREIGN KEY, P untuk PRIMARY KEY, U untuk constraint UNIQUE.
Modul Teori Database – Aknela 2013
61