STRUCTURE QUERY LANGUAGE
Structured Query Language (SQL) merupakan komponen bahasa relational
database system. SQL merupakan bahasa baku (ANSI/SQL), non procedural, dan berorientasi pada himpunan. SQL dapat digunakan baik secara interaktif
atau ditempelkan pada sebuah
program aplikasi.
1. Komponen-Komponen SQL
Komponen-komponen
pada SQL dapat dilihat pada gambar 1.
Gambar 1. Bagan Komponen-komponen
SQL
a. Data
Definition Language (DDL) :
Digunakan untuk mendefinisikan data dengan menggunakan perintah : create, drop, alter.
b. Data
Manipulation Language (DML) :
Digunakan untuk memanipulasi data dengan menggunakan perintah : select, insert, update, delete.
Data Manipulation Language merupakan bagian terpadu bahasa SQL. Perintah-perintahnya dapat dibuat secara interaktif atau ditempelkan pada sebuah program aplikasi. Pemakai hanya perlu menentukan
'APA' yang ia inginkan, DBMS
menentukan 'BAGAIMANA' cara mendapatkannya.
c. Data Control
Language (DCL) :
Digunakan untuk mengontrol hak para pemakai data dengan perintah
: grant, revoke
1.1. DDL
Perintah-perintah
pada DDL dapat dijabarkan sebagai berikut:
1. CREATE TABLE
Perintah
CREATE TABLE berfungsi untuk membuat tabel.
Sintaks
: CREATE
TABLE tbname
(col 1 data type data spec,
col 2
data type data spec,
.
.
PRIMARY KEY (col1,……))
Contoh
:
CREATE TABLE
MAHASISWA
(NPM CHAR(8)
NOT NULL,
NAMA CHAR(45)
NOT NULL,
ALAMAT CHAR(45),
TGL-LAHIR DATE
NOT NULL WITH DEFAULT,
PRIMARY KEY (NPM))
Pernyataan NULL yang digunakan
dapat dispesifikasikan sebagai berikut :
·
NULL
NULL dapat diinterpretasikan sebagai
nilai yang tidak
diketahui atau tidak tersedianya suatu nilai. NULL bukan berarti
kosong (blank) atau 0 (Nol).
·
NOT NULL
NOT NULL dimana pemakai
atau program harus memberikan nilai-nilai pada saat
memasukkan record
·
NOT NULL WITH DEFAULT
Nilai default
disimpan pada saat record dimasukkan tanpa nilai yang ditentukan untuk kolom
ini
Nilai default-nya :
·
Nol, untuk tipe field NUMERIC
·
Blank, untuk tipe field CHARACTER CURRENT
·
DATE, untuk tipe field DATE CURRENT
·
TIME, untuk tipe field TIME
Pada
saat membuat tabel, salah satu atribut tersebut di atas dispesifikasikan pada sebuah kolom.
2. CREATE
VIEW
Perintah
CREATE VIEW berfungsi untuk membuat tabel view. View merupakan bentuk
alternatif penyajian data dari satu atau
lebih tabel. View dapat berisi
semua atau sebagian kolom yang terdapat pada tabel dimana kolom tersebut didefinisikan.
Tujuan
membuat view :
§ Meningkatkan
keamanan data
§ Meningkatkan
kemandirian data
§ Penyederhanaan
bagi end user (data
yang sedikit, nama-nama kolom yang baru dan dapat dibaca
dengan lebih baik) Properti :
§ Tidak
terdapatnya data tambahan
§ View
mencakup subset kolom dan / atau baris
§ View
dapat berisikan data dari beberapa tabel dan / atau tabel-tabel view lainnya
§ View
dapat berisikan perolehan data, misal : nilai rata-rata
§ Manipulasi
data melalui view terbatas
Sintaks
: CREATE
VIEW viewname (column1, column2, ……..)
AS
SELECT statement FROM tbname
[WITH
CHECK OPTION]
Keterangan :
- View-name
: nama view yang akan dibuat.
- Column :
nama atribut untuk view
- Statement :
atribut yang dipilih dari tabel basis data.
- Tbname
:
nama tabel basis data.
Contoh
:
CREATE
VIEW VMHS (NPM, NAMA)
AS
SELECT NPM, NAMA FROM MAHASISWA
3. CREATE INDEX
Perintah
CREATE INDEX berfungsi untuk membuat tabel
index.
Sintaks
: CREATE
[UNIQUE] INDEX indexname
ON
nama_table (nama_kolom)
Contoh
:
CREATE
UNIQUE INDEX MHSIDX ON MAHASISWA(NPM)
Dengan indeks
memungkinkan suatu tabel diakses dengan urutan tertentu tanpa harus merubah
urutan fisik dari datanya dan dapat pula diakses secara cepat melalui indeks
yang dibuat berdasar nilai field tertentu. Spesifikasi UNIQUE akan menolak key yang sama dalam file.
DROP
TABLE
Perintah
DROP TABLE berfungsi untuk menghapus tabel.
Sintaks : DROP TABLE tbname
Contoh : DROP TABLE MAHASISWA
Dengan perintah
itu obyek lain yang berhubungan dengan tabel tersebut otomatis akan dihapus
atau tidak akan berfungsi seperti :
- semua record dalam tabel akan terhapus
- index dan view pada tabel akan hilang
- deskripsi tabel akan hilang
5. DROP
VIEW
Perintah DROP
VIEW berfungsi untuk menghapus view.
Sintaks : DROP VIEW viewname
Contoh :
DROP VIEW VMHS
6. DROP
INDEX
Perintah
DROP INDEX berfungsi untuk menghapus index.
Sintaks
: DROP INDEX indexname
Contoh
:
DROP
INDEX MHSIDX
7. ALTER
Perintah
ALTER berfungsi untuk merubah atribut pada suatu tabel.
Sintaks
: ALTER
TABLE tbname
MODIFY (nama_kolom tipe_kolom)
ADD (nama_kolom
tipe_kolom [[before, nama_kolom]]) DROP
(nama_kolom tipe_kolom)
Contoh : merubah Tabel TABX dengan menambah Field D.
ALTER TABLE TABX
ADD D CHAR(3)
1.2. DML
Perintah-perintah
pada DML dapat dijabarkan sebagai berikut:
1. INSERT
Perintah INSERT
berfungsi untuk menambah baris (record) baru.
Sintaks : INSERT INTO tbname
(col1, ...) VALUES (value1,
...)
Catatan :
Sintaks tersebut
dapat digunakan jika jumlah kolom = jumlah nilai, tetapi jika dalam tabel semua
kolom akan diisi dapat digunakan sintaks berikut ini :
Sintaks : INSERT
INTO tbname
VALUES (value1, value2, ...)
Nilai-nilai
diisikan sebanyak kolom yang terdapat di tabel tersebut.
Contoh : pada
tabel MAHASISWA akan ditambahkan record mahasiswa baru.
INSERT INTO
MAHASISWA
VALUES
(‘00105543’,’MUHAMMAD ADI’,JL. MERUYA NO.100, JAKARTA’,02-02-1990)
2. UPDATE
Perintah UPDATE
berfungsi untuk merubah record.
Sintaks : UPDATE
tbname
SET field = ekspresi
WHERE kondisi
Contoh :akan
diubah nama mahasiswa dari MUHAMMAD ADI dengan NPM 00105432 menjadi MUHAMMAD
ALI
UPDATE MAHASISWA
SET nama
=’MUHAMMAD ALI’
WHERE
NPM=’00105432’
3. DELETE
Perintah DELETE
berfungsi untuk menghapus record.
Sintaks : DELETE
FROM tbname
WHERE kondisi
Contoh : akan
dihapus data mahasiswa dengan NPM 0010500
DELETE FROM
MAHASISWA
WHERE NPM=’00105004
4. SELECT
Perintah SELECT
berfungsi untuk menampilkan record.
Sintaks : SELECT
[DISTINCT] colname FROM tbname
[WHERE kondisi]
[GROUP BY kondisi]
[HAVING kondisi]
[ORDER BY kondisi]
1.3. Contoh Kasus DDL
Contoh
kasus DDL antara lain :
1. Membuat
Tabel
a. CREATE
TABLE PEMASOK
(Kd-P Char(5) NOT NULL,
Nama-P Char(20) NOT NULL,
Status
Smallint NOT NULL,
Kota
Char(15) NOT NULL);
b. CREATE
TABLE BARANG
(Kd-B Char(6) NOT NULL,
Nama-B Char(20) NOT NULL,
Warna
Char(6) NOT NULL,
Berat
Smallint NOT NULL);
c. CREATE
TABLE PB
(Kd-P Char(5) NOT NULL,
Kd-B
Char(6) NOT NULL,
Jumlah
INTEGER NOT NULL);
d. CREATE UNIQUE INDEX Sidx ON PEMASOK(Kd-P);
CREATE UNIQUE INDEX Pidx ON BARANG(Kd-B);
CREATE
INDEX Sdx ON PB(Kd-P);
CREATE
INDEX Pdx ON PB(Kd-B);
2. Modifikasi
Table BARANG dengan perintah :
RENAME COLUMN
PEMASOK.Warna TO Warna-B
ALTER TABLE BARANG
ADD (Kota CHAR(15) NOT NULL)
3. Membuat
View
a. Membuat
view untuk pemasok yang statusnya lebih besar dari 15
CREATE VIEW PEMASOK-YG-BAGUS
AS SELECT Kd-P, Status, Kota FROM
PEMASOK
WHERE Status > 15
b. Membuat
view yang berisi pemasok yang tinggal di Paris
CREATE VIEW PEMASOK-PARIS
AS SELECT * FROM PEMASOK
WHERE Kota = ' Paris '
c. Membuat view dengan mengganti nama_atributnya
CREATE VIEW BARANG (Kd-Brg, Nm-Brg,
Brt)
AS SELECT Kd-B, Nama-B, Berat FROM
BARANG
WHERE Warna = 'Red'
1. 4 Contoh Kasus DML
Contoh kasus DML
antara lain :
1. Menambah record (INSERT)
INSERT INTO S
VALUES ('S1','Smith',20,'London');
INSERT INTO S
VALUES ('S2','Jones,10,'Paris');
INSERT INTO S
VALUES ('S3','Blake',30,'Paris')
Tabel S, P dan
SP berisikan dengan data-data seperti
terlihat pada tabel 1, 2. dan 3.
Tabel
1. TABEL
PEMASOK
Kd-P
|
Nama-P
|
Status
|
Kota
|
P1
|
Smith
|
20
|
London
|
P2
|
Jones
|
10
|
Paris
|
P3
|
Blake
|
30
|
Paris
|
P4
|
Clark
|
20
|
London
|
P5
|
Adams
|
30
|
Athens
|
Tabel
2. Tabel BARANG
Kd-B
|
Nama-B
|
Warna
|
Berat
|
Kota
|
B1
|
Nut
|
Red
|
12
|
London
|
B2
|
Bolt
|
Green
|
17
|
Paris
|
B3
|
Screw
|
Bleu
|
17
|
Rome
|
B4
|
Screw
|
Red
|
14
|
London
|
B5
|
Cam
|
Blue
|
12
|
Paris
|
B6
|
Cog
|
Red
|
19
|
London
|
Tabel
3. Tabel PEMASOK-BRG
Kd-P
|
Kd-B
|
Jumlah
|
P1
|
B1
|
300
|
P1
|
B2
|
200
|
P1
|
B3
|
400
|
P1
|
B4
|
200
|
P1
|
B5
|
100
|
P1
|
B6
|
100
|
P2
|
B1
|
300
|
P2
|
B2
|
400
|
P3
|
B2
|
200
|
P4
|
B2
|
200
|
P4
|
B4
|
300
|
P4
|
B5
|
400
|
2. Merubah
record (UPDATE)
a. Merubah
data (record) pada
tabel BARANG yang
mempunyai nomor barang B2, warnanya dirubah menjadi Kuning dan beratnya ditambah 5
UPDATE BARANG
SET Warna = 'Yellow', Berat = Berat + 5
WHERE Kd-B = 'B2'
b. Merubah record pada tabel PEMASOK, statusnya
menjadi dua kali status awal untuk pemasok yang bertempat
tinggal di kota London
UPDATE PEMASOK
SET Status = 2 * Status
WHERE Kota = 'London'
3. Menghapus
record (DELETE)
Menghapus record
pada tabel PEMASOK yang nomor pemasoknya P5
DELETE FROM
PEMASOK
WHERE Kd-P ='P5'
4. Menampilkan record (SELECT 1
tabel)
a. Menampilkan semua data pemasok
SELECT * FROM PEMASOK
atau
SELECT Kd-P, Nama-P, Status, Kota FROM PEMASOK
b.. Menampilkan semua nilai kode barang
pada tabel PEMASOK-BRG
SELECT Kd-B FROM PEMASOK-BRG
c. Menampilkan kode pemasok dan status untuk
pemasok yang tinggal di Paris
SELECT Kd-P, Status FROM PEMASOK WHERE Kota ='Paris'
d. Menampilkan kode pemasok yang tinggal di Paris
dengan status > 20
SELECT Kd-P FROM PEMASOK
WHERE Kota ='Paris” AND Status > 20
e. Menampilkan jumlah pengiriman B1
SELECT COUNT(*) FROM PEMASOK-BRG
WHERE Kd-B = 'B1'
f. Perintah untuk menghindari hasil data yang
sama terulang kembali (distinct)
SELECT DISTINCT Kd-B FROM PEMASOK-BRG
g. Menampilkan kode pemasok dan status bagi
pemasok yang tinggal di Paris
dalam urutan status menurun
SELECT
Kd-P,Status FROM PEMASOK
WHERE Kota = 'Paris'
ORDER BY Status desc
h. Menampilkan kode barang dari semua barang yang
dipasok oleh lebih dari seorang pemasok
SELECT Kd-B FROM PEMASOK-BRG
GROUP
BY Kd-B
HAVING COUNT(*) > 1
i. Menampilkan semua barang yang namanya dimulai
dengan huruf C
SELECT * FROM BARANG
WHERE Nama-B LIKE 'C%'
5. Menampilkan
record (SELECT lebih dari satu tabel / JOIN)
a. Menampilkan
semua pemasok dan barang yang keduanya bertempat
tinggal pada kota yang sama
SELECT Kd-P, Nama-P,Status,
PEMASOK.Kota , Kd-B, Nama-B, Warna,
Berat FROM PEMASOK, BARANG
WHERE PEMASOK.Kota = BARANG.Kota
b. Menampilkan nama pemasok yang memasok barang
dengan nomor
barang B2
SELECT Nama-P FROM PEMASOK,
PEMASOK-BRG
WHERE PEMASOK.Kd-P = PEMASOK-BRG.Kd-P
AND PEMASOK-BRG.Kd-B = 'B2'
c. Menampilkan nama pemasok yang memasok barang
berwarna merah
SELECT Nama-P FROM PEMASOK,
PEMASOK-BRG, BARANG
WHERE
PEMASOK.Kd-P = PEMASOK-BRG.Kd-P
AND
PEMASOK-BRG.Kd-B = BARANG.Kd-B
AND BARANG.Warna = 'RED'
6. Menampilkan record (SELECT
lebih dari satu tabel / SELECT Bertingkat)
Contoh queri :
a. Menampilkan nama pemasok yang memasok barang
dengan kode barang B2
SELECT Nama-P FROM PEMASOK
WHERE Kd-P IN
(SELECT Kd-P FROM PEMASOK-BRG
WHERE Kd-B = 'B2')
Atau
SELECT Nama-P FROM PEMASOK
WHERE Kd-P = ANY
(SELECT Kd-P FROM PEMASOK-BRG
WHERE Kd-B = 'B2')
b. Menampilkan nama pemasok yang memasok barang
berwarna merah
SELECT Nama-P FROM PEMASOK
WHERE Kd-P IN
(SELECT Kd-P FROM PEMASOK-BRG
WHERE Kd-B IN
(SELECT Kd-B FROM BARANG
WHERE Warna = 'Red'))
c. Menampilkan
kode pemasok dengan nilai
status lebih kecil daripada
nilai maksimum status yang ada pada tabel PEMASOK
SELECT Kd-P FROM PEMASOK
WHERE Status <
(SELECT
MAX(Status) FROM PEMASOK)
d. Menampilkan
nama pemasok yang tidak memasok barang dengan nomor
barang B2
SELECT Nama-P FROM PEMASOK
WHERE Kd-P NOT IN
(SELECT Kd-P FROM PEMASOK-BRG
WHERE
Kd-B = 'B2')
e. Menampilkan semua kode pemasok yang sama
lokasinya dengan pemasok P1
SELECT Kd-P FROM PEMASOK
WHERE Kota =
(SELECT Kota FROM PEMASOK
WHERE Kd-P = 'P1')
7. Fungsi
Perhitungan
Fungsi-fungsi
yang dapat digunakan antara lain:
·
COUNT : jumlah baris dan kolom
·
SUM : jumlah
nilai dam kolom
·
AVG : rata-rata
nilai dalam kolom
·
MAX : nilai
terbesar dalam kolom
·
MIN : nilai
terkecil dalam kolom
Untuk SUM dan
AVG nilainya harus numerik (INT, SMALLINT, FLOAT). Fungsi- fungsi tersebut jika
dikenakan pada nilai yang NULL maka nilainya akan diabaikan kecuali untuk
COUNT(*)
Berikut ini
contoh queri yang menggunakan fungsi-fungsi perhitungan :
a. Menghitung jumlah pemasok
SELECT COUNT(*) FROM PEMASOK
atau
SELECT COUNT (Kd-P) FROM PEMASOK
b. Menampilkan kode barang dan total jumlah
pengiriman dari setiap barang
SELECT Kd-B, SUM(Jumlah) FROM
PEMASOK-BRG
GROUP BY Kd-B
c. Menghitung jumlah kuantitas dari B2 yang telah
dipasok
SELECT SUM (Jumlah) FROM PEMASOK-BRG
WHERE Kd-B = 'B2'
d. Menampilkan jumlah pengiriman barang dengan
nomor B4 dan dipasok oleh kode pemasok P1
SELECT COUNT(*) FROM PEMASOK-BRG
WHERE Kd-B = 'B4' AND Kd-P = 'P1'
e. Menampilkan kode barang dan total kuantitas
dari masing-masing barang
SELECT Kd-B, SUM(Jumlah) FROM
PEMASOK-BRG
GROUP BY Kd-B
1.5. DCL
Berikut ini
adalah perintah-perintah pada DCL :
1. GRANT
Perintah GRANT berfungsi untuk memberikan
izin akses kepada pemakai.
Sintaks : GRANT privileges ON tbname TO user
GRANT SELECT ON
CLUB TO PUBLIC
GRANT SELECT,
INSERT, UPDATE, DELETE ON CLUB TO USER01
2. REVOKE
Perintah REVOKE
berfungsi untuk mencabut izin akses kepada pemakai.
Sintaks : REVOKE privileges ON tbname FROM user
Contoh :
REVOKE INSERT, UPDATE,
DELETE ON CLUB FROM USER01
REVOKE ALL ON
CLUB FROM PUBLIC
No comments:
Post a Comment