Pemrograman Visual Basic Client/Server Muhammad Miftakhul Amin, S. Kom.
17
BAB III STRUCTURED QUERY LANGUAGE (SQL) 3.1 Tujuan a. Mahasiswa mampu menggunakan perintah SQL untuk memanipulasi data. b. Mahasiswa mampu mengolah data menggunakan operasi JOIN untuk merelasikan table. 3.2 Materi a. SELECTION QUERY b. ACTION QUERY 3.3 Alat dan Bahan a. PC yang terhubung dalam sebuah jaringan b. MS. SQL Server 2000 c. MS. Visual Basic 6.0 3.4 Teori 3.4.1 Komponen SQL Berdasarkan fungsinya, bahasa basis data (SQL/Query) dibagi menjadi 3 komponen utama, yaitu : 1. DDL (Data Definition Language) DDL adalah bagian dari SQL yang dipergunakan untuk mendefinisikan data dan objek database. Perintah yang tergolong DDL adalah CREATE, ALTER, dan DROP. 2. DML (Data Manipulation Language) DML adalah bagian dari SQL yang dipergunakan untuk memanipulasi data dalam tabel/record-record dari table. Jenis perintah yang tergolong DML adalah SELECT, INSERT, UPDATE, dan DELETE, serta tambahan dari T-SQL (COMMIT dan ROLLBACK). 3. DCL (Data Control Language) DCL adalah bagian dari SQL yang dipergunakan untuk mengontrol hak-hak akses dalam objek database SQL server, jenis perintah ini adalah GRANT, REVOKE, serta tambahan dari T-SQL(DENY). 3.4.2 JOIN Mekanisme join dipergunakan untuk mencari data dari beberapa tabel berdasarkan hubungan logis tabel-tabel tersebut. SQL Server menyediakan beberapa mekanisme join sebagai berikut : 1. Inner Join Merupakan himpunan dalam yaitu hasil gabungan dari dua buah tabel yang saling berelasi untuk semua record yang berpasangan. 2. Full Outer Join FULL JOIN mengembalikan semua baris dari kedua table.
Pemrograman Visual Basic Client/Server Muhammad Miftakhul Amin, S. Kom.
18
3. Left Outer Join Outer Join kiri menghasilkan semua baris dari table di sebelah kiri pernyataan, dan baris-baris bersesuaian dari table sebelah kanan pernyataan. 4. Right Outer Join Ouer Join kanan menghasilkan semua baris dari table di sebelah kanan pernyataan, dan baris-baris yang bersesuaian dari table di sebelah kiri pernyataan. 5. UNION Union dipergunakan untuk menggabungkan dua buah operasi query ke dalam satu buah cursor. 3.4.3 INSERT Perintah INSERT dipergunakan untuk memasukkan data ke dalam tabel. Dengan syntax sebagai berikut : INSERT [ INTO] { table_name WITH ( < table_hint_limited > [ ...n ] ) | view_name | rowset_function_limited } {
[ ( column_list ) ] { VALUES ( { DEFAULT | NULL | expression } [ ,...n] ) | derived_table | execute_statement }
}
Tulis perintah SQL berikut dengan menggunakan Query Analyzer. INSERT INTO rMahasiswa(NPM, Nama, tmpLahir, tglLahir, sex, Alamat, IDJurusan)VALUES('01120054', 'M. Anatasari', 'Lampung', '12/17/1980', 'L', 'Jl. Kepatihan 28 A', 22)
3.4.4 UPDATE Perintah UPDATE dipergunakan untuk memperbaharui data yang ada di table. Dengan syntax sebagai berikut : Syntax UPDATE { table_name WITH ( < table_hint_limited > [ ...n ] ) | view_name | rowset_function_limited } SET { column_name = { expression | DEFAULT | NULL } | @variable = expression | @variable = column = expression } [ ,...n ]
Pemrograman Visual Basic Client/Server Muhammad Miftakhul Amin, S. Kom.
19
{ { [ FROM { < table_source > } [ ,...n ] ] [ WHERE < search_condition > ] } | [ WHERE CURRENT OF { { [ GLOBAL ] cursor_name } | cursor_variable_name } ] } [ OPTION ( < query_hint > [ ,...n ] ) ]
Tulis perintah SQL berikut dengan menggunakan Query Analyzer. UPDATE rMahasiswa SET Nama=’Mergi Ayu Melia Novita’, Sex=’P’ WHERE NPM=’01120054’
3.4.5 DELETE Perintah DELETE dipergunakan untuk menghapus data yang ada di table. Syntaxnya adalah sebagai berikut : Syntax DELETE [ FROM ] { table_name WITH ( < table_hint_limited > [ ...n ] ) | view_name | rowset_function_limited } [ FROM { < table_source > } [ ,...n ] ] [ WHERE { < search_condition > | { [ CURRENT OF { { [ GLOBAL ] cursor_name } | cursor_variable_name } ] } } ] [ OPTION ( < query_hint > [ ,...n ] ) ]
Tulis perintah SQL berikut dengan menggunakan Query Analyzer. DELETE FROM rMahasiswa WHERE NPM=’01120054’
Pemrograman Visual Basic Client/Server Muhammad Miftakhul Amin, S. Kom.
20
3.5 Latihan Pernyataan pada DML dari bahasa SQL juga dikenal dengan istilah query, terdapat dua jenis query yaitu selection query dan action query. Selection query mengambil informasi dari database dan tidak memodifikasinya. Semua selection query diawali dengan pernyataan SELECT. Action Query memodifikasi data pada tabel-tabel database dan diawali dengan pernyataan INSERT, UPDATE atau DELETE. Pernyataan SELECT mempunyai syntax sebagai berikut : SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ]
Untuk mencoba SQL statement di bawah ini jalankan dulu bagian program/utility dari SQL Server Query Analyzer dan aktifkan database DBAkademik anda.
3.5.1
Menjalankan Query Analyzer 1. Start Æ Program Æ Microsof SQL Server Æ Service Manager. 2. Jalankan SQL Query Analyzer, Start Æ Program Æ Microsof SQL Server Æ Query Analyzer. Tentukan alamat server dan User serta password untuk login, kemudian tekan tombol OK. Seperti tampilan di bawah ini :
Gambar 3.1 Window Login ke SQL Server
Pemrograman Visual Basic Client/Server Muhammad Miftakhul Amin, S. Kom.
21
Gambar 3.2 Window SQL Query Analizer 3.5.2
Bekerja dengan SQL di Query Analyzer Untuk menjalankan Query Analyzer dengan menekan tanda seru (!) atau menekan tombol F5. 1. Ketikkan perintah-perintah berikut : SELECT * FROM rMahasiswa
Maka akan menampilkan seluruh data(seluruh field) dari tabel mahasiswa. SELECT NPM,Nama FROM rMahasiswa
Akan menampilkan data NPM dan Nama dari table mahasiswa. Klausa SELECT biasanya diikuti oleh klausa sebagai berikut : Klausa Penjelasan AVG sama dengan COUNT menghitung jumlah record MAX mengetahui nilai maximal MIN mengetahui nilai minimum SUM menghitung jumlah data DISTINCT mengambil hanya satu data dari record kembar TOP mengambil baris teratas AS mengganti caption dari field Contoh : - Menampilkan jumlah mahasiswa di table mahasiswa. SELECT COUNT(*) AS jumlahMHS FROM rMahasiswa -
Menampilkan data 3 teratas dari table mahasiswa SELECT TOP 3 * FROM rMahasiswa
Pemrograman Visual Basic Client/Server Muhammad Miftakhul Amin, S. Kom.
22
2. Menggungakan klausa WHERE Klausa WHERE biasanya diikuti oleh operator sebagai berikut : Operator Penjelasan = sama dengan <>, != tidak sama dengan < kurang dari > lebih besar dari <= kurang dari atau sama dengan >= lebih besar dari atau sama dengan !> tidak lebih besar dari !< tidak kurang dari BETWEEN antara dua nilai yang ditentukan LIKE menyusaikan nilai yang ditentukan IS NULL Nilainya adalah NULL IN nilainya ditentukan dalam sebuah daftar NOT negasi dari sebuah oprator perbandingan AND merangkai criteria pencarian OR memastikan bahwa criteria pencarian adalah ekslusif Contoh : - Menampilkan data mahasiswa yang NPM nya 03030065 SELECT * FROM rMahasiswa WHERE NPM=03030065 -
Menampilkan data mahasiswa selain NPM nya 03030065 SELECT * FROM rMahasiswa WHERE NPM<>03030065
-
Menampilkan data mahasiswa yang mengandung nama budi SELECT * FROM rMahasiswa WHERE Nama Like ‘%budi%’
-
Menampilkan data mahasiswa yang ada di jurusan 12,13 SELECT * FROM rMahasiswa WHERE NPM IN(12,13)
-
Menampilkan data dosen yang NIK nya antara 080505051 sampai 080505054 SELECT * FROM rDosen WHERE NIK BETWEEN '080505051' AND '080505054'
-
Menampilkan data dosen yang gelarnya S. Kom dan berjenis kelamin laki-laki SELECT * FROM rDosen WHERE Nama LIKE '%S. Kom%' AND sex='L'
Pemrograman Visual Basic Client/Server Muhammad Miftakhul Amin, S. Kom.
3.5.3
23
JOIN 1. INNER JOIN - Menampilkan data Jurusan yang ada di seluruh fakultas SELECT rFakultas.Fakultas, rJurusan.Jurusan FROM rFakultas,rJurusan WHERE rFakultas.IDFakultas=rJurusan.IDFakultas AND rFakultas.Fakultas=’STMIK’
Atau dengan perintah SELECT rFakultas.Fakultas, rJurusan.Jurusan FROM rFakultas INNER JOIN rJurusan ON rFakultas.IDFakultas=rJurusan.IDFakultas -
Menampilkan data jurusan yang ada di fakultas STMIK SELECT rFakultas.Fakultas, rJurusan.Jurusan FROM rFakultas INNER JOIN rJurusan ON rFakultas.IDFakultas=rJurusan.IDFakultas AND rFakultas.Fakultas='STMIK'
Atau dengan perintah SELECT rFakultas.Fakultas, rJurusan.Jurusan FROM rFakultas,rJurusan WHERE rFakultas.IDFakultas=rJurusan.IDFakultas AND rFakultas.Fakultas='STMIK' -
Menampilkan data mahasiswa yang ada di Jurusan Manajemen Informatika SELECT rMahasiswa.*, rJurusan.Jurusan FROM rMahasiswa,rJurusan WHERE rMahasiswa.IDJurusan=rJurusan.IDJurusan AND rJurusan.Jurusan='Manajemen Informatika'
Catatan Penting : Perhatikan kunci relasi antar table, karena dua table akan bisa direlasikan jika mempunyai kunci yang sama, dan kunci table mana yang dipilih sebagai penentuan kondisi nilainya.
2. LEFT JOIN - Menampilkan data dosen dan mata kuliah yang diampu SELECT rDosen.NIK, rDosen.Nama, tAmpu.IDMK FROM rDosen LEFT JOIN tAmpu ON rDosen.NIK=tAmpu.NIK -
Menampilkan mahasiswa yang KRS SELECT rMahasiswa.NPM, rMahasiswa.Nama, tKRS.thakademik, tKRS.smtakademik FROM rMahasiswa LEFT JOIN tKRS ON rMahasiswa.NPM=tKRS.NPM ORDER BY rMahasiswa.NPM
Pemrograman Visual Basic Client/Server Muhammad Miftakhul Amin, S. Kom.
24
Akan terlihat bahwa data dari table sebebelah kanan akan diisi dengan NULL karena mahasiswa yang bersangkutan belum KRS, sementara data dari table sebelah kiri akan ditampilkan seluruhnya.
Gambar 3.3 Hasil Perintah Left Join 3. RIGHT JOIN - Menampilkan data mata kuliah yang didistribusikan untuk diampu oleh dosen. SELECT tKRS.thAkademik, tKRS.smtAkademik, rMatakuliah.IDMK, rMatakuliah.NamaMK FROM tKRS RIGHT JOIN rMatakuliah ON tKRS.IDMK=rMataKuliah.IDMK
Akan terlihat bahwa data dari table sebebelah kiri akan diisi dengan NULL karena mata kuliah yang bersangkutan belum didistribusikan, sementara seluruh data dari table sebelah kanan (rMataKuliah) akan ditampilkan seluruhnya.
Gambar 3.4 Hasil Perintah Right Join
Pemrograman Visual Basic Client/Server Muhammad Miftakhul Amin, S. Kom.
25
4. FULL JOIN - Menampilkan seluruh data mata kuliah baik yang telah didistribusikan atau belum. SELECT tKRS.thAkademik, tKRS.smtAkademik, rMatakuliah.IDMK, rMatakuliah.NamaMK FROM tKRS FULL JOIN rMatakuliah ON tKRS.IDMK=rMataKuliah.IDMK
3.5.4
UNION - Menampilkan seluruh data mahasiswa yang telah KRS atau belum. SELECT rMahasiswa.NPM, rMahasiswa.Nama FROM rMahasiswa INNER JOIN tKRS ON rMahasiswa.NPM=tKRS.NPM UNION SELECT rMahasiswa.NPM, rMahasiswa.Nama FROM rMahasiswa FULL JOIN tKRS ON rMahasiswa.NPM=tKRS.NPM ORDER BY rMahasiswa.NPM
3.5.5
SUB QUERY - Menampilkan data seluruh mahasiswa yang ada di Jurusan Manajemen Informatika. SELECT rMahasiswa.* FROM rMahasiswa WHERE rMahasiswa.IDJurusan IN (SELECT IDJurusan FROM rJurusan WHERE Jurusan='Manajemen Informatika')
3.6 Tugas 1. Tampilkan jumlah jurusan yang ada di fakultas STMIK dengan INNER JOIN. 2. Tampilkan jumlah jurusan yang ada di fakultas STMIK dengan SUB QUERY. 3. Tampilkan jumlah jurusan yang ada di fakultas STIE dengan INNER JOIN. 4. Tampilkan jumlah jurusan yang ada du fakultas STIE dengan SUB QUERY. 5. Tampilkan seluruh mahasiswa yang ada di Fakultas SMIK dengan INNER JOIN. 6. Tampilkan seluruh mahasiswa yang ada di Fakultas SMIK dengan SUB QUERY. 7. Tampilkan seluruh data mahasiswa yang ada di Fakultas STIE dengan INNER JOIN.
Pemrograman Visual Basic Client/Server Muhammad Miftakhul Amin, S. Kom.
26
8. Tampilkan seluruh data mahasiswa yang ada di Fakultas STIE dengan SUB QUERY. 9. Tampilkan seluruh data nama mata kuliah, NIK dosen, nama dosen yang yang mengampu mata kuliah dengan LEFT JOIN. 10. Tampilkan seluruh data nama mata kuliah, NIK dosen, nama dosen yang yang mengampu mata kuliah dengan RIGHT JOIN. 11. Tampilkan seluruh data nama mata kuliah, NIK dosen, nama dosen yang yang mengampu mata kuliah dengan FULL JOIN. 12. Tampilkan seluruh data mahasiswa yang sudah KRS.