SQL (STRUCTURED QUERY LANGUAGE) 1. Jenis-jenis deklarasi SQL Deklarasi atau perintah SQL dibagi menjadi DDL, dan DML berdasarkan kepada fungsinya. a. DDL (Data Definition Language) Merupakan perintah-perintah yang berkaitan dengan penciptaan atau penghapusan objek. Di dalam kategori ini terdapat perintah-perintah sebagai berikut : Perintah CREATE TABLE CREATE INDEX ALTER TABLE DROP TABLE Keterangan Membuat tabel Membuat indeks Mengubah atau menyisipkan kolom ke dalam tabel Menghapus tabel dari database b. DML (Data Manipulation Language) Adalah bagian dari SQL yan g digunakan untuk memulihkan dan memanipulasi data. Perintah-perintah ini bertanggung jawab untuk melakukan query dan perubahan yang dilakukan di dalam tabel. Perintah SELECT INSERT DELETE UPDATE Keterangan Memilih atau menampilkan tabel Menyisipkan baris dari tabel Menghapus baris dari tabel Mengubah isi dari kolom (field) pada tabel
2. Tipe-Tipe Data Tipe Bit Int SmallInt TinyInt Decimal atau Numeric Float Real DateTime TimeStamp Char VarChar Text Keterangan Integer dengan nilai 0 atau 1 Nilai integer dengan nilai -2.147.483.648 s/d 2.147.483.647 Nilai integer dengan nilai -32.768 s/d 32.767 Nilai integer dengan nilai -128 s/d 127 Angka dengan akurasi tetap antara -10^38-1 s/d 10^38-1 -1.79E+308 s/d 1.79E+308-3.40E38 s/d 3.40E+38 1 Januari 1753 sampai 31 Desember 9999 kombinasi tanggal dan waktu field tetap dengan ukuran maksimal 8000 byte field tetap dengan ukuran maksimal 8000 byte variabel dengan ukuran hingga 2^31-1 (2.147.483.647) byte 3. Operator Aritmatika Operator aritmetika mempunyai derajat pengerjaan yang berbeda. Urutan pengerjaannya sebagai berikut : Prioritas Operator Keterangan 1 2 3 4 5 * / % + - Perkalian Pembagian Sisa Pembagian (bilangan bulat) Penjumlahan Pengurangan
MATERI 01 OPERASI DASAR SQL 1. Menciptakan Tabel CREATE TABLE nama_tabel( kolom_1 tipe_data([ukuran]), kolom_2 tipe_data([ukuran]),, kolom_3 tipe_data([ukuran]) ); CREATE TABLE mahasiswa ( Nim char(13), Nama char(25), Alamat char(15) ); 2. Memasukkan Data INSERT INTO nama_tabel VALUES ( value_1, value_2,, value_n); INSERT INTO mahasiswa VALUES ( 04.01.53.0010, RENO, SEMARANG ); Pernyataan INSERT memungkinkan untuk memasukkan data pada kolom tertentu saja. INSERT INTO mahasiswa (nim, nama) VALUES ( 04.01.53.0011, BOBI );
Pernyataan INSERT memungkinakan untuk memasukkan data secara sekaligus. INSERT INTO mahasiswa VALUES ( 04.01.53.0015, DONI, SEMARANG ), ( 04.01.53.0016, DIDI, SEMARANG ), ( 04.01.53.0017, RANI, SEMARANG ), ( 04.01.53.0018, DONI, LIA ) ); Note : Untuk memasukkan tipe data yang terformat seperti DATE dan TIME : a. DATE Format : yyyy-mm-dd 1985-04-04 atau 19850404 b. TIME Format : hh:mm:ss 20:00:34 atau 200034
3. Melihat Isi Tabel SELECT * FROM nama_tabel; SELECT * FROM mahasiswa; 4. Mengganti Struktur Tabel Menambah Kolom Baru ALTER TABLE nama_tabel ADD nama_kolom tipe_kolom([ukuran]); Menghapus Kolom ALTER TABLE nama_tabel DROP nama_kolom; Mengubah Tipe Kolom ALTER TABLE nama_tabel MODIFY nama_kolom tipe_data_baru([ukuran]); Mengubah Nama dan Tipe Kolom ALTER TABLE nama_tabel CHANGE nama_kolom_lama nama_kolom_baru tipe_data_baru ([ukuran]); ALTER TABLE mahasiswa ADD jenis_kelamin VARCHAR(1); ALTER TABLE mahasiswa ADD umur INTEGER; ALTER TABLE mahasiswa DROP umur; ALTER TABLE mahasiswa MODIFY jenis_kelamin INTEGER; ALTER TABLE mahasiswa CHANGE jenis_kealamin Kelamin CHAR(1);
5. Mengetahui Struktur Data Tabel SHOW TABLES; DESC nama_tabel; atau DESCRIBE nama_tabel; SHOW TABLES; DESC mahasiswa; atau DESCRIBE mahasiswa; 6. Menghapus Tabel DROP nama_tabel; DROP mahasiswa;
MATERI 02 INPUT DATA 1. Menentukan Kunci Primer Jika bermaksud menyebutkan kunci primer terhadap suatu kolom, maka perlu menyertakan PRIMARY KEY pada pendefinisian kolom. CREATE TABLE kuliah ( Kode char(5) NOT NULL PRIMARY KEY, Nama char(25) NOT NULL, Waktu TIME ); Untuk membuat kunci primer yang tersusun lebih dari satu kolom, pendefinisian PRIMARY KEY dilakukan dengan sedikit berbeda. CREATE TABLE kuliah ( Kode char(5) NOT NULL, Nama char(25) NOT NULL, Waktu TIME, PRIMARY KEY (Kode, Waktu) ); 2. Membuat Nilai Unik(Tidak kembar) CREATE TABLE kuliah ( Kode char(5) NOT NULL PRIMARY KEY, Nama char(25) NOT NULL UNIQUE, Waktu TIME );
3. Memberi Nilai Bawaan CREATE TABLE kuliah ( Kode char(5) NOT NULL PRIMARY KEY, Nama char(25) NOT NULL, Kelas char(5) DEFAULT PAGI, Waktu TIME);
MATERI 03 MEMANIPULASI DATA 1. Mengubah Nilai Kolom Dengan UPDATE UPDATE nama_tabel SET kolom_1= nilai_baru_1, Kolom_2= nilai_baru_2,..., kolom_n= nilai_baru_n [WHERE kondisi] ; UPDATE kuliah SET nama= Pemrograman Web WHERE kode= TI671 ; 2. Menghapus Data Dengan DELETE DELETE FROM nama_tabel [WHERE kondisi]; DELETE FROM kuliah WHERE kode= 12345 ;
MATERI 04 MENAMPILKAN DATA TABEL 1. Menampilkan Semua Kolom dan Semua Baris SELECT * FROM nama_tabel; SELECT * FROM kuliah; 2. Menampilkan Kolom Tertentu SELECT kode, nama FROM kuliah; 3. Memperoleh Data Yang Unik SELECT DISTINCT kelas FROM kuliah; 4. Memilih Baris Tertentu WHERE kondisi; SELECT * FROM kuliah WHERE kelas= PAGI ;
5. Operatol Relasional Adalah operator yang digunakan untuk melakukan pembandingan antara dua buah nilai. Operator Keterangan = Sama dengan > :Lebih dari < Kurang dari >= Lebih dari atau sama dengan <= Kurang dari atau sama dengan <> Tidak sama dengan SELECT * FROM kuliah WHERE kelas<> PAGI ; 6. Operator Boolean a. Operator OR Operator OR digunakan untuk melakukan query dengan kondisi majemuk. kondisi_1 OR kondisi_2 Kondisi 1 Kondisi 2 Keterangan SELECT * FROM kuliah WHERE kelas= PAGI OR nama= OOP ;
b. Operator AND kondisi_1 AND kondisi_2 Kondisi 1 Kondisi 2 Keterangan SELECT * FROM kuliah WHERE kelas= PAGI AND nama= OOP ; c. Operator NOT Operator NOT digunakan untuk membalik nilai. NOT kondisi Ekspresi NOT NOT Keterangan SELECT * FROM kuliah WHERE NOT kelas= PAGI ;
MATERI 05 OPERATOR LAINNYA 1. Operator BETWEEN dan NOT BETWEEN Operator ini digunakan untuk menangani operasi jan gkauan. SELECT * FROM kuliah WHERE kelas BETWEEN 060000 AND 210000 ; 2. Operator IN dan NOT IN Operator ini berguna untuk melakukan pencocokan data dengan salah satu yang ada pada data tabel. SE:LECT * FROM kuliah WHERE nama IN ( OOP, OS, MULTIMEDIA ); 3. Operator LIKE dan NOT LIKE Operator ini bermanfaat untuk mencari data dengan ketentuan yang kurang pasti. Dalam melakukan pencarian dengan operator ini, perlu disebutkan tanda wildcard untuk pencarian. Tanda garis bawah ( _ ) berarti sebuah karakter apa saja. Tanda persen ( % ) berarti cocok dengan nol atau lebih karakter apa saja. SELECT * FROM kuliah WHERE kelas LIKE P_GI ; SELECT * FROM kuliah WHERE nama LIKE Pemrograman% ; 4. Operator IS NULL dan IS NOT NULL Operator ini digunakan ntuk menampilkan record yang mempunyai field bernilai NULL maupun bukan. SELECT * FROM kuliah WHERE kelas IS NULL;
MATERI 06 MENGATUR TAMPILAN DATA 1. Mengurutkan Data dengan ORDER BY SELECT * FROM kuliah ORDER BY kelas; Note : Untuk mengurutkan data secara menurun(descending) atau dari besar ke kecil, maka pada akhir perintah tambahakan DESC. SELECT * FROM kuliah ORDER BY kelas DESC; Pengurutan data juga dapat dilakukan berdasarkan beberapa kolom. SELECT * FROM kuliah ORDER BY kode, kelas; Kolom yang dijadikan sebagai acuan pengurutan data dapat disebutkan bukan dengan nama saja, melainkan dapat juga melalui nomor kolom. SELECT * FROM kuliah ORDER BY 2; 2. Mengelompokkan Data dengan GROUP BY Pada satu tabel, fungsi dari GROUP BY hampir sama dengan ORDER BY ditambah dengan fungsi DISTINCT. SELECT nama, kelas, kode FROM kuliah GROUP BY kelas; 3. Kalusa HAVING Pemakaian klausa HAVING terkait dengan fungsi GROUP BY. Fungsi HAVING yaitu untuk menentukan kondisi bagi GROUP BY. Kelompok yang memenuhi HAVING saja yang akan ditampilkan.
SELECT kelas, kode FROM kuliah GROUP BY kode HAVING kelas<> PAGI ; Perintah di atas merupakan alternatif dari perintah : SELECT kelas, kode FROM kuliah WHERE kelas<> PAGI GROUP BY kelas; 4. Fungsi Agregat Adalah fungsi yang disediakan oleh SQL untuk menghasilkan sebuah nilai berdasarkan sejumlah data. Fungsi Agregat Keterangan AVG Memperoleh nilai rata-rata COUNT Menghitung cacah data MAX Menghasilkan nilai terbesar MIN Menghasilkan nilai terkecil SUM Memperoleh penjumlahan data a. Fungsi AVG Fungsi AVG (berasal dari kata average) berguna untuk memperoleh nilai rata-rata. SELECT AVG(gaji) FROM karyawan; b. Fungsi COUNT Fungsi COUNT berguna untuk melakukan pencacahan terhadap data. SELECT COUNT(gaji) FROM karyawan; c. Fungsi MAX Fungsi MAX berguna untuk memperoleh nilai yang terbesar. SELECT MAX(gaji) FROM karyawan; d. Fungsi MIN Fungsi MIN berguna untuk memperoleh nilai yang terkecil. SELECT MIN(gaji) FROM karyawan;
e. Fungsi SUM Fungsi ini berguna untuk melakukan penjumlahan data. SELECT SUM(gaji) FROM karyawan; 5. Klausa LIMIT Klausa LIMIT bermanfaat untuk membatasi jumlah baris yang dihasilkan oleh suatu query. LIMIT jumlah SELECT nip, nama_peg FROM pegawai LIMIT 10;
MATERI 07 EKSPRESI PADA QUERY 1. Pemakaian Ekspresi pada Kolom Keluaran SELECT nama_peg, 1.2*gaji FROM pegawai; 2. Memberi Nama Lain Terhadap Kolom Keluaran SELECT nama_peg, 1.2*gaji AS gajibaru FROM pegawai; 3. Menambahkan Teks pada baris keluaran Pernyataan SELECT memungkinkan pemakai menambahkan suatu teks pada baris-baris keluaran. SELECT gaji,nama_peg, sebesar,gaji, rupiah FROM pegawai; 4. Pemakaian SELECT tanpa klausa FROM Pemakaian SELECT tanpa FROM berguna untuk mengevaluasi ekspresi tertentu yang tidak ada kaitannya dengan tabel. SELECT 34.5 >= 34.46; 5. Pengonversian Tipe Data Kadangkal diperlukan untuk melakukan konversi data dari satu tipe data ke tipe data yang lain, dikarenakan : jika tidak dikonversi, operasi pembandingan tertentu tidak dapat dilakukan. supaya data bisa ditangani oleh program lain. CAST (nama_kolom AS tipe_data)
SELECT nama, CAST(nilai AS INTEGER) AS NilaiAkhir FROM ujian; 6. Fungsi Nilai SQL menyediakan sejumlah fungsi nilai yang mempunyai ciri pemanggilannya tanpa disertai tanda kurung. Beberapa diantaranya : CURRENT_DATE : menghasilkan tanggal sekarang CURRENT_TIME : menghasilkan waktu sekarang CURRENT_TIMESTAMP : menghasilkan tanggal dan waktu sekarang SELECT nama, CURRENT_DATE - tgl_lahir / 365 AS Usia FROM mahasiswa;
MATERI 08 QUERY ANTAR TABEL 1. Query dengan Dua Buah Tabel SELECT main.id_bin, film.judul, main.peran FROM main, film WHERE main.kode_film=film.kode_film; 2. Menggunakan Alias SELECT alias1.kolom, alias2.kolom FROM tabel1 alias1, tabel2 alias2 WHERE kondisi; SELECT M.id_bin, F.judul, M.peran FROM main M, film F WHERE M.kode_film=F.kode_film; 3. Self Join Merupakan upaya penggabungan dari tabel yang sama. SELECT X.nama, Y.nama FROM mahasiswa X, mahasiswa Y WHERE X.kelamin= P AND Y.kelamin= W ; 4. Operator UNION Operator ini berguna untuk menggabungkan hasil dari dua buah query. SELECT * FROM hewanair UNION [ALL] SELECT * FROM hewandarat;
MATERI 09 OPERATOR JOIN 1. Operator [INNER CROSS] JOIN dan STRAIGHT_JOIN Operator [INNER CROOS] JOIN dan STRAIGHT_JOINberguna untuk malakukan operasi perkalian kartesian. tabela [[INNER CROSS] JOIN STRAIGHT_JOIN] tabelb SELECT * FROM tabel1 CROSS JOIN tabel2; 2. Operator NATURAL JOIN Operator ini akan nmelakukan operasi penggabungan tabel dengan memperlakukan nama-nama kolom yang sama sebagai kolom penghubung antar tabel. SELECT mahasiswa.nama, kuliah.nama FROM mahasiswa NATURAL JOIN kuliah; Identik dengan : SELECT mahasiswa.nama, kuliah.nama FROM mahasiswa, kuliah WHERE mahasiswa.nim=kuliah.nim; 3. Operator [LEFT RIGHT FULL [OUTER]] JOIN LEFT OUTER JOIN : bila baris yang terletak di sebelah kiri operator ini ada yang tidak memiliki pasangan dengan tabel yang terletak di sebelah kanan operator ini, baris ini tetap disertakan dalah hasil penggabungan.
RIGHT OUTER JOIN : bila baris pada tabel yang terletak di sebelah kanan operator ini ada yang tidak memiliki pasangan dengan tabel yang terletak di sebelah kiri operator ini, baris ini tetap disertakan dalam hasil penggabungan. FULL OUTER JOIN : merupakan penggabungan dari LEFT OUTER JOIN dan RIGHT OUTER JOIN.
MATERI 10 SUBQUERY Subquery merupakan bentuk query yang terletak dalam query yang lain. SELECT * FROM pegawai WHERE gaji=(select MAX(gaji) FROM pegawai) 1. Operator [NOT] IN SELECT nama FROM kuliah WHERE nim IN (SELECT DISTINCT nim FROM mahasiswa); 2. Operator [NOT] EXISTS SELECT nama FROM kuliah WHERE EXISTS (SELECT * FROM mahasiswa WHERE nim=kuliah.nim); 3. Operator ANY dan SOME SELECT nama_kolom FROM nama_tabel WHERE nama_kolom operator_relasional ANY (subquery); SELECT nama, gaji FROM pegawai WHERE gaji>any (SELECT gaji FROM pegawai); 4. Operator ALL Operator ALL digunakan untuk melakukan pembandingan dengan subquery. Kondisi dengan ALL menghasilkan nilai benar jika pembandingan menghasilkan benar untuk setiap nilai dalam subquery.
SELECT nama, gaji FROM pegawai WHERE gaji < ALL (SELECT gaji FROM pegawai WHERE depart= Akunting );