Sistem Basis Data DANNY KRIESTANTO, S.KOM., M.ENG
SQL Introduction Setelah Membuat ERD dan Model Data Relasional, what’s next? Bagaimana cara membangun entitas dan relationship tersebut agar dapat digunakan? Bagaimana cara memasukkan data-data ke dalam tabel? Bagaimana cara mengambil data-data yang sudah dimasukkan tadi? Jawabannya: gunakan SQL
Structured Query Language Structured Query Language (SQL) merupakan bahasa komputer standar yang digunakan untuk komunikasi dengan sistem basis data relasional. Standarisasi SQL didefinisikan oleh American National Standard Institute (ANSI) dan International Standard Organization (ISO). SQL versi terakhir adalah SQL-99
Kategori Utama Bahasa SQL Secara umum, SQL hanya dibagi atas 2 bagian, yakni: DML (Data Manipulation Language), yang memperbolehkan proses atau manipulasi obyek basis data. DDL (Data Definition Language), yang mendukung definisi atau pembuatan dari obyek basis data seperti tabel, indeks, sequence, dan view. Meskipun pada kenyataannya, beberapa vendor basis data mempunyai lebih dari dua macam ini. Catatan: penggunaan SQL dalam kuliah ini menggunakan SQL yang digunakan pada Oracle.
Data Definition Language DDL memiliki ciri khas tertentu, yaitu perintah- perintah yang menggunakan klausa/statement/pernyataan CREATE, ALTER, atau DROP.
Data Definition Language - CREATE Sintaks DDL untuk pembuatan tabel: CREATE TABLE nama_tabel ( nama_kolom1 tipe_data_kolom1 opsi1, nama_kolom2 tipe_data_kolom2 opsi2, … ); Dengan: nama_kolom adalah nama dari field yang akan dibuat Tipe_data_kolom adalah tipe data dari kolom tersebut Opsi memiliki beberapa kemungkinan, seperti: primary key, not null, dan lain sebagainya. Opsi dapat diletakkan di bawah, setelah menyebutkan semua nama_kolom dan tipe_data.
Data Definition Language - CREATE CREATE TABLE nama_tabel ( nama_kolom1 tipe_data_kolom1, nama_kolom2 tipe_data_kolom2, …, PRIMARY KEY (nama_kolom), FOREIGN KEY (nama_kolom) REFERENCES nama_tabel (nama_kolom) );
Tipe Data Setiap DBMS memiliki nama tipe data masing-masing, namun secara umumnya ada beberapa tipe data yang wajib ada. String : Tipe data yang diapit oleh tanda petik tunggal atau petik ganda. Yang termasuk tipe data string adalah VARCHAR, VARCHAR2, dll. Numerik : berfungsi untuk menampung nilai numerik, seperti : NUMBER, FLOAT, INTEGER, dll Tanggal : Tanggal merupakan tipe data krusial yang wajib ada di setiap DBMS. Yang termasuk di antaranya adalah DATE, TIMESTAMP, dll. BLOB : Binary Large Object, yang digunakan untuk menampung data-data berukuran besar, seperti image, file, dsb. Setiap DBMS memiliki macam-macam tipe BLOB yang berbeda, termasuk ukuran data maksimum yang dapat ditampungnya. Pada beberapa DBMS ada juga tipe data lain seperti Boolean.
Besaran Penyimpanan Data String: contoh: Oracle : CHAR: byte; VARCHAR/VARCHAR2 : 1 – 4000 byte ValueCHAR(4)Storage Required VARCHAR(4)Storage Required ''' 4 bytes''1 byte 'ab' 4 bytes'ab'3 bytes 'abcd' 4 bytes'abcd'5 bytes 'abcdefgh''abcd'4 bytes'abcd'5 bytes
Besaran Penyimpanan Data Numerik: (MySQL) TypeStorage (Bytes) Minimum Value (Signed/Unsigned) Maximum Value (Signed/Unsigned) TINYINT SMALLINT MEDIUMINT INT BIGINT
Numerik: (Oracle) TypeStorage (Bytes) Minimum Value (Signed/Unsigned) Maximum Value (Signed/Unsigned) Bilangan Positif byte-1 x Sepanjang 38 digit9,99…99 x sepanjang 38 digit Bilangan Negatif1 – 22 byte1 x sepanjang 38 digit x Sepanjang 38 digit Besaran Penyimpanan Data
Tanggal: (MySQL) secara default berukuran byte Tanggal: (Oracle) Secara default berukuran 7 Byte Data Type Storage (bytes) “Zero” Value DATE 3 ' ' TIME 3 '00:00:00' DATETIME 8 ' :00:00' TIMESTAMP 4 ' :00:00' YEAR
BLOB: (MySQL) 2 16 – 2 byte BLOB: (Oracle) berukuran standar hingga maksimum 2 32 – 1 byte atau sekitar 4GB per record Keterangan: ada berbagai tipe variasi tipe data BLOB yang dapat digunakan sesuai kebutuhan. Besaran Penyimpanan Data
KEY pada Implementasi Tabel Setiap Key yang diciptakan pada tabel memiliki fungsi tersendiri. FOREIGN KEY Konsep tabel induk dan tabel anak. INDEX KEY Untuk mempercepat pencarian. Efek samping: memperlambat proses INSERT, UPDATE, dan DELETE UNIQUE KEY Nilai tiap-tiap record/tupel hanya boleh ada satu. PRIMARY KEY Berfungsi ganda, yakni sebagai referensi dari FOREIGN KEY, sebagai INDEX KEY, dan juga sebagai UNIQUE KEY. FOREIGN KEY merujuk pada tabel lain yang memiliki PRIMARY KEY, untuk menjaga integrity constraint.
Integrity Constraint Merupakan batasan-batasan yang diberikan pada skema basis data, tujuannya untuk menjaga konsistensi data. Klausa-klausa yang termasuk dalam constraint adalah: NOT NULL : kolom tidak boleh bernilai null UNIQUE : kolom hanya memiliki nilai tunggal PRIMARY KEY : identifikasi unik untuk setiap baris pada tabel FOREIGN KEY : hubungan kolom dengan kolom dari tabel referensi CHECK : memberikan suatu kondisi yang bernilai benar
Data Definition Language - CREATE Contoh kasus (on board) slide 4 halaman 28 untuk tabel PEGAWAI dan KLIEN Catatan: Di tabel pegawai masih terdapat tupel nilai ganda, hilangkan redundansi-nya => primary key.
Data Definition Language - CREATE PEGAWAI KLIEN PEGAWAI_KLIEN Id_klienNama_klien K05Martini K08Anton K02Sarmini K04Eka K10Andin K06Mitha K24Buyung K90Indah No_pe g Id_klien E37K05 E37K08 E37K02 E38K04 E38K10 E39K06 E39K24 E39K90 No_pegNama_pe g E37Nina E38Tono E39Hadi
DATA DEFINITION LANGUAGE - ALTER Alter berfungsi untuk merubah/menambahi/menghapus sesuatu pada obyek yang telah dibuat. Misalnya: menambah kolom memodifikasi kolom memberikan nilai default pada kolom baru menghapus kolom Namun operasi tersebut tidak terbatas hanya pada tabel saja.
DATA DEFINITION LANGUAGE - ALTER Perintah dasar ALTER untuk menambah kolom tabel: ALTER TABLE nama_tabel ADD COLUMN ( nama_kolom tipe_data [DEFAULT ekspresi ], nama_kolom tipe_data [DEFAULT ekspresi ], … ); Perintah ALTER untuk modifikasi tabel ALTER TABLE nama_tabel MODIFY ( nama_kolom tipe_data [DEFAULT ekspresi ] nama_kolom tipe_data [DEFAULT ekspresi ] … );
DATA DEFINITION LANGUAGE - ALTER PERINTAH ALTER untuk menambah PRIMARY KEY ALTER TABLE nama_tabel ADD CONSTRAINT nama_kunci PRIMARY KEY (nama_kolom); Perintah ALTER untuk menambah foreign key. ALTER TABLE nama_tabel ADD CONSTRAINT nama_kunci FOREIGN KEY (nama_kolom_tabel_anak) REFERENCES nama_tabel_induk (nama_kolom_tabel_induk);
DATA DEFINITION LANGUAGE - ALTER Perintah ALTER untuk menghapus kolom: ALTER TABLE nama_tabel DROP ( nama_kolom ); Merubah nama tabel: RENAME nama_lama TO nama_baru ; Menghapus tabel: DROP TABLE nama_tabel opsi; Pada Oracle, opsi terdiri atas perintah CASCADE DELETE dan PURGE CASCADE DELETE untuk ikut menghapus semua integrity constraint PURGE untuk menghapus tabel tanpa dapat di-undo (hilang selamanya)
Ringkasan DDL CREATE CREATE SCHEMA / CREATE DATABASE CREATE TABLE CREATE VIEW ALTER ALTER SCHEMA / ALTER DATABASE ALTER TABLE ALTER VIEW DROP DROP SCHEMA DROP TABLE DROP VIEW CONSTRAINT, contoh: CREATE TABLE … FOREIGN KEY … REFERENCES… ALTER TABLE … ADD FOREIGN KEY … REFERENCES … ALTER TABLE … DROP FOREIGN KEY …
Data Manipulation Language Pada dasarnya, perintah DML terdiri hanya atas 4 model dasar, yakni: SELECT, INSERT, UPDATE, DELETE. Namun pada Oracle, SELECT tidak termasuk dalam kategori ini, dan digantikan dengan perintah MERGE. Perintah-perintah ini ini dapat dipautkan dengan perintah dari bahasa pemrograman sehingga dapat dikerjakan lewat event tertentu (penekanan tombol, dsb.)
Data Manipulation Language - INSERT INSERT merupakan perintah untuk memasukkan data ke dalam tabel. Sintaks dasarnya: INSERT INTO nama_tabel (nama_kolom1, nama_kolom2, …) VALUES (nilai1, nilai2, …); Jikalau nama_kolom yang akan di-insert urutannya telah sesuai dengan yang ada pada struktur tabel, nama_kolom tidak perlu disebutkan. Sehingga sintaksnya dapat diperpendek menjadi: INSERT INTO nama_tabel V ALUES (nilai1, nilai2, …); Catatan: nilai yang tipe datanya string harus menggunakan tanda petik tunggal yang mengapit nilai tersebut.
Data Manipulation Language - UPDATE UPDATE digunakan untuk mengubah record/tupel yang telah di- insert sebelumnya. Jika tanpa menggunakan syarat, semua tupel akan diganti. Sintaks dasarnya: UPDATE nama_tabel SET nama_kolom = nilai [ WHERE nama_kolom operator syarat]; Ada macam-macam tipe operator: Single value: =,, = Multi value : IN, ALL, ANY
Data Manipulation Language - DELETE Delete digunakan untuk menghapus tupel. Jika tanpa menggunakan syarat, semua data dalam tabel tersebut akan dihapus. Sintaks dasarnya: DELETE FROM nama_tabel [ WHERE nama_kolom operator syarat;]
Data Manipulation Language - SELECT Perintah ini digunakan untuk mengambil data dari dalam tabel. Merupakan perintah yang paling sering digunakan jika dibandingkan perintah-perintah SQL yang lain. Struktur dasar sintaks SELECT: SELECT [DISTINCT] nama_kolom1, nama_kolom2, … FROM daftar_nama_tabel [ WHERE nama_kolom operator syarat [ AND / OR nama_kolom2 operator syarat …]] [ GROUP BY nama_kolom] [ HAVING fungsi_agregasi(nama_kolom) operator syarat] [ ORDER BY nama_kolom ASC / DESC ]; Fungsi_agregasi akan dibahas nanti.
Ekspresi Aritmetika OperatorDeskripsi + Penjumlahan - Pengurangan * Perkalian / Pembagian Urutan Pengerjaan: *, /, +, -
Operator Perbandingan OperatorArti = Sama dengan > Lebih besar dari >= Lebih besar atau sama dengan < Kurang dari <= Kurang dari atau sama dengan <> Tidak sama dengan != Tidak sama dengan ^= Tidak sama dengan BETWEEN … AND … Berada di antara 2 value IN( himpunan ) Yang cocok dengan salah satu yang terdapat dalam set LIKE Yang cocok dengan pola karakter tertentu IS NULL Jika value-nya merupakan nilai null
Logika Kondisi OperatorArti AND Menghasilkan TRUE apabila kedua komponen benar OR Menghasilkan TRUE apabila salah satu komponen benar NOT Menghasilkan TRUE apabila kondisinya false
Tata Urutan Operator Dari sekian banyak operator yang telah disebutkan sebelumnya, tata urutan pengerjaannya dapat dilihat pada tabel berikut. Urutan Pengerjaan Operator 1Operator aritmetika 2Operator penggabungan 3Operator perbandingan 4IS [NOT] NULL, LIKE, [NOT] IN 5[NOT] BETWEEN 6Kondisi logika NOT 7Kondisi logika AND 8Kondisi logika OR
Data Manipulation Language - SELECT Self note, hal-hal yang perlu dilakukan : Buat Contoh query dari skema yang sudah ada hingga WHERE. Next week : natural join