BAB V. Basis Data Darmawan Satyananda 74

Ukuran: px
Mulai penontonan dengan halaman:

Download "BAB V. Basis Data Darmawan Satyananda 74"

Transkripsi

1 BAB V SQL (STRUCTURED QUERY LANGUAGE) Query adalah permintaan untuk mendapatkan data dari basis data. SQL merupakan bahasa standar dalam basis data relasional untuk membuat basis data dan mendapatkan data dari basis data. SQL menyediakan interface bahasa deklaratif dan non prosedural, sehingga pengguna hanya menentukan hasil apa yang diinginkan, sedangkan bagaimana eksekusi dan optimisasi query dilakukan oleh DBMS. Dalam SQL terdapat sejumlah perintah yang bisa dibagi ke dalam 3 jenis: Perintah DDL (Data Definition Language) untuk membuat, memodifikasi, dan menghapus basis data dan tabel. Perintah DML (Data Manipulation Language) untuk memasukkan data, mengubah data, menghapus data dan query terhadap data dalam tabel. Banyak yang menganggap perintah DML sebagai inti dari perintah-perintah SQL Perintah DCL (Data Control Language) untuk mengontrol basis data. Termasuk di dalamnya pengendalian transaksi basis data, integritas basis data, security, dan pemberian hak untuk melakukan akses terhadap basis data dan obyek dalam basis data Versi asli SQL bernama SEQUEL (Structured English Query Language) yang dikembangkan di laboratorium IBM sekitar tahun 1970, dan dirancang sebagai interface untuk basis data relasional SYSTEM R. Saat ini SQL digunakan sebagai bahasa standar bagi kebanyakan basis data relasional komersial, seperti Oracle, Microsoft SQL Server, MySQL, postgresql, dan Microsoft Access. SQL juga telah diterapkan pada mainframe dan PC. Penerapan SQL memberikan beberapa keuntungan (Hoffer dkk, 2002): Pengurangan biaya pelatihan karena cukup melatih satu jenis bahasa saja Peningkatan produktivitas karena pengguna bisa mempelajari SQL secara lebih mendalam Kemudahan dalam migrasi aplikasi dari satu jenis mesin ke mesin yang lain, selama sama-sama menggunakan SQL. Masa pakai aplikasi yang lama karena tidak perlu mengubah bahasa Mengurangi ketergantungan kepada salah satu vendor aplikasi tertentu Memungkinkan komunikasi antar aplikasi dan DBMS pada sistem yang berbeda. Standarisasi SQL dilakukan oleh American National Standard Institute (ANSI). Standar pertama adalah SQL-86 atau SQL1 pada tahun 1986, diikuti oleh SQL-92 (dikenal juga dengan SQL2) pada Standar terbaru SQL adalah SQL-1999 atau SQL3. Walau begitu tidak semua fitur SQL dalam standar tersebut direalisasikan oleh DBMS, sehingga Basis Data Darmawan Satyananda 74

2 masih memunculkan ketidakkompatibelan perintah antar DBMS yang satu dengan yang lain. Masing-masing DBMS juga memunculkan fitur tersendiri yang mungkin tidak ada pada DBMS lain sehingga juga mengakibatkan ketidakkompatibelan perintah. Untuk query yang kompleks, sering harus dilakukan perubahan bila berpindah ke DBMS lain. Dalam bab ini, perintah SQL yang digunakan telah diuji pada Microsoft Access 2000 dan XP, serta MySQL yang dijalankan pada sistem operasi Windows. Beberapa hasil query akan ditunjukkan, terutama pada query DML. Bab ini tidak membahas bagaimana penggunaan SQL dalam Microsoft Access dan MySQL Penentuan Skema Tabel SQL menggunakan istilah tabel, baris, kolom, masing-masing untuk menyatakan relasi, tupel, dan atribut. Seperti yang telah disebutkan sebelumnya, perintah DDL dalam SQL berkaitan dengan pembuatan dan modifikasi tabel dan basis data. Walaupun pada bab I sudah dinyatakan bahwa basis data adalah kumpulan tabeltabel yang saling terkait, SQL tidak mengenal perintah untuk pembuatan basis data. Pembuatannya diserahkan implementasinya pada DBMS yang bersangkutan. Ada juga yang berkaitan dengan basis data yaitu schema (skema) yang mendaftar semua obyek dalam basis data semisal tabel, indeks, dan view. Pembuatan skema sifatnya juga opsional, sehingga bisa diabaikan. Ada 3 perintah yang digunakan untuk penentuan skema tabel yaitu CREATE TABLE, ALTER TABLE, dan DROP TABLE, masing-masing untuk membentuk tabel, mengubah tabel, dan menghapus tabel Membuat Tabel Untuk membentuk suatu tabel baru digunakan perintah CREATE TABLE, dengan menyebutkan nama tabel, atribut, serta sejumlah constraint (batasan) yang diperlukan. Perintah pembuatan tabel mempunyai bentuk umum: CREATE TABLE <nama tabel> (<nama kolom> <tipe kolom> [NOT NULL] [UNIQUE] [DEFAULT <nilai>]) {,<nama kolom> <tipe kolom> [NOT NULL] [UNIQUE] [DEFAULT <nilai>]} [,PRIMARY KEY (<nama kolom> {[,<nama kolom>]})] [,UNIQUE (<nama kolom>)] [{,FOREIGN KEY (<nama kolom>) REFERENCES <nama tabel>(<nama kolom>) ON UPDATE CASCADE ON DELETE CASCADE}] [,CONSTRAINT <nama constraint> <definisi constraint>] ); <nama tabel> adalah nama tabel yang akan dibuat, <nama kolom> adalah atribut tabel, <tipe kolom> adalah tipe data, dan NOT NULL adalah aturan yang menyatakan apakah suatu atribut bisa menerima nilai NULL atau tidak. Bila suatu atribut tidak diperbolehkan mempunyai nilai null maka tambahkan constraint NOT NULL, yang Basis Data Darmawan Satyananda 75

3 umumnya berlaku untuk atribut kunci primer suatu tabel. Klausa UNIQUE menyatakan bahwa nilai suatu kolom harus unik, baik sebagai kunci primer atau kunci kandidat. DEFAULT menyatakan nilai yang diisikan ke dalam suatu atribut bila nilainya tidak ditentukan pada saat penyisipan baris baru, bukan pada saat modifikasi. Klausa PRIMARY KEY menyatakan satu atau lebih atribut yang digunakan sebagai kunci primer tabel. FOREIGN KEY digunakan untuk menyatakan referential integrity ke tabel lain. ON UPDATE CASCADE digunakan untuk meneruskan pengubahan atribut dari suatu tabel ke tabel lain yang mengacunya, sedangkan ON DELETE CASCADE digunakan untuk meneruskan penghapusan baris pada suatu tabel ke tabel lain yang mengacunya. CONSTRAINT adalah aturan yang diberikan ke suatu tabel. Setiap constraint memiliki nama (agar kemudian bisa dimodifikasi atau dihapus) dan definisi. Isinya berupa penentuan PRIMARY KEY, FOREIGN KEY, dan UNIQUE. Setiap atribut dikaitkan dengan tipe data tertentu. Tipe data yang digunakan dalam SQL2 untuk atribut adalah Numeric, Character-string, Bit-string, Date dan Time. Walaupun begitu, beberapa DBMS mengembangkan sendiri tipe data selain yang disebutkan, misalnya tipe data Auto-Number di Microsoft Access, serta OLE (Object Linking and Embedding), BLOB (Binary Large Object), Boolean, Currency, dan lainnya. Tabel 5.1. Tipe data dalam SQL Kelompok Tipe Keterangan Numeric INTEGER Bilangan bulat sampai 11 digit (positif dan negatif) INT SMALLINT Bilangan bulat sampai 6 digit FLOAT(n) Bilangan riil, n adalah digit presisi REAL DOUBLE PRECISION DECIMAL(i, j) DEC(i, j) NUMBER(i, j) Bilangan terformat, i adalah banyaknya digit desimal dan j adalah banyaknya digit angka di belakang titik desimal. Characterstring CHAR(n) Panjang tetap, n menyatakan banyaknya karakter CHARACTER(n) VARCHAR(n) CHAR VARYING(n) Panjang bervariasi, n menyatakan banyak karakter maksimum Bit-string BIT(n) Panjang tetap, n menyatakan banyaknya bit BIT VARYING(n) Panjang bervariasi, n menyatakan banyak bit maksimum Date DATE Data tanggal, terdiri dari YEAR (4 digit), MONTH (2 digit), DAY (2 digit) Time TIME Data waktu, terdiri dari HOUR, MINUTE, SECOND TIME(i) i menyatakan fraksi desimal untuk detik TIME WITH ZONE Waktu yang dikaitkan dengan daerah tertentu Timestamp TIMESTAMP Terdiri dari DATE dan TIME INTERVAL Menyatakan nilai relatif yang digunakan untuk menambah atau mengurangi nilai mutlak date, time, atau timestamp. Basis Data Darmawan Satyananda 76

4 Contoh pendefinisian struktur tabel untuk basis data PERUSAHAAN adalah: CREATE TABLE KARYAWAN ( NamaKaryawan VARCHAR(20) NOT NULL, NIP CHAR(9) NOT NULL, TglLahir DATE, Alamat VARCHAR(30), JenisKlm CHAR, Gaji INT, NIP_Pengawas CHAR(9), KodeDep_Kar INT NOT NULL, PRIMARY KEY (NIP)); CREATE TABLE DEPARTEMEN ( NamaDepartemen VARCHAR(20) NOT NULL, KodeDepartemen INT NOT NULL, NIP_Manajer CHAR(9) NOT NULL, TglMulai_Manajer DATE, PRIMARY KEY (KodeDepartemen), UNIQUE (NamaDepartemen)); CREATE TABLE LOKASI_DEP ( KodeDep_Lok INT NOT NULL, Lokasi VARCHAR(15) NOT NULL, PRIMARY KEY (KodeDep_Lok, Lokasi)); CREATE TABLE PROYEK ( NamaProyek VARCHAR(15) NOT NULL, KodeProyek INT NOT NULL, LokasiProyek VARCHAR(15), KodeDep_Proyek INT NOT NULL, PRIMARY KEY (KodeProyek), UNIQUE (NamaProyek)); CREATE TABLE BEKERJA_DI ( NIP_Kar CHAR(9) NOT NULL, KodeProyek_Kar INT NOT NULL, JamKerja INT NOT NULL, PRIMARY KEY (NIP_Kar, KodeProyek_Kar)); CREATE TABLE TANGGUNGAN ( NIP_Kar CHAR(9) NOT NULL, NamaTanggungan VARCHAR(15) NOT NULL, JenisKlm CHAR NOT NULL, TglLahir DATE, Hubungan VARCHAR(8), PRIMARY KEY (NIP_Kar, NamaTanggungan)); Dalam Microsoft Access, pendefinisian struktur tabel bisa dilakukan dalam suatu query editor seperti yang tampak pada gambar 5.1. Gambar 5.1. Definisi struktur tabel di Microsoft Access. Basis Data Darmawan Satyananda 77

5 Perhatikan deklarasi pembuatan tabel DEPARTEMEN, klausa UNIQUE menyatakan bahwa atribut NamaDepartemen nilainya tidak boleh sama dalam satu tabel. Yang mengikuti UNIQUE tidak harus satu atribut, bisa juga disebutkan beberapa atribut sekaligus. Selain dinyatakan dengan cara tersebut, UNIQUE bisa dinyatakan setiap pendefinisian atribut sebagai berikut: CREATE TABLE DEPARTEMEN ( NamaDepartemen VARCHAR(20) NOT NULL UNIQUE, KodeDepartemen INT NOT NULL, NIP_Manajer CHAR(9) NOT NULL, TglMulai_Manajer DATE, PRIMARY KEY (KodeDepartemen)); Bila suatu atribut dinyatakan sebagai kunci primer, maka sebenarnya aturan UNIQUE dan NOT NULL sudah berlaku walaupun tidak dituliskan karena sifat kunci yang tidak boleh kosong dan tidak boleh ganda. ON DELETE CASCADE dan ON UPDATE CASCADE menyatakan bahwa operasi penghapusan dan pengubahan suatu atribut yang menjadi kunci primer di suatu tabel akan diteruskan kepada tabel lain yang mengacunya, dengan demikian integritas referensial akan tetap terjaga. Pada Access, definisi kedua aturan ini hanya bisa dilakukan melalui pengaturan properti relationship seperti pada Gambar 5.2. Gambar 5.2. Pengaturan Cascade Update dan Cascade Delete pada Microsoft Access Access juga tidak menerima klausa DEFAULT melalui query editor, tetapi menyediakan pilihan DEFAULT pada saat pendefinisian struktur tabel melalui interface yang tersedia. Pengacuan ke tabel lain melalui kunci tamu dilakukan dengan menggunakan klausa FOREIGN KEY. Syaratnya adalah tabel dan atribut yang diacu sudah harus ada. Sebagai contoh, atribut NIP_Manajer di tabel DEPARTEMEN mengacu ke atribut NIP di tabel KARYAWAN, kemudian setiap pengubahan NIP karyawan akan ikut mengubah nilai NIP_Manajer dan penghapusan data karyawan tertentu akan ditolak bila NIP masih diacu oleh tabel DEPARTEMEN. Pengacuan itu bisa dinyatakan sebagai berikut: Basis Data Darmawan Satyananda 78

6 CREATE TABLE DEPARTEMEN ( NamaDepartemen VARCHAR(20) NOT NULL UNIQUE, KodeDepartemen INT NOT NULL, NIP_Manajer CHAR(9) NOT NULL, TglMulai_Manajer DATE, PRIMARY KEY (KodeDepartemen), FOREIGN KEY (Nip_Manajer) REFERENCES KARYAWAN(NIP) ON UPDATE CASCADE); Constraints selain dinyatakan secara langsung seperti contoh tersebut, juga bisa dinyatakan sebagai klausa tersendiri, seperti contoh berikut: CREATE TABLE DEPARTEMEN ( NamaDepartemen VARCHAR(20) NOT NULL, KodeDepartemen INT NOT NULL, NIP_Manajer CHAR(9) NOT NULL, TglMulai_Manajer DATE, PRIMARY KEY (KodeDepartemen), CONSTRAINT CONST1 FOREIGN KEY (Nip_Manajer) REFERENCES KARYAWAN(NIP) ON UPDATE CASCADE); CONST1 adalah nama constraint yang nantinya bisa dimodifikasi atau dihapus. Tabel yang dideklarasikan dengan CREATE TABLE disebut sebagai tabel dasar (base table) atau relasi dasar (base relation). Tabel dan tupelnya akan disimpan sebagai file oleh DBMS, berbeda dengan relasi maya (virtual relation) yang dibentuk oleh CREATE VIEW yang mungkin tidak berhubungan dengan file fisik. Atribut dalam tabel dasar diurutkan sesuai dengan urutan atribut yang disebutkan pada CREATE TABLE, sedangkan tupelnya dalam keadaan tidak terurut Memodifikasi Skema Tabel Untuk menambahkan atribut baru atau menghapus atribut yang ada, digunakan perintah ALTER TABLE. Secara umum, bentuk perintahnya adalah: ALTER TABLE <nama tabel> [ADD <nama kolom> <tipe kolom> [NOT NULL]] [DROP <nama kolom> [RESTRICT CASCADE]] [MODIFY <nama kolom> <tipe kolom> [NOT NULL]]; Klausa ADD digunakan untuk menambahkan atribut baru, klausa DROP digunakan untuk menghapus atribut dari tabel, dan klausa MODIFY untuk mengubah karakteristik atribut. Klausa NOT NULL pada ADD digunakan untuk menyatakan bahwa atribut tersebut tidak boleh dikosongkan. CASCADE dimaksudkan bahwa penghapusan atribut akan menghilangkan pengacuan ke atribut tersebut, sedangkan RESTRICT menyatakan bahwa penghapusan akan berhasil bila tidak ada pengacuan ke atribut tersebut. Sebagai contoh, untuk menambah atribut HOBI ke dalam tabel KARYAWAN perintah selengkapnya adalah: ALTER TABLE KARYAWAN ADD HOBI VARCHAR(12); Setelah perintah ini dijalankan, semua tupel dengan atribut tersebut akan bernilai NULL, Basis Data Darmawan Satyananda 79

7 data harus ditambahkan secara tersendiri. Sebaiknya tidak menyertakan NOT NULL pada saat menambahkan atribut baru pada tabel yang sudah berisi data karena akan mengakibatkan pelanggaran integritas entitas pada baris yang ada. Ada DBMS yang akan mengeluarkan pesan kesalahan bila NOT NULL disertakan. Untuk mengatasinya, maka NOT NULL tidak disertakan, atribut baru diisi dengan data, baru kemudian NOT NULL ditambahkan. MODIFY digunakan untuk mengubah tipe data suatu atribut. Misalkan untuk mengubah tipe data atribut HOBI di tabel KARYAWAN, maka perintahnya adalah: ALTER TABLE KARYAWAN MODIFY (HOBI VARCHAR(20)); Sayangnya, MODIFY tidak didukung oleh Access sehingga pengguna harus menggunakan table editor untuk mengubahnya. Untuk melakukan penghapusan atribut HOBI dari tabel KARYAWAN maka perintah yang diberikan adalah: ALTER TABLE KARYAWAN DROP HOBI; Gunakan CASCADE atau RESTRICT bila memang atribut tersebut diacu oleh atribut lain. Microsoft Access tidak mengijinkan penghapusan atribut yang menjadi kunci primer atau terlibat dalam relationship (diacu oleh tabel lain). Constraint selain ditentukan pada saat pembuatan tabel bisa juga ditambahkan menyusul, atau dihilangkan dari tabel. Sintaks perintah penambahan atau penghapusan constraint adalah: ALTER TABLE <nama tabel> [ADD CONSTRAINT <nama constraint> <constraint>] [DROP CONSTRAINT <nama constraint>] [CASCADE RESTRICT]; <nama constraint> adalah nama pengenal dari constraint. Nama ini tetap akan digunakan bila constraint yang ada akan dihapus. Sebagai contoh, untuk menambahkan constraint pengacuan pada semua tabel yang telah dibuat sebelumnya, maka perintah selengkapnya adalah: ALTER TABLE KARYAWAN ADD CONSTRAINT ref1 FOREIGN KEY (NIP_Pengawas) REFERENCES KARYAWAN(NIP), FOREIGN KEY (KodeDep_Kar) REFERENCES DEPARTEMEN(KodeDepartemen); ALTER TABLE DEPARTEMEN ADD CONSTRAINT ref2 FOREIGN KEY (NIP_Manajer) REFERENCES KARYAWAN(NIP); ALTER TABLE LOKASI_DEP ADD CONSTRAINT ref3 FOREIGN KEY (KodeDep_Lok) REFERENCES DEPARTEMEN(KodeDepartemen); ALTER TABLE PROYEK ADD CONSTRAINT ref4 FOREIGN KEY(KodeDep_Proyek) REFERENCES Basis Data Darmawan Satyananda 80

8 DEPARTEMEN(KodeDepartemen); ALTER TABLE BEKERJA_DI ADD CONSTRAINT ref5 FOREIGN KEY (NIP_Kar) REFERENCES KARYAWAN(NIP), FOREIGN KEY (KodeProyek_Kar) REFERENCES PROYEK(KodeProyek); ALTER TABLE TANGGUNGAN ADD CONSTRAINT ref6 FOREIGN KEY (NIP_Kar) REFERENCES KARYAWAN(NIP); ref1, ref2, dan seterusnya adalah nama constraint. Nama ini juga digunakan untuk menghapus constraint. Misalnya ref1 dihapus, maka perintahnya adalah: ALTER TABLE TANGGUNGAN DROP CONSTRAINT ref1 RESTRICT; Dengan adanya aturan pengacuan, DBMS akan menentukan bahwa atribut yang menjadi kunci tamu tidak bisa diisi dengan sembarang nilai yang tidak ada di tabel yang diacu dan suatu baris di tabel yang diacu tidak bisa dihapus selama masih ada yang mengacunya Menghapus Tabel Bila suatu tabel sudah tidak diperlukan lagi, maka tabel tersebut dan definisinya dapat dihapus. Perintahnya secara umum: DROP TABLE <nama tabel> [[CASCADE] [RESTRICT]]; <nama tabel> adalah nama tabel yang akan dihapus. CASCADE dan RESTRICT adalah constraint pada saat dilakukan penghapusan. Bila RESTRICT digunakan maka penghapusan tabel akan dilakukan apabila tabel tersebut tidak diacu oleh tabel lain (melalui foreign key). Sedangkan bila CASCADE digunakan maka semua pengacuan ke tabel yang akan dihapus dihilangkan, selanjutnya barulah dilakukan penghapusan tabel (tabel yang mengacu tetap ada). Dengan demikian untuk menghapus tabel TANGGUNGAN, perintah yang harus diberikan adalah: DROP TABLE TANGGUNGAN CASCADE 5.2. Manipulasi tabel dengan SQL Manipulasi data dalam tabel meliputi memasukkan tupel baru, mengubah data dalam tupel, dan menghapus tupel Menambahkan Tupel Baru Perintah INSERT digunakan untuk menambahkan sebuah tupel baru ke dalam tabel. Nilai atribut tupel baru harus dituliskan dalam urutan yang sama dengan atribut yang didefinisikan dalam CREATE TABLE. Perintah selengkapnya: INSERT INTO <nama tabel> [(<nama kolom> {, <nama kolom>})] VALUES (<nilai konstan> {, <nilai konstan>}) <pernyataan Basis Data Darmawan Satyananda 81

9 SELECT>; Contoh pernyataan untuk menambahkan sebuah tupel baru ke dalam tabel KARYAWAN adalah: U1: INSERT INTO KARYAWAN VALUES ( Upik, , , Jl.Ambarawa 2 Malang, P, , , 2); Selain dengan menuliskan nilai atributnya secara lengkap, penyisipan juga bisa dilakukan dengan hanya menuliskan nilai beberapa atribut yang ditentukan saja. Atribut yang tidak disebutkan secara otomatis diisi dengan NULL. Contoh: U2: INSERT INTO KARYAWAN (NamaKaryawan, NIP, TglLahir, KodeDep_Kar) VALUES ( Bejo, , , 1) Beberapa DBMS yang menggunakan SQL ada yang tidak memaksakan aturan integritas, sehingga dimungkinkan untuk memasukkan nilai yang tidak sesuai dengan acuan seperti pada contoh berikut: U3: INSERT INTO KARYAWAN (NamaKaryawan, NIP, TglLahir, KodeDep_Kar) VALUES ("Bambang", " ", " ", 7); Perintah di atas akan tetap dijalankan oleh SQL walaupun tidak ada departemen dengan nomor departemen bernilai 7. Hal seperti ini menjadi tanggung jawab pengguna untuk mengatasinya. Bila DBMS menerapkan pengecekan constraint maka query U3 akan ditolak. Penolakan DBMS yang lain dilakukan bila atribut yang mempunyai constraint NOT NULL tidak dimasuki nilai apapun (sehingga menjadi NULL). Contoh berikut akan ditolak karena nilai untuk NIP tidak disebutkan. U4: INSERT INTO KARYAWAN (NamaKaryawan, Tgl_Lahir, KodeDep_Kar) VALUES ( Joni, , 1); Perhatikan bahwa kita sebelumnya menentukan constraint untuk NIP sebagai NOT NULL sehingga U4 akan menyebabkan pelanggaran constraint. Perhatikan bahwa data dimasukkan sesuai dengan tipe data yang ditentukan pada saat pendefinisian tabel. Nilai bertipe numerik dimasukkan tanpa tanda petik, nilai bertipe text dimasukkan dengan menggunakan tanda petik, demikian pula data yang berupa tanggal. Untuk tanggal, DBMS menetapkan aturan yang berbeda. Access menggunakan pembatas berupa # (sehingga data ditulis sebagai # #). DBMS lain (misalkan MySQL) menganggapnya sebagai string dengan format yyyy/mm/dd, contohnya 1966/10/3. Selain dengan menuliskan nilai setiap atribut dalam klausa VALUES, penyisipan penyisipan bisa dilakukan dengan menggunakan query sehingga yang dimasukkan ke dalam tabel bisa banyak data sekaligus. Hal ini akan dipelajari pada sub bab Basis Data Darmawan Satyananda 82

10 Menghapus Tupel Perintah DELETE digunakan untuk menghapus tupel pada sebuah tabel. Perintah lengkap DELETE adalah: DELETE FROM <nama tabel> WHERE <kondisi seleksi>; <kondisi seleksi> digunakan untuk memilih tupel yang akan dihapus menurut atribut dan nilai tertentu. Yang diseleksi tidak harus kunci primer, sembarang atribut bisa digunakan. Penghapusan hanya bisa dilakukan untuk tupel pada satu tabel saja. Bila klausa WHERE tidak disebutkan maka semua tupel akan dihapus, dan tabel menjadi kosong. Contoh penghapusan pada tabel KARYAWAN untuk karyawan yang bernama Bejo bisa dilihat pada U5. U5: DELETE WHERE NamaKaryawan= Bejo ; Banyaknya kondisi seleksi bisa beberapa dengan dihubungkan operator logika AND, OR, NOT. Selain itu, kondisi seleksi bisa dikombinasikan dengan subquery, hal ini akan dipelajari pada sub bab Mengubah Nilai Atribut Nilai suatu atribut dari satu atau beberapa tupel dapat diubah dengan menggunakan perintah UPDATE. Bentuk perintahnya: UPDATE <nama tabel> SET <nama kolom>=<ekspresi nilai> {, <nama kolom>=<ekspresi nilai>} [WHERE <kondisi seleksi>]; Bila WHERE tidak dicantumkan maka yang terkena perubahan adalah semua tupel. Bila akan mengubah lokasi proyek nomor 1 menjadi Medan dan nama proyeknya menjadi Fly Over perintah yang diberikan adalah: U6: UPDATE PROYEK SET LokasiProyek= Medan, NamaProyek= Fly Over WHERE KodeProyek=1; Operator aritmatika juga bisa digunakan untuk update data, misalnya untuk menaikkan gaji seluruh karyawan sebesar 10%, perintah yang diberikan adalah: U7: UPDATE KARYAWAN SET Gaji=Gaji*1.1 Seperti halnya pada DELETE, banyaknya kondisi seleksi bisa beberapa dengan dihubungkan operator logika AND, OR, NOT. Kondisi seleksi bisa dikombinasikan dengan subquery, hal ini akan dipelajari pada sub bab Query dalam SQL Untuk mencari informasi dalam suatu basis data, pengguna menuliskan querynya Basis Data Darmawan Satyananda 83

11 dalam ekspresi SQL. Hasil query dalam SQL berbentuk tabel, yang mana sifatnya berbeda dengan relasi pada model relasional. Pada SQL suatu tabel dimungkinkan mempunyai dua atau lebih tupel yang nilai semua atributnya identik, sedangkan dalam aljabar relasional hal ini tidak dimungkinkan. SQL bukan merupakan himpunan tupel-tupel karena bisa mempunyai anggota yang sama (duplikasi), tetapi dapat diubah menjadi himpunan tupel dengan aturan tertentu Struktur Query SQL Bentuk umum pernyataan untuk mendapatkan informasi dari tabel adalah: SELECT <daftar atribut> FROM <nama tabel> WHERE <kondisi>; Pernyataan tersebut terdiri dari tiga klausa: 1. SELECT, yang digunakan untuk mendaftar satu atau lebih atribut yang digunakan dalam tabel hasil query. Daftar atribut dinyatakan dalam <daftar atribut>. Klausa ini sama dengan operasi proyeksi (PROJECT) dalam aljabar relasional. 2. FROM, digunakan untuk mendaftar tabel yang diperlukan untuk memproses query. Tabel yang dituliskan dalam <nama tabel> bisa berupa tabel tunggal atau banyak tabel. Bila beberapa tabel yang dituliskan, maka semua relasi akan digabungkan menggunakan operasi Cartesian Product. 3. WHERE, yang berisi kondisi untuk syarat pencarian tupel dalam relasi yang tercantum di klausa FROM. Kondisi pencarian yang dituliskan dalam <kondisi> bisa berupa gabungan beberapa ekspresi yang dihubungkan dengan operator logika AND, OR, dan NOT. Klausa ini sama dengan operasi seleksi (SELECT) dalam aljabar relasional. SELECT dan FROM sifatnya wajib, sedangkan WHERE sifatnya opsional. Urutan penulisan juga harus dalam bentuk SELECT-FROM-WHERE. Sebagai contoh, untuk mencari nama dan alamat karyawan laki-laki dapat diberikan perintah seperti pada Q1. Hasilnya bila dijalankan di Microsoft Access bisa dilihat pada Gambar 5.3. Q1: SELECT NamaKaryawan, Alamat WHERE JenisKlm= L ; Basis Data Darmawan Satyananda 84

12 (a) (b) Gambar 5.3. Hasil query Q1. (a) Dijalankan di Access, (b) Dijalankan di MySQL Query Q1 hanya melibatkan tabel KARYAWAN, melakukan seleksi tupel-tupel dalam KARYAWAN yang memenuhi kondisi di klausa WHERE, dan menampilkan hasilnya sebagai sebuah tabel dengan atribut yang disebutkan pada klausa SELECT. Q1 tersebut ekivalen dengan ekspresi berikut: π NamaKaryawan, Alamat (σ JenisKlm= L (KARYAWAN)) Query dengan relasi tunggal seperti Q1 serupa dengan operasi SELECT yang diikuti dengan PROJECT. Perbedaannya hanya bahwa dalam SQL bisa didapatkan tupeltupel yang sama kecuali diberikan aturan yang menyatakan bahwa suatu relasi adalah himpunan. Operator relasional yang bisa digunakan di WHERE adalah =, <> atau!=, <. <=, >, >=. Operator ini juga bisa dikombinasikan dengan NOT untuk mendapatkan negasinya. Misalkan untuk mencari karyawan yang tidak bekerja di Departemen dengan nomor departemen 5 bisa dituliskan dalam salah satu query berikut: Q2a: SELECT NamaKaryawan, Alamat WHERE KodeDep_Kar <> 5; Q2b: SELECT NamaKaryawan, Alamat FROM Karyawan WHERE NOT (KodeDep_Kar = 5); Selain untuk data numerik, operator tersebut juga bisa digunakan untuk data teks dan tanggal. Untuk data teks, pembandingan dilakukan per karakter, sehingga Anik akan lebih besar dari Aliyudin dan lebih kecil dari Bob. Sama halnya dengan 44 yang lebih kecil dari 5. Untuk data tanggal, umumnya DBMS akan menganggapnya sebagai numerik sehingga tidak menimbulkan masalah dalam pembandingannya. Akan tetapi yang perlu diperhatikan adalah karakter apa yang mengapit data tanggal (karakter petik tunggal atau # ) dan format data tanggal yang disimpan. Apabila klausa WHERE tidak dituliskan, maka berarti tidak ada kondisi yang Basis Data Darmawan Satyananda 85

13 dikenakan terhadap semua tupel, sehingga semua tupel dari tabel di dalam FROM dipilih sebagai hasil query. Serupa dengan penghilangan klausa WHERE adalah pencantuman klausa WHERE TRUE yang maksudnya adalah semua baris dalam tabel adalah benar. Sebagai contoh untuk melihat daftar nama dan NIP semua karyawan, querynya bisa salah satu berikut ini: Q3a: Q3b: SELECT NamaKaryawan, NIP SELECT NamaKaryawan, NIP WHERE TRUE Bila memerlukan data dari dua relasi atau lebih, maka dilakukan join dengan menuliskan relasi yang akan dijoinkan pada klausa FROM dan menyebutkan kondisi joinnya pada klausa WHERE. Bentuk ini serupa dengan operasi SELECT PROJECT JOIN dalam Aljabar Relasional. Sebagai contoh, untuk mencari nama dan alamat semua karyawan yang berkerja pada departemen Riset, query yang harus diberikan adalah: Q4: SELECT NamaKaryawan, Alamat, DEPARTEMEN WHERE NamaDepartemen= Riset AND KodeDepartemen=KodeDep_Kar; Pada klausa WHERE query Q4, kondisi pertama adalah kondisi seleksi pada tabel DEPARTEMEN (NamaDepartemen= Riset ) dan kondisi kedua adalah kondisi join antara tabel DEPARTEMEN dan KARYAWAN (KodeDepartemen=KodeDep_Kar). Join dilakukan karena yang tercatat pada tabel KARYAWAN hanya kode departemen tempat karyawan bekerja, padahal yang diketahui di query adalah nama departemennya. Mulamula dicari tupel departemen Riset untuk mengetahui kodenya. Selanjutnya tupel yang ditemukan lalu dijoinkan dengan tupel-tupel di KARYAWAN, hanya untuk tupel yang nilai atribut KodeDep_Kar sama dengan kode departemen Riset. Sembarang jumlah kondisi seleksi dan join dapat ditulis dalam sebuah query SQL. Bila banyaknya tabel adalah N, maka banyaknya kondisi join yang harus dituliskan adalah N-1 kondisi. Hasil dari join adalah sebuah tabel tunggal dengan atribut sesuai dengan atribut tabel yang dijoinkan (nama atribut dan banyaknya). Bila kondisi join tidak dituliskan maka tabel akan digabungkan dengan operasi Cartesian Product. Bila diinginkan untuk mendapatkan semua atribut dari tupel yang dipilih, maka gunakan * (asterisk) pada klausa SELECT. Contohnya untuk mendapatkan semua atribut karyawan yang bekerja pada Departemen 5: Q5: SELECT * WHERE KodeDep_Kar=5; Bila yang ada di FROM lebih dari sebuah tabel, maka semua atribut dari tabel yang digunakan akan ditampilkan. Basis Data Darmawan Satyananda 86

14 Tabel Pengenal dan Operator Alias Beberapa buah tabel mungkin menggunakan nama atribut yang sama. Untuk menghindari adanya kesalahan, maka di depan atribut bisa dituliskan nama tabel pengenalnya (identifier atau qualifier) dengan dipisah tanda titik. Misalkan query untuk mencari karyawan laki-laki yang mempunyai tanggungan laki-laki. Karena relasi KARYAWAN dan TANGGUNGAN sama-sama memiliki atribut JenisKlm, maka perlu dituliskan relasi pengenalnya seperti berikut ini: Q6: SELECT NamaKaryawan, NamaTanggungan, KARYAWAN.JenisKlm AS Jenis_Kelamin, TANGGUNGAN WHERE NIP=NIP_Kar AND KARYAWAN.JenisKlm= L AND TANGGUNGAN.JenisKlm= L ; Pada dasarnya nama atribut dari tabel hasil query sama dengan nama atribut pada tabel asalnya, tetapi dimungkinkan untuk memberi nama yang baru kepada suatu atribut (alias) dengan menggunakan operator AS. Pada Q6 atribut JenisKlm diberi alias JenisKelamin untuk memudahkan pembacaan. Alias bukan merupakan keharusan. Alias juga bisa digunakan bila kolom yang ditampilkan adalah hasil dari ekspresi aritmatika. Ekspresi aritmatika dikenakan terhadap atribut yang bertipe numerik dengan menggunakan operator aritmatika +, -, *, dan /. Misalkan untuk menampilkan bonus gaji 10% untuk karyawan yang bekerja di proyek Komputerisasi, querynya dapat ditulis sebagai berikut: Q7: SELECT NamaKaryawan, Gaji, 1.1*Gaji AS Gaji_Baru, BEKERJA_DI, PROYEK WHERE NIP=NIP_Kar AND KodeProyek=KodeProyek_Kar AND NamaProyek= Komputerisasi ; Gambar 5.4 Tabel hasil query Q7. Penamaan ulang juga dapat dilakukan pada tabel, dengan maksud untuk menyingkat penulisan atau bila melibatkan tabel yang sama dalam relasi rekursif. Misalnya melakukan pencarian nama karyawan dan nama manajernya, query yang diberikan adalah: Q8: SELECT K.NamaKaryawan, P.NamaKaryawan AS Nama_Pengawas AS K, KARYAWAN AS P WHERE K.NIP_Pengawas=P.NIP; Karena seorang pengawas adalah juga merupakan karyawan, maka untuk mencari nama Basis Data Darmawan Satyananda 87

15 pengawas harus dilakukan pengacuan ke tabel KARYAWAN. Relasi rekursif dalam SQL ditunjukkan dengan penggunaan salinan tabel yang sama, dengan perannya masingmasing. Pada Q8, tabel KARYAWAN mempunyai nama alias K dan P. Keduanya merupakan salinan dari relasi KARYAWAN, K dalam peran sebagai karyawan dan P sebagai pengawas, sehingga dapat dikenali oleh operasi JOIN (K dan P disebut juga sebagai variabel tupel). JOIN dilakukan terhadap tabel KARYAWAN dengan dirinya sendiri dengan mencocokkan tupel yang memenuhi kondisi JOIN. Contoh penamaan dengan maksud menyingkat penulisan, tanpa bergantung apakah relasi yang sama diacu lebih dari satu kali atau tidak, dapat dilihat pada query berikut yang merupakan bentuk lain dari query Q4: Q4a: SELECT D.NamaDepartemen, K.NamaKaryawan, K.Alamat AS K, DEPARTEMEN AS D WHERE D.NamaDepartemen= Riset AND D.KodeDepartemen=K.KodeDep_Kar; Penghilangan Tupel Ganda Query SQL mungkin memberikan hasil tupel yang ganda. Untuk menghilangkan duplikasi, tambahkan DISTINCT ke dalam klausa SELECT yang berarti bahwa hanya ada tupel tunggal dalam relasi (tupel yang sama dihilangkan). Query berikut menunjukkan perbedaan antara query dengan DISTINCT dan tanpa DISTINCT. Q9: SELECT Gaji ; Q9a: SELECT DISTINCT Gaji ; (a) (b) Gambar 5.5. Relasi hasil query: (a) Q9, (b) Q9A. Lawan dari DISTINCT adalah ALL, yang artinya semua tupel akan ditampilkan. Tetapi karena secara default SQL memperbolehkan adanya duplikasi maka penambahan ALL dalam klausa SELECT dapat diabaikan, seperti terlihat pada Q8. Bila dituliskan maka klausa SELECT menjadi: SELECT ALL GAJI. Basis Data Darmawan Satyananda 88

16 Operator Khusus untuk WHERE SQL menyediakan beberapa operator yang digunakan untuk WHERE yaitu BETWEEN, LIKE, IN, IS NULL, dan EXISTS. Khusus EXISTS akan dijelaskan pada saat pembahasan subquery. Operator BETWEEN digunakan untuk mencari apakah nilai suatu atribut dalam rentang nilai tertentu. Pencarian karyawan yang mempunyai gaji antara 1 juta sampai 2 juta (inklusif) dapat dilakukan dengan query: Q10: SELECT NamaKaryawan, Gaji WHERE (Gaji BETWEEN AND ); LIKE adalah operator yang digunakan untuk mengetahui apakah nilai suatu atribut bertipe string memenuhi pola string atau karakter tertentu. Operator LIKE dikombinasikan dengan wildcard % (percent, yang mewakili sederetan karakter) dan _ (underscore, yang mewakili sebuah karakter). Contoh: untuk mencari semua karyawan yang alamatnya mengandung string Malang, query yang dituliskan adalah: Q11: SELECT NamaKaryawan WHERE Alamat LIKE %Malang% ; Sedangkan untuk mencari karyawan yang digit ketiga NIP-nya adalah angka 3, querynya bisa dalam bentuk: Q12: SELECT NamaKaryawan WHERE NIP LIKE 3 ; Karakter % digunakan bila karakter yang diwakilinya tidak tentu banyaknya, sedangkan karakter _ digunakan untuk mewakili karakter pada posisi tertentu. Microsoft Access menggunakan karakter * sebagai ganti karakter %, dan karakter? sebagai ganti karakter _. Operator IN digunakan untuk mencari apakah nilai suatu atribut ada di dalam himpunan nilai lain yang bertipe sama. Operator ini akan membandingkan nilai v dengan himpunan nilai V, dan akan bernilai TRUE bila v adalah salah satu elemen di V. Himpunan nilai bisa ditentukan secara eksplisit atau didapat dari subquery (akan dibahas pada subbab tentang subquery). Contohnya untuk mencari NIP semua karyawan yang bekerja di proyek nomor 1 atau 2 atau 3, query yang bisa diberikan adalah: Q13: SELECT DISTINCT NIP_Kar FROM BEKERJA_DI WHERE (KodeProyek_Kar=1) OR (KodeProyek_Kar=2) OR (KodeProyek_Kar=3); Q13a: SELECT DISTINCT NIP_Kar FROM BEKERJA_DI WHERE KodeProyek_Kar IN (1, 2, 3); SQL juga mempunyai operator untuk menguji apakah suatu atribut bernilai NULL Basis Data Darmawan Satyananda 89

17 atau tidak, yaitu operator IS NULL. Pengujian bukan dilakukan dengan = atau karena NULL bukanlah suatu nilai tetapi kondisi yang menyatakan bahwa suatu atribut tidak memiliki nilai. Contohnya untuk mencari nama semua karyawan yang tidak mempunyai pengawas, querynya bisa ditulis: Q14: SELECT NamaKaryawan WHERE NIP_Pengawas IS NULL; Semua operator yang disebutkan di atas bisa dikombinasikan dengan NOT untuk mendapatkan kondisi sebaliknya. Jadi anda bisa menggunakan NOT BETWEEN, NOT LIKE, NOT IN, dan IS NOT NULL Pengurutan Tupel Hasil query secara default tidak dalam keadaan terurut. Pengurutan tupel bisa dilakukan berdasar satu atau lebih atribut dengan menggunakan klausa ORDER BY. Misalkan untuk menampilkan daftar nama karyawan, nama departemen, dan nama proyek tempat karyawan bekerja yang diurutkan berdasar nama departemennya, query yang ditulis adalah: Q15: SELECT NamaDepartemen, NamaKaryawan, NamaProyek FROM DEPARTEMEN, KARYAWAN, BEKERJA_DI, PROYEK WHERE KodeDepartemen=KodeDep_Kar AND NIP=NIP_Kar AND KodeProyek=KodeProyek_Kar ORDER BY NamaDepartemen, NamaKaryawan; Bila ada lebih dari satu atribut yang digunakan sebagai dasar pengurutan, maka pengurutan dilakukan berdasar atribut pertama. Bila ada data yang sama maka diurutkan berdasar atribut kedua, dan seterusnya. Jenis pengurutan default adalah ascending (urut naik), tetapi dapat diubah menjadi descending (urut turun) dengan menambahkan DESC pada klausa ORDER BY. Untuk ascending bisa juga ditambahkan ASC, tetapi bukan merupakan keharusan. Bila dari Q15 akan ditampilkan nama departemen dalam urutan menurun dan nama karyawan dalam urutan menaik, klausa ORDER BY dapat ditulis sebagai berikut: Q15a: SELECT NamaDepartemen, NamaKaryawan, NamaProyek FROM DEPARTEMEN, KARYAWAN, BEKERJA_DI, PROYEK WHERE KodeDepartemen=KodeDep_Kar AND NIP=NIP_Kar AND KodeProyek=KodeProyek_Kar ORDER BY NamaDepartemen DESC, NamaKaryawan ASC; Tabel Sebagai Himpunan Tabel hasil query (baik yang mempunyai tupel ganda maupun tidak) dapat dikenai operasi himpunan UNION, EXCEPT, INTERSECT dengan tabel lainnya, dengan syarat bahwa keduanya harus union compatible (nama atributnya sama, tipe datanya sama atau kompatibel, dan muncul dengan urutan yang sama). Operasi ini sama dengan operasi,, dalam aljabar relasional. Hasil dari operasi himpunan adalah tabel yang Basis Data Darmawan Satyananda 90

18 menghilangkan tupel ganda (hanya menampilkan satu tupel dari tupel yang sama). Query untuk mencari nama semua karyawan berjenis kelamin laki-laki atau yang mempunyai tanggungan laki-laki adalah: Q16: (SELECT NamaKaryawan WHERE JenisKlm= L ) UNION (SELECT NamaKaryawan, TANGGUNGAN WHERE NIP=NIP_Kar AND TANGGUNGAN.JenisKlm= L ); Query sebelum UNION bertujuan mencari karyawan yang laki-laki. Query setelah UNION bertujuan mencari anggota keluarganya (tanggungannya) yang laki-laki. Join yang terjadi pada query kedua adalah antara tabel KARYAWAN dan tabel TANGGUNGAN, untuk mencari siapa saja tanggungan yang berjenis kelamin laki-laki dari setiap karyawan. Selanjutnya keduanya digabungkan dengan UNION. Contoh penggunaan INTERSECT adalah pada permasalahan: mencari karyawan yang bekerja di proyek dengan kode 1 dan 3 sekaligus. Q17: (SELECT NamaKaryawan, BEKERJA_DI WHERE NIP=NIP_Kar AND KodeProyek_Kar=1) INTERSECT (SELECT NamaKaryawan, BEKERJA_DI WHERE NIP=NIP_Kar AND KodeProyek_Kar=3); EXCEPT pada beberapa DBMS dikenal dengan MINUS. Contoh penggunaannya adalah pada query untuk mencari karyawan yang bekerja di proyek dengan kode 1 tapi tidak bekerja di proyek 3. Q18: (SELECT NamaKaryawan, BEKERJA_DI WHERE NIP=NIP_Kar AND KodeProyek_Kar=1) MINUS (SELECT NamaKaryawan, BEKERJA_DI WHERE NIP=NIP_Kar AND KodeProyek_Kar=3); Selain operasi di atas, juga bisa digunakan UNION ALL, INTERSECT ALL, dan EXCEPT ALL yang dapat menampilkan tupel yang mempunyai duplikat. Catatan: Tidak semua DBMS mendukung operasi himpunan ini. Access dan MySQL hanya bisa menggunakan UNION, sehingga untuk INTERSECT dan EXCEPT harus digunakan alternatif lain dengan IN dan NOT IN SubQuery, Suatu relasi hasil query dapat dijadikan sebagai input untuk query yang lain, yang dituliskan dalam bentuk query tersarang (nested queries). Query yang memberikan input disebut query dalam (inner query) dan yang menerima input disebut query luar Basis Data Darmawan Satyananda 91

19 (outer query). Query dalam disebut juga sebagai subquery dan bisa digunakan pada klausa WHERE, FROM, SELECT, dan HAVING, serta pada DML yaitu pada INSERT, UPDATE, dan DELETE. Q4b: Berikut ini adalah contoh query yang mengandung subquery di dalamnya: SELECT NamaKaryawan, Alamat WHERE KodeDep_Kar=(SELECT KodeDepartemen FROM DEPARTEMEN WHERE NamaDepartemen= Riset ); Bagian yang diapit kurung adalah subquery atau query dalam, selain itu adalah query luar. Query dalam akan dieksekusi lebih dulu, dan hasilnya digunakan oleh query luar. Hal ini berbeda dengan query yang tidak melibatkan subquery, misalnya pada query untuk men-join-kan sejumlah relasi. Pada query semacam itu, sejumlah relasi akan diproses secara serentak dan baris yang memenuhi kondisi join saja yang ditampilkan. Pada pernyataan SQL yang mengandung subquery, suatu baris akan diproses dan ditampilkan berdasar hasil dari baris lain yang diproses lebih dulu Nilai yang Dihasilkan Subquery Subquery bisa menghasilkan kemungkinan nilai berikut (Rob, 2004: 336): Satu nilai tunggal, subquery semacam ini digunakan pada pembandingan dengan atribut atau nilai tunggal yang lain (ingat bahwa suatu atribut hanya bisa berisi satu nilai tunggal). Umumnya menggunakan fungsi agregat (penjelasan mengenai fungsi agregat ada di sub bab selanjutnya). Sekumpulan nilai, subquery semacam ini digunakan dengan operator IN untuk mengetahui apakah nilai suatu atribut ada dalam himpunan nilai yang dihasilkan subquery Virtual table, subquery semacam ini biasanya digunakan pada klausa FROM, dan berfungsi sebagai tabel yang berisi baris data. Contoh subquery yang menghasilkan nilai tunggal adalah Q4b di atas yang merupakan alternatif dari Q4. Pada Q4b, subquery hanya menghasilkan satu nilai kode departemen (satu baris dan satu kolom) dan selanjutnya dibandingkan dengan setiap tupel pada query luar, apakah kode departemen tempat karyawan bekerja sama dengan kode departemen yang dihasilkan oleh subquery. Bila kondisi ini terpenuhi maka tupel di query luar saat itu dijadikan sebagai output. Contoh query yang bisa memanfaatkan sekumpulan nilai yang dihasilkan subquery adalah query Q6. Alternatif penulisan query Q6 adalah sebagai berikut: Q6a: SELECT DISTINCT NamaKaryawan WHERE JenisKlm= L AND NIP IN (SELECT NIP_Kar Basis Data Darmawan Satyananda 92

20 FROM TANGGUNGAN WHERE JenisKlm= L ); Subquery pada Q6a menghasilkan sejumlah NIP yang memiliki tanggungan laki-laki. Selanjutnya untuk setiap tupel relasi pada query luar akan diperiksa apakah seorang karyawan adalah laki-laki atau NIPnya ada di dalam himpunan yang dihasilkan oleh subquery. Di sini digunakan operator perbandingan IN untuk membandingkan satu nilai dengan sekumpulan nilai. Perhatikan bahwa atribut sebelum IN (di query luar) harus semakna dengan atribut yang disebutkan setelah IN (di dalam subquery). Akan tetapi dengan cara ini atribut subquery tidak bisa ditampilkan sebagai output karena relasinya tidak terdaftar pada klausa FROM query luar. Q6a juga menunjukkan alternatif penulisan kondisi join pada Q6. Query Q6 juga bisa dijadikan contoh penulisan subquery pada klausa FROM. Perhatikan penulisan berikut: Q6b: SELECT DISTINCT NamaKaryawan FROM (SELECT NIP,NamaKaryawan WHERE JenisKlm= L ) AS KARLAKI, (SELECT NIP_Kar FROM TANGGUNGAN WHERE JenisKlm= L ) AS TANGLAKI WHERE KARLAKI.NIP=TANGLAKI.NIP_Kar; Subquery pada klausa FROM akan menghasilkan tabel maya (virtual table) yang berisi sejumlah tupel. Tabel ini diperlakukan sama dengan tabel dasar, dimana atributnya bisa digunakan pada WHERE. Atribut yang akan ditampilkan di SELECT query luar harus sudah disebutkan pada tabel maya Subquery yang Berkorelasi Contoh subquery sebelum ini adalah query yang dieksekusi secara berurutan. Mula-mula query dalam dieksekusi, lalu hasilnya dimanfaatkan query luar. Antara query dalam dan luar tidak ada hubungan langsung. Tetapi ada kasus dimana keduanya saling berhubungan, dalam bentuk atribut query dalam mengacu ke atribut query luar. Sebagai contoh adalah query untuk mencari nama setiap karyawan yang mempunyai jenis kelamin yang sama dengan tanggungannya. Q19: SELECT K.NamaKaryawan AS K WHERE NIP IN (SELECT NIP_Kar FROM TANGGUNGAN WHERE NIP_Kar=NIP AND JenisKlm=K.JenisKlm); Untuk mendapatkan hasilnya, satu tupel dari tabel pada query luar diambil, kemudian nilai atribut yang sesuai digunakan untuk mendapatkan hasil query dalam. Setelah mendapatkan hasil, maka barulah dilakukan pembandingan antara nilai atribut di klausa WHERE query luar dengan himpunan nilai dari query dalam. Query pada keadaan seperti ini (kondisi di klausa WHERE pada subquery mengacu ke atribut di query luar) dikatakan Basis Data Darmawan Satyananda 93

21 berkorelasi (correlated). Dalam keadaan berkorelasi, relasi yang terlibat mungkin memiliki nama atribut yang sama. Untuk menghindari kesalahan, ada aturan yang menyatakan bahwa acuan ke atribut yang tidak disebutkan pengenalnya (unqualified attribute) akan mengacu kepada relasi yang dideklarasikan pada subquery atau query tersarang yang paling dalam (innermost nested query). Pengacuan kepada atribut di luar subquery dilakukan dengan menggunakan alias. Perhatikan Q19, kedua relasi mempunyai atribut yang sama yaitu JenisKlm. Atribut yang tidak disebutkan relasinya diarahkan kepada relasi TANGGUNGAN sebagai relasi yang paling dalam Subquery untuk Operasi Himpunan Seperti yang telah disebutkan, IN juga bisa digunakan sebagai alternatif dari INTERSECT sedangkan NOT IN sebagai alternatif dari MINUS. Query Q17 bila dituliskan menggunakan IN adalah sebagai berikut: Q17a: SELECT NamaKaryawan, BEKERJA_DI WHERE NIP=NIP_Kar AND KodeProyek_Kar=1 AND NIP_Kar IN (SELECT NIP_Kar FROM BEKERJA_DI WHERE KodeProyek_Kar=3); Perhatikan juga bahwa kita bisa tuliskan bentuk yang lebih panjang untuk menggantikan kondisi join: Q17b: SELECT NamaKaryawan WHERE NIP IN (SELECT NIP_Kar FROM BEKERJA_DI WHERE KodeProyek_Kar=1) AND NIP IN (SELECT NIP_Kar FROM BEKERJA_DI WHERE KodeProyek_Kar=3); Sedangkan query Q18 untuk mencari karyawan yang hanya bekerja di proyek nomor 1 tetapi tidak pada proyek nomor 3, bisa ditulis sebagai berikut: Q18a: SELECT NamaKaryawan, BEKERJA_DI WHERE NIP=NIP_Kar AND KodeProyek_Kar=1 AND NIP_Kar NOT IN (SELECT NIP_Kar FROM BEKERJA_DI WHERE KodeProyek_Kar=3); Operator ANY dan ALL Operator IN hanya mencari baris yang nilai atributnya sesuai (atau yang sama nilainya) setidaknya dengan satu nilai pada sekumpulan nilai yang lain. Operator ini tidak bisa digunakan untuk membandingkan nilai yang lebih besar atau lebih kecil. Basis Data Darmawan Satyananda 94

22 Untuk keperluan itu, digunakan operator ANY (atau SOME) dan ALL. ANY akan bernilai true bila nilai sebuah atribut memenuhi kondisi tertentu terhadap beberapa (setidaknya satu) nilai dalam suatu kumpulan nilai. ALL akan bernilai true bila nilai sebuah atribut memenuhi kondisi tertentu terhadap semua nilai dalam suatu kumpulan nilai. Kondisi dinyatakan dengan operator perbandingan. Query untuk mencari karyawan dengan gaji tertinggi bisa dinyatakan dengan: Q20: SELECT NamaKaryawan, Gaji WHERE Gaji >= ALL (SELECT Gaji ); Pada Q20, sebuah tupel akan dipilih bila nilai atribut Gaji pada tupel tersebut lebih besar atau sama dengan semua nilai yang dihasilkan oleh subquery. Bila ALL pada Q20 diganti dengan ANY maka tupel yang dihasilkan adalah semua tupel pada tabel KARYAWAN karena gaji seorang karyawan pasti lebih besar dari beberapa karyawan yang lain atau paling tidak sama dengan gajinya sendiri. Apa yang terjadi bila kondisi di WHERE adalah Gaji > ALL? Operator EXISTS Operator EXISTS digunakan untuk menguji apakah suatu subquery menghasilkan tupel (tidak kosong). Bila ada tupel yang dihasilkan maka tupel pada query luar saat itu akan dijadikan sebagai output. Q19 bisa ditulis sebagai berikut: Q19a: SELECT NamaKaryawan AS K WHERE EXISTS (SELECT * FROM TANGGUNGAN WHERE NIP_Kar=NIP AND JenisKlm=K.JenisKlm); Urutan pengerjaannya sama dengan yang telah dijelaskan pada Q19. Operator EXISTS akan mengembalikan nilai TRUE bila terdapat paling tidak sebuah tupel sebagai hasil query Q, dan FALSE bila sebaliknya. Sepintas EXISTS mirip dengan IN, tetapi perhatikan bahwa yang dibandingkan pada IN adalah nilai yang sama (semakna) sedangkan EXISTS tidak membandingkan nilai tetapi hanya melihat apakah ada tupel yang dihasilkan oleh query dalam untuk setiap tupel query luar saat itu. Kebalikan dari EXISTS adalah NOT EXISTS, yang menghasilkan TRUE bila tidak ada tupel sebagai hasil subquery Q dan FALSE bila sebaliknya. Contoh query untuk mencari nama karyawan yang tidak mempunyai tanggungan: Q21: SELECT NamaKaryawan WHERE NOT EXISTS (SELECT * FROM TANGGUNGAN WHERE NIP_Kar=NIP); Q21 menampilkan nama seorang karyawan bila subquery yang berkorelasi dengan query Basis Data Darmawan Satyananda 95

23 luar tidak menghasilkan tupel. EXISTS bisa saja digunakan pada subquery yang tidak berkorelasi tetapi tidak akan memberikan makna apapun karena semua tupel pada query luar akan ditampilkan (bila subquery memberikan hasil) atau tidak samasekali (bila subquery tidak memberikan hasil) JOIN Secara umum, join beberapa tabel bisa dikelompokkan menjadi 3: (a) Cross join yang menghasilkan Cartesian product, (b) Inner join yang menghasilkan tupel yang memenuhi kondisi join, dan (c) Outer join yang menampilkan semua tupel, baik memenuhi kondisi join maupun tidak. Untuk semua jenis join tersebut akan disajikan operasi yang sesuai dengan standar ANSI SQL, tetapi tidak semuanya didukung oleh DBMS yang ada. Q4 menunjukkan cara tradisional menggabungkan dua tabel, yaitu dengan menyebutkan tabel yang akan digabungkan pada klausa FROM dan menyebutkan kondisi join pada klausa WHERE. Bila kondisi join tidak disebutkan, maka yang terjadi adalah Cartesian product Cross Join Seperti yang telah disebutkan, cross join menghasilkan Cartesian product. SQL menyediakan operator CROSS JOIN untuk keperluan ini. Sebagai contoh, dua query berikut ini adalah sama: Q22: SELECT *, DEPARTEMEN; Q22a: SELECT * CROSS JOIN DEPARTEMEN; Inner Join SQL menyediakan beberapa operator yang termasuk ke dalam kelompok ini, yaitu: JOIN ON, JOIN... USING, dan NATURAL JOIN. Operator pertama adalah JOIN ON. Yang dituliskan setelah ON adalah kondisi joinnya, lengkap dengan qualifier (nama tabel pengenal). Selain dituliskan dengan JOIN ON, bisa juga dituliskan sebagai INNER JOIN ON. Access hanya mendukung cara penulisan yang terakhir, sedangkan MySQL mendukung semuanya. Q4c: Q4 dapat ditulis ulang menjadi sebagai berikut: SELECT NamaKaryawan, Alamat JOIN DEPARTEMEN ON (DEPARTEMEN.KodeDepartemen= KARYAWAN.KodeDep_Kar) WHERE NamaDepartemen= Riset ; Cara berikutnya adalah dengan menggunakan keyword USING. Query ini akan Basis Data Darmawan Satyananda 96

24 mengembalikan baris tabel yang memiliki nilai yang sama untuk atribut yang disebutkan di USING. USING mensyaratkan tabel yang dijoinkan memiliki atribut dengan nama yang sama. Dari contoh basis data PERUSAHAAN kita, tabel BEKERJA_DI dan TANGGUNGAN memiliki atribut yang sama yaitu NIP_Kar. Bila querynya adalah untuk mencari karyawan yang bekerja di proyek dan memiliki tanggungan, maka bisa dituliskan sebagai berikut: Q23: SELECT NIP_Kar, NamaTanggungan FROM BEKERJA_DI INNER JOIN TANGGUNGAN USING (NIP_Kar); Yang terakhir adalah NATURAL JOIN. Operator ini tidak menyebutkan kondisi join, join dilakukan berdasar nama atribut yang sama (jadi mirip dengan JOIN USING). Q23 dapat ditulis menjadi: Q23a: SELECT NIP_Kar, NamaTanggungan FROM BEKERJA_DI NATURAL JOIN TANGGUNGAN; Join juga bisa dilakukan terhadap hasil join yang lain dengan menggunakan berbagai operator join. Misalkan untuk mencari nomor proyek, departemen pengontrol dan nama manajer dari semua proyek yang berlokasi di Jakarta, querynya adalah sebagai berikut: Q24: SELECT KodeProyek, KodeDep_Proyek, NamaKaryawan FROM ((PROYEK INNER JOIN DEPARTEMEN ON PROYEK.KodeDep_Proyek= DEPARTEMEN.KodeDepartemen) INNER JOIN KARYAWAN ON DEPARTEMEN.NIP_Manajer=KARYAWAN.NIP) WHERE LokasiProyek="Jakarta"; Pada Q24 mula-mula PROYEK dijoinkan dengan DEPARTEMEN untuk mengetahui nomor departemen pengontrol suatu proyek, lalu hasilnya dijoinkan dengan KARYAWAN untuk mengetahui nama manajernya Outer Join Operator yang disediakan oleh SQL dalam kelompok ini adalah LEFT JOIN, RIGHT JOIN, dan FULL JOIN (ketiganya bisa juga digunakan dengan menambahkan OUTER menjadi: LEFT OUTER JOIN, RIGHT OUTER JOIN, dan FULL OUTER JOIN). LEFT JOIN akan menampilkan semua tupel pada tabel pertama dan kedua yang sesuai dengan kondisi join. Bila ada yang tidak sesuai, maka tupel pada tabel pertama akan ditampilkan berpasangan dengan nilai NULL. RIGHT JOIN menampilkan semua tupel pada tabel kedua dan tabel pertama yang memenuhi kondisi join, serta memasangkan nilai NULL dengan tupel pada tabel kedua bila tidak memenuhi kondisi join. FULL JOIN menampilkan semua tupel dari tabel pertama dan kedua yang memenuhi kondisi join, serta memasangkan nilai NULL dengan tupel pada tabel pertama atau kedua bila tidak memenuhi kondisi join. Keuntungan penggunaan ketiga operator ini adalah tidak adanya informasi yang hilang karena semua tupel ditampilkan. Basis Data Darmawan Satyananda 97

25 Contoh LEFT JOIN adalah untuk menampilkan NIP semua karyawan dan kode proyek tempatnya bekerja, termasuk karyawan yang tidak bekerja di proyek manapun. Q25: SELECT NIP, NamaKaryawan, KodeProyek_Kar LEFT JOIN BEKERJA_DI ON KARYAWAN.NIP=BEKERJA_DI.NIP_Kar; Sebaliknya, untuk menampilkan daftar semua proyek yang ada dan nama karyawan yang bekerja di proyek tersebut, bisa digunakan RIGHT JOIN sebagai berikut: Q26: SELECT KodeProyek_Kar, NIP, NamaKaryawan FROM BEKERJA_DI RIGHT JOIN KARYAWAN ON KARYAWAN.NIP=BEKERJA_DI.NIP_Kar ORDER BY KodeProyek_Kar; (a) (b) Gambar 5.6 Hasil query Q24 dan Q25 pada Microsot Access. Catatan: Perhatikan benar JOIN seperti apa yang didukung oleh DBMS yang anda gunakan. Dari semua operator join yang disebutkan di atas, sampai tulisan ini dibuat, Access tidak mendukung CROSS JOIN, NATURAL JOIN, dan FULL JOIN. MySQL tidak mendukung FULL JOIN Fungsi Agregat dan Pengelompokan Konsep fungsi agregat yang ada di SQL sama dengan yang ada di Aljabar Relasional. Fungsi-fungsi tersebut digunakan untuk perhitungan matematis, dikenakan terhadap sekelompok data, dan dituliskan sebagai bagian dari klausa SELECT. Fungsifungsi ini juga tidak bisa digunakan bercampur dengan atribut biasa kecuali bila dikelompokkan menurut atribut tertentu Fungsi Agregat Fungsi agregat yang serupa dengan yang ada di aljabar relasional adalah COUNT, SUM, MAX, MIN, dan AVG. Fungsi ini digunakan untuk melakukan perhitungan terhadap sejumlah tupel dalam tabel, dan akan menghasilkan sebuah tupel Basis Data Darmawan Satyananda 98

26 yang berisi hasil perhitungan. Output fungsi ini hanya satu tupel, bukan sekumpulan tupel. Contoh query untuk mencari banyaknya pekerja, jumlah gaji semua pekerja, gaji terbesar, gaji terkecil, dan rata-ratanya adalah: Q27: SELECT COUNT (NIP), SUM(Gaji), MAX(Gaji), MIN(Gaji), AVG(Gaji) ; Gambar 5.7. Hasil query Q27 pada Microsot Access. Tampak pada gambar 5.7 judul kolom diawali dengan Expr. Agar lebih komunikatif, maka sebaiknya judul kolom diberi nama alias dengan menggunakan AS. Contoh penggunaan COUNT yang lain, misalnya mencari banyaknya karyawan yang bekerja pada departemen Riset. Q28: SELECT COUNT(*), DEPARTEMEN WHERE KodeDep_Kar=KodeDepartemen AND NamaDepartemen="Riset"; Parameter COUNT bisa berupa atribut tabel atau tanda asterisk (*). Bila digunakan dengan atribut maka hanya akan menghitung tupel yang atributnya tersebut berisi nilai dan mengabaikan yang nilainya NULL, sedangkan asterisk digunakan untuk menghitung banyaknya tupel tanpa melihat atributnya dan tanpa melihat apakah ada nilai NULL di dalamnya. Dengan demikian lebih disarankan menggunakan COUNT dengan menyebutkan atribut untuk menghindari penghitungan yang tidak perlu karena adanya NULL. Asterisk hanya bisa digunakan di COUNT. Fungsi lainnya harus menyebutkan atributnya. Semua fungsi yang disebutkan di atas akan menghitung semua tupel termasuk yang ganda, sehingga untuk menghindari hasil yang kurang tepat, gunakan DISTINCT. Jadi query untuk mencari berapa orang karyawan yang menjadi pengawas adalah sebagai berikut: Q29: SELECT COUNT(DISTINCT NIP_Pengawas) ; Hasilnya adalah 3 orang saja yang menjadi pengawas. Bila anda tuliskan SELECT COUNT(NIP_Pengawas) maka hasilnya adalah 5, yang justru menyatakan berapa orang karyawan yang diawasi. Hal ini terjadi karena seorang pengawas bisa mengawasi lebih dari 1 karyawan. Di Access, DISTINCT tidak bisa digunakan di dalam COUNT, sedangkan MySQL mendukungnya. Akibatnya kita harus buat subquery dengan menggunakan DISTINCT Basis Data Darmawan Satyananda 99

27 dan NOT NULL. Query yang ekivalen dengan Q29 adalah: Q29a: SELECT COUNT(*) FROM (SELECT DISTINCT NIP_Pengawas WHERE NIP_Pengawas IS NOT NULL); Berkaitan dengan tipe datanya, SUM dan AVG hanya bisa untuk data numerik, sedangkan fungsi yang lain bisa untuk sembarang jenis data. Contohnya untuk mencari nama karyawan yang paling awal dan paling akhir muncul di urutan nama karyawan, bila kita anggap datanya terurut, adalah sebagai berikut: Q30: SELECT MIN(NamaKaryawan) AS AWAL, MAX(NamaKaryawan) AS AKHIR Gambar 5.8 Hasil dari MIN dan MAX pada data bertipe teks. Pada Gambar 5.8, judul kolom diberi nama ulang dengan AWAL dan AKHIR. Bandingkan dengan Q27 dan Gambar 5.7. Fungsi juga dapat dikenakan pada kondisi seleksi. Query untuk mencari nama semua karyawan yang mempunyai 2 atau lebih tanggungan adalah sebagai berikut: Q31: SELECT NamaKaryawan WHERE (SELECT COUNT(*) FROM TANGGUNGAN WHERE NIP_Kar=NIP) >= 2; Subquery akan menghitung banyaknya tanggungan setiap karyawan sesuai dengan NIP dari tupel aktif di tabel karyawan saat itu. Bila nilainya lebih besar dari 2 maka tupel tersebut akan dipilih. Hal ini dimungkinkan karena subquery hanya menghasilkan satu tupel dan satu record saja sehingga bisa langsung dibandingkan. Pada sub bab menganai subquery, disebutkan bahwa subquery bisa diletakkan di SELECT. Umumnya digunakan bersama fungsi agregat, misalnya mencari selisih gaji setiap karyawan dengan gaji yang tertinggi. Q32: SELECT NamaKaryawan, (SELECT MAX(Gaji) ) AS GajiTertinggi, Gaji, (SELECT MAX(Gaji) FROM KARYAWAN)-Gaji AS Selisih ; Pada SELECT kita tuliskan subquery untuk mencari berapa gaji tertinggi dan menghitung selisihnya dengan gaji setiap karyawan. Penghitungan selisih dilakukan dengan menuliskan ulang subquerynya. Akan tetapi di Access diperbolehkan bila dituliskan sebagai berikut: Basis Data Darmawan Satyananda 100

28 Q32a: SELECT NamaKaryawan, (SELECT MAX(Gaji) ) AS GajiTertinggi, Gaji, GajiTertinggi-Gaji AS Selisih ; Q32a akan memunculkan pesan kesalahan bila dituliskan di MySQL Pengelompokan Fungsi-fungsi SUM, MIN, MAX, COUNT, AVG hanya menghasilkan masing-masing satu nilai sehingga penggunaannya tidak dapat digabungkan dengan atribut lain yang mungkin menghasilkan banyak nilai. Misal pada permasalahan menampilkan banyaknya karyawan yang ada di setiap departemen dan rata-rata gaji karyawan di departemen tersebut. Kita mungkin akan menuliskannya dalam bentuk: SELECT KodeDep_Kar, COUNT(*), AVG(Gaji) Query tesebut tidak akan bisa dieksekusi karena fungsi COUNT dan AVG masing-masing menghasilkan satu nilai, sedangkan atribut NODEP_KAR mungkin menghasilkan banyak nilai. Solusinya adalah dengan mengelompokkan data berdasarkan atribut tertentu sehingga hanya akan menghasilkan satu nilai juga. Dalam kasus seperti di atas kita lakukan pengelompokan tupel-tupel yang mempunyai nilai yang sama pada atribut tertentu. Kepada kelompok tupel ini selanjutnya kita bisa kenakan fungsi agregat. Untuk melakukan pengelompokan berdasar atribut tertentu SQL menggunakan klausa GROUP BY. Atribut di klausa SELECT harus muncul pada klausa GROUP BY, tetapi belum tentu sebaliknya. GROUP BY bisa berisi atribut apapun yang ada di tabel yang disebutkan di FROM. GROUP BY hanya bisa berisi atribut, bukan fungsi agregat. Permasalahan terakhir bisa kita betulkan menjadi: Q33: SELECT KodeDep_Kar, COUNT(*) AS BYK, AVG(Gaji) AS RATA2 GROUP BY KodeDep_Kar; Tupel-tupel dalam relasi karyawan dibagi menjadi kelompok-kelompok, setiap kelompok mempunyai nilai yang sama untuk atribut KodeDep_Kar. Fungsi COUNT dan AVG selanjutnya diterapkan kepada setiap kelompok tupel. Gambar 5.9 menunjukkan bagaimana pengelompokan dari Q33 dan hasilnya. Klausa GROUP BY juga dapat digunakan dengan kondisi JOIN. Untuk kondisi seperti ini, fungsi dan pengelompokan dijalankan setelah penggabungan 2 buah relasi dilakukan. Contohnya untuk setiap proyek, cari nomor proyek, nama proyek, dan banyaknya karyawan yang bekerja pada proyek tersebut. Basis Data Darmawan Satyananda 101

29 NamaKarya wan NIP Gaji NIP_Pengawas KodeDep_Kar Yasin Burhan Wahyu N Gatot Dewi Nur Rahmat Null 1 Nina Null 2 KodeDep_Kar BYK RATA Gambar 5.9 Penggambaran GROUP BY untuk Q33. Q34: SELECT KodeProyek, NamaProyek, COUNT(*) AS Byk FROM PROYEK, BEKERJA_DI WHERE KodeProyek=KodeProyek_Kar GROUP BY KodeProyek, NamaProyek; Pada Q34 dilakukan join antara PROYEK dan BEKERJA_DI. Hasil join inilah yang selanjutnya dikelompokkan dan dihitung cacahnya. Perhatikan atribut selain fungsi agregat di SELECT juga muncul di GROUP BY. Fungsi agregat dapat dikenakan pada grup yang memenuhi kondisi tertentu. Misalnya Q34 dimodifikasi menjadi hanya proyek yang mempunyai karyawan yang lebih dari 2 yang ditampilkan sebagai hasil query. Di sini digunakan klausa HAVING, dengan syarat hanya bisa digunakan bersama GROUP BY. HAVING memberikan suatu kondisi terhadap hasil pengelompokan dan hanya grup yang memenuhi kondisi saja yang muncul sebagai hasil query. Selain berisi fungsi, HAVING juga bisa berisi subquery. Query untuk permasalahan tersebut bisa dilihat pada Q35: Q35: SELECT KodeProyek, NamaProyek, COUNT(*) FROM PROYEK, BEKERJA_DI WHERE KodeProyek=KodeProyek_Kar GROUP BY KodeProyek, NamaProyek HAVING COUNT(*)>2; Perhatikan bahwa klausa WHERE membatasi tupel yang akan dikenai fungsi (WHERE dijalankan sebelum dikelompokkan), sedangkan HAVING membatasi keseluruhan grup (HAVING dijalankan setelah dikelompokkan). Apa yang dituliskan di HAVING juga harus muncul di SELECT. Karena fungsi bisa digunakan pada SELECT dan HAVING, diperlukan ketelitian untuk menentukan di mana fungsi diletakkan. Misalkan ingin menghitung total karyawan pada suatu departemen yang mempunyai gaji lebih dari , tetapi penghitungan Basis Data Darmawan Satyananda 102

30 dilakukan hanya untuk departemen yang mempunyai karyawan lebih dari 5. Misalkan querynya ditulis sebagai berikut: SELECT NamaDepartemen, COUNT(*) FROM DEPARTEMEN, KARYAWAN WHERE KodeDepartemen=KodeDep_Kar AND Gaji> GROUP BY NamaDepartemen HAVING COUNT(*)>5; Query tersebut salah karena hanya mencari karyawan yang mempunyai gaji di atas , selanjutnya mengelompokkannya berdasar nama departemennya, kemudian menampilkan nama departemen dan jumlah karyawan untuk setiap kelompok yang berisi lebih dari 5 karyawan (jadi pada saat akan dikelompokkan, tidak ada karyawan yang bergaji di bawah ). Hal ini tidak sesuai dengan permintaan semula karena yang diminta adalah untuk departemen yang mempunyai lebih dari 5 karyawan, berapapun gajinya. Query yang betul adalah: Q36: SELECT NamaDepartemen, COUNT(*) FROM DEPARTEMEN, KARYAWAN WHERE KodeDepartemen=KodeDep_Kar AND Gaji> AND KodeDep_Kar IN (SELECT KodeDep_Kar GROUP BY KodeDep_Kar HAVING COUNT(*)>5) GROUP BY NamaDepartemen; Pada Q36 mula-mula dilihat apakah karyawan bergaji lebih dari dan apakah departemennya mempunyai lebih dari 5 karyawan. Bila terpenuhi maka tupel hasilnya dipilih dan pada akhirnya dikelompokkan berdasar nama departemennya. Contoh subquery yang diletakkandi HAVING adalah untuk menampilkan rata-rata jam kerja setiap karyawan yang di atas rata-rata jam kerja seluruh karyawan: Q37 SELECT NIP_Kar, AVG(JamKerja) FROM BEKERJA_DI GROUP BY NIP_Kar HAVING AVG(JamKerja)>(SELECT AVG(JamKerja) FROM BEKERJA_DI); 5.4. Manipulasi Data dengan Subquery Perintah untuk manipulasi basis data telah dijelaskan pada sub bab 5.2. Perintah tersebut juga dapat dikombinasikan dengan memasukkan subquery ke dalamnya Perintah INSERT Perintah INSERT yang lebih kompleks dari contoh sebelumnya adalah untuk menyisipkan beberapa tupel sekaligus ke dalam sebuah tabel dengan data hasil query dari tabel lain. Contoh: U8a: CREATE TABLE INFO_DEP (NamaDepartemen VARCHAR(15), JumlahKaryawan INTEGER, Basis Data Darmawan Satyananda 103

31 U8b: TotalGaji INTEGER); INSERT INTO INFO_DEP (NamaDepartemen, JumlahKaryawan, TotalGaji) SELECT NamaDepartemen, COUNT(*), SUM(Gaji) FROM DEPARTEMEN, KARYAWAN WHERE KodeDepartemen=KodeDep_Kar GROUP BY NamaDepartemen; Pada U8a dibentuk relasi baru dengan tiga buah atribut dan pada U8b, relasi INFO_DEP diisi dengan tupel hasil query. Perhatikan bahwa tipe dan urutan atribut di SELECT harus sesuai dengan yang ada pada INFO_DEP. Apabila relasi DEPARTEMEN atau KARYAWAN diubah, maka pengubahannya tidak akan berpengaruh terhadap informasi yang sudah ada di INFO_DEP Perintah DELETE Contoh penghapusan dengan menggunakan SELECT adalah untuk menghapus karyawan yang bekerja pada departemen Riset. Querynya adalah: U9: DELETE WHERE KodeDep_Kar IN (SELECT KodeDepartemen FROM DEPARTEMEN WHERE NamaDepartemen= Riset ); U9 akan menghapus tupel yang nilai KodeDep_Kar ada di tupel hasil subquery Perintah UPDATE UPDATE dengan menggunakan SELECT bisa dilakukan untuk memodifikasi beberapa tupel sekaligus. Contohnya adalah untuk menaikkan gaji karyawan yang bekerja di departemen Riset sebesar 10%, perintahnya adalah: U10: UPDATE KARYAWAN SET Gaji=Gaji*1.1 WHERE KodeDep_Kar IN (SELECT KodeDepartemen FROM DEPARTEMEN WHERE NamaDepartemen= Riset ); 5.5. View Kebutuhan data seorang pengguna dengan yang lain terhadap sebuah basis data adalah berbeda. View adalah cara untuk menyediakan informasi yang diperlukan seorang pengguna yang berbeda dengan pengguna lainnya. Dalam bagian ini akan dibahas mengenai konsep view, bagaimana menyusun view, dan update view. Access tidak mendukung penggunaan VIEW secara langsung. Anda bisa mencobanya di DBMS lain, misalkan MySQL Konsep View View dalam pengertian SQL adalah tabel yang diturunkan dari tabel lain yang berupa tabel dasar atau view lain yang sudah ada sebelumnya. View tidak dalam bentuk Basis Data Darmawan Satyananda 104

32 fisik sebagaimana table dasar, sehingga disebut sebagai tabel maya (virtual table). Data sebenarnya tetap tersimpan di tabel dasar. View adalah satu cara untuk membentuk suatu tabel yang sering diacu. Misalkan untuk mengacu ke satu atau beberapa relasi, bisa dibuat sebuah view yang berisi hasil join beberapa tabel dengan atribut yang diperlukan. Hasil dari view bisa dikenai operasi query seperti tabel biasa, sehingga pengaksesan cukup dilakukan terhadap satu view saja, bukan beberapa tabel dasar. Tabel sumber view disebut sebagai tabel pendefinisi (defining table) view Menspesifikasikan View Perintah untuk menspesifikasikan view adalah CREATE VIEW dengan bentuk: CREATE VIEW <nama view> [(<nama kolom> {, <nama kolom>})] AS <pernyataan select>; Di dalam perintah tersebut terdapat nama tabel maya, daftar nama atribut view, dan query untuk menentukan isi view. Bila daftar atribut tidak disebutkan maka view akan mempunyai atribut yang sama dengan tabel pendefinisi. Contoh: V1: CREATE VIEW V_BEKERJA_DI AS SELECT NamaKaryawan, NamaProyek, JamKerja, PROYEK, BEKERJA_DI WHERE NIP=NIP_Kar AND KodeProyek=KodeProyek_Kar; V2: CREATE VIEW INFO_DEP (NAMA_DEP, JUM_KARY, TOT_GAJI) AS SELECT NamaDepartemen, COUNT(*), SUM(Gaji) FROM DEPARTEMEN, KARYAWAN WHERE KodeDepartemen=KodeDep_Kar GROUP BY NamaDepartemen; Pada V1 tidak disebutkan nama atribut baru untuk V_BEKERJA_DI, sehingga view mempunyai nama atribut yang sama dengan tabel pendefinisinya. V2 menyebutkan nama atribut yang baru dengan urutan yang sama antara atribut yang ada di klausa CREATE VIEW dengan yang ada di klausa SELECT. View bisa dikenai operasi sebagaimana tabel dasar seperti contoh berikut: menampilkan nama semua karyawan yang bekerja di proyek dan jam kerjanya. Querynya adalah: V3: SELECT * FROM V_BEKERJA_DI; Bila view sudah tidak digunakan, view dapat dihapus dengan perintah DROP VIEW, seperti contoh berikut: V4: DROP VIEW V_BEKERJA_DI; Basis Data Darmawan Satyananda 105

33 Gambar 5.10 Isi view dari V_BEKERJA_DI Update View View selalu dalam keadaan up to date, bila ada pengubahan tupel di tabel dasar yang berkaitan dengan view, maka view akan ikut berubah. Sebaliknya, pengubahan view umumnya bisa mempengaruhi tabel dasarnya. Untuk melakukan update digunakan perintah UPDATE seperti halnya pada tabel dasar. Suatu view tidak bisa di-update bila pernyataan CREATE VIEW mengandung: DISTINCT pada klausa SELECT. ekspresi atau fungsi agregat pada klausa SELECT operator himpunan seperti UNION, INTERSECT, MINUS pengacuan ke view lain yang tidak bisa di-update pada klausa FROM klausa GROUP BY atau HAVING Misalkan akan mengubah jam kerja karyawan yang bernama Yasin pada proyek Produk X menjadi 20 jam, maka perintahnya adalah sebagai berikut: V5: UPDATE V_BEKERJA_DI SET JamKerja=20 WHERE NamaKaryawan= Yasin AND NamaProyek= Produk X ; Tampak pada Gambar 5.11 perubahan yang terjadi di V_BEKERJA_DI dan BEKERJA_DI sebagai tabel dasarnya. Basis Data Darmawan Satyananda 106

34 Gambar 5.11 Perubahan pada view dan tabel dasar. Perhatikan definisi view berikut yang dibentuk dengan GROUP BY dan pengubahan yang terjadi: V6 CREATE VIEW V_JAMKERJA AS SELECT NIP_Kar, SUM(JamKerja) AS Total FROM BEKERJA_DI GROUP BY NIP_Kar; V7: UPDATE V_JAMKERJA SET Total=100 WHERE NIP_Kar=" "; Gambar 5.12 Contoh view yang tidak bisa di-update. Basis Data Darmawan Satyananda 107

Sistem Basis Data Danny Kriestanto, S.Kom., M.Eng

Sistem Basis Data Danny Kriestanto, S.Kom., M.Eng Sistem Basis Danny Kriestanto, S.Kom., M.Eng SQL Introduction Setelah Membuat ERD dan Model Relasional, what s next? Bagaimana cara membangun entitas dan relationship tersebut agar dapat digunakan? Bagaimana

Lebih terperinci

STRUCTURED QUERY LANGUAGE (SQL) (Implementasi menggunakan MySQL)

STRUCTURED QUERY LANGUAGE (SQL) (Implementasi menggunakan MySQL) STRUCTURED QUERY LANGUAGE (SQL) (Implementasi menggunakan MySQL) A. Pengenalan SQL SQL pertama kali diterapkan pada sistem R (sebuah proyek riset pada laboratorium riset San Jose, IBM). Kini SQL juga dijumpai

Lebih terperinci

Pengertian Query. Query adalah perintah-perintah untuk mengakses data pada sistem basis data

Pengertian Query. Query adalah perintah-perintah untuk mengakses data pada sistem basis data Kompetensi Dasar Setelah mengikuti kegiatan proses belajar mengenai Pengenalan SQL, mahasiswa dapat mendefinisikan dan memanipulasi sistem basis data menggunakan bahasa SQL dengan tepat Tujuan Pembelajaran

Lebih terperinci

STRUCTURE QUERY LANGUAGE DDL & DML

STRUCTURE QUERY LANGUAGE DDL & DML STRUCTURE QUERY LANGUAGE DDL & DML OUTLINE Data Definiton Language (DDL) Data Manipulation Language (DML) Data Control Language (DCL) Proses Pembangunan Database Perintah SQL DATA DEFINITION LANGUAGE (DDL)

Lebih terperinci

BAB IV Konsep Model Relasional

BAB IV Konsep Model Relasional BAB IV MODEL RELASIONAL Model E-R yang dibahas pada bab III adalah model konseptual, yang lebih disukai untuk melakukan perancangan basis data. Model E-R lebih menekankan kepada pembentukan entitas yang

Lebih terperinci

Apakah SQL? Membuat basis data dan struktur tabel Input, update, dan delete data dari tabel Membuat query sederhana dan kompleks SQL

Apakah SQL? Membuat basis data dan struktur tabel Input, update, dan delete data dari tabel Membuat query sederhana dan kompleks SQL SQL Basis Data 1 Apakah SQL? SQl singkatan dari Structured Query Language yang merupakan bahasa komputer standar ANSI (American National Standards Institute). Dengan SQL kita dapat Membuat basis data dan

Lebih terperinci

Pertemuan 12 Pengenalan Structured Query Language

Pertemuan 12 Pengenalan Structured Query Language Pertemuan 12 Pengenalan Structured Query Language Apa Itu SQL? Membuat, Menampilkan, Membuka dan Menghapus Database Membuat, Mengubah dan Menghapus Table Menambah Record dengan INSERT Mengedit Record dengan

Lebih terperinci

Pengenalan Structured Query Language

Pengenalan Structured Query Language Pengenalan Structured Query Language Apa Itu SQL? SQL merupakan singkatan dari Structured Query Language. SQL atau juga sering disebut sebagai query merupakan suatu bahasa (language) yang digunakan untuk

Lebih terperinci

Sejarah(1) Sejarah(2) STRUCTURE QUERY LANGUANGE (1) Definisi SQL

Sejarah(1) Sejarah(2) STRUCTURE QUERY LANGUANGE (1) Definisi SQL Sejarah(2) STRUCTURE QUERY LANGUANGE (1) Tahun 1987, American National Standards Institute (ANSI) dan International Standards Organization (ISO) membuat standar untuk SQL Tahun 1992, dibentuk versi baru

Lebih terperinci

MODUL PEMPROGRAMAN SQL TINGKAT DASAR 1 STANDAR KOMPETENSI: MENERAPKAN BAHASA PEMPROGRAMAN SQL TINGKAT DASAR SMK NEGERI 1 MAJALENGKA

MODUL PEMPROGRAMAN SQL TINGKAT DASAR 1 STANDAR KOMPETENSI: MENERAPKAN BAHASA PEMPROGRAMAN SQL TINGKAT DASAR SMK NEGERI 1 MAJALENGKA MODUL PEMPROGRAMAN SQL TINGKAT DASAR 1 STANDAR KOMPETENSI: MENERAPKAN BAHASA PEMPROGRAMAN SQL TINGKAT DASAR SMK NEGERI 1 MAJALENGKA PENGANTAR SQL TINGKAT DASAR Basisdata atau database adalah kumpulan dari

Lebih terperinci

Perangkat Lunak Pengembangan Web

Perangkat Lunak Pengembangan Web Perangkat Lunak Pengembangan Web Pertemuan 5 Database I Program Diploma IPB - Aditya Wicaksono, SKomp 1 Apa itu SQL? Structured Query Language SQL adalah bahasa standar untuk mengakses database SQL memungkinkan

Lebih terperinci

Modul 3 : Query Penggabungan Tabel

Modul 3 : Query Penggabungan Tabel Modul 3 : Query Penggabungan Tabel Tujuan Praktikum - Mahasiswa dapat membedakan perbedaan macam-macam join tabel. - Mahasiswa mampu melakukan query untuk join tabel. - Mahasiswa dapat membedakan union,

Lebih terperinci

SQL (STRUCTURED QUERY LANGUAGE)

SQL (STRUCTURED QUERY LANGUAGE) SQL (STRUCTURED QUERY LANGUAGE) 1. Jenis-jenis deklarasi SQL Deklarasi atau perintah SQL dibagi menjadi DDL, dan DML berdasarkan kepada fungsinya. a. DDL (Data Definition Language) Merupakan perintah-perintah

Lebih terperinci

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN WEB Semester: 2 MYSQL 200 menit No.: Job: 12 Tgl: Hal.

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN WEB Semester: 2 MYSQL 200 menit No.: Job: 12 Tgl: Hal. A. Kompetensi Mahasiswa diharapkan dapat memahami: 1. Pengertian databases, DBMS, MySQL 2. Apa Itu SQL? 3. Membuat, Menampilkan, Membuka dan Menghapus Database 4. Membuat, Mengubah dan Menghapus Table

Lebih terperinci

Data Manipulation Language (DML) & Data Control Language (DCL) pada Database

Data Manipulation Language (DML) & Data Control Language (DCL) pada Database Data Manipulation Language (DML) & Data Control Language (DCL) pada Database Karunia Suci Lestari k.sucilestari97@gmail.com :: http://ksucilestari97.wordpress.com Abstrak Setelah artikel sebelumnya membahas

Lebih terperinci

MODUL 7 STRUCTURED QUERY LANGUAGE

MODUL 7 STRUCTURED QUERY LANGUAGE MODUL 7 STRUCTURED QUERY LANGUAGE BAHASA QUERY KOMERSIAL Berdasarkan acuan model relasional, ada 2 bahasa query komersial yang tersedia : 1. SQL (Structured Query Language) 2. QBE (Query By Example ).

Lebih terperinci

SQL DASAR BASIS DATA. Rajif Agung Yunmar, S.Kom., M.Cs.

SQL DASAR BASIS DATA. Rajif Agung Yunmar, S.Kom., M.Cs. SQL DASAR BASIS DATA Rajif Agung Yunmar, S.Kom., M.Cs. PRETEST Sebutkan apa yang disebut dengan SQL? Jelaskan! Apakah yang disebut sebagai batasan integritas (integrity constraint)? Sebutkan jenis-jenis

Lebih terperinci

Riyanto

Riyanto SQL (Structured Query Language) Riyanto mohriyan@gmail.com http://www.masto.co.cc Lisensi Dokumen: Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan

Lebih terperinci

Praktikum Basis Data. By. Rita Wiryasaputra, ST., M. Cs.

Praktikum Basis Data. By. Rita Wiryasaputra, ST., M. Cs. Praktikum Basis Data By. Rita Wiryasaputra, ST., M. Cs. SQL: DDL (Data Definition Language) Create Database Create Table Create View Create Index Alter Database Alter Table Alter View Drop Database Drop

Lebih terperinci

LATAR BELAKANG IBM San Jose Research Laboratory.

LATAR BELAKANG IBM San Jose Research Laboratory. SQL LATAR BELAKANG SQL merupakan bahasa basis data relasional standard. Terdapat macam-macam versi SQL. Versi aslinya pertama kali dikembangkan oleh IBM San Jose Research Laboratory. 2 LATAR BELAKANG Bahasa

Lebih terperinci

Untuk mencoba contoh-contoh perintah join, silahkan eksekusi query create+insert dibawah ini:

Untuk mencoba contoh-contoh perintah join, silahkan eksekusi query create+insert dibawah ini: JOIN Dalam menampilkan sebuah data seringkali kita perlu menggunakan lebih dari 1 tabel, 2 tabel, bahkan lebih, karena data yang akan ditampilkan terletak pada beberapa tabel. Setiap tabel biasanya memiliki

Lebih terperinci

SEKOLAH TINGGI TEKNOLOGI INDONESIA TANJUNG PINANG

SEKOLAH TINGGI TEKNOLOGI INDONESIA TANJUNG PINANG M O D U L S Q L SISTEM BASIS DATA 2 Disusun oleh : Siti Yuliyanti, ST SEKOLAH TINGGI TEKNOLOGI INDONESIA TANJUNG PINANG Jl. Brigjen Katamso No.92 Km 2.5 Tanjungpinang Kepulauan Riau November 24, 2010 SQL

Lebih terperinci

Praktikum Basis Data 2017 TE UM

Praktikum Basis Data 2017 TE UM MODUL 3 SQL A. TUJUAN - Memahami SQL, komponen-komponen, dan penggunaannya. - Mengenal operasi-operasi DML menggunakan phpmyadmin. - Mampu melakukan operasi-operasi retrieve yang spesifik - Mampu penguraikan

Lebih terperinci

Konsep Sistem Informasi B. BAB 2 - SQL Overview

Konsep Sistem Informasi B. BAB 2 - SQL Overview Konsep Sistem Informasi B BAB 2 - SQL Overview Summary Definisi SQL Komponen-Komponen SQL Latihan What is? Introduction SQL Structured Query Language adalah sebuah bahasa yang digunakan untuk mengakses

Lebih terperinci

Arsitektur Basis Data Oracle

Arsitektur Basis Data Oracle Arsitektur Basis Data Oracle Oracle pertama kali dicetuskan oleh Larry Elisson beserta dua temannya pada tahun 1977. Nama Oracle diambil dari proyek milik CIA di mana dia sebelumnya bekerja. (Wikipedia)

Lebih terperinci

Agenda SQL. Pemakai SQL. Kemampuan SQL 02/12/2010 STRUCTURED QUERY LANGUAGE (SQL) Structured Query Language (SQL) (Pert. 9)

Agenda SQL. Pemakai SQL. Kemampuan SQL 02/12/2010 STRUCTURED QUERY LANGUAGE (SQL) Structured Query Language (SQL) (Pert. 9) Agenda Structured Query Language (SQL) (Pert. 9) Oleh : Umi Laili Yuhana, S.Kom, M.Sc. Sarwosri, S.Kom, M.T. Dr. Ir. Siti Rochimah Pengantar SQL DDL 1 2 SQL Singkatan dari Structured Query Language, dalam

Lebih terperinci

STRUCTURE QUERY LANGUAGE (SQL)

STRUCTURE QUERY LANGUAGE (SQL) STRUCTURE QUERY LANGUAGE (SQL) Structure Query Language (SQL) adalah bahasa query standar yang digunakan untuk mengakses basis data relasional. SQL mempunyai kemampuan sebagai berikut : a. Query (memperoleh

Lebih terperinci

Mahasiswa memahami fungsi-fungsi lain di dalam SQL Mahasiswa memahami tentang operasi agregasi Mahasiswa mampu mengaplikasikan operasi agregasi

Mahasiswa memahami fungsi-fungsi lain di dalam SQL Mahasiswa memahami tentang operasi agregasi Mahasiswa mampu mengaplikasikan operasi agregasi Mahasiswa memahami fungsi-fungsi lain di dalam SQL Mahasiswa memahami tentang operasi agregasi Mahasiswa mampu mengaplikasikan operasi agregasi 2 Review Klausa Where Filter Perbandingan Like IN dan NOT

Lebih terperinci

Perkenalan SQL. Ada empat macam tipe database yaitu hirarki, jaringan, relasional, dan objek.

Perkenalan SQL. Ada empat macam tipe database yaitu hirarki, jaringan, relasional, dan objek. Perkenalan SQL Sebuah database adalah sekumpulan informasi yang disusun dengan baik. Untuk mengatur sebuah database, dibutuhkan sebuah Database Management System (DBMS). DBMS merupakan program untuk menyimpan,

Lebih terperinci

Kontrak Kuliah. Dasar-dasar MySQL. Edi Sugiarto, S.Kom, M.Kom

Kontrak Kuliah. Dasar-dasar MySQL. Edi Sugiarto, S.Kom, M.Kom Kontrak Kuliah Dasar-dasar MySQL Edi Sugiarto, S.Kom, M.Kom Tipe Data Tipe data numerik Tipe Data Keterangan Ukuran Integer atau int Signed value : -2147683648 hingga 2147683648 4byte Decimal Nilai tergantung

Lebih terperinci

KURSUS ONLINE JASA WEBMASTERS

KURSUS ONLINE JASA WEBMASTERS KURSUS ONLINE JASA WEBMASTERS SQL Pengenalan Database, SQL, MySQL dan XAMPP JASA WEBMASTERS Jl. Ringin Raya No 124A Condong Catur, Sleman, Yogyakarta Database Database secara singkat dapat diartikan sebagai

Lebih terperinci

INTEGRITAS BASIS DATA. OLEH : Slamet Sn Wibowo Wicaksono

INTEGRITAS BASIS DATA. OLEH : Slamet Sn Wibowo Wicaksono INTEGRITAS BASIS DATA OLEH : Slamet Sn Wibowo Wicaksono Integrity Constraint (Batasan Integritas) Constraint (batasan) merupakan aturan yang diberikan pada suatu tabel agar data yang dimasukkan terjamin

Lebih terperinci

Basis Data. Bagian IV SQL (1) Fak. Teknik Jurusan Teknik Informatika Universitas Pasundan

Basis Data. Bagian IV SQL (1) Fak. Teknik Jurusan Teknik Informatika Universitas Pasundan Basis Data Bagian IV SQL (1) Fak. Teknik Jurusan Teknik Informatika Universitas Pasundan Sejarah SQL IBM mengembangkan versi asli SQL di San Jose Research Laboratory (sekarang Almaden Research Center)

Lebih terperinci

SQL (Structure Query Language) Gentisya Tri Mardiani, S.Kom

SQL (Structure Query Language) Gentisya Tri Mardiani, S.Kom SQL (Structure Query Language) Gentisya Tri Mardiani, S.Kom SQL Structure Query Language (SQL) adalah bahasa query standar yang digunakan untuk mengakses basis data relasional. Kemampuan SQL: Query (memperoleh

Lebih terperinci

Basis Data. DDL & Aturan Referential

Basis Data. DDL & Aturan Referential Basis Data DDL & Aturan Referential Tipe Data Untuk setiap kolom/field yang terdapat pada sebuah tabel, harus ditentukan pula tipe datanya yang menentukan jangkauan nilai yang bisa diisikan Masing-masing

Lebih terperinci

PERTEMUAN 11 SQL(lanjutan): Queries, Constraints & Triggers. (Chap. 5 Ramakrishnan)

PERTEMUAN 11 SQL(lanjutan): Queries, Constraints & Triggers. (Chap. 5 Ramakrishnan) PERTEMUAN 11 SQL(lanjutan): Queries, Constraints & Triggers (Chap. 5 Ramakrishnan) Overview Structure Query Language (SQL) adalah bahasa database relasional komersial yang paling banyak digunakan. SQL

Lebih terperinci

STRUCTURED QUERY LANGUAGE (SQL)

STRUCTURED QUERY LANGUAGE (SQL) BAB V STRUCTURED QUERY LANGUAGE (SQL) Sistem basis data komersial menghendaki adanya sebuah bahasa query yang lebih user-friendly. Oleh karena itu dikenal SQL sebagai bahasa query yang marketable. SQL

Lebih terperinci

Kegiatan Praktikum Sistem Basis Data Kelompok B

Kegiatan Praktikum Sistem Basis Data Kelompok B Kegiatan Praktikum Sistem Basis Data Kelompok B Hari/tanggal : Kamis, 17-4-2014 & Kamis,..,..,2014 Pertemuan ke : 6 dan 7 Pokok Bahasan : Perintah SQL dengan DML Tujuan : Memahami dan mampu mengimplementasikan

Lebih terperinci

Basis Data. Structured Query Language (SQL)

Basis Data. Structured Query Language (SQL) Basis Data Structured Query Language (SQL) Pengenalan SQL Basis Data SQL Berfungsi sebagai bahasa query interaktif sekaligus juga sebagai bahasa pemrograman basis data. SQL meliputi: Definisi data Manipulasi

Lebih terperinci

By Mrs Imana Malia Kondou, S.T. missimanakondou.wordpress.com

By Mrs Imana Malia Kondou, S.T. missimanakondou.wordpress.com Pengantar SQL By Mrs Imana Malia Kondou, S.T. 1 Tujuan Mahasiswa memahami konsep dasar SQL 2 Pokok k Bahasan Statemen Macam-macam macam perintah SQL DDL DML 3 Mengapa SQL? SQL mrpk very-high-level language.

Lebih terperinci

LAPORAN PRAKTIKUM MODUL 1 PENGENALAN MYSQL

LAPORAN PRAKTIKUM MODUL 1 PENGENALAN MYSQL LAPORAN PRAKTIKUM MODUL 1 PENGENALAN MYSQL Diajukan Sebagai Tugas Mata Kuliah Basis Data Oleh: Maulidya Yulianingtyas 1431140013 POLITEKNIK NEGERI MALANG PROGRAM STUDI MANAJEMEN INFORMATIKA MALANG 2015

Lebih terperinci

Constraint dan Manajemen Data dalam Timezone Berbeda

Constraint dan Manajemen Data dalam Timezone Berbeda Constraint dan Manajemen Data dalam Timezone Berbeda Rosa Ariani Sukamto Email: rosa_if_itb_01@yahoo.com Blog: http://udinrosa.wordpress.com Website: http://www.gangsir.com Constraint Aturan pada basis

Lebih terperinci

MODUL II SQL A. TUJUAN

MODUL II SQL A. TUJUAN MODUL II SQL A. TUJUAN Memahami SQL, komponen-komponen, dan kegunaannya Mengenal operasi-operasi DDL dan DML Mampu melakukan operasi-operasi retrieve yang spesifik Mampu menguraikan dan mentranslasikan

Lebih terperinci

PRAKTIKUM 5 SISTEM BASIS DATA JOIN

PRAKTIKUM 5 SISTEM BASIS DATA JOIN Mochammad Yusa Sistem Basis Data 1 PRAKTIKUM 5 SISTEM BASIS DATA JOIN Praktikan Mengetahui Asisten Laboratorium NIM. NIM. A. TUJUAN Tujuan dari praktikum ini adalah: 1. Mampu menginputkan data dan record

Lebih terperinci

Basis Data. Bagian IV SQL (3) Fak. Teknik Jurusan Teknik Informatika Universitas Pasundan

Basis Data. Bagian IV SQL (3) Fak. Teknik Jurusan Teknik Informatika Universitas Pasundan Basis Data Bagian IV SQL (3) Fak. Teknik Jurusan Teknik Informatika Universitas Pasundan Deletion Yang dapat dihapus (delete) hanyalah tuple bukan nilai ada suatu atribut tertentu. Dalam SQL, deletion

Lebih terperinci

Structured Query Language

Structured Query Language Structured Query Language DDL (Data Definition Language) 31 Mei 2006 2006, M. Ramadhan 1 Pendahuluan Yang akan dibahas: Bahasa basis data: DDL, DML Mengenal SQL: standar, manfaat SQL: Data Definition Language

Lebih terperinci

LAPORAN TUGAS BASIS DATA I

LAPORAN TUGAS BASIS DATA I LAPORAN TUGAS BASIS DATA I Disusun untuk Memenuhi Tugas Matakuliah Basis Data I yang dibimbing oleh Bapak Muhammad Zainal Arifin Oleh : KATYA LINDI CHANDRIKA 140535605307 UNIVERSITAS NEGERI MALANG FAKULTAS

Lebih terperinci

PENGENALAN SINTAKS DASAR DALAM MySQL

PENGENALAN SINTAKS DASAR DALAM MySQL SMK-TI TRAINING AND CERTIFICATION Modul 3 PENGENALAN SINTAKS DASAR DALAM MySQL Team Training SMK TI 37 SMK-TI TRAINING AND CERTIFICATION Tujuan: Siswa dapat membuat database dan table sederhana yang dilengkapi

Lebih terperinci

M0564-Pengantar Sistem Basisdata 12/ 1

M0564-Pengantar Sistem Basisdata 12/ 1 M0564-Pengantar Sistem Basisdata 12/ 1 SQL : DML (Continue) Query Multi-Table Dapat menggunakan subqueri asalkan kolom yang dihasilkan berasal dari tabel yang sama. Jika kolom yang dihasilkan berasal dari

Lebih terperinci

RENCANA PEMBELAJARAN

RENCANA PEMBELAJARAN FRM/KUL/01/ Written by Checked by Approved by valid date Leon Andretti Abdillah, S.Kom.,MM Merry Agustina, M.M.,M.Kom M.Izman Herdiansyah, ST., MM., Ph.D Mata Kuliah : Praktikum Basis Data Semester :1

Lebih terperinci

Contoh SQL Constraint

Contoh SQL Constraint Contoh SQL Constraint Anda dapat menggunakan constraint untuk membatasi tipe data yang disimpan ke dalam tabel. Constraint dapat digunakan pada saat pertama kali membuat table dengan statement CREATE TABLE

Lebih terperinci

MODUL V DATA MANIPULATION LANGUAGE (DML) 1

MODUL V DATA MANIPULATION LANGUAGE (DML) 1 MODUL V DATA MANIPULATION LANGUAGE (DML) 1 Tujuan : Praktikan dapat memahami dan mengisi tabel dalam database Praktikan dapat memahami dan memanipulasi data dalam database Tugas Pendahuluan Apa yang anda

Lebih terperinci

MODUL III STRUCTURED QUERY ANGUAGE (SQL)

MODUL III STRUCTURED QUERY ANGUAGE (SQL) MODUL III STRUCTURED QUERY ANGUAGE (SQL) Tujuan : 1. Memahami tentang sistem database 2. Memahami instalasi MySQL di lingkungan Windows 3. Memahami dasar-dasar MySQL. Tugas Pendahuluan 1. Apa yang anda

Lebih terperinci

MODUL 1 Pengenalan MySQL, DDL, DML

MODUL 1 Pengenalan MySQL, DDL, DML MODUL 1 Pengenalan MySQL, DDL, DML PENGENALAN MYSQL MySQL merupakan salah satu DBMS yang bersifat freeware, sehingga menjadi popular dikalangan pengguna database. Selain karena Free MySQL juga merupakan

Lebih terperinci

BAB III MODEL DATA RELASIONAL DAN ALJABAR RELASIONAL

BAB III MODEL DATA RELASIONAL DAN ALJABAR RELASIONAL BAB III MODEL DATA RELASIONAL DAN ALJABAR RELASIONAL Model data relasional diperkenankan oleh Codd pada tahun 1970. Didasarkan pada suatu struktur data yang sederhana dan seragam (uniform), yaitu : Relasi

Lebih terperinci

Pertemuan 9 Struktur Query Language(SQL)

Pertemuan 9 Struktur Query Language(SQL) 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

Lebih terperinci

15-Jan DATABASE - MySQL. Database. Constraints. Tujuan: Memahami perintah-perintah dasar DDL dan DML

15-Jan DATABASE - MySQL. Database. Constraints. Tujuan: Memahami perintah-perintah dasar DDL dan DML Objectives Tujuan: DATABASE - MySQL Memahami perintah-perintah dasar DDL dan DML Acep Irham Gufroni, M.Eng. Pemrograman Internet Teknik Informatika Univ. Siliwangi Database Constraints Database a collection

Lebih terperinci

SQL (Structured Query Language)

SQL (Structured Query Language) DIK-034 Database Berbasis Web SQL (Structured Query Language) Dr. Taufik Fuadi Abidin, M.Tech www.informatika.unsyiah.ac.id/tfa Universitas Syiah Kuala Intro: SQL SQL = "Structured Query Language Memiliki

Lebih terperinci

MODUL 3. View PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE

MODUL 3. View PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE MODUL 3 View PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE Tujuan Pembelajaran : Memahami definisi View Dapat membuat View Dapat Memanggil data melalui View Merubah definisi

Lebih terperinci

DAFTAR ISI. DAFTAR ISI... 1 PRAKATA Pengenalan dan Lingkungan Kerja MySQL Tujuan... 4 Dasar Teori... 4 Praktik... 5

DAFTAR ISI. DAFTAR ISI... 1 PRAKATA Pengenalan dan Lingkungan Kerja MySQL Tujuan... 4 Dasar Teori... 4 Praktik... 5 DAFTAR ISI DAFTAR ISI... 1 PRAKATA... 3 1 Pengenalan dan Lingkungan Kerja MySQL Tujuan... 4 Dasar Teori... 4 Praktik... 5 Evaluasi dan Pertanyaan... 7 Kesimpulan... 8 2 Database dan Tabel Tujuan... 9 Dasar

Lebih terperinci

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI BAB LANDASAN TEORI.1 Defenisi Pangkalan Data Pangkalan data atau Database merupakan kumpulan dari item data yang saling berhubungan satu dengan yang lainnya yang diorganisasikan berdasarkan sebuah skema

Lebih terperinci

System Technology Database 1. Struktur Dasar SQL. Dahlia Widhyaestoeti, S.Kom dahlia74march.wordpress.

System Technology Database 1. Struktur Dasar SQL. Dahlia Widhyaestoeti, S.Kom dahlia74march.wordpress. System Technology Database 1 6 Dahlia Widhyaestoeti, S.Kom dahlia.widhyaestoeti@gmail.com dahlia74march.wordpress.com Orang yang gagal selalu mencari jalan untuk menghindari kesulitan, sementara orang

Lebih terperinci

PRAKTIKUM SISTEM INFORMASI MANAJEMEN

PRAKTIKUM SISTEM INFORMASI MANAJEMEN MODUL 2 DATABASE Tujuan Praktikum Adapun tujuan dari praktikum modul 2 ini adalah sebagai berikut: a. Mahasiswa diharapkan memahami tentang MySQL b. Mahasiswa dapat membuat database menggunakan MySQL c.

Lebih terperinci

SQL Server 2008 Mengaktifkan DBMS SQL Server 2008 SQL server 2008 SQL server management studio DDL Basis Data Mendefinisikan, mengubah dan menghapus basis data: Create Database NamaBasisData Alter

Lebih terperinci

SQL Lanjut. Modifikasi Database. Versi 2

SQL Lanjut. Modifikasi Database. Versi 2 SQL Lanjut Modifikasi Database 1 Tujuan mampu melakukan Modifikasi Database Mendefinisikan Skema Database mampu membuat Views 2 Pokok k Bahasan DML Modifikasi Database Mendefinisikan Skema Database Views

Lebih terperinci

Pertemuan III Oleh: Ilham Rais Arvianto, M.Pd

Pertemuan III Oleh: Ilham Rais Arvianto, M.Pd Bahasa Basis Data Pertemuan III Oleh: Ilham Rais Arvianto, M.Pd Bahasa Basis Data Data Definition Language (DDL) Pembuatan BD baru (create database) PenghapusanBD (drop database) Pembuatan tabel kedalam

Lebih terperinci

Database Systems: Lab. Actvity 1: Database Design. Merancang Database. Merancang Database. Tipe Tabel MySQL.

Database Systems: Lab. Actvity 1: Database Design. Merancang Database. Merancang Database. Tipe Tabel MySQL. 1 Database Systems: Tipe Tabel MySQL Tipe Filed/Kolom/Atribut My SQL Tipe Operator Aturan Dasar-dasar MySQL Tipe Perintah SQL Data Definition Languange Data Manipulation Languange Data Control Languange

Lebih terperinci

RANGKUMAN PHP dan MYSQL

RANGKUMAN PHP dan MYSQL RANGKUMAN PHP dan MYSQL Sekilas Tentang MySQL Pengenalan Database, DBMS dan RDBMS Basis data (atau database) adalah kumpulan informasi yang disimpan didalam komputer secara sistematik sehingga dapat diperiksa

Lebih terperinci

MODUL 1. Pembuatan tabel, pendefinisian constraint, export dan import PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE

MODUL 1. Pembuatan tabel, pendefinisian constraint, export dan import PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE MODUL 1 Pembuatan tabel, pendefinisian constraint, export dan import PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE BAGIAN 1 PEMBUATAN TABEL Tujuan Pembelajaran : Memahami

Lebih terperinci

IMPLEMENTASI TRIGGER, STORED PROCEDURE, FUNCTION DAN VIEW PADA MYSQL DALAM PERANCANGAN SYSTEM INVENTORY CAFFE BOULEVARD JAYAPURA

IMPLEMENTASI TRIGGER, STORED PROCEDURE, FUNCTION DAN VIEW PADA MYSQL DALAM PERANCANGAN SYSTEM INVENTORY CAFFE BOULEVARD JAYAPURA IMPLEMENTASI TRIGGER, STORED PROCEDURE, FUNCTION DAN VIEW PADA MYSQL DALAM PERANCANGAN SYSTEM INVENTORY CAFFE BOULEVARD JAYAPURA DOSEN MATAKULIAH SISTEM MANAJEMEN BASIS DATA Dr. KHAMAMI HERUSUSANTO DISUSUN

Lebih terperinci

Jobsheet SQL Dasar : Hari Zulianto, ST [Year]

Jobsheet SQL Dasar : Hari Zulianto, ST [Year] JOB SHEET Nama SMK : SMK IPTEK Weru Sukoharjo Kompetensi Keahlian : Rekayasa Perangkat Lunak Mata Pelajaran / SK : SQL Dasar Guru Mapel : Hari Zulianto, ST Semester/Tahun : 3 / 2017 Dasar-Dasar SQL 1.

Lebih terperinci

Dasar-dasar SQL Cosmas Haryawan Hal : 1/9 DASAR DASAR SQL (Structured Query Language) SQL adalah bahasa standar dalam basis data yang digunakan untuk melakukan manipulasi data. Standardisasi bahasa ini

Lebih terperinci

Basis Data Spasial Modul 2

Basis Data Spasial Modul 2 Basis Data Spasial Modul 2 Modul 2 Arsitektur DBMS Tabel Data Manipulation Language (DML) Data Definition Language (DDL) LATIHAN Data Base Management System (DBMS) Perangkat lunak (software) untuk mengelola

Lebih terperinci

@Tessy Badriyah, SKom. MT. PERTEMUAN 12 VIEW

@Tessy Badriyah, SKom. MT. PERTEMUAN 12 VIEW PERTEMUAN 12 VIEW Tujuan Pembelajaran : Memahami definisi View Dapat membuat View Dapat Memanggil data melalui View Merubah definisi View Insert, Update, dan Delete data melalui View Menghapus (drop) view

Lebih terperinci

MENGENAL SYNTAX DML PADA SQL

MENGENAL SYNTAX DML PADA SQL MENGENAL SYNTAX DML PADA SQL Dian Mustika Putri mustika@raharja.info :: https://dianmstkputri.wordpress.com Abstrak Kemajuan Teknologi Informasi saat ini perlahan mulai berkembang, khususnya adalah dalam

Lebih terperinci

BASISDATA. Basis Data Secara Umum

BASISDATA. Basis Data Secara Umum BASISDATA Basis Data Secara Umum Basis data merupakan kumpulan file/tabel/arsip yang saling berhubungan yang disimpan dalam media penyimpanan elektronis. Definisi ini merujuk pada perkembangan dunia hardware

Lebih terperinci

DATA DEFINITION LANGUAGE

DATA DEFINITION LANGUAGE DATA DEFINITION LANGUAGE PRAKTIKUM BERKAS DAN BASIS DATA 2010/2011 Memulai MySQL MySQL yang akan kita gunakan dalam praktikum ini telah tersedia dalam paket XAMPP (X- Apache- MySQL-PHP-Perl) di komputer

Lebih terperinci

BASIS DATA I/2011-GANJIL MODEL RELASIONAL. Oleh Team Teaching Database. 12 Oktober 2011 BASIS DATA I/2011-GANJIL 1

BASIS DATA I/2011-GANJIL MODEL RELASIONAL. Oleh Team Teaching Database. 12 Oktober 2011 BASIS DATA I/2011-GANJIL 1 BASIS DATA I/2011-GANJIL MODEL RELASIONAL Oleh Team Teaching Database 12 Oktober 2011 BASIS DATA I/2011-GANJIL 1 Konsep-Konsep Model Relasional Model relasional berdasarkan pada konsep relasi dalam matematika

Lebih terperinci

MODUL 4. Query SELECT dan DML (INSERT, UPDATE, DELETE) PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE

MODUL 4. Query SELECT dan DML (INSERT, UPDATE, DELETE) PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE MODUL 4 Query SELECT dan DML (INSERT, UPDATE, DELETE) PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE BAGIAN 1 QUERY SELECT Tujuan Pembelajaran : Mengetahui kemampuan dari

Lebih terperinci

PENGANTAR TEKNOLOGI SISTEM INFORMASI MANAGEMENT 2

PENGANTAR TEKNOLOGI SISTEM INFORMASI MANAGEMENT 2 PENGANTAR TEKNOLOGI SISTEM INFORMASI MANAGEMENT 2 PERTEMUAN 5 & 6 STRUCTURE QUERY LANGUAGE STRUCTURE QUERY LANGUAGE SQL adalah bahasa query baku untuk DBMS. SQL diambil sebagai bakuan sejak tahun 1992.

Lebih terperinci

DATABASE - MySQL. Muhammad Zen S. Hadi, ST. MSc.

DATABASE - MySQL. Muhammad Zen S. Hadi, ST. MSc. DATABASE - MySQL Muhammad Zen S. Hadi, ST. MSc. Objectives Tujuan: Memahami perintah-perintah dasar DDL dan DML Contents Database DBMS Relational model SQL MySQL MySQL yang support ke relational model

Lebih terperinci

Apa yang akan dibahas? Pengertian SQL Penggolongan Statement SQL Aturan Gramatika SQL Struktur Dasar SQL Query Satu (1) Tabel

Apa yang akan dibahas? Pengertian SQL Penggolongan Statement SQL Aturan Gramatika SQL Struktur Dasar SQL Query Satu (1) Tabel Sistem Basis Data 1 Apa yang akan dibahas? Pengertian SQL Penggolongan Statement SQL Aturan Gramatika SQL Struktur Dasar SQL Query Satu (1) Tabel 2 SQL SQL (Structured Query Language) Bahasa standar yang

Lebih terperinci

MODUL 2 PENGENALAN DATA DEFINITION LANGUAGE (DDL) & DATA MANIPULATION LANGUAGE (DML)

MODUL 2 PENGENALAN DATA DEFINITION LANGUAGE (DDL) & DATA MANIPULATION LANGUAGE (DML) MODUL 2 PENGENALAN DATA DEFINITION LANGUAGE (DDL) & DATA MANIPULATION LANGUAGE (DML) TUJUAN PRAKTIKUM 1. Praktikan dapat mengetahui pengertian SQL. 2. Praktikan dapat mengetahui klasifikasi SQL. 3. Praktikan

Lebih terperinci

Structured Query Language

Structured Query Language Structured Query Language DML (Data Manipulation Language) 31 Mei 2006 2006, M. Ramadhan 1 Pendahuluan Yang akan dibahas: Data Manipulation Language (DML) Pernyataan SQL untuk: Menemukan kembali data dalam

Lebih terperinci

SISTEM BASIS DATA. Oleh : Devie Rosa Anamisa

SISTEM BASIS DATA. Oleh : Devie Rosa Anamisa SISTEM BASIS DATA Oleh : Devie Rosa Anamisa Pengertian Sistem Basis Data Sistem Keterpaduan yang terdiri atas sejumlah komponen fungsional yang saling berhubungan dan secara bersama-sama bertujuan untuk

Lebih terperinci

SQL. Lecturer: Mahendra Data, S.Kom

SQL. Lecturer: Mahendra Data, S.Kom SQL Lecturer: Mahendra Data, S.Kom SQL SQL adalah singkatan dari Structured Query Language SQL adalah bahasa standar yang digunakan untuk mengakses serta memanipulasi database SQL termasuk dalam standar

Lebih terperinci

PERTEMUAN 9 MANIPULASI DATA

PERTEMUAN 9 MANIPULASI DATA PERTEMUAN 9 MANIPULASI DATA Tujuan Pembelajaran : Memahami Statement DML (Data Manipulation Language) Menyisipkan baris ke dalam table Merubah baris dalam table Menghapus baris dari table Mengontrol transaksi

Lebih terperinci

MySQL J A M K E T I G A

MySQL J A M K E T I G A J A M K E T I G A MySQL l Apa itu MySQL? l Membuat User Baru l Membuat Database l Tipe Data MySQL l Membuat Tabel l Structured Query Language l Latihan Jam Ketiga l Soal Jam Ketiga Jam Ketiga Apa itu MySQL?

Lebih terperinci

INTERNET PROGRAMMING DATABASE

INTERNET PROGRAMMING DATABASE INTERNET PROGRAMMING DATABASE Muhmmad Zen Samsono Hadi, ST. MSc. zenhadi@eepis-its.edu POLITEKNIK ELEKTRONIKA NEGERI SURABAYA Bahasan Sistem Database ER Diagram Database MySQL Internet Application Pendahuluan

Lebih terperinci

SQL. Pemrograman Web II. Ganjil

SQL. Pemrograman Web II. Ganjil SQL Pemrograman Web II Ganjil 2015-2016 Review Database Structured Query Language Apa itu database? Kumpulan data terstruktur yang saling berelasi. Definisi : Kumpulan data, yang terorganisir secara logika,

Lebih terperinci

BAB 5 MANIPULASI DATA

BAB 5 MANIPULASI DATA BAB 5 MANIPULASI DATA MATERI a. Menggunakan pernyataan INSERT dan REPLACE untuk menambahkan data ke tabel dalam database b. Menggunakan pernyataan UPDATE untuk memodifikasi data dalam tabel dalam database

Lebih terperinci

SQL Data Definition Language (DDL)

SQL Data Definition Language (DDL) Structured Query Language - DML (Pert. 12) Oleh : Umi Laili Yuhana, S.Kom, M.Sc. Sarwosri, S.Kom, M.T. Dr. Ir. Siti Rochimah 1 SQL Data Definition Language (DDL) Perintah DDL dalam SQL meliputi : CREATE

Lebih terperinci

S Q L STRUCTURED QUERY LANGUAGE DEFINITION MANIPULATION C O N T R O L D M L SELECT INSERT UPDATE DELETE

S Q L STRUCTURED QUERY LANGUAGE DEFINITION MANIPULATION C O N T R O L D M L SELECT INSERT UPDATE DELETE STRUCTURED QUERY LANGUAGE (SQL) merupakan komponen bahasa relational database system. SQL merupakan bahasa baku (ANSI/SQL), non procedural, dan berorientasi himpunan (set-oriented language). SQL dapat

Lebih terperinci

SISTEM BASIS DATA 1. WAHYU PRATAMA, S.Kom., MMSI.

SISTEM BASIS DATA 1. WAHYU PRATAMA, S.Kom., MMSI. SISTEM BASIS DATA 1 WAHYU PRATAMA, S.Kom., MMSI. PERTEMUAN 4 SBD 1 Model Data Relasional (Bagian 2) Relasional Keys. Relasional Integrity Rules. Bahasa pada Model Relasional. Relasional Keys Super Key

Lebih terperinci

Tutorial Tipe Data MySQL

Tutorial Tipe Data MySQL Tutorial Tipe Data MySQL Benar mendefinisikan field dalam tabel adalah penting untuk optimasi keseluruhan dari database Anda. Anda harus menggunakan hanya jenis dan ukuran lapangan Anda benar-benar perlu

Lebih terperinci

TABLE JOIN SQL SERVER 2005

TABLE JOIN SQL SERVER 2005 i TABLE JOIN SQL SERVER 2005 Disusun untuk : Membuat Laporan Table Join SQL SERVER 2005 Oleh : CHOIRUL FADHOLANII NIM : 0931140068 POLITEKNIK NEGERI MALANG Tahun 2011 DAFTAR ISI 1 DAFTAR GAMBAR 2 1 1.

Lebih terperinci

Eksekusi file setup.exe yang ada dalam CD atau folder instalasi oracle.

Eksekusi file setup.exe yang ada dalam CD atau folder instalasi oracle. 1 2 3 Eksekusi file setup.exe yang ada dalam CD atau folder instalasi oracle. 4 Isilah konfigurasi instalasi yang akan dibuat. Oracle Home Location : biasanya terisi otomatis dgn drive yang paling banyak

Lebih terperinci

SISTEM BASIS DATA II S A N T I W I D I A N T I

SISTEM BASIS DATA II S A N T I W I D I A N T I SISTEM BASIS DATA II S A N T I W I D I A N T I SISTEM Definisi sebuah tatanan yang terdiri atas sejumlah komponen fungsional (dengan tugas/fungsi khusus) yang saling berhubungan dan secara bersama-sama

Lebih terperinci

PERANCANGAN FISIK BASIS DATA. Rajif Agung Yunmar, S.Kom., M.Cs.

PERANCANGAN FISIK BASIS DATA. Rajif Agung Yunmar, S.Kom., M.Cs. PERANCANGAN FISIK BASIS DATA Rajif Agung Yunmar, S.Kom., M.Cs. PRETEST Sebutkan pentingnya normalisasi basis data? Jelaskan! Apa yang anda ketahui mengenai anomali. Apa yang anda ketahui mengenai ketergantungan?

Lebih terperinci

IMPLEMENTASI CONSTRAINT UNTUK MENJAMIN KONSISTENSI DAN INTEGRITAS DATA DALAM DATABASE

IMPLEMENTASI CONSTRAINT UNTUK MENJAMIN KONSISTENSI DAN INTEGRITAS DATA DALAM DATABASE IMPLEMENTASI CONSTRAINT UNTUK MENJAMIN KONSISTENSI DAN INTEGRITAS DATA DALAM DATABASE Oleh: M. RUDYANTO ARIEF 1 Abstract All of the popular RDBMS products provide table check constraints: Oracle, Informix,

Lebih terperinci