Anda di halaman 1dari 48

UNIVERSITI TUN HUSSEIN ONN MALAYSIA

FAKULTI KEJURUTERAAN ELEKTRIK DAN ELEKTRONIK

Pengaturcaraan SQL

DEC 2213 Aplikasi Sistem Pangkalan Data

Sejarah SQL

• Salah satu hasil dari projek R di IBM


• Mula dikenali sebagai SEQUEL.
• Pada akhir 1970-an dipanggil ‘SQL’
• Pada 1986, piawai dikeluarkan oleh ANSI dan ISO
• Versi SQL 1986
• SQL-89 – Beberapa penambahan dibuat
• Penyemakan dibuat pada tahun 1992 dan wujud
SQL2

DEC 2213 Aplikasi Sistem Pangkalan Data

1
Komponen SQL

• Data definition Language (DDL)


– Mentakrif struktur data
• Data Manipulation Language (DML)
– Memanipulasi data (Add, Delete, Select)
• Data Control Language (DCL)
– Memberi hak (priviledge) kepada pengguna
• SQL Interaktif dan dibenamkan (Embedded SQL)
• Pengurusan Transaksi
• Kawalan Capaian Jauh
DEC 2213 Aplikasi Sistem Pangkalan Data

Sintak Asas (Basic Syntax)

• SELECT – Menyenaraikan lajur (row) yang hendak


dihasilkan
• FROM – Menyenaraikan jadual yang mana lajur hendak
diperolehi
• WHERE – kriteria yang akan digunakan untuk
memperoleh rekod
• ORDER BY – Menyusun baris mengikut nilai yang
terdapat pada lajur yang dinyatakan
• HAVING – Menapis baris yang diperolehi mengikut syarat

DEC 2213 Aplikasi Sistem Pangkalan Data

2
Struktur Asas

SELECT [ALL| DISTINCT] Column Name


FROM TableName
WHERE Condition

DEC 2213 Aplikasi Sistem Pangkalan Data

Jadual
KTANGANPROJEK PANEL

NoPekerja NoProjek NoPanel NoKetua NamaPanel


2205 111 40 5555 Pangkalan Data
2205 101
30 3550 Sistem
2578 101
20 5680 Rangkaian
4537 111
5056 121 10 5200 MIS

2600 121 PROJEK


5555 256
NoProjek NamaProjek NoKetua
3550 101
101 TELEMEDICINE 2570
3550 256
5680 256 111 CDROM 4537

5200 111 121 KESELAMATAN


256 AUTO PEJABAT
DEC 2213 Aplikasi Sistem Pangkalan Data
5680

3
Jadual
KTAKADEMIK
NoPekerja Nama Jawatan Tarikh Gaji NoPanel
2205 Farid Pensyarah 171280 3500 20
1006 Nasir PM 200881 5200 30
2578 Bahar Pensyarah 220281 3200 30
4537 Samad Pensyarah 200485 3100 20
5698 Ahmad Tutor 280996 1250 40
5056 Borhan Pensyarah 010585 2500 30
2600 Hashim PM 090681 3000 10
5550 Arif Pensyarah 091187 2600 20
5555 Naomie Pensyarah 111187 2600 40
3550 Mazlena Pensyarah 051284 2800 30
5680 Shafie Pensyarah 301187 2600 20
5200 Linda Pensyarah 051087 2600 10

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah

• Dapatkan maklumat penuh tentang semua


kakitangan akademik.

SELECT *
FROM ktakademik
• Hasil Output: (Sebuah jadual yang sama seperti
jadual ktakademik)

DEC 2213 Aplikasi Sistem Pangkalan Data

4
SQL Mudah

• Senaraikan nama semua kakitangan akademik

SELECT nama
FROM ktakademik;

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah

• Hasil Output: Farid


Nasir
Bahar
Samad
Ahmad
Borhan
Hashim
Arif
Naomie
Mazlena
Shafie
Linda

DEC 2213 Aplikasi Sistem Pangkalan Data

5
SQL Mudah

• Menggunakan katakunci DISTINCT untuk


menghapuskan sel (tuple) yang berulangan
apabila query dilaksanakan ke atas lajur
• Contoh: Senaraikan nama jawatan yang dipegang
oleh kakitangan akademik
SELECT DISTINCT jawatan
FROM ktakademik

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah

• Hasil Output:

Pensyarah
PM
Tutor

DEC 2213 Aplikasi Sistem Pangkalan Data

6
SQL Mudah

• Penggunaan Operator Matematik ke atas lajur


yang dihasilkan
SELECT NoPekerja, Nama, Gaji * 12
FROM Pekerja

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah
NoPekerja Nama Gaji
2205 Farid 42000
1006 Nasir 62400
2578 Bahar 38400
4537 Samad 37200
5698 Ahmad 15000
5056 Borhan 30000
2600 Hashim 36000
5550 Arif 31200
5555 Naomie 31200
3550 Mazlena 33600
5680 Shafie 31200
5200 Linda 31200

DEC 2213 Aplikasi Sistem Pangkalan Data

7
SQL Mudah

• Senaraikan nombor, nama dan gaji tahunan


kakitangan dan labelkan gaji tahunan sebagai
gaji_tahun

• Hasil:
NoPekerja Nama gaji_tahun

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah

• Klausa WHERE digunakan untuk menyatakan syarat yang


tertentu supaya hanya sel (tuple) yang memenuhi syarat
sahaja yang dihasilkan
• Operator-operator yang digunakan:
– Perbandingan/ range
• >, <, <=, >=, =
• BETWEEN
– Ahli kepada set
• IN/ NOT IN
– Padan mengikut rekod
• LIKE/ NOT LIKE
• % terdapat turutan samaada 0 atau lebih aksara
– NULL

DEC 2213 Aplikasi Sistem Pangkalan Data

8
SQL Mudah

• Senaraikan nama dan gaji kakitangan yang


bergaji lebih daripada 3000
SELECT nama, gaji
FROM ktakademik
WHERE gaji > 3000;

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah

• Hasil Output:
Nama Gaji
Farid 3500
Nasir 5200
Bahar 3200
Samad 3100

DEC 2213 Aplikasi Sistem Pangkalan Data

9
SQL Mudah

• Senaraikan nama dan gaji kakitangan yang


berjawatan sebagai pensyarah yang bergaji
diantara 3500 dan 5000

SELECT nama, gaji


FROM ktakademik
WHERE jawatan = ‘Pensyarah’ and gaji
>= 3500 and gaji <= 5000;

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah

Atau
SELECT nama, gaji
FROM ktakademik
WHERE jawatan = ‘Pensyarah’ and gaji
BETWEEN 3500 and 5000;
Hasil Output:
Nama Gaji
Farid 3500

DEC 2213 Aplikasi Sistem Pangkalan Data

10
SQL Mudah

• Senaraikan nama dan jawatan kakitangan yang


berjawatan PM atau Tutor

SELECT nama, jawatan


FROM ktakademik
WHERE jawatan IN (‘PM’, ‘Tutor’)

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah

Atau
SELECT nama, jawatan
FROM ktakademik
WHERE jawatan = ‘PM’ or jawatan = ‘Tutor’
Hasil Output:
Nama Jawatan
Nasir PM
Ahmad Tutor
Hashim PM

DEC 2213 Aplikasi Sistem Pangkalan Data

11
SQL Mudah

• Senaraikan nombor pekerja dan nama semua


kakitangan yang namanya bermula dengan huruf
A SELECT NoPekerja, nama
FROM ktakademik
WHERE nama LIKE ‘A%’
Hasil Output:
NoPekerja Nama
5698 Ahmad
5550 Arif
DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah

• Senaraikan nombor projek dan nama projek yang


tidak mempunyai ketua.

SELECT noprojek, namaprojek


FROM projek
WHERE NoKetua is NULL
Hasil Output:
NoProjek NamaProjek
121 Keselamatan
DEC 2213 Aplikasi Sistem Pangkalan Data

12
SQL Mudah

• Klausa ORDER BY berfungsi mengisih (sort) sel


(tuple) yang diperolehi berdasarkan lajur yang
dinyatakan.
• Isihan (sort) sama ada secara menaik (ASC) atau
menurun (DESC)
• Secara default isihan adalah menaik

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah

• Senaraikan nombor pekerja yang terlibat dengan


projek 121 dalam susunan menaik mengikut
nombor pekerja
SELECT nopekerja
FROM ktanganprojek
WHERE noprojek = 121
ORDER BY nopekerja;
Hasil Output:
Nopekerja
2600
5056
DEC 2213 Aplikasi Sistem Pangkalan Data

13
Fungsi Aggregat

• Fungsi dalaman yang beroperasi ke atas


kumpulan-kumpulan baris
• Memulangkan satu nilai sahaja
• Dinyatakan pada klausa SELECT dan HAVING
sahaja
• Jika dinyatakan pada senarai diklausa SELECT
yang juga mempunyai lajur lain, pernyataan SQL
mesti mempunyai klausa GROUP BY

DEC 2213 Aplikasi Sistem Pangkalan Data

Fungsi Aggregat
Fungsi Tujuan

COUNT Mendapatkan bilangan tuples yang


diperolehi melalui syarat tertentu
SUM Menjumlah nilai bagi sesuatu lajur

AVG Mengira purata nilai bagi sesuatu


lajur
MIN/MAX Memperolehi nilai minimum dan
maksimum yang terdapat dalam
suatu lajur
STDDEV/ VARIANCE Mengira nilai standard deviation/
variance bagi sesuatu lajur
DEC 2213 Aplikasi Sistem Pangkalan Data

14
SQL Mudah
• COUNT(*) – mengira bilangan tuples dalam jadual
yang memenuhi syarat.
• COUNT ([nama column])
• Dapatkan bilangan kakitangan yang berjawatan
PM dan jumlah gaji bagi kesemua kakitangan ini.
SELECT COUNT (*) bil_PM, SUM (gaji) gaji_PM
FROM ktakademik
WHERE jawatan = ‘PM’;
Hasil Output:
Bil_PM Gaji_PM
2 8200
DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah

• Dapatkan gaji terendah dan gaji tertinggi yang


diperolehi oleh kakitangan.
SELECT MIN (gaji), MAX (gaji)
FROM ktakademik
Hasil Output:
1250 5200

DEC 2213 Aplikasi Sistem Pangkalan Data

15
SQL Mudah

• Dapatkan bilangan ahli yang berada didalam


panel 20
SELECT COUNT (nopekerja)
FROM ktakademik
WHERE nopanel = 20;
Hasil Output:
4

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah

• Klausa GROUP BY bertujuan mengumpulkan


baris-baris berdasarkan kepada nilai-nilai
berlainan yang wujud bagi lajur yang dinyatakan

• Perlu digunakan apabila dalam senarai SELECT


terdiri daripada nama lajur dan fungsi aggregat

DEC 2213 Aplikasi Sistem Pangkalan Data

16
SQL Mudah

• Dapatkan bilangan ahli yang terdapat di dalam


setiap panel
SELECT nopanel, COUNT (nopekerja)
FROM ktakademik
GROUP BY nopanel
ORDER BY nopanel

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah

• Hasil Output:
Nopanel Count(Nopekerja)
10 2
20 4
30 4
40 2

DEC 2213 Aplikasi Sistem Pangkalan Data

17
SQL Mudah

• Apa akan terjadi jika SQL ditulis seperti berikut:

SELECT nopanel, COUNT (nopekerja)


FROM ktakademik

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah

• Klausa HAVING digunakan dengan GROUP BY


untuk tujuan menghadkan lagi kumpulan-
kumpulan data yang dihasilkan

• Melibatkan penggunaan fungsi aggregat keatas


nama lajur yang menjadi syarat

DEC 2213 Aplikasi Sistem Pangkalan Data

18
SQL Mudah

• Dapatkan bilangan ahli yang berada dalam setiap


panel yang mempunyai lebih daripada 2 orang
ahli.
SELECT nopanel, COUNT (nopekerja)
FROM ktakademik
GROUP BY nopanel
HAVING COUNT (nopekerja) >2;

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah

• Hasil Output:
Nopanel Count(Pekerja)
20 4
30 4

DEC 2213 Aplikasi Sistem Pangkalan Data

19
SQL Mudah – Nested Query

• Pertanyaan tersarang (nested query) dilakukan


apabila satu pernyataan SELECT yang lengkap
dalam satu pernyataan SELECT yang lain.

• Hasil yang diperolehi daripada pernyataan


dalaman digunakan oleh pernyataan luaran untuk
menghasilkan jawapan.

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah – Nested Query

• Pernyataan dalaman perlu ditulis dalam kurungan


pada:
– Klausa WHERE
– Klausa HAVING
– Pernyataan INSERT
– Pernyataan DELETE
– Pernyataan UPDATE

DEC 2213 Aplikasi Sistem Pangkalan Data

20
SQL Mudah – Nested Query

• Senaraikan nama dan nombor kakitangan yang


berada di dalam panel Pangkalan Data.
SELECT nama, nopekerja
FROM ktakademik
WHERE nopanel =
(SELECT nopanel
FROM panel
Nested Query WHERE namapanel =
‘Pangkalan
Data’);

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah – Nested Query

• Hasil Output:
nama nopekerja
Ahmad 5698
Naomie 5555

DEC 2213 Aplikasi Sistem Pangkalan Data

21
SQL Mudah – Nested Query

• Senaraikan nama dan gaji kakitangan yang


gajinya melebihi daripada gaji purata

SELECT nama, gaji


FROM ktakademik
WHERE gaji >
(SELECT AVG (gaji)
FROM ktakademik);
DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah – Nested Query

• Hasil Output:
nama gaji
Farid 3500
Nasir 5200
Bahar 3200
Samad 3100

DEC 2213 Aplikasi Sistem Pangkalan Data

22
SQL Mudah – Nested Query

• Senaraikan nama dan nombor pekerja kakitangan


yang terlibat dengan sekurang-kurangnya 2 buah
projek.
SELECT nama, nopekerja
FROM ktakademik
WHERE nopekerja IN
(SELECT nopekerja
FROM ktanganprojek
GROUP BY nopekerja
HAVING COUNT (noprojek >= 2);
DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah – Nested Query

• Hasil Output:
Nama Nopekerja
Farid 2205
Mazlena 3550

DEC 2213 Aplikasi Sistem Pangkalan Data

23
SQL Mudah – Nested Query

• Klausa ANY/ALL untuk pertanyaan tersarang

– ANY – tuple yang terhasil adalah tuple yang memenuhi


mana-mana nilai yang dihasilkan oleh pertanyaan
tersarang

– ALL – tuple yang terhasil adalah tuple yang memenuhi


kesemua nilai yang dihasilkan oleh pertanyaan
tersarang

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah – Nested Query

• Senaraikan nombor, gaji dan nama kakitangan


yang bergaji lebih daripada gaji yang diperolehi
oleh kakitangan yang berada dalam panel Sistem
SELECT nopekerja, nama, gaji
FROM ktakademik
WHERE gaji > ANY
(SELECT gaji
FROM ktakademik
WHERE nopanel =
(SELECT nopanel
FROM panel
WHERE namapanel = ‘Sistem’);
DEC 2213 Aplikasi Sistem Pangkalan Data

24
SQL Mudah – Nested Query

• Hasil Output:
Nopekerja Nama Gaji
2205 Farid 3500
1006 Nasir 5200
2578 Bahar 3200
4537 Samad 3100
2600 Hashim 3000
5550 Arif 2600
5555 Naomie 2600
3550 Mazlena 2800
5680 Shafie 2600
5200 Linda 2600

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah – Nested Query

• Senaraikan nombor, nama dan gaji kakitangan


yang bergaji lebih daripada GAJI SETIAP
KAKITANGAN daripada panel MIS
SELECT nopekerja, nama, gaji
FROM ktakademik
WHERE gaji > ALL
(SELECT gaji
FROM ktakademik
WHERE nopanel =
(SELECT nopanel
FROM panel
DEC 2213 Aplikasi Sistem Pangkalan Data
WHERE namapanel = ‘MIS’);

25
SQL Mudah – Nested Query

• Hasil Output:
Nopekerja Nama gaji
2205 Farid 3500
1006 Nasir 5200
2578 Bahar 3200
4537 Samad 3100

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah – Nested Query

• Operator EXIST/NOT EXIST digunakan pada


pertanyaan tersarang akan menghasilkan TRUE
sekiranya pertanyaan tersarang itu menghasilkan
sekurang-kurangnya satu baris atau FALSE jika
tiada rekod dihasilkan

DEC 2213 Aplikasi Sistem Pangkalan Data

26
SQL Mudah – Nested Query
• Senaraikan nama dan jawatan bagi kakitangan
yang terlibat dengan projek 121

SELECT nama, jawatan


FROM ktakademik
WHERE EXIST
(SELECT *
FROM ktanganprojek
WHERE ktanganprojek.nopekerja =
ktakademik.nopekerja and noprojek = 121);
DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah – Nested Query

• Hasil Output:
Nama Jawatan
Borhan Pensyarah
Hashim PM

DEC 2213 Aplikasi Sistem Pangkalan Data

27
SQL Mudah

• Operasi JOIN ialah menghasilkan lajur di dalam


jadual yang dihasilkan daripada 2 jadual atau
lebih.
• Senaraikan nama dan nombor panel dan nama
serta nombor ketua panel
SELECT panel.nopanel, panel.namapanel, panel.noketua,
ktakademik.nama
FROM panel, ktakademik
WHERE ktakademik.nopekerja = panel.noketua
ORDER BYDECpanel.nopanel
2213 Aplikasi Sistem Pangkalan Data

SQL Mudah

• Hasil Output:
Nopanel NamaPanel NoKetua Nama
10 MIS 5200 Linda
20 Rangkaian 5680 Shafie
30 Sistem 3550 Mazlena
40 Pangkalan Data 5555 Naomie

DEC 2213 Aplikasi Sistem Pangkalan Data

28
SQL Mudah

• Senaraikan nombor projek, nama projek dan


nama ahli bagi projek yang mempunyai lebih
daripada 2 orang ahli.
SELECT projek.noprojek, projek.namaprojek, ktakademik.nama
FROM ktanganprojek, projek, ktakademik
WHERE projek.noprojek = ktanganprojek.noprojek and
ktakademik.nopekerja = ktanganprojek.nopekerja
GROUP BY ktangaprojek.noprojek
HAVING COUNT (ktanganprojek.nopekerja) > 2
ORDER BY projek.noprojek
DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah

• Hasil Output:
NoProjek NamaProjek Nama
101 Telemedicine Farid
101 Telemedicine Bahar
101 Telemedicine Mazlena
111 Cd-ROM Farid
111 Cd-ROM Samad
111 Cd-ROM Linda
256 Auto pejabat Naomie
256 Auto pejabat Mazlena
256 Auto pejabat Shafie

DEC 2213 Aplikasi Sistem Pangkalan Data

29
SQL Mudah – Algebra Hubungan

• UNION – Menggabungkan dua hubungan untuk


menghasilkan hubungan ketiga
• Senaraikan nama kakitangan yang menjadi ketua
panel atau ketua projek

SELECT nama
FROM ktakademik
WHERE nopekerja IN
((SELECT noketua FROM panel) UNION (SELECT noketua
FROM
projek));
DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah – Algebra Hubungan

• Hasil Output:
Nama
Naomie
Mazlena
Shafie
Linda

DEC 2213 Aplikasi Sistem Pangkalan Data

30
SQL Mudah – Algebra Hubungan

• INTERSECT – Menghasilkan output yang


mengandungi rekod-rekod yang nilainya sama
dalam hubungan pertama dan hubungan kedua
• Senaraikan nama kakitangan yang menjadi ketua
panel dan juga ketua projek
SELECT nama
FROM ktakademik
WHERE nopekerja IN
((SELECT noketua FROM panel) INTERSECT (SELECT noketua FROM
projek));

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah – Algebra Hubungan

• Hasil Output:
Nama
Shafie

DEC 2213 Aplikasi Sistem Pangkalan Data

31
SQL Mudah – Algebra Hubungan

• MINUS – menghasilkan output yang mengandungi


rekod-rekod yang nilainya tidak sama dengan
hubungan yang dibandingkan
• Senaraikan nama kakitangan yang menjadi ketua
panel tetapi bukan ketua projek
SELECT nama
FROM ktakademik
WHERE nopekerja IN
((SELECT noketua FROM panel) MINUS (SELECT noketua
FROM projek));
DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Mudah – Algebra Hubungan

• Hasil Output:
Nama
Naomie
Mazlena
Linda

DEC 2213 Aplikasi Sistem Pangkalan Data

32
SQL – Mengemaskini DB

• Melibatkan arahan operasi:


– INSERT
– DELETE
– UPDATE
• INSERT – menambah sebaris data ke dalam
jadual
• Arahan asas:
INSERT INTO nama-jadual (senarai atribut) VALUES
(senarai data)
DEC 2213 Aplikasi Sistem Pangkalan Data

SQL – Mengemaskini DB

• Jika senarai atribut tidak dinyatakan:


– Dianggap semua atribut bagi jadual digunakan
– Nilai-nilai bagi senarai-data mesti sama dengan struktur
jadual
– Bagi lajur yang tidak ada nilai, takrifkan sebagai NULL
• Jika senarai atribut dinyatakan
– Susunan bagi senarai atribut tidak semestinya
mengikut susunan lajur dalam jadual tetapi nama lajur
yang dinyatakan mesti wujud.
– Nilai-nilai bagi senarai-data perlu mengikut susunan
lajur
DEC 2213 Aplikasi Sistem Pangkalan Data

33
SQL – Mengemaskini DB

• Tambah rekod lengkap tentang sebuah projek


INSERT INTO projek
VALUES (122, ‘Kad Pintar’, 2600);
• Tambah rekod yang separa lengkap tentang
projek
INSERT INTO projek
VALUES (260, ‘Cyber’, NULL);
• Tambah rekod kakitangan
INSERT INTO ktakademik (nopekerja, nama)
VALUES (6502, ‘Amir’);
DEC 2213 Aplikasi Sistem Pangkalan Data

SQL – Mengemaskini DB

• Menambah data daripada satu (atau lebih) jadual


yang lain ke dalam sebuah jadual
• Isikan jadual BIL_AHLI dengan NoProjek,
NamaProjek dan Bilangan ahli bagi setiap projek
• Anggapkan jadual BIL_AHLI telah dibina dengan
skema berikut:
BIL_AHLI( NoProjek, NamaProjek, Jumahli)

DEC 2213 Aplikasi Sistem Pangkalan Data

34
SQL – Mengemaskini DB
INSERT INTO Bil_ahli
(SELECT projek.noprojek, ktanganprojek.namaprojek, COUNT
(ktanganprojek.nopekerja)
FROM projek, ktanganprojek
WHERE projek.noprojek = ktanganprojek.noprojek
GROUP BY noprojek
UNION
(SELECT noprojek, namaprojek, 0
FROM projek
WHERE noprojek NOT IN
(SELECT DISTINCT noprojek FROM ktangan projek));

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL – Mengemaskini DB

• DELETE – menghapuskan baris rekod


• Arahan asas:
DELETE FROM nama-jadual
WHERE syarat
• Menghapuskan semua rekod dalam jadual projek
DELETE FROM projek;
• Hapuskan rekod kakitangan dari panel 40
DELETE FROM ktakademik WHERE nopanel =
40;
DEC 2213 Aplikasi Sistem Pangkalan Data

35
SQL – Mengemaskini DB

• UPDATE –mengubah kandungan suatu jadual


• Arahan asas:
UPDATE nama-jadual
SET nama-lajur1 = data-lajur1…nama-lajur-N
= data-lajur-N
WHERE syarat
• Jika klausa WHERE tidak dinyatakan, perubahan
akan dilakukan kesemua baris

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL – Mengemaskini DB

• Tambahkan gaji bagi semua kakitangan sebanyak


20%
UPDATE ktakademik
SET gaji = gaji * 1.2;
• Naikkan gaji semua pensyarah sebanyak RM 200
UPDATE ktakademik
SET gaji = gaji + 200
WHERE jawatan = ‘Pensyarah’

DEC 2213 Aplikasi Sistem Pangkalan Data

36
SQL – Mengemaskini DB

• Naikkan jawatan kepada pekerja bernombor 5698


kepada jawatan pensyarah dan naikkan gajinya
sebanyak 15%
UPDATE ktakademik
SET jawatan = ‘Pensyarah’, gaji = gaji * 1.15
WHERE nopekerja = 5698;

DEC 2213 Aplikasi Sistem Pangkalan Data

UNIVERSITI TUN HUSSEIN ONN MALAYSIA


FAKULTI KEJURUTERAAN ELEKTRIK DAN ELEKTRONIK

Pengaturcaraan SQL
(DDL)

DEC 2213 Aplikasi Sistem Pangkalan Data

37
Bahasa Takrifan Data (DDL)

• Digunakan untuk membina, mengubah suai dan


menghapus objek pangkalan data.
• Operasi yang dilaksanakan:
– Mencipta pangkalan data
– Membina jadual
– Megubah struktur jadual
– Menghapus Jadual

DEC 2213 Aplikasi Sistem Pangkalan Data

Mencipta Struktur Pangkalan


Data

• Sintak

Arahan: CREATE SCHEMA AUTHORIZATION <pencipta>

Contoh: CREATE SCHEMA AUTHORIZATION AHMAD

Note: Only applicable for command prompt


database application

DEC 2213 Aplikasi Sistem Pangkalan Data

38
Mencipta Jadual

• Arahan CREATE TABLE digunakan untuk


mencipta jadual.
• Sintak
CREATE TABLE <nama jadual> (
nama atribut1 dan karektor atribut1,
nama atributN dan karektor atributN,
Kunci utama,
Kunci Asing dan keperluan kunci asing)

DEC 2213 Aplikasi Sistem Pangkalan Data

Mencipta Jadual

Contoh
CREATE TABLE PELAJAR (
NoMatrik VCHAR(6) NOT NULL UNIQUE,
Nama VCHAR(35) NOT NULL,
Alamat VCHAR(50) NOT NULL,
Poskod FCHAR(5) NOT NULL,
Negeri FCHAR(5) NOT NULL,
Program VCHAR(5) NOT NULL,
PRIMARY KEY (NoMatrik),
FOREIGN KEY (Program) REFERENCES
PROGRAM
ON DELETE RESTRICT
ON UPDATE CASCADE)

DEC 2213 Aplikasi Sistem Pangkalan Data

39
Mengubah Struktur Jadual

• Menukar struktur jadual iaitu dengan menukar


atribut dan menambah lajur
• Memasukkan data ke dalam lajur yang baru atau
yang telah diubahsuai
• Arahan yang terlibat ialah ALTER, MODIFY dan
ADD

DEC 2213 Aplikasi Sistem Pangkalan Data

Arahan ALTER

• ALTER TABLE – digunakan untuk menukar


struktur jadual

• Menambah atribut kedalam jadual


ALTER TABLE <namajadual>
ADD(NamaLajur, JenisAttr(Saiz))

DEC 2213 Aplikasi Sistem Pangkalan Data

40
Arahan ALTER

• ALTER TABLE PROGRAM


ADD(ProgramLevel, INT(5))

• Menukar format atribut


ALTER TABLE <namajadual>
MODIFY(NamaAtribut, JenisDataBaru)

DEC 2213 Aplikasi Sistem Pangkalan Data

Menghapuskan Jadual

• Menghapuskan Jadual
DROP TABLE <namajadual>
• Arahan DROP akan menghapuskan jadual
beserta dengan atributnya.

DEC 2213 Aplikasi Sistem Pangkalan Data

41
SQL Terbenam (Embedded SQL)

• SQL juga boleh digunakan didalam bahasa


pengaturcaraan seperti Visual Basic 6.0, Visual
C++, Prolog, ASP, PHP, JSP dan lain-lain.
• Terdapat (2) jenis pengaturcaraan SQL terbenam
– Kenyataan SQL dimasukkan terus ke dalam bahasa
pengaturcaraan
– Menggunakan Application Programming Interface (API)

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Terbenam (Embedded SQL)

• Contoh SQL menggunakan VB

ncrConnect.execute “CREATE TABLE Viewing (


propertyNo VARCHAR2(5) NOT NULL,
clientNo VARCHAR2(5) NOT NULL,
viewDate DATE NOT NULL,
comment VARCHAR2(40));

DEC 2213 Aplikasi Sistem Pangkalan Data

42
SQL Terbenam (Embedded SQL)
• Guna arahan Error untuk perangkap “run time” error semada
• berurusan dengan pangkalan data
• Jika nilai Error = 0, maka kenyataan SQL adalah berjaya dan
sebaliknya kenyataan SQL tidak berjaya
• Arahan On Error Goto ErrorMessage atau On Error Resume
Next juga boleh digunakan untuk memerangkap error semasa
“run time”
• Tindakan daripada arahan tersebut boleh disalurkan ke
ErrorMesej (ditentukan sebagai label) atau tidak perlu berbuat
apa-apa. Contohnya :
On Error Goto ErrorMesej
dbConnect.execute “INSERT INTO tblPelajar …”
exit sub
ErrorMesej :
msgbox err.description, “Mesej Error”

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Terbenam (Embedded SQL)

• Boleh guna pembolehubah seperti contoh berikut :

dbConnect.Execute “UpdATE Staff


SET salary = salary + :increment
WHERE staffNo = ‘ “ & SL21 & “';”

Contoh lain :

dbConnect.Execute “UpdATE PrivateOwner


SET address = :address :addressInd
WHERE ownerNo = ‘CO21';”

DEC 2213 Aplikasi Sistem Pangkalan Data

43
SQL Terbenam (Embedded SQL)

• Arahan SQL “embed” dalam aturcara untuk transaksi-transaksi


berikut :

• INSERT
ncrConnect.Execute "INSERT INTO Pelajar (id, nama, kolej,
program) VALUES ('" & Text1.Text & "', '" & Text2.Text & "', '" &
Text3.Text & "', '" & Text4.Text & "')"
If Err.Number = 0 Then
MsgBox "Data telah ditambah .."
Else
MsgBox "Ada problem TAMBAH data ..."
End IF

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Terbenam (Embedded SQL)

• Jadual Pelajar akan dikemaskini untuk pelajar yang


mempunyai id = Text1.Text

• UpdATE
ncrConnect.Execute "UpdATE Pelajar SET " _
& "nama = '" & Text2.Text & "', kolej = '" & Text3.Text & "',
program = '" & Text4.Text & "' , umur = umur + '" & Text5.Text
& "‘ WHERE id = '" & Text1.Text & "'“
If Err.Number = 0 Then
MsgBox "Data telah dikemaskini .."
Else
MsgBox "Ada problem ..."
End If

DEC 2213 Aplikasi Sistem Pangkalan Data

44
SQL Terbenam (Embedded SQL)

• Rekod Pelajar yang mempunyai id = Text1.Text akan dihapuskan

• DELETE
ncrConnect.Execute "DELETE Pelajar WHERE id = '" &
Text1.Text & "'"
If Err.Number = 0 Then
MsgBox "Data telah dihapus .."
adoPrimaryRS.Close
adoPrimaryRS.Open "Select * from Pelajar ORDER BY id",
ncrConnect, adOpenDynamic, adLockPessimistic
If adoPrimaryRS.EOF Then
MsgBox "Rekod tiada ...", vbInformation, MsgSistem
endif

DEC 2213 Aplikasi Sistem Pangkalan Data

SQL Terbenam (Embedded SQL)


• SELECT (SATU JADUAL)

Set rsCarian = New Recordset


nomatrik = InputBox("Sila masukkan no. matrik", "Carian ikut no.
matrik")
If Len(nomatrik) <> 0 Then
rsCarian.Open "select * from Pelajar WHERE id = '" & nomatrik & "'
ORDER BY id", ncrConnect, adOpenDynamic, adLockPessimistic
If rsCarian.EOF Then
MsgBox "Rekod tidak dijumpai ...", vbExclamation, "Mesej
Sistem"
Else
Text1.Text = rsCarian("id")
Text2.Text = rsCarian("nama")
Text3.Text = rsCarian("kolej")
Text4.Text = rsCarian("program")
MsgBox "Rekod dijumpai ...", vbInformation, "Mesej Sistem"
rsCarian.Close
End If DEC 2213 Aplikasi Sistem Pangkalan Data
End If

45
SQL Terbenam (Embedded SQL)

• SELECT (MULTI JADUAL)

txtSQL = "Select Pelajar.*, DaftarKursus.* FROM Pelajar RIGHT


OUTER JOIN DaftarKursus ON Pelajar.id = DaftarKursus.id
WHERE Pelajar.id = '" & Val(nomatrik) & "' ORDER BY Pelajar.id"

Set rsCarian = New Recordset


nomatrik = InputBox("Sila masukkan no. matrik", "Carian ikut
no. matrik")
If Len(nomatrik) <> 0 Then
rsCarian.Open txtSQL, ncrConnect, adOpenDynamic,
adLockPessimistic

Set DataGrid1.DataSource = rsCarian

DEC 2213 Aplikasi Sistem Pangkalan Data

Direct Connect vs. ODBC

• Capaian terus kepada p/d selalunya menggunakan Data Control


(VB) atau “Native Connection” (Power Builder, Oracle, …)
yang telah sedia ada dalam Aturcara.

• Kaedah ini lebih baik dari segi capaian data kerana data dicapai
dan dimanipulasi secara terus

• Open Database Connectivity (ODBC) adalah antaramuka piawai


yang dibina khas untuk membenarkan capaian kepada mana-
mana p/d melalui aturcara.

• Ia telah menjadi de facto untuk capaian ke p/d tanpa


mengambilkira “target database” p/d tertentu.

DEC 2213 Aplikasi Sistem Pangkalan Data

46
ODBC – Contoh 1
On Error GoTo ErrMesej
Dim sADOConnect As String, adoPrimaryRS as Recordset

sADOConnect = "Provider=SQLOLEDB.1;Persist Security Info=False;User


ID=sa;Initial Catalog=td3013;"
Set ncrConnect = New Connection
ncrConnect.CursorLocation = adUseClient
ncrConnect.Open sADOConnect

Set adoPrimaryRS = New Recordset


adoPrimaryRS.Open "Select * from Pelajar ORDER BY id", ncrConnect,
adOpenDynamic, adLockPessimistic
If adoPrimaryRS.EOF Then
MsgBox "Rekod tiada ...", vbInformation, MsgSistem
Else
adoPrimaryRS.MoveFirst
Text1.Text = adoPrimaryRS("id")
Text2.Text = adoPrimaryRS("nama")
End If
DEC 2213 Aplikasi Sistem Pangkalan Data

ODBC - Contoh 2
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=MSDataShape;Data
PROVIDER=MSDASQL;dsn=dbTD3013;uid=sa;pwd=;"

Set adoPrimaryRS = New Recordset


adoPrimaryRS.Open "SHAPE {select id,nama,kolej,program,umur from pelajar
Order by id} AS ParentCMD APPEND ({select KodKursus,TrkDaftar from
DaftarKursus Order by TrkDaftar } AS ChildCMD RELATE id TO id) AS
ChildCMD", db, adOpenStatic, adLockOptimistic

Dim oText As TextBox


'Bind the text boxes to the data provider
For Each oText In Me.txtFields
Set oText.DataSource = adoPrimaryRS
Next
Set grdDataGrid.DataSource = adoPrimaryRS("ChildCMD").UnderlyingValue

DEC 2213 Aplikasi Sistem Pangkalan Data

47
Contoh Penggunaan SQL dalam
Visual Basic 6.0

• Sistem Maklumat Pergerakan Staf

DEC 2213 Aplikasi Sistem Pangkalan Data

Contoh Penggunaan SQL dalam


Active Server Pages (ASP)

DEC 2213 Aplikasi Sistem Pangkalan Data

48

Anda mungkin juga menyukai