Introduction to Access 2003 SQL

93
Introduction to Access 2003 SQL Oleh EruP 2007 PENS

description

Introduction to Access 2003 SQL. Oleh EruP 2007 PENS. Perjanjian. ACCESS tidak membedakan huruf besar atau kecil (case insensitive) Semua sama : SELECT, select, Select Termasuk Nama Object : SISWA, siswa, Siswa dianggap sama kecuali - PowerPoint PPT Presentation

Transcript of Introduction to Access 2003 SQL

Page 1: Introduction to Access 2003 SQL

Introduction to Access 2003SQL

Oleh EruP2007PENS

Page 2: Introduction to Access 2003 SQL

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

Page 3: Introduction to Access 2003 SQL

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

Page 4: Introduction to Access 2003 SQL

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

Page 5: Introduction to Access 2003 SQL

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

Page 6: Introduction to Access 2003 SQL

Konsep: ERD

Siswa Dosen

TAN M

PEMBIMBIN

GBIMBINGAN

Judul

PerwalianN 1

WALISISWANRP

Alamat

Umur

Kelas

Nama

Lahir

NamaNIP

Alamat

Gaji

Jurusan

JurusanSiswa

JurusanDosen

NN

1 1

KodeJurusan

Kajur

Sekjur

1

11

1

Atasan

N

1

Page 7: Introduction to Access 2003 SQL

Implementasi: Tabel

Page 8: Introduction to Access 2003 SQL

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

Page 9: Introduction to Access 2003 SQL

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

Page 10: Introduction to Access 2003 SQL

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

Page 11: Introduction to Access 2003 SQL

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 tertendiri untuk

masing-masing DBMS

Page 12: Introduction to Access 2003 SQL

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

Page 13: Introduction to Access 2003 SQL

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

Page 14: Introduction to Access 2003 SQL

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

Page 15: Introduction to Access 2003 SQL

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]

Page 16: Introduction to Access 2003 SQL

Proyeksi – Seleksi – Join

NRP

NAMA

ALAMAT

KELAS

JURUSAN

123 Eko Malang 3 1

124 Dian Blitar 2 1

KODE JURUSAN

KAJUR SEKJUR

1 ELKA 222 333

JOIN

Proyeksi

Seleksi

JURUSANSISWA

Cari NAMA dan ALAMAT dari SISWA yang JURUSAN ELKA

Page 17: Introduction to Access 2003 SQL

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

Page 18: Introduction to Access 2003 SQL

Menjalankan Perintah SQL pada MSACCESS 2003

Pilih

Tekan

Klik Dua Kali

Page 19: Introduction to Access 2003 SQL

Editor Query

Klik

Ketik perintahSQL di sini

Page 20: Introduction to Access 2003 SQL

Memasukkan Perintah SQL

Ketik perintahSQL di sini

Klik untukMenjalankanPerintah SQL

Page 21: Introduction to Access 2003 SQL

Hasil Query

Hasil MenjalankanPerintah SQL

Klik pada Panah untukkembali ke Mode Perintah SQL

Klik SQL View

Page 22: Introduction to Access 2003 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

Page 23: Introduction to Access 2003 SQL

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

Page 24: Introduction to Access 2003 SQL

Klausa FROM – Tabel/Join FROM menunjukkan nama Tabel

yang akan ditampilkan/dioperasikan

Dapat berupa Tabel tunggal Join Query Inline view Alias

Page 25: Introduction to Access 2003 SQL

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

Page 26: Introduction to Access 2003 SQL

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;

Page 27: Introduction to Access 2003 SQL

Soal/Tugas 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

Page 28: Introduction to Access 2003 SQL
Page 29: Introduction to Access 2003 SQL

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

Page 30: Introduction to Access 2003 SQL

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

Page 31: Introduction to Access 2003 SQL

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*”

Page 32: Introduction to Access 2003 SQL

Soal/Tugas

Tampilkan daftar siswa kelas 2 dan 3

Cari daftar mahasiswa yang memiliki kata wati pada namanya dan tampilkan hanya nama dan alamatnya

Page 33: Introduction to Access 2003 SQL

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]];

Page 34: Introduction to Access 2003 SQL

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;

Page 35: Introduction to Access 2003 SQL

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

Page 36: Introduction to Access 2003 SQL

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;

Page 37: Introduction to Access 2003 SQL

Soal/Tugas

Tampilkan tanggal 1 minggu kemudian

Tampilkan Nama dan Tanggal Lahir dengan format DD-MM-YYYY dari siswa yang tidak memiliki dosen wali

Page 38: Introduction to Access 2003 SQL

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)

Page 39: Introduction to Access 2003 SQL

Contoh Fungsi Multi-row

count(*) count(nama_kolom) Sum(nama_kolom) Min(nama_kolom) max(nama_kolom) avg(nama_kolom)

Page 40: Introduction to Access 2003 SQL

Soal/Tugas 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

Page 41: Introduction to Access 2003 SQL

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

Page 42: Introduction to Access 2003 SQL

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

Page 43: Introduction to Access 2003 SQL

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

Page 44: Introduction to Access 2003 SQL

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)

Page 45: Introduction to Access 2003 SQL

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

Page 46: Introduction to Access 2003 SQL

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

Page 47: Introduction to Access 2003 SQL

Contoh : Cross Join

SELECT * FROM A, B Kolom dijadikan satu antara A dan B Baris data dikombinasikan (4x4=16)

Page 48: Introduction to Access 2003 SQL

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

Page 49: Introduction to Access 2003 SQL

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

Page 50: Introduction to Access 2003 SQL

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

Page 51: Introduction to Access 2003 SQL

Natural Join

none

Page 52: Introduction to Access 2003 SQL

Join Using

none

Page 53: Introduction to Access 2003 SQL

Outer Join

Digunakan untuk mendapatkan informasi dari suatu tabel yang data-nya sesuai dan tidak sesuai

Page 54: Introduction to Access 2003 SQL

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

Page 55: Introduction to Access 2003 SQL

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

Page 56: Introduction to Access 2003 SQL

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;

Page 57: Introduction to Access 2003 SQL

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

Page 58: Introduction to Access 2003 SQL

Full Outer Join

none

Page 59: Introduction to Access 2003 SQL

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

Page 60: Introduction to Access 2003 SQL

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

Page 61: Introduction to Access 2003 SQL

Soal/Tugas

Tampilkan Nama siswa lengkap dengan nama Jurusan

Tampilkan Nama siswa pada Jurusan “Elektronika” dan “Elektro Industri”

Tampilkan Nama siswa yang ketua jusannya “Mamat Darmawan”

Page 62: Introduction to Access 2003 SQL

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];

Page 63: Introduction to Access 2003 SQL

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

Page 64: Introduction to Access 2003 SQL

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

Page 65: Introduction to Access 2003 SQL

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

Page 66: Introduction to Access 2003 SQL

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

Page 67: Introduction to Access 2003 SQL

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

Page 68: Introduction to Access 2003 SQL

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

Page 69: Introduction to Access 2003 SQL

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

Page 70: Introduction to Access 2003 SQL

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

Page 71: Introduction to Access 2003 SQL

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

Page 72: Introduction to Access 2003 SQL

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;

Page 73: Introduction to Access 2003 SQL

Soal/Tugas

Tampilkan total gaji dalam rupiah yang harus dibayarkan pada jurusan “Elektronika” dan “Teknik Komputer”

Tampilkan Jumlah siswa tiap Jurusan lengkap dengan nama Jurusan-nya

Page 74: Introduction to Access 2003 SQL

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

Page 75: Introduction to Access 2003 SQL

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);

Page 76: Introduction to Access 2003 SQL

Soal/Tugas

Tampilkan Nama siswa yang memiliki satu jurusan dengan siswa yang bernama “Titik Priyanti”

Page 77: Introduction to Access 2003 SQL

Inline View

Digunakan untuk mengantikan list Tabel menjadi perintah QUERY

Untuk melakukan operasi yang tidak berasal dari tabel aslinya

Menyederhanakan perintah yang rumit

Page 78: Introduction to Access 2003 SQL

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

Page 79: Introduction to Access 2003 SQL

Soal/Tugas

Page 80: Introduction to Access 2003 SQL

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 :]) & "*"

Page 81: Introduction to Access 2003 SQL

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

Page 82: Introduction to Access 2003 SQL

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;

Page 83: Introduction to Access 2003 SQL

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

Page 84: Introduction to Access 2003 SQL

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);

Page 85: Introduction to Access 2003 SQL

Soal/Tugas

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

Page 86: Introduction to Access 2003 SQL

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));

Page 87: Introduction to Access 2003 SQL

Tipe

BOOLEAN INTEGER, LONG, CURRENCY,

SINGLE, DOUBLE atau NUMBER CHAR, VARCHAR atau TEXT DATE MEMO VARIANT (default)

Page 88: Introduction to Access 2003 SQL

Konstrain

NOT NULL PRIMARY KEY UNIQUE REFERENCES tabel(kolom)

Page 89: Introduction to Access 2003 SQL

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

Page 90: Introduction to Access 2003 SQL

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), ...

Page 91: Introduction to Access 2003 SQL

Perintah Lainnya :

ALTER TABLE nama_tabel(…) DROP TABLE nama_tabel

Page 92: Introduction to Access 2003 SQL

Contoh Membuat TabelCREATE 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);

Page 93: Introduction to Access 2003 SQL

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, …);