Pengaturcaraan SQL
Sejarah SQL
1
Komponen SQL
2
Struktur Asas
Jadual
KTANGANPROJEK PANEL
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
SQL Mudah
SELECT *
FROM ktakademik
• Hasil Output: (Sebuah jadual yang sama seperti
jadual ktakademik)
4
SQL Mudah
SELECT nama
FROM ktakademik;
SQL Mudah
5
SQL Mudah
SQL Mudah
• Hasil Output:
Pensyarah
PM
Tutor
6
SQL Mudah
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
7
SQL Mudah
• Hasil:
NoPekerja Nama gaji_tahun
SQL Mudah
8
SQL Mudah
SQL Mudah
• Hasil Output:
Nama Gaji
Farid 3500
Nasir 5200
Bahar 3200
Samad 3100
9
SQL Mudah
SQL Mudah
Atau
SELECT nama, gaji
FROM ktakademik
WHERE jawatan = ‘Pensyarah’ and gaji
BETWEEN 3500 and 5000;
Hasil Output:
Nama Gaji
Farid 3500
10
SQL Mudah
SQL Mudah
Atau
SELECT nama, jawatan
FROM ktakademik
WHERE jawatan = ‘PM’ or jawatan = ‘Tutor’
Hasil Output:
Nama Jawatan
Nasir PM
Ahmad Tutor
Hashim PM
11
SQL Mudah
SQL Mudah
12
SQL Mudah
SQL Mudah
13
Fungsi Aggregat
Fungsi Aggregat
Fungsi Tujuan
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
15
SQL Mudah
SQL Mudah
16
SQL Mudah
SQL Mudah
• Hasil Output:
Nopanel Count(Nopekerja)
10 2
20 4
30 4
40 2
17
SQL Mudah
SQL Mudah
18
SQL Mudah
SQL Mudah
• Hasil Output:
Nopanel Count(Pekerja)
20 4
30 4
19
SQL Mudah – Nested Query
20
SQL Mudah – Nested Query
• Hasil Output:
nama nopekerja
Ahmad 5698
Naomie 5555
21
SQL Mudah – Nested Query
• Hasil Output:
nama gaji
Farid 3500
Nasir 5200
Bahar 3200
Samad 3100
22
SQL Mudah – Nested Query
• Hasil Output:
Nama Nopekerja
Farid 2205
Mazlena 3550
23
SQL Mudah – Nested Query
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
25
SQL Mudah – Nested Query
• Hasil Output:
Nopekerja Nama gaji
2205 Farid 3500
1006 Nasir 5200
2578 Bahar 3200
4537 Samad 3100
26
SQL Mudah – Nested Query
• Senaraikan nama dan jawatan bagi kakitangan
yang terlibat dengan projek 121
• Hasil Output:
Nama Jawatan
Borhan Pensyarah
Hashim PM
27
SQL Mudah
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
28
SQL Mudah
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
29
SQL Mudah – Algebra Hubungan
SELECT nama
FROM ktakademik
WHERE nopekerja IN
((SELECT noketua FROM panel) UNION (SELECT noketua
FROM
projek));
DEC 2213 Aplikasi Sistem Pangkalan Data
• Hasil Output:
Nama
Naomie
Mazlena
Shafie
Linda
30
SQL Mudah – Algebra Hubungan
• Hasil Output:
Nama
Shafie
31
SQL Mudah – Algebra Hubungan
• Hasil Output:
Nama
Naomie
Mazlena
Linda
32
SQL – Mengemaskini DB
SQL – Mengemaskini DB
33
SQL – Mengemaskini DB
SQL – Mengemaskini DB
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));
SQL – Mengemaskini DB
35
SQL – Mengemaskini DB
SQL – Mengemaskini DB
36
SQL – Mengemaskini DB
Pengaturcaraan SQL
(DDL)
37
Bahasa Takrifan Data (DDL)
• Sintak
38
Mencipta Jadual
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)
39
Mengubah Struktur Jadual
Arahan ALTER
40
Arahan ALTER
Menghapuskan Jadual
• Menghapuskan Jadual
DROP TABLE <namajadual>
• Arahan DROP akan menghapuskan jadual
beserta dengan atributnya.
41
SQL Terbenam (Embedded SQL)
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”
Contoh lain :
43
SQL Terbenam (Embedded SQL)
• 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
• 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
44
SQL Terbenam (Embedded SQL)
• 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
45
SQL Terbenam (Embedded SQL)
• Kaedah ini lebih baik dari segi capaian data kerana data dicapai
dan dimanipulasi secara terus
46
ODBC – Contoh 1
On Error GoTo ErrMesej
Dim sADOConnect As String, adoPrimaryRS as Recordset
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=;"
47
Contoh Penggunaan SQL dalam
Visual Basic 6.0
48