Tuesday, January 5, 2010

Dasar - dasar SQL


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.

Sejarah SQL
1.IBM System R
2.ANSI SQL89
3.ANSI SQL92 (SQL2)
4.SQL3 – untuk manajemen data berorientasi objek.

Penulisan Perintah SQL
*Statement 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.

Literal
*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).

Membuat TABEL
Bentuk Umum :
CREATE TABLE nama tabel (…, kolom_nama type data, …);
Contoh :
CREATE TABLE STAFF (staffNo
VARCHAR(5), lName ARCHAR(15), salary
DECIMAL(7,2));

Menghapus TABEL
Bentuk Umum :
DROP TABLE nama_tabel;
Contoh :
DROP TABLE Staff;

STATEMENT SELECT
Syntax :
SELECT [DISTINCT | ALL]
{* | [columnExpression [AS newName]]
[,...] }
FROM TableName [alias] [, ...]
[WHERE condition]
[GROUP BY columnList]
[HAVING condition]
[ORDER BY columnList]

STATEMENT SELECT cont.
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 seluruh detail staff :
SELECT * FROM Staff;
atau
SELECT staffNo, fName, lName, address, position, sex, DOB, salary, branchNo FROM Staff;

Menggunakan Distinct
Tampikan nomor properti dari seluruh properti yang pernah dilihat.

SELECT DISTINCT propertyNo FROM Viewing;

SELECT…FROM…WHERE…;
Tampilkan seluruh staff yang mempunyai gaji lebih dari 10,000.

SELECT staffNo, fName, lName, position, salary FROM Staff WHERE
salary > 10000;

Perbandingan Gabungan Kondisi
Tampilkan alamat seluruh kantor cabang yang berada di London atau
Glasgow.

SELECT * FROM Branch WHERE city = ‘London’ OR city = ‘Glasgow’;

Ordering Kolom Tunggal
Tampilkan daftar gaji seluruh staf, disusun secara descending berdasarkan salary.

SELECT staffNo, fName, lName, salary FROM Staff ORDER BY salary DESC;

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

Kegunaan COUNT dan SUM
Tampilkan jumlah manager dan jumlah gaji mereka.

SELECT COUNT(staffNo) AS count, SUM(salary) AS sum FROM Staff WHERE position = ‘Manager’;

Kegunaan MIN, MAX, AVG
Carilah minimum, maximum, dan average gaji staff.

SELECT MIN(salary)
AS min, MAX(salary)
AS max, AVG(salary)
AS avg FROM Staff;

SELECT Statement – Grouping
Tampilkan nomor staff pada setiap cabang dan total gaji masing-masing.

SELECT branchNo, COUNT(staffNo) AS count, SUM(salary) AS sum FROM Staff GROUP BY branchNo ORDER BY branchNo;

Penggunaan INSERT
Syntax : INSERT INTO TableName
[ (columnList) ] VALUES (dataValueList);

Masukkan baris baru ke dalam tabel Staff untuk seluruh kolom
contoh:
INSERT INTO Staff VALUES (‘SG16’, ‘Alan’, ‘Brown’, ‘Assistant’, ‘M’, Date‘1957-05-25’, 8300, ‘B003’);

INSERT dengan Default
Masukkan baris baru ke dalam table 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’);

Penggunaan UPDATE
Syntax :
UPDATE TableName SET columnName1
= dataValue1 [, columnName2 =
dataValue2...] [WHERE searchCondition]

Berikan pada seluruh staff kenaikan sebesar 3%

UPDATE Staff SET salary = salary*1.03;

Penggunaan UPDATE cont.

Berikan 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’;

Penggunaan DELETE
Syntax :
DELETE FROM TableName [WHERE
searchCondition];

DELETE baris tertentu (Hapus seluruh viewings yang terkait dengan properti PG4)

DELETE FROM Viewing WHERE
propertyNo = ‘PG4’;

Penggunaan DELETE cont.
Hapus seluruh record dari tabel Viewing

DELETE FROM Viewing;

Pengelompokkan terbatas
HAVING clause 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;

No comments: