Intro SQL Access JUNI2021
Intro SQL Access JUNI2021
SQL
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
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
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
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
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