Anda di halaman 1dari 93

Introduction to Access 2003

SQL

1. Silahkan Anda Pelajari Implementasi Access 2003 ke perintah SQL


2. Setiap Materi bahasan yang diberikan ada pertanyaan yang harus di jawab
3. Soal Lansung Anda Kerjakan masing-masing ada di Halaman:
4. Hal. 27, 32, 37, 40, 61, 73, 76, 79, 85
5. Batas pengumpulan jawaban selama 2 Jam
6. Sesuai waktu yang Anda ikuti di mata kuliah Basis Data
Perjanjian
 ACCESS tidak membedakan huruf besar
atau kecil (case insensitive)
 Semua sama : SELECT, select, Select
 Termasuk Nama Object : SISWA, siswa,
Siswa dianggap sama
 kecuali
 LITERAL menggunakan tanda “…”, tergantung
penulisan: “Ini”, “INI”,”ini” dianggap berbeda
Perjanjian
 String adalah sesuatu yang berada
dalam/diapit tanda petik ganda atau tunggal
 Nama obyek tidak boleh mengandung spasi
 Jika terpaksa menggunakan spasi, maka dapat
menggunakan tanda kurung persegi [ ... ]
 Contoh : [Nama Depan], [Dosen Pembimbing]
 Dalam contoh program, key word (ditulis
sesuai dengan yang tertulis) dicetak dalam
huruf besar (boleh ditulis huruf kecil)
 Contoh : SELECT kolom FROM tabel WHERE a=b
Perjanjian
 String, bilangan dapat digabung dengan
tanda gabung ampersand (&)
 “Nama : “ & nama & “ umur “ & umur
 Setiap perintah SQL harus diakhiri
dengan tanda titik koma (;)
 Kecuali yang dituliskan sebagai string
parameter pada suatu bahasa pemrograman
tertentu, tidak diperlukan tanda titik koma
 ACCESS 2003 juga tidak memerlukan tanda
titik koma
Tabel - Database
 Pada percobaan-percobaan berikut akan
menggunakan DBMS ACCESS 2003
 Nama Database Siswa.mdb
 Nama-nama Tabel
 Siswa  Data Master
 Dosen  Data Master
 TA  Data Transaksi
 Jurusan  Data Master
 Dual  Dummy Table
Konsep: ERD
1
1 Sekjur
Jurusan
Kode
1 1
Kajur
1 Jurusan 1

Jurusan Jurusan
Siswa Dosen
NIP
Nama Alamat N N
Nama

NRP A
Perwalian WALI
SISW
Siswa N 1 Dosen
G Gaji
BI IN
Kelas M
BI N M IM
B
NG MB
AN TA PE N
Lahir Umur 1 Alamat
Atasan
Judul
Implementasi: Tabel
Pendahuluan
 SQL - Standard Database Relasi
 SQL  Structured Query Language
 SEQUEL  Structured English QUEry
Language
 Perintah untuk operasi Database dalam
bentuk
 Berupa satu perintah tunggal untuk satu
operasi yang ditulis dalam satu baris
(biasanya) perintah
Sejarah SQL
 Pertama kali dibuat oleh IBM, dan digunakan
dalam DB2
 Pertama kali distandardisasi oleh ANSI tahun
1986 (ANSI SQL 1986)
 Diperbaiki dalam standard SQL ’92 kemudian
SQL’99
 Terakhir ???
 ACCESS 2003 menggunakan stadard SQL ’92
DBMS
 DBMS - Database Management System
 Software untuk manajemen database
 Software yang disertakan pembuat
database/pihak lain untuk menjalankan
sistem database
 Secara umum, kalau mengatakan DBMS,
artinya
 File Database
 Database Engine/Server Database
 Perintah-perintah Database (SQL atau lainnya)
 Administrasi Database
 Dan sebagainya
DBMS dan SQL
 SQL dalam DBMS tertentu tidak dapat murni
mengikuti standard SQL karena
 Tergantung DBMS
 Tergantung Kemampuan
 Tergantung Riwayat/Sejarah
 Akibatnya, secara umum
 Sebagian SQL akan standard/sama untuk semua
DBMS
 Sebagian SQL akan berbeda untuk semua DBMS
 Diperlukan pengetahuan tersendiri untuk masing-
masing DBMS
Apakah tidak bisa mengoperasikan
database tanpa SQL ?
 Cara umum untuk menjalankan database
tanpa perintah SQL adalah dengan
menggunakan cara Navigasi Database atau
RecordSet
 Membuka Tabel
 Menentukan Filter
 Mencari
 Mengubah/Menghapus/Menambah data
 Bergeser/berpindah/navigasi pointer/cursor naik
atau turun
 Mendeteksi awal atau akhir record (baris)
 Menutup tabel
 Sering juga dikenal dengan nama Cursor
Mengapa Harus SQL ?
Apa kelebihan SQL ?
 SQL adalah perintah yang berbentuk satu
perintah untuk satu proses/operasi database
 Lebih mudah memberikan perintah dibandingkan
harus mengoperasikan database (misalkan
dengan cara navigasi)
 Memiliki variasi perintah yang cukup banyak
 Memungkinkan melakukan operasi yang sangat
beragam
 Standard, mudah mengoperasikan SQL pada
berbagai jenis DBMS (seharusnya)
 Saat ini, kompatibilitasnya masih terbatas
Pembagian Perintah SQL
 Data Retrieval  Digunakan untuk mengambil/membaca
Database
 SELECT
 DDL (Data Definition Language)  Digunakan untuk
menyatakan suatu Database
 CREATE, ALTER, DROP, RENAME, TRUNCATE
 DML (Data Manipulation Language)  Digunakan untuk
pengubahan Database
 INSERT, UPDATE, DELETE, MERGE
 Transaction Control  Digunakan untuk mengendalikan
Transaksi
 COMMIT, ROLLBACK, SAVEPOINT
 DCL (Data Control Language)  Digunakan untuk
mengendalikan Database
 GRANT, REVOKE
Penulisan SQL SELECT Dasar
 Pembagian/Kemampuan perintah
SELECT
 Proyeksi : Memilih Kolom
 dinyatakan dalam klausa SELECT
 Seleksi : Memilih Baris
 dinyatakan dalam klausa WHERE
 Join : Penggabungan tabel
 dinyatakan klausa FROM
 Format :
 SELECT *|{[DISTINCT] kolom|ekspresi [AS
alias],…} FROM tabel [AS alias]
Proyeksi – Seleksi – Join
Cari NAMA dan ALAMAT dari
Proyeksi SISWA yang JURUSAN ELKA
SISWA
JURUSAN
NRP NAMA ALAMAT KELAS JURUSAN KODE JURUSAN KAJUR SEKJUR
1 ELKA 222 333

123 Eko Malang 3 1


Seleksi
124 Dian Blitar 2 1

JOIN
Klausa SELECT - Proyeksi
 SELECT artinya memilih kolom mana
yang akan ditampilkan (proyeksi)
 Dapat terdiri dari :
 List Kolom
 List Semua Kolom (*)
 Ekspresi (operasi aritmatika)
 Fungsi (memanggil fungsi)
 Alias (AS Nama atau AS [Nama Alias])
 Distinct
Menjalankan Perintah SQL
pada MSACCESS 2003

Klik Dua Kali

Pilih

Tekan
Editor Query

Klik

Ketik perintah
SQL di sini
Memasukkan Perintah SQL

Klik untuk
Menjalankan
Perintah SQL

Ketik perintah
SQL di sini
Klik pada Panah untuk
kembali ke Mode Perintah SQL
Hasil Query

Klik SQL View

Hasil Menjalankan
Perintah SQL
Contoh Klausa SELECT
 List Kolom
 SELECT nama, alamat FROM siswa
 SELECT siswa.nama, dosen.nama FROM
siswa,dosen
 List Semua Kolom (*)
 SELECT * FROM siswa
 SELECT siswa.*, dosen.nama FROM siswa,dosen
 Ekspresi (operasi aritmatika)
 SELECT gaji*0.1+5000 FROM dosen
Contoh Klausa SELECT (lanj.)
 Fungsi (memanggil fungsi)
 SELECT ucase(nama), format(lahir,”DD-MM-YYYY”)
FROM siswa
 SELECT cint((now-lahir)/365.25) FROM siswa
 Alias (AS Nama atau AS [Nama Alias])
 SELECT nama AS Mahasiswa FROM siswa
 SELECT gaji*0.1 AS bonus FROM dosen
 SELECT nama AS [Dosen Pembimbing] FROM
dosen
 Distinct – menampilkan satu untuk yang sama
 SELECT DISTINCT kelas FROM siswa
Klausa FROM – Tabel/Join
 FROM menunjukkan nama Tabel yang
akan ditampilkan/dioperasikan
 Dapat berupa
 Tabel tunggal
 Join
 Query
 Inline view
 Alias
Contoh Klausa FROM
 Tabel tunggal
 SELECT * FROM siswa
 SELECT * FROM dosen
 Join
 SELECT * FROM siswa, dosen
 Query
 SELECT * FROM qsiswa
 Inline view
 SELECT * FROM (SELECT * FROM siswa)
 Alias
 SELECT * FROM dosen AS d1, dosen AS d2
Contoh Perintah SQL
 Melihat seluruh isi suatu tabel
 SELECT * FROM siswa;
 Melihat hanya sebagian kolom dari suatu tabel
 SELECT nama,alamat FROM siswa;
 Melihat sekaligus melakukan operasi pada suatu kolom
dan memberikan alias pada suatu kolom
 SELECT nama AS Dosen,gaji,gaji*0.10 AS Bonus FROM dosen;
 Melakukan penggabungan dengan suatu literal dan
kolom
 SELECT “Nama : “ & nama FROM siswa;
 Mengambil hanya nilai-nilai yang berbeda/membatasi
hasil yang muncul (semua siswa bekerja pada jurusan
apa saja)
 SELECT DISTINCT jurusan FROM siswa;
Soal/Tugas Genap
 Tampilkan gaji semua dosen dalam
bentuk rupiah
 Contoh
 Nama Gaji
 ANDI Rp. 5000000
 Daftar gaji pada tabel dalam dollar
 Tampilkan Kemungkinan nilai nominal
gaji berapa saja yang dibayarkan
23
Klausa WHERE - Seleksi
 Memilih baris data mana saja yang akan ditampilkan
(seleksi)
 Format :
 SELECT *|{[DISTINCT] kolom|ekspresi [AS alias],…}
FROM table [WHERE kondisi];
 WHERE menyatakan batasan apa saja yang
diberikan
 Kondisi :
 Perbandingan - =, <>, >, <. <=, >=
 Range - IN(…), BETWEEN … AND …
 Boolean - AND, OR, NOT
 NULL - IS NULL, IS NOT NULL
 Kemiripan Like ? Untuk satu huruf, * untuk semua/segala
Contoh Klausa WHERE
 Perbandingan - =, <>, >, <. <=, >=
 SELECT * FROM dosen WHERE
nama=“Joko”
 SELECT * FROM dosen WHERE gaji>200
 Range - IN(…), BETWEEN … AND …
 SELECT * FROM siswa WHERE kelas
BETWEEN 2 AND 3
 Boolean - AND, OR, NOT
 SELECT * FROM data WHERE a=10 AND
b=20
Contoh Klausa WHERE (lanj.)
 NULL - IS NULL, IS NOT NULL
 SELECT * FROM dosen WHERE atasan IS NULL

 Kemiripan LIKE ? Untuk satu huruf, * untuk


semua/segala
 SELECT * FROM siswa WHERE nama LIKE "?ntok Maringis"
 SELECT * FROM siswa WHERE nama LIKE “B*”
 SELECT * FROM siswa WHERE nama LIKE “?A*”
Soal/Tugas - Genap
 Tampilkan daftar siswa kelas 2 dan 3
 Cari daftar mahasiswa yang memiliki
kata wati pada namanya dan tampilkan
hanya nama dan alamatnya
Klausa ORDER BY
 Menyatakan hasil akan diurutkan
menurut kolom mana (bisa lebih dari
satu kolom)
 ASC (atau tidak disebutkan/default)
menyatakan urutan naik
 DESC menyatakan urutan turun
 Format :
 SELECT *|{[DISTINCT] kolom|ekspresi [AS
alias],…} FROM table [WHERE kondisi]
[ORDER BY kolom [ASC|DESC]];
Contoh Perintah SQL
 Membaca data semua siswa dengan kelas 3
 SELECT * FROM siswa WHERE kelas=3;
 Membaca data lengkap siswa dengan nama Dimas
Ananto
 SELECT * FROM siswa WHERE nama="Dimas Ananto";
 Membaca dosen yang memiliki gaji >= 200 dollar
 SELECT * FROM dosen WHERE gaji>=200;
 Membaca data dosen memiliki gaji dari 100 sampai
200 dollar
 SELECT * FROM dosen WHERE gaji BETWEEN 100 AND 200;
 Membaca data siswa yang memiliki huruf kedua dari
nama adalah ‘D’, dan urutkan berdasarkan nama
dengan urutan menurun
 SELECT * FROM siswa WHERE nama like "?D*“ ORDER BY
nama DESC;
Fungsi Single-Row
 Input fungsi dari satu baris/record, dan
menghasilkan satu per baris
 Input banyak baris, menghasilkan banyak
baris yang sama
 Mengolah data items
 Dapat menerima argumen dan menghasilkan satu
nilai
 Mengeluarkan nilai untuk setiap baris data
 Dapat mengubah tipe data
 Dapat dalam bentuk bersarang (nested)
 Dapat menerima argumen berupa data kolom
atau suatu ekspresi
Contoh Fungsi Single-row
 Karakter (lcase, ucase, initcap, concat, instr)
 SELECT lcase(nama) FROM dosen;
 Bilangan (cint, int, mod)
 SELECT gaji,cint(gaji/100) FROM dosen;
 Tanggal (now, date, time, add_months, round,
trunc)
 SELECT now,now+1 AS besok FROM dual;
 Konversi implisit, atau eksplisit (val, cdate, cstr)
 SELECT format(date,"dd-mm-yyyy") FROM dual;
Soal/Tugas-Genap
 Tampilkan tanggal 1 minggu kemudian
 Tampilkan Nama dan Tanggal Lahir
dengan format DD-MM-YYYY dari siswa
yang tidak memiliki dosen wali
Fungsi Multi-Row
 Melakukan operasi pada sekelompok
baris data untuk menghasilkan sebuah
data
 Input fungsi dari banyak baris,
menghasilkan satu atau banyak baris
(Gouping, Fungsi Agregat)
Contoh Fungsi Multi-row
 count(*)
 count(nama_kolom)
 Sum(nama_kolom)
 Min(nama_kolom)
 max(nama_kolom)
 avg(nama_kolom)
Soal/Tugas-Genap
 Hitung jumlah seluruh siswa
 Hitung jumlah pegawai yang tidak
memiliki atasan
 Hitung total gaji dosen dalam rupiah
 Berapa gaji terendah, gaji tertinggi dan
rata-rata gaji dosen
 Hitung jumlah siswa tiap jurusan
 Hitung total gaji dosen tiap jurusan
Menggabungkan Tabel (Join)
 Alasan
 Sering diperlukan melakukan beberapa
operasi database untuk mendapatkan
suatu informasi yang diinginkan
 Perintah SQL dibatasi hanya berupa satu
perintah/operasi saja untuk mendapatkan
suatu hasil yang diinginkan
 Tidak dapat menggunakan beberapa
perintah/operasi sekaligus
 Diperlukan cara untuk menggabungkan
beberapa perintah/operasi menjadi satu
perintah/operasi tunggal
Contoh Alasan Join
 Pertanyaan
 Siapa nama dosen wali dari siswa yang namanya
Yuliwati
 Jawab
 Cari Dosen Wali Yuliwati dari tabel Siswa
 SELECT [dosen wali] FROM siswa WHERE nama=
“Yuliwati”
 Ternyata informasi Dosen Wali dari tabel Siswa
masih dalam bentuk Kode NIP=1235
 Cari mama Dosen Wali pada tabel Dosen
menggunakan kunci pencarian NIP
 SELECT nama FROM dosen WHERE NIP=1235
Contoh Alasan Join (lanj.)
 Dengan menggunakan join, pertanyaan
sebelumnya dapat dicari dengan sekali
perintah/proses saja
 Cari nama dosen wali siswa dari tabel
siswa sekaligus tabel dosen, yang nama
siswa=“Yuliwati” dan kode dosen wali
siswa = kode NIP dari dosen
 SELECT s.Nama as Siswa, d.Nama as Wali
FROM siswa as s, dosen as d WHERE
s.nama=“Yuliwati” AND s.wali=d.nip
Join (lanjutan)
 Kegunaan :
 Digunakan untuk menampilkan dari banyak
tabel
 Mengkombinasikan seluruh kemungkinan
data antar banyak tabel
 Mendapatkan informasi yang tersimpan
pada tabel lain (melakukan relasi antara
satu tabel dengan tabel lainnya)
Jenis Join
 Cross/kartesian join
 inner/equi join
 natural join
 join using
 non equi join
 outer join
 left outer join
 right outer join
 full outer join
 ACCESS 2003 tidak memiliki Full Outer Join
 self join
Kartesian/Cross Join
 Digunakan untuk mendapatkan
berbagai kemungkinan kombinasi
 Hasil Join
 Kolom berupakan gabungan dari semua
tabel yang di-join
 Baris merupakan semua kombinasi (jumlah
perkalian) dari semua baris yang di-join
 Contoh
 SELECT * FROM siswa, dosen
Contoh : Cross Join

 SELECT * FROM A, B
 Kolom dijadikan satu antara A dan B
 Baris data dikombinasikan (4x4=16)
Inner/Equi Join
 Digunakan untuk mendapatkan informasi
dari beberapa tabel berdasar relasi yang
sesuai
 Inner artinya informasi relasi ada pada
setiap tabel
 SELECT * FROM siswa INNER JOIN dosen ON
siswa.wali=dosen.nip
 Equi artinya relasi dinyatakan dengan
bentuk persamaan (sama dengan, =)
 SELECT * FROM siswa, dosen WHERE wali=nip
Contoh : Inner/Equi Join
 SELECT * FROM A INNER JOIN B ON A.X=B.V
 SELECT * FROM A, B WHERE A.X=B.V
 Hasil baris, nilai X yang sama dengan V
Inner/Non Equi Join
 Sama dengan Inner/Equi Join, hanya
menggunakan bentuk pertidak samaan, atau
sering dalam bentuk range
 Inner Join
 SELECT * FROM siswa INNER JOIN dosen ON
siswa. wali>dosen.nip
 Non Equi Join artinya relasi dinyatakan
dengan bentuk pertidaksamaan (>, <, <>,
>=,<=)
 SELECT * FROM nilai,konversi WHERE na>=min
AND na<=max
 SELECT * FROM nilai,konversi WHERE na
BETWEEN min AND max
Natural Join
 none
Join Using
 none
Outer Join
 Digunakan untuk mendapatkan
informasi dari suatu tabel yang data-
nya sesuai dan tidak sesuai
Left Outer Join
 Mencari informasi yang relasi ada pada
ke dua sisi tabel dan yang relasi tabel
yang data pada sisi kiri tidak dijumpai
pada sisi kanan
 Tampilkan data siswa yang memiliki
dosen wali sekaligus yang tidak
 SELECT * FROM siswa LEFT JOIN dosen
ON siswa.wali=dosen.nip
Contoh : Left Outer Join
 SELECT * FROM A LEFT JOIN B ON A.X=B.V
 Seluruh data A ditampilkan dan data B yang
sesuai dengan relasi X=V
 Yang tidak sesuai, kosongkan
Right Outer Join
 Mencari informasi yang relasi ada pada
ke dua sisi tabel dan yang relasi tabel
yang data pada sisi kanan tidak
dijumpai pada sisi kiri
 Tampilkan data dosen yang sebagai
dosen wali dan yang tidak
 SELECT * FROM siswa RIGHT JOIN dosen
ON siswa.wali=dosen.nip;
Contoh : Right Outer Join
 SELECT * FROM A RIGHT JOIN B ON A.X=B.V
 Seluruh data B ditampilkan dan data A yang
sesuai dengan relasi X=V
 Yang tidak sesuai, kosongkan
Full Outer Join
 none
Self Join
 Sama dengan join lainnya, hanya
melibatkan tabel yang sama
 SELECT d.nama as Dosen, a.nama as
Atasan FROM dosen as d, dosen as a
WHERE d.atasan=a.nip
Contoh Join
 Kartesian, untuk mendapatkan seluruh kombinasi data
 SELECT * FROM siswa, dosen;
 Inner, relasi antar tabel dengan nilai data yang sama
tepat
 SELECT * FROM siswa INNER JOIN dosen ON
siswa.wali=dosen.nip
 Nonequijoin, untuk mencari/membandingkan nilai antara
 SELECT * FROM nilai,konversi WHERE na>=min AND na<=max;
 outer join, relasi dengan tabel yang kemungkinan nilai
datanya tidak ada
 SELECT * FROM siswa LEFT JOIN dosen ON
siswa.wali=dosen.nip;
 self join, relasi dengan diri sendiri
 SELECT d.nama as Dosen, a.nama as Atasan FROM dosen as d,
dosen as a WHERE d.atasan=a.nip
Soal/Tugas-Genap
 Tampilkan Nama siswa lengkap dengan
nama Jurusan
 Tampilkan Nama siswa pada Jurusan
“Elektronika” dan “Elektro Industri”
 Tampilkan Nama siswa yang ketua
jusannya “Mamat Darmawan”
Klausa GROUP BY
 Mengoperasikan sekelompok baris data
menjadi bentuk group data
 Fungsi Group (Multi-row Function)
 AVG, COUNT, MAX, MIN, SUM, …
 Format :
 SELECT [kolom,] fungsi_group(kolom),…
FROM tabel [WHERE kondisi] [GROUP BY
kolom] [HAVING kondisi_group] [ORDER
BY kolom];
Aturan Group
 Penggunaan Multi-row Function tidak
harus menggunakan klausa GROUP BY
 Contoh
 SELECT max(kelas) FROM siswa GROUP BY
jurusan
 Boleh
 SELECT count(*) FROM siswa
 SELECT sum(gaji) AS [Total Gaji], min(gaji) AS
[Gaji Terendah], max(gaji) AS [Gaji Tertinggi]
FROM dosen WHERE jurusan=1
Aturan Group (lanjutan)
 Penggunaan Single-row Function bersama-
sama dengan Multi-row Function harus
menggunakan klausa GROUP BY
 List pada GROUP BY sama dengan semua Single-
row Function yang digunakan
 Contoh
 SELECT jurusan,sum(gaji) FROM dosen GROUP BY
jurusan
 Salah
 SELECT kelas,count(*) FROM siswa
Aturan Group (lanjutan)
 Penggunaan klausa GROUP BY harus
menggunakan Multi-row Function
 Contoh
 SELECT count(*) FROM siswa GROUP BY
kelas
 Salah
 SELECT nama FROM siswa GROUP BY
jurusan
Aturan Group (lanjutan)
 Penggunaan klausa GROUP BY tidak
harus menggunakan Single-row
Function
 Contoh
 SELECT wali, count(nama) FROM siswa
GROUP BY wali
 Boleh
 SELECT count(*) FROM siswa GROUP BY
kelas
Klausa HAVING
 Identik dengan klausa WHERE
 Digunakan untuk membatasi jumlah
/memilih baris yang tampil
 Klausa WHERE digunakan pada operasi
Single-row
 Klausa HAVING digunakan pada operasi
Multi-row
Aturan Klausa HAVING
 Penggunaan klausa GROUP BY tidak
harus menggunakan klausa HAVING
 Contoh
 SELECT count(*) FROM siswa GROUP BY
kelas HAVING count(*)>10
 Boleh
 SELECT count(*) FROM siswa GROUP BY
kelas
Aturan Klausa HAVING (lanj.)
 Penggunaan klausa HAVING tidak
harus menggunakan GROUP BY
 Contoh
 SELECT sum(gaji) FROM dosen GROUP BY
jurusan HAVING sum(gaji)>500
 Boleh
 SELECT count(*) FROM siswa HAVING
count(*)>10
Aturan Klausa HAVING (lanj.)
 Seleksi Single-row harus menggunakan
klausa WHERE
 Contoh
 SELECT sum(gaji) FROM dosen GROUP BY
jurusan WHERE jurusan=1
 Salah
 SELECT sum(gaji) FROM pegawai GROUP BY
jurusan HAVING jurusan=1
Aturan Klausa HAVING (lanj.)
 Seleksi Multi-row harus menggunakan
Klausa HAVING
 Contoh
 SELECT sum(gaji) FROM dosen GROUP BY
jurusan HAVING sum(gaji)<500
 Salah
 SELECT sum(gaji) FROM dosen GROUP BY
jurusan WHERE sum(gaji)<500
Contoh Group
 Menghitung jumlah dosen setiap jurusan dan
mengurutkan hasilnya berdasar nomor jurusan
 SELECT Jurusan,count(nip) as Jumlah FROM dosen
GROUP BY jurusan ORDER BY jurusan;
 Menghitung total gaji pegawai dari departemen
nomor 2, 3, dan 4, tetapi hanya menampilkan
yang total setiap jurusannya lebih besar dari 500
dollar
 SELECT Jurusan,sum(sal) as [Total Gaji] FROM dosen
WHERE jurusan IN(2,3,4) GROUP BY jurusan having
sum(sal)>500 ORDER BY jurusan;
Soal/Tugas-Genap
 Tampilkan total gaji dalam rupiah yang
harus dibayarkan pada jurusan
“Elektronika” dan “Teknik Komputer”
 Tampilkan Jumlah siswa tiap Jurusan
lengkap dengan nama Jurusan-nya
Subquery
 Mencari sesuatu yang berasal dari hasil query
lainnya
 Petunjuk
 Subquery diawali dengan kurung buka dan diakhiri
dengan kurung tutup
 Subquery diletakkan pada sisi kanan dari suatu
perbandingan
 Penggunaan order by dalam subquery tidak diperlukan,
kecuali untuk melakukan analisa top-n
 Gunakan operator yang sesuai dengan hasil dari
subquery. Single-row operator dengan single-row
subquery, multiple-row operator dengan multiple-row
subquery
Contoh Subquery
 Siapa saja pegawai yang gajinya lebih besar dari gaji
Adam ? Untuk itu, harus dicari dulu, berapa gaji Adam ?
 SELECT * FROM dosen WHERE gaji>(SELECT gaji FROM dosen
WHERE nama="Permata Sari");
 Hasil subquery harus satu baris, menggunakan
perbandingan
 SELECT * FROM dosen WHERE gaji=(SELECT gaji FROM dosen
WHERE nama="Permata Sari");
 Hasil subquery boleh banyak baris, menggunakan range
 SELECT * FROM dosen WHERE gaji in (SELECT gaji FROM dosen
WHERE jurusan=2)
 Salah, karena operator perbandingan digunakan pada
subquery yang menghasilkan banyak baris
 SELECT * FROM dosen WHERE gaji=(SELECT gaji FROM dosen
WHERE jurusan=2);
Soal/Tugas-Genap
 Tampilkan Nama siswa yang memiliki
satu jurusan dengan siswa yang
bernama “Titik Priyanti”
Inline View
 Digunakan untuk mengantikan list Tabel
menjadi perintah QUERY
 Untuk melakukan operasi yang tidak
berasal dari tabel aslinya
 Menyederhanakan perintah yang rumit
Contoh Inline View
 Membaca data pegawai dengan nomor
departemen>2, yang berasal dari suatu inline
view
 SELECT * FROM (SELECT nama,jurusan FROM dosen)
WHERE jurusan>2
 Melakukan operasi join hasil dari suatu inline view
 SELECT d.*,j.jurusan FROM (SELECT nama,jurusan
FROM dosen WHERE gaji>100) as d,(SELECT
kode,jurusan FROM jurusan WHERE kode>2) as j
WHERE d.jurusan=j.kode
 Melakukan manipulasi data pada suatu inline view
 UPDATE (SELECT nama,gaji FROM dosen WHERE
jurusan=2) SET gaji=100 WHERE gaji=110
Soal/Tugas
 Buat Soal Sendiri minimal 2 Soal ya…
Parameter Value
 Subsitusi Variabel
 Memasukkan suatu nilai parameter tiap kali
menjalankan perintah SQL
 Contoh
 SELECT * FROM dosen WHERE gaji>BatasGaji;
 SELECT Nama, format(lahir,"DD-MM-YYYY") as
[Tanggal Lahir] FROM siswa
WHERE ucase(nama) like "*" & ucase([Masukkan
Nama Siswa :]) & "*"
Menggunakan Operator SET
UNION
 Digunakan untuk menggabungkan hasil
dari lebih dari satu query
 Hasil dari setiap query harus memiliki
kolom yang sama
 UNION - tidak semua (yang kembar
dibuang)
 UNION ALL - semua
Contoh
 Menggabungkan semua hasil dari dosen
yang bekerja pada jurusan 2 dan jurusan 3
 Hasilnya sama dengan perintah
 SELECT * FROM dosen WHERE jurusan IN (2,3)
ORDER BY jurusan
 SELECT * FROM dosen WHERE jurusan=2
UNION ALL
SELECT * FROM dosen WHERE jurusan=3;
Memanipulasi Data
 DML - Data Manipulation Language
 Menambah baris data baru
 Mengubah isi suatu baris data
 Menghapus suatu baris data
 Transaksi adalah kumpulan dari
perintah DML yang membentuk suatu
suatu kerja tertentu
Contoh Operasi DML

 INSERT INTO jurusan (kode,jurusan,kajur,sekjur) VALUES


(8,”Akutansi”,1230,1237);
 INSERT INTO jurusan VALUES (9,”Perpajakan”,1233,1239);
 UPDATE jurusan SET jurusan=“Keuangan” WHERE kode=8;
 DELETE FROM jurusan WHERE kode IN (8,9);
Soal/Tugas-Genap
 Tampilkan data Kelas dari siswa yang
ketua jurusannya bernama “Bromantoro
Diarwanto” dan dosen wali “Guna
Mardi”
 Ubah data kelas dari siswa tersebut
menjadi kelas 4
Membuat dan Mengatur Tabel
 CREATE TABLE nama (
kolom tipe konstrain,
kolom tipe konstrain konstrain,
[Nama Kolom] tipe konstrain,
…,
kolom tipe konstrain,
CONSTRAINT namak konstrain (kolom)
);
Tipe
 BOOLEAN
 INTEGER, LONG, CURRENCY, SINGLE,
DOUBLE atau NUMBER
 CHAR, VARCHAR atau TEXT
 DATE
 MEMO
 VARIANT (default)
Konstrain
 NOT NULL
 PRIMARY KEY
 UNIQUE
 REFERENCES tabel(kolom)
Pengertian Konstrain
 Kegunaan :
 Memberikan aturan pada tingkat table
 Membatasi Manipulasi tertentu pada Tabel
 Menjaga Integritas Data
 Menjaga Validitas Data
 Jenis
 NOT NULL
 UNIQUE
 PRIMARY KEY
 FOREIGN KEY
Penjelasan Konstrain
 NOT NULL
 Suatu kolom harus memiliki nilai tertentu (tidak boleh kosong)
 UNIQUE
 Suatu kolom harus tidak boleh memiliki nilai yang sama (tetapi boleh null)
 …, kolom tipe NOT NULL UNIQUE, …
 …, CONSTRAINT nama_konstrain UNIQUE (kolom), ...
 PRIMARY KEY
 Suatu kolom dinyatakan sebagai kunci utama dari suatu tabel
 Otomatis dianggap UNIQUE dan NOT NULL
 …, kolom tipe NOT NULL PRIMARY KEY, ...
 ..., CONSTRAINT nama_konstrain PRYMARY KEY(kolom), ...
 FOREIGN KEY
 Menyatakan suatu kolom harus sesuai dengan kolom lain dari suatu tabel
 …, kolom tipe REFERENCES tabel(kolom), …
 …, CONSTRAINT nama_k FOREIGN KEY(kolom) REFERENCES tabel(kolom), ...
Perintah Lainnya :
 ALTER TABLE nama_tabel(…)
 DROP TABLE nama_tabel
Contoh Membuat Tabel
CREATE TABLE dosen(
nip varchar(15) not null primary key,
nama varchar(50) not null
);
CREATE TABLE siswa(
nrp varchar(15) not null primary key,
nama varchar(50) not null,
wali varchar(15) references dosen(nip)
);
CREATE INDEX nama_siswa ON siswa(nama);
Indeks
 Suatu tabel khusus yang berisi kolom dengan
data yang telah diurutkan
 Kegunaan
 Mempercepat pencarian
 Pengujian data unik
 Otomatis dibuatkan saat suatu kolom
dianggap sebagai PRIMARY KEY atau UNIQUE
 Format
 CREATE INDEX namaI ON tabel (kolom1, …);

Anda mungkin juga menyukai