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