PERTEMUAN 10 SQL 2 Structure Query Language Betha
PERTEMUAN 10 SQL (2) (Structure Query Language) Betha Nurina Sari, M. Kom
QUERY SELECT Tanda * (asterik) • Dalam perintah select, tanda * digunakan untuk menampilkan data secara keseluruhan (semua field ditampilkan dan urutan field sesuai deskripsi tabel). • Contoh : SELECT * FROM MAHASISWA;
QUERY SELECT Kondisi • Menggunakan operator logika (=, <, >, <=, >=) • Range IN (…), BETWEEN …. AND…. • Boolean : AND, OR, NOT • IS NULL, IS NOT NULL • LIKE : kondisi pada karakter – Simbol % untuk mengabaikan semua string/karakter – simbol _ untuk mencocokkan karakter
SELECT …… LIKE • Menampilkan data Mahasiswa yang nama depannya diawali huruf M. SELECT * FROM MAHASISWA WHERE Nama LIKE ‘M%’ • Menampilkan data mahasiswa yang diketahui hanya nama singkat dalam nama lengkapnya. SELECT * FROM MAHASISWA WHERE Nama LIKE ‘%BUDI%’
SELECT …… LIKE • Jika menggunakan tipe kolom CHAR, VARCHAR, atau TEXT, maka LIKE bersifat CASE INSENSITIF, artinya huruf besar dan kecil dianggap sama. • Namun tipe data binary : BINARY, VARBINARY, atau BLOB, pencarian LIKE bersifat CASE SENSITIF. • Contoh : – LIKE S% : Kata yang diawali S – LIKE S_ : Kata dengan 2 huruf diawali S (Sa, Si, So, dst) – LIKE A___: Kata dengan 4 huruf diawali A – LIKE %n : Kata yang diakhiri huruf n – LIKE %dia% : Kata yang mengandung kata dia (dia, media, kemudian, dst)
OPERASI HIMPUNAN • Operasi SQL tersebut yaitu: UNION, INTERSECT dan EXCEPT, yang masing-masing memiliki hubungan erat dengan operasi aljabar relasional , dan . Contoh: • Terdapat 2 himpunan data, yaitu semua nasabah yang memiliki tabungan dan pinjaman. • SELECT nama_nasabah FROM penabung • SELECT nama_nasabah FROM peminjam
UNION (Gabungan) • Untuk menemukan semua nasabah yang memiliki pinjaman, rekening atau keduanya pada suatu bank tertentu, querynya sebagai berikut: (SELECT nama_nasabah FROM penabung) UNION (SELECT nama_nasabah FROM peminjam) • Operasi. UNION tidak seperti pada klausa SELECT, secara otomatis mengeliminasi duplikat record.
UNION (GABUNGAN) • Jika ingin mempertahankan adanya duplikasi, maka dapat digunakan operasi UNION ALL sebagai pengganti UNION. (SELECT nama_nasabah FROM penabung) UNION ALL (SELECT nama_nasabah FROM peminjam)
IRISAN • Untuk menemukan semua nasabah yang memiliki baik rekening maupun pinjaman pada bank, maka dapat digunakan query berikut: (SELECT [Distinct] nama_nasabah FROM penabung) INTERSECT (SELECT [Distinct] nama_nasabah FROM peminjam) • Seperti pada operasi UNION, operasi INTERSECT juga mengeliminasi adanya duplikat data.
INTERSECT (IRISAN) • Jika ingin ditampilkan semua data yang memenuhi, sehingga mempertahankan adanya duplikat data pada record-recordnya, maka dapat digunakan operasi INTERSECT ALL. (SELECT [Distinct] nama_nasabah FROM penabung) INTERSECT ALL (SELECT [Distinct] nama_nasabah FROM peminjam)
EXCEPT (PERKECUALIAN) • Untuk menemukan semua nasabah yang memiliki rekening tapi tidak memiliki pinjaman pada suatu bank, maka bentuk query: (SELECT [Distinct] nama_nasabah FROM penabung) EXCEPT (SELECT [Distinct] nama_nasabah FROM peminjam) • Seperti pada operasi UNION dan INTERSECT sebelumnya, operasi EXCEPT juga mengeliminasi adanya duplikat data.
EXCEPT (PERKECUALIAN) • Jika ingin mempertahankan adanya duplikasi data, maka dapat digunakan operasi EXCEPT ALL. (SELECT [Distinct] nama_nasabah FROM penabung) EXCEPT ALL (SELECT [Distinct] nama_nasabah FROM peminjam)
FUNGSI AGREGASI & GROUP BY Sintaks : AVG, SUM, MIN, MAX, COUNT SELECT [column, ] agregation_function(column), . . . FROM table [WHERE condition] [GROUP BY column] [ORDER BY column];
Fungsi Agregasi Contoh : Menampilkan rata-rata, maksimal, minimal dan jumlah gaji semua karyawan SELECT AVG(salary), MAX(salary), MIN(salary), SUM(salary) FROM employees
FUNGSI AGREGASI • Contoh : Menampilkan jumlah karyawan di departemen Computer Science. SELECT COUNT(*) FROM employees WHERE department_name = “Computer Science”;
FUNGSI AGREGASI & GROUP BY • Contoh menampilkan departement_id dan rata gaji di setiap departemen SELECT department_id, AVG(salary) FROM employees GROUP BY department_id ;
HAVING • Fungsi GROUP BY dapat dibuat pembatasan dengan fungsi HAVING • Dengan klausa HAVING dapat membatasi group data: 1. Rows (baris-baris) akan di group. 2. Fungsi group dapat diaplikasikan. 3. Menampikan isi Group yang sesuai dengan klausa HAVING.
HAVING • Contoh : Tampilkan gaji terbesar dari tiap departemen dimana gaji terbesarnya lebih dari 10 juta. SELECT department_id, MAX(salary) FROM employees GROUP BY department_id HAVING MAX(salary)>10. 000 ;
CARTESIAN • Kartesian, untuk mendapatkan seluruh kombinasi data dari beberapa tabel • Contoh : SELECT * FROM MAHASISWA, MATKUL; SELECT * FROM MAHASISWA M, JADWAL J WHERE M. NPM = J. NPM;
CROSS JOIN Student ID Name 123 124 125 126 John Mary Mark Jane SELECT * FROM STUDENT CROSS JOIN ENROLMENT Enrolment ID Code 123 124 126 DBS PRG SELECT * FROM A CROSS JOIN B Sama dengan SELECT * FROM A, B ID Name ID Code 123 124 125 126 123 124 John Mary Mark Jane John Mary 123 123 124 124 124 DBS DBS PRG PRG DBS
NATURAL JOIN Student ID Name 123 124 125 126 John Mary Mark Jane Enrolment ID Code 123 124 126 DBS PRG SELECT * FROM STUDENT NATURAL JOIN ENROLMENT ID Name Code 123 124 126 John Mary Jane DBS PRG
INNER JOIN Student ID Name 123 124 125 126 John Mary Mark Jane SELECT * FROM STUDENT INNER JOIN ENROLMENT USING (ID) Enrolment ID Code 123 124 126 DBS PRG ID Name ID Code 123 124 126 John Mary Jane 123 124 126 DBS PRG SELECT * FROM A INNER JOIN B ON <condition> sama dengan SELECT * FROM A, B WHERE <condition>
INNER JOIN SELECT * FROM Buyer INNER JOIN Property ON Price <= Budget Buyer Name Budget Smith Jones Green 100, 000 150, 000 80, 000 Property Address Price 15 High St 12 Queen St 87 Oak Row 85, 000 125, 000 175, 000 Name Budget Address Smith Jones 100, 000 15 High St 150, 000 12 Queen St Price 85, 000 125, 000
TUGAS • Tugas kelompok (anggota maksimal 5 orang) • Tuliskan nama kelompok (nama karakter/ tema bebas per kelas) beserta identitas anggota (npm, nama dan kelas). Kelalaian penulisan bagian ini penalti 5 poin. – Misalnya nama kelompok berdasarkan kota, pulau, tokoh • Tugas dikumpulkan dengan softcopy (pdf), kirim ke betha. nurina@staff. unsika. ac. id • Waktu mengerjakan 1 minggu, paling lambat pekan depan dikumpulkan.
NEXT ERD
- Slides: 25