230 likes | 412 Views
SQL. Relasi dalam basisdata Perusahaan. Query 1. Dapatkan tanggal lahir dan alamat dari pegawai yang namanya ‘John B Smith’. Query 2. Dapatkan nama dan alamat dari semua pegawai yang bekerja pada departemen “Research”. Query 3.
E N D
Query 1 • Dapatkan tanggal lahir dan alamat dari pegawai yang namanya ‘John B Smith’
Query 2 • Dapatkan nama dan alamat dari semua pegawai yang bekerja pada departemen “Research”.
Query 3 • Untuk setiap proyek yang berlokasi di “Stafford”, dapatkan nomor proyek, nomor departemen pengontrol dan nama akhir manager departemen, alamat dan tgl lahir.
Query 4 • Dapatkan nama pegawai dan tanggal lahirnya beserta nama tanggungan dan tanggal lahirnya.
Query 5 • Dapatkan semua nomor dan nama proyek yang mengandung pegawai dengan nama akhir ”Smith” sebagai pekerja proyek atau sebagai menager dari departemen yang mengontrol proyek.
SQL juga bisa terdapat query bersarang (nested). • Dapatkan semua nomor dan nama proyek yang mengandung pegawai dengan nama akhir “Smith” sebagai pekerja proyek atau sebagai menager dari departemen yang mengontrol proyek.
Fungsi EXIST • Fungsi EXIST dalam SQL digunakan untuk memeriksa apakah hasil dari suatu query bersarang yang berkorelasi adalah kosong (tidak ada tuple yan memenuhi) atau terdapat beberapa tuple yang memenuhi. • Query 13 dapat ditulis lagi dengan fungsi EXISTS sebagai berikut • Dapatkan nama dari tiap karyawan yang mempunyai tanggungan yang namanya sama deengan nama depan dari karyawan yang bersangkutan SELECT FNAME, LNAME FROM EMPLOYEE E WHEREEXIST (SELECT * FROM DEPENDENT WHERE E.SSN=ESSN AND E.FNAME=DEPENDENT_NAME)
Fungsi EXIST • Query 15: Dapatkan nama dari karyawan yang tidak mempunyai tanggungan.SELECT FNAME, LNAMEFROM EMPLOYEEWHERE NOT EXISTS (SELECT *FROM DEPENDENTWHERE SSN=ESSN) • Dalam Query 15 query bersarang yang berkorelasi mendapatkan semua tuple dari relasi DEPENDENT yang berelasi dengan tiap tuple dari EMPLOYEE. Bila tidak ada yang exist maka tuple dipilih
Fungsi EXIST • Query 16 : Dapatkan nama manager yang mempunyai paling sedikit satu tanggungan SELECT FNAME, LNAME FROM EMPLOYEE WHEREEXISTS (SELECT * FROM DEPENDENT WHERE SSN=ESSN) AND EXISTS (SELECT * FROM DEPARTMENT WHERE SSN=MGRSSN)
HIMPUNAN EKSPLISIT • Dimungkinkan untuk menggunakan himpunan eksplisit dalam klausa WHERE dari pada memakai query bersarang • Query 17: Dapatkan SSN dari karyawan yang bekerja pada project nomer 1,2, atau 3. SELECT DISTINCT ESSNFROM WORKS_ONWHERE PNO IN (1, 2, 3)
NULL dalam SQL • SQL mengijinkan querie untuk menguji apakah nilainya NULL (hilang, tidak terdefinisi, atau tidak dapat diaplikasikan) • SQL menggunakan IS atau IS NOT untuk membandingkan NULL karena tiap nilai NULL berbeda dengan nilai NULL yang lain, sehingga perbandingan kesamaan tidak cocok digunakan. • Query 18: Dapatkan nama dari karyawan yang tidak mempunyai supervisor. SELECT FNAME, LNAMEFROM EMPLOYEEWHERE SUPERSSN IS NULL • Jika kondisi join ada, tuple dengan nilai NULL untuk atribut join tidak dimasukkan dalam hasil
Relasi Join • Relasi join dapat ditentukan dalam klausa FROM • Seperti relasi yang lain tetapi relasi ini adalah hasil join • Pengguna dapat membuat spesifikasi tipe dari join yang diinginkan (regular "theta" JOIN, NATURAL JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, CROSS JOIN, etc)
Relasi Join (Query 19) SELECT FNAME, LNAME, ADDRESSFROM EMPLOYEE, DEPARTMENTWHERE DNAME='Research' AND DNUMBER=DNO Dapat ditulis kembali menjadi : SELECT FNAME, LNAME, ADDRESSFROM (EMPLOYEE JOIN DEPARTMENT ON DNUMBER=DNO)WHERE DNAME='Research’ Atau menjadi:SELECT FNAME, LNAME, ADDRESSFROM (EMPLOYEE NATURAL JOIN DEPARTMENTAS DEPT(DNAME, DNO, MSSN, MSDATE)WHERE DNAME='Research’
Aggregate function • Aggregate function dalam SQL adalah sebagai berikut: • SUM : jumlah dari atribut • MAX : nilai terbesar dari atribut • MIN : nilai terkecil dari atribut • AVG : rata-rata nilai dari atribut • COUNT : banyaknya tuple yang memenuhi dari atribut
Contoh • Hitung jumlah gaji semua pegawai, gaji minimum, gaji maksimun dan rata-rata gajinya. • SELECT SUM (SALARY), MAX (SALARY), MIN (SALARY), AVG (SALARY) FROM EMPLOYEE
Contoh • Untuk setiap departemen, dapatkan nomor departemen, banyaknya pegawai dalam departemen dan rata-rata gaji mereka. SELECT DNO, COUNT (*), AVG (SALARY) FROM EMPLOYEE GROUP BY DNO
Pernyataan Update pada SQL • INSERT : untuk menyisipkan harga baru dalam suatu tabel. • DELETE : untuk menghapus tuple tertentu dalam suatu tabel. • UPDATE : untuk mengganti harga tertentu dalam suatu tabel.
Contoh INSERT INTO EMPLOYEE VALUES (‘Richard’,’K’,’Marini’,’653298653’,’30-DEC-52’,’98 Oak Forest, Katy, TX’,’M’,’37000,’987654321’,4)
View • Perintah VIEW pada SQL digunakan untuk menurunkan tabel lain. View merupakan virtual tabel artinya tidak disimpan secara fisik dalam disk. Ada 2 perintah view dalam SQL yaitu: • CREATE VIEW : membuat view • DROP VIEW : menghapus view
Contoh CREATE VIEW bekerja pada AS SELECT FNAME, LNAME, PNAME, HOURS FROM EMPLOYEE, PROJECT, WORK_ON WHERE SSN = ESSN AND PNO = PNUMBER