SQL (Structure Query Language) SQL
merupakan transform-oriented language dengan 2 komponen utama: DDL & DML Mendefinisikan bahasa yang disebut Structured English Query Language (SEQUEL) Standar ISO untuk SQL, membuat bahasa formal & de facto untuk relasional database.
SQL
1
2
Sejarah SQL
Penulisan Perintah SQL
IBM
Statement
System R ANSI SQL89 ANSI SQL92 (SQL2) SQL3 – untuk manajemen data berorientasi objek.
SQL terdiri dari reserved word & user-defined word. Bersifat case insensitive, kecuali untuk data literal karakter. Mudah dibaca dengan pengaturan spasi dan baris. Menggunakan bentuk notasi BNF. 3
4
Literal
Membuat TABEL
Literal merupakan konstanta yang digunakan dalam statemen SQL. Semua literal non-numerik dituliskan diantara kutip tunggal (co : ‘London’). Semua literal numerik literals tidak dituliskan diantara kutip (co : 650.00).
Bentuk
Umum : CREATE TABLE nama tabel (…, kolom_nama type data, …); Contoh : CREATE TABLE STAFF (staffNo VARCHAR(5), lName ARCHAR(15), salary DECIMAL(7,2));
5
6
STATEMENT SELECT
Menghapus TABEL
Syntax
: SELECT [DISTINCT | ALL] {* | [columnExpression [AS newName]] [,...] } FROM TableName [alias] [, ...] [WHERE condition] [GROUP BY columnList] [HAVING condition] [ORDER BY columnList]
Bentuk
Umum : DROP TABLE nama_tabel; Contoh : DROP TABLE Staff;
7
8
STATEMENT SELECT cont.
SELECT……FROM……;
FROM - Menspesifikasikan tabel yang digunakan. WHERE - Baris filter (kondisi yang harus dipenuhi). GROUP BY - Bentuk pengelompokkan baris dengan nilai kolom yang sama. HAVING - Menyeleksi subjek grup untuk beberapa kondisi. SELECT - Menspesifikasikan kolom mana yang akan ditampilkan. ORDER BY - Menspesifikasikan order pada output.
Tampilkan SELECT
seluruh detail staff :
* FROM Staff;
atau SELECT staffNo, fName, lName, address, position, sex, DOB, salary, branchNo FROM Staff;
9
Hasil :
10
Menggunakan Distinct Tampikan nomor properti dari seluruh properti yang pernah dilihat. SELECT DISTINCT propertyNo FROM Viewing;
11
12
Perbandingan Gabungan Kondisi Pencarian
SELECT…FROM…WHERE…; Tampilkan seluruh staff yang mempunyai gaji lebih dari 10,000. SELECT staffNo, fName, lName, position, salary FROM Staff WHERE salary > 10000;
Tampilkan alamat seluruh kantor cabang yang berada di London atau Glasgow. SELECT * FROM Branch WHERE city = ‘London’ OR city = ‘Glasgow’;
13
Ordering Kolom Tunggal
14
SELECT Statement - Aggregate COUNT - Mengembalikan angka dari nilai yang terdapat dalam kolom. SUM - Mengembalikan jumlah dari nilai yang terdapat dalam kolom AVG - Mengembalikan rata-rata dari nilai yang ada dalam kolom MIN - Mengembalikan nilai terkecil dari nilai yang terdapat dalam kolom MAX - Mengembalikan nilai terbesar dari nilai yang terdapat dalam kolom
Tampilkan daftar gaji seluruh staf, disusun secara descending berdasarkan salary. SELECT staffNo, fName, lName, salary FROM Staff ORDER BY salary DESC;
15
16
Kegunaan COUNT dan SUM
Kegunaan MIN, MAX, AVG
Tampilkan jumlah manager dan jumlah gaji mereka. SELECT COUNT(staffNo) AS count, SUM(salary) AS sum FROM Staff WHERE position = ‘Manager’;
Carilah minimum, maximum, dan average gaji staff. SELECT MIN(salary) AS min, MAX(salary) AS max, AVG(salary) AS avg FROM Staff;
17
SELECT Statement - Grouping
18
Penggunaan INSERT
Tampilkan nomor staff pada setiap cabang dan total gaji masingmasing. SELECT branchNo, COUNT(staffNo) AS count, SUM(salary) AS sum FROM Staff GROUP BY branchNo ORDER BY branchNo;
Syntax
: INSERT INTO TableName [ (columnList) ] VALUES (dataValueList); Contoh : Masukkan baris baru ke dalam tabel Staff untuk seluruh kolom INSERT INTO Staff VALUES (‘SG16’, ‘Alan’, ‘Brown’, ‘Assistant’, ‘M’, Date‘195705-25’, 8300, ‘B003’); 19
20
INSERT dengan Default
Penggunaan UPDATE
Contoh
: Masukkan baris baru ke dalam tabel staff untuk kolom-kolom tertentu. 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’);
Syntax
: UPDATE TableName SET columnName1 = dataValue1 [, columnName2 = dataValue2...] [WHERE searchCondition] Contoh : Berikan pada seluruh staff kenaikan sebesar 3% UPDATE Staff SET salary = salary*1.03;
21
22
Penggunaan UPDATE cont.
Penggunaan DELETE
Berikan
Syntax
seluruh manager kenaikan sebesar 5% UPDATE Staff SET salary = salary*1.05 WHERE position = ‘Manager’; Naikan jabatan David Ford (staffNo=‘SG14’) menjadi Manager dan ubah gajinya menjadi £18,000. UPDATE Staff SET position = ‘Manager’, salary = 18000 WHERE staffNo = ‘SG14’;
: DELETE FROM TableName [WHERE searchCondition]; Contoh DELETE baris tertentu : Hapus seluruh viewings yang terkait dengan properti PG4 DELETE FROM Viewing WHERE propertyNo = ‘PG4’;
23
24
Pengelompokkan terbatas – HAVING clause
Penggunaan DELETE cont. Hapus
seluruh record dari tabel Viewing DELETE FROM Viewing;
25
Untuk setiap cabang dengan staff lebih dari 1, tampilkan nomor staff pada setiap cabang tersebut dan jumlah gaji mereka. SELECT branchNo, COUNT(staffNo) AS count, SUM(salary) AS sum FROM Staff GROUP BY branchNo HAVING COUNT(staffNo) > 1 ORDER BY branchNo; 26