950 likes | 1.2k Views
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
E N D
Introduction to Access 2003SQL 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 • 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 Sekjur 1 1 Jurusan Kode 1 Kajur 1 Jurusan 1 1 Jurusan Siswa Jurusan Dosen NIP Nama N Nama Alamat N Perwalian NRP WALI SISWA Dosen Siswa 1 N Gaji Kelas N M TA PEMBIMBING BIMBINGAN N Lahir Umur Alamat Atasan 1 Judul
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 tertendiri 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 SISWA yang JURUSAN ELKA Proyeksi SISWA JURUSAN Seleksi 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
Hasil Query Klik pada Panah untuk kembali ke Mode Perintah SQL 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 • 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
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 • 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 • 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 • 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 Yuliwatidari 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