Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

SQL Data Manipulation IK203 Sistem Basis Data Pertemuan #12

Presentasi serupa


Presentasi berjudul: "SQL Data Manipulation IK203 Sistem Basis Data Pertemuan #12"— Transcript presentasi:

1 SQL Data Manipulation IK203 Sistem Basis Data Pertemuan #12
Suryo Widiantoro, ST, MMSI, M.Com(IS)

2 Capaian Pembelajaran Mahasiswa/i mampu menggunakan perintah-perintah & fungsi-fungsi SQL untuk mengelola, memanipulasi & mendefinisi basis data untuk memperoleh informasi penting spesifik yang diinginkan.

3 Pernyataan Data Manipulation Language (DML) meliputi:
SELECT – untuk query data dalam basis data; INSERT – untuk menyisipkan data ke dalam tabel; UPDATE – untuk memperbarui data dalam tabel; DELETE – untuk menghapus data dari tabel.

4 Relational schema untuk contoh SQL DML:
Branch (branchNo, street, city, postcode) Staff (staffNo, fName, lName, position, sex, DOB, salary, branchNo) PropertyForRent (propertyNo, street, city, postcode, type, rooms, rent, ownerNo, staffNo, branchNo) Client (clientNo, fName, lName, telNo, prefType, maxRent) PrivateOwner (ownerNo, fName, lName, address, telNo) Viewing (clientNo, propertyNo, viewDate, comment)

5 Query sederhana

6 Perintah SELECT digunakan untuk menarik dan menampilkan data dari satu atau lebih tabel database. SELECT nama kolom FROM nama tabel WHERE kondisi; Merupakan perintah utama yang dapat melakukan operasi aljabar relational Selection, Projection, dan Join dalam satu pernyataan tunggal.

7 1# mengambil semua baris dan kolom
SELECT semua nama kolom FROM nama tabel; Contoh: Buatlah daftar lengkap detil semua staff. SELECT staffNo, fName, lName, position, sex, DOB, salary, branchNo FROM Staff; atau SELECT *

8 2# mengambil semua baris dan kolom tertentu
SELECT nama kolom yang dipilih FROM nama tabel; Contoh: Buatlah daftar salary untuk semua staff, dengan menampilkan hanya staff number, first dan last name, serta detil salary. SELECT staffNo, fName, lName, salary FROM Staff;

9 3# menghilangkan duplikasi data pada kolom
SELECT DISTINCT nama kolom FROM nama tabel; Contoh: Buatlah daftar property numbers dari semua property yang sudah pernah di-view. SELECT DISTINCT propertyNo FROM Viewing;

10 4# kolom hasil komputasi atau perhitungan
SELECT rumus pada kolom tertentu AS nama kolom hasil komputasi FROM nama tabel; Contoh: Buatlah daftar salary bulanan untuk semua staff, dengan menampilkan staff number, first dan last name, serta detil salary. SELECT staffNo, fName, lName, salary/12 AS monthlySalary FROM Staff; atau SELECT staffNo, fName, lName, salary/12

11 5# membandingkan hasil query
SELECT nama kolom FROM nama tabel WHERE kondisi; Contoh: Buatlah daftar staff yang memiliki salary lebih besar dari £10,000. SELECT staffNo, fName, lName, position, salary FROM Staff WHERE salary > 10000;

12 Dalam SQL, berlaku operator pembanding berikut ini:
Simbol Arti = Sama dengan <> Tidak sama dengan (standar ISO) != Tidak sama dengan (untuk kasus tertentu) < Lebih kecil dari <= Lebih kecil sama dengan > Lebih besar dari >= Lebih besar sama dengan

13 Predikat kompleks dapat dihasilkan dengan menggunakan operator logika AND, OR, dan NOT, menggunakan tanda kurung (bila perlu) untuk menunjukkan urutan evaluasi. Aturan evaluasi untuk ekspresi conditional: Ekspresi dievaluasi dari kiri ke kanan; Sub-ekspresi dalam tanda kurung dievaluasi lebih dulu; NOT dievaluasi sebelum AND dan OR; AND dievaluasi sebelum OR.

14 6# (kombinasi) membandingkan hasil query
SELECT nama kolom FROM nama tabel WHERE kondisi OPERATOR kondisi; Contoh: Buatlah daftar address semua kantor branch yang ada di kota London atau Glasgow. SELECT * FROM Branch WHERE city=‘London’ OR city=‘Glasgow’;

15 7# jangkauan kondisi hasil query (BETWEEN/NOT BETWEEN)
SELECT nama kolom FROM nama tabel WHERE nama kolom BETWEEN kondisi OPERATOR kondisi; Contoh: Buatlah daftar semua staff yang memiliki salary antara £20,000 dan £30,000 SELECT staffNo, fName, lName, position, salary FROM Staff WHERE salary BETWEEN AND 30000; atau WHERE salary >= AND salary <= 30000;

16 8# mengatur keanggotaan kondisi query (IN/NOT IN)
SELECT nama kolom FROM nama tabel WHERE nama kolom IN (‘kondisi’, ‘kondisi’); Kondisi yang ada pada (IN) menjadi faktor penentu apakah nilai data yang diquery cocok/sesuai dengan nilai kondisi yang diinginkan Contoh: Buatlah daftar semua manager dan supervisor. SELECT staffNo, fName, lName, position FROM Staff WHERE position IN (‘Manager’, ‘Supervisor’); atau WHERE position=‘Manager’ OR position=‘Supervisor’;

17 9# mencocokkan pola kondisi query (LIKE/NOT LIKE)
SELECT nama kolom FROM nama tabel WHERE nama kolom LIKE ‘kondisi’; Contoh: Temukan semua owner yang memiliki unsur kata ‘Glasgow’ dalam address mereka. SELECT ownerNo, fName, lName, address, telNo FROM PrivateOwner WHERE address LIKE ‘%Glasgow%’;

18 SQL memiliki dua simbol khusus untuk mencocokkan pola:
% (karakter persen) mewakili nol atau lebih banyak urutan karakter (wildcard). _ (karakter underscore) mewakili karakter tunggal. Contoh: Address LIKE ‘H%’ artinya karakter pertama harus H, selanjutnya bisa apa saja. Address LIKE ‘H_ _ _’ artinya harus ada empat karakter yang diawali dengan H. Address LIKE ‘%e’ artinya apa saja yang diakhiri dengan e. Address LIKE ‘%Glasgow%’ artinya semua yang mengandung Glasgow. Address NOT LIKE ‘H%’ artinya karakter pertama tidak boleh H.

19 10# kondisi query NULL (IS NULL/IS NOT NULL)
SELECT nama kolom FROM nama tabel WHERE kondisi OPERATOR nama kolom IS NULL; Contoh: Buatlah daftar pengunjung yang telah melakukan view pada property PG4 dan tidak memberikan comment. SELECT clientNo, viewDate FROM Viewing WHERE propertyNo=‘PG4’ AND comment IS NULL;

20 11# pengurutan kolom tunggal
SELECT nama kolom FROM nama tabel ORDER BY nama kolom DESC; ASC adalah default dan tidak perlu ditulis Contoh: Buatlah daftar salary untuk semua staff, diurutkan secara descending berdasarkan salary. SELECT staffNo, fName, lName, salary FROM Staff ORDER BY salary DESC;

21 12# pengurutan multi-kolom
SELECT nama kolom FROM nama tabel ORDER BY nama kolom, nama kolom DESC; Contoh: Buatlah daftar untuk property diurutkan berdasar property type, dan kemudia berdasarkan rent dalam urutan descending. SELECT propertyNo, type, rooms, rent FROM PropertyForRent ORDER BY type, rent DESC;

22 Fungsi agregasi

23 Selain emngambil baris dan kolom dari database, kita juga dapat melakukan penghitungan atau agregasi data, misal total, jumlah, dll. Standar ISO menentukan lima fungsi agregasi: COUNT – menghitung jumlah isi pada kolom tertentu; SUM – menghitung total nilai pada kolom tertentu; AVG – menghitung rata-rata nilai pada kolom tertentu; MIN – mencari nilai terkecil pada kolom tertentu; MAX – mencari nilai terbesar pada kolom tertentu.

24 13# COUNT SELECT COUNT(*) AS nama kolom baru FROM nama tabel WHERE kondisi; Contoh: Berapa banyak property yang harga sewanya lebih dari £350 per bulan? SELECT COUNT(*) AS myCount FROM PropertyForRent WHERE rent > 350;

25 14# COUNT (DISTINCT) SELECT COUNT(DISTINCT nama kolom) AS nama kolom baru FROM nama tabel WHERE kondisi; Contoh: Berapa banyak property yang telah di-view pada bulan May 2004? SELECT COUNT(DISTINCT propertyNo) AS myCount FROM Viewing WHERE viewDate BETWEEN ‘1-May-04’ AND ‘31-May-04’;

26 15# COUNT dan SUM SELECT COUNT(nama kolom 1) AS nama kolom baru 1, SUM(nama kolom 2) AS nama kolom baru 2 FROM nama tabel WHERE kondisi; Contoh: Hitunglah berapa jumlah Manager dan total salary mereka. SELECT COUNT(staffNo) AS myCount, SUM(salary) AS mySum FROM Staff WHERE position=‘Manager’;

27 16# MIN, MAX, AVG SELECT MIN(nama kolom) AS nama kolom min, MAX(nama kolom) AS nama kolom maks, AVG(nama kolom) AS ama kolom rata2 FROM nama tabel; Contoh: Tentukan minimum, maksimum, dan rata-rata salary seluruh staff. SELECT MIN(salary) AS myMin, MAX(salary) AS myMax, AVG(salary) AS myAvg FROM Staff;

28 Pengelompokan hasil

29 17# GROUP BY Mengelompokkan data dari tabel hasil query SELECT dan membuat baris ringkasan tunggal untuk setiap kelompok/group data Contoh: Tentukan berapa jumlah staff yang bekerja di setiap branch dan total salary mereka. SELECT branchNo, COUNT (staffNo) AS myCount, SUM (salary) AS mySum FROM Staff GROUP BY branchNo ORDER BY branchNo;

30 18# HAVING Menyaring/memfilter kelompok/group data sebelum menjadi tabel hasil akhir. Contoh: Untuk setiap kantor branch yang memiliki staff lebih dari satu orang, tentukan jumlah staff yang bekerja di setiap branch dan total salary mereka. SELECT branchNo, COUNT (staffNo) AS myCount, SUM (salary) AS mySum FROM Staff GROUP BY branchNo HAVING COUNT (staffNo) >1 ORDER BY branchNo;

31 Sub-query

32 Ada 3 jenis subquery: Scalar subquery menghasilkan baris dan kolom tunggal (nilai tunggal). Row subquery menghasilkan multi kolom, tetapi hanya satu baris tunggal. Table subquery menghasilkan satu atau lebih kolom dan multi baris.

33 19# subquery dengan equality
Contoh: Buatlah daftar staff yang bekerja di branch yang beralamat di jalan ‘163 Main St’. SELECT staffNo, fName, lName, position FROM Staff WHERE branchNo = (SELECT branchNo FROM Branch WHERE street=‘163 Main St’); yang nantinya akan menghasilkan WHERE branchNo=‘B003’;

34 20# subquery dengan fungsi agregasi
Contoh: Buatlah daftar semua staff yang salary lebih besar dari salary rata-rata, dan tunjukkan selisih salary mereka dari rata-rata. SELECT staffNo, fName, lName, position, salary – (SELECT AVG(salary) FROM Staff) AS salDiff FROM Staff WHERE salary > (SELECT AVG(salary) FROM Staff); yang nantinya akan menghasilkan SELECT staffNo, fName, lName, position, salary – AS salDiff WHERE salary > 17000;

35 21# subquery bersarang: IN
Contoh: Buatlah daftar property yang ditangani oleh staff yang bekerja di branch yang beralamat di jalan ‘163 Main St’. SELECT propertyNo, street, city, postcode, type, rooms, rent FROM PropertyForRent WHERE staffNo IN (SELECT staffNo FROM Staff WHERE branchNo = (SELECT branchNo FROM Branch WHERE street=‘163 Main St’));

36 22# ANY/SOME Contoh: Temukan semua staff yang salary lebih besar dari salary setidaknya satu orang staff pada branch nomor B003. SELECT staffNo, fName, lName, position, salary FROM Staff WHERE salary > SOME (SELECT salary WHERE branchNo = ‘B003’);

37 23# ALL Contoh: Temukan semua staff yang salary lebih besar daripada salary setiap staff yang ada pada branch nomor B003. SELECT staffNo, fName, lName, position, salary FROM Staff WHERE salary > ALL (SELECT salary WHERE branchNo=‘B003’);

38 Query multi-tabel

39 24# simple join Contoh: Buatlah daftar name semua client yang telah me-view sebuah property dan meninggalkan comment. SELECT c.clientNo, fName, lName, propertyNo, comment FROM Client c, Viewing v WHERE c.clientNo = v.clientNo;

40 25# mengurutkan join Contoh: Untuk setiap kantor branch, buatlah daftar nomor dan name staff yang mengelola property dan daftar property yang mereka kelola. SELECT s.branchNo, s.staffNo, fName, lName, propertyNo FROM Staff s, PropertyForRent p WHERE s.staffNo = p.staffNo ORDER BY s.branchNo, s.staffNo, propertyNo;

41 26# join 3 tabel Contoh: Untuk setiap branch, buatlah daftar nomor dan name staff yang mengelola property, termasuk city dimana branch berlokasi dan property yang dikelola oleh staff tersebut. SELECT b.branchNo, b.city, s.staffNo, fName, lName, propertyNo FROM Branch b, Staff s, PropertyForRent p WHERE b.branchNo = s.branchNo AND s.staffNo = p.staffNo ORDER BY b.branchNo, s.staffNo, propertyNo;

42 27# kolom multi grouping Contoh: Temukan nomor property yang ditangani oleh setiap staff. SELECT s.branchNo, s.staffNo, COUNT(*) AS myCount FROM Staff s, PropertyForRent p WHERE s.staffNo = p.staffNo GROUP BY s.branchNo, s.staffNo ORDER BY s.branchNo, s.staffNo;

43 31# EXISTS dan NOT EXISTS Contoh: Temukan semua staff yang bekerja di kantor branch di kota London. SELECT staffNo, fName, lName, position FROM Staff s WHERE EXISTS (SELECT * FROM Branch b WHERE s.branchNo = b.branchNo AND city = ‘London’);

44 Menggabungkan tabel hasil query

45 Dalam SQL, kita dapat menggunakan operasi Union, Intersection, dan Difference untuk menggabungkan hasil dari dua atau lebih query ke dalam satu tabel hasil tunggal: Union dari 2 tabel A dan B, adalah sebuah tabel berisi semua baris yang ada pada tabel A atau tabel B atau keduanya. Intersection dari 2 tabel A dan B, adalah sebuah tabel berisi semua baris yang ada pada tabel A dan B. Difference dari 2 tabel A and B, adalah sebuah tabel berisi semua baris yang ada pada tabel A tetapi tidak ada pada tabel B.

46 32# UNION Menggabungkan tabel hasil query pertama dan tabel hasil query kedua menjadi satu tabel tunggal dimana tidak ada duplikasi baris. Contoh: Buatlah daftar semua city yang memiliki branch office atau property. (SELECT city FROM Branch WHERE city IS NOT NULL) UNION FROM PropertyForRent WHERE city IS NOT NULL);

47 33# INTERSECT Membuat tabel hasil tunggal berisi baris yang ada tabel hasil query pertama dan juga ada di tabel hasil query kedua. Contoh: Buatlah daftar semua city yang memiliki branch office dan property. (SELECT city FROM Branch) INTERSECT FROM PropertyForRent);

48 34# EXCEPT Membuat tabel hasil tunggal berisi baris yang ada tabel hasil query pertama tetapi tidak ada di tabel hasil query kedua. Contoh: Buatlah daftar semua city yang memiliki branch office tetapi tidak memiliki property. (SELECT city FROM Branch) EXCEPT FROM PropertyForRent);

49 Update database

50 Pernyataan SQL yang digunakan untuk memodifikasi isi tabel dalam database:
INSERT – menambah baris data baru ke dalam tabel; UPDATE – mengubah data yang ada dalam tabel; DELETE – membuang baris data dari tabel.

51 Menyisipkan/menambahkan data ke dalam database (INSERT) INSERT INTO nama tabel (daftar kolom) VALUES (daftar nilai/isi data)

52 35# INSERT...VALUES Contoh: Sisipkan sebuah baris baru ke tabel Staff dengan data untuk semua kolom. INSERT INTO Staff VALUES (‘SG16’, ‘Alan’, ‘Brown’, ‘Assistant’, ‘M’, DATE‘ ’, 8300, ‘B003’);

53 36# INSERT dengan default
Contoh: Sisipkan sebuah baris baru ke dalam tabel Staff dengan data untuk kolom: staffNo, fName, lName, position, salary, dan branchNo. INSERT INTO Staff (staffNo, fName, lName, position, salary, branchNo) VALUES (‘SG44’, ‘Anne’, ‘Jones’, ‘Assistant’, 8100, ‘B003’); atau INSERT INTO Staff VALUES (‘SG44’, ‘Anne’, ‘Jones’, ‘Assistant’, NULL, NULL, 8100, ‘B003’);

54 Mengubah data dalam database (UPDATE) UPDATE nama tabel SET nama kolom 1 = isi data 1 …dst WHERE kondisi

55 38# UPDATE semua baris Contoh: Berikan semua staff kenaikan salary 3%. UPDATE Staff SET salary = salary*1.03;

56 39# UPDATE baris tertentu
Contoh: Berikan kepada semua Managers kenaikan salary 5%. UPDATE Staff SET salary = salary*1.05 WHERE position = ‘Manager’;

57 40# UPDATE multi-kolom Contoh: Promosikan David Ford (staffNo=‘SG14’) untuk menjadi Manager dan naikkan salary menjadi £18,000. UPDATE Staff SET position = ‘Manager’, salary = WHERE staffNo=‘SG14’;

58 Menghapus data dari database (DELETE) DELETE FROM nama tabel WHERE kondisi

59 41# DELETE baris tertentu
Contoh: Hapus semua data viewing yang berkaitan dengan property nomor PG4. DELETE FROM Viewing WHERE propertyNo = ‘PG4’;

60 42# DELETE semua baris Contoh: Hapuslah semua baris dari tabel Viewing. DELETE FROM Viewing;

61 penutup


Download ppt "SQL Data Manipulation IK203 Sistem Basis Data Pertemuan #12"

Presentasi serupa


Iklan oleh Google