1. Structure Query Language (SQL)
SQL
SQL (baca SEQUEL) pertama kali didefinisikan oleh Chamberlin (IBM Research Laboratory, San
Jose, California). Karena kemudahanya untuk mengakses data, maka SQL cepat menjadi populer,
sehingga banyak DBMS yang memiliki fasilitas SQL untuk mengakses data.
Terdapat berbagai dialek SQL yang berbeda satu dengan yang lain. Pada bab ini akan dibicarakan
dialek SQL yang standard.
Perintah-perintah dalam SQL dapat dikelompokkan menjadi 2 kelompok:
• DDL (Data Definition Language) dan
• DML (Data Manipulation Language)
Diktat Kuliah Basis Data 1-1
2. Structure Query Language (SQL)
1. DDL (Data Definition Language)
membuat DATABASE,TABLE
merubah tabel
membuat index
menghapus tabel dan index
2. DML (Data Manipulation Language)
tambah data
update data
hapus data
query data
Diktat Kuliah Basis Data 1-2
3. Structure Query Language (SQL)
MEMBUAT DATABASE
CREATE DATABASE Nama_database;
Contoh:
CREATE DATABASE DBMahasiswa;
USE DATABASE DBMAHASISWA;
Diktat Kuliah Basis Data 1-3
4. Structure Query Language (SQL)
MEMBUAT TABEL
CREATE TABLE Nama_tabel
([NamaKolom Typedata{NOT NULL}]....)
Contoh:
CREATE TABLE TRANSKRIP
(NO_MHS INTEGER NOT NULL,
NO_MK CHAR(6) NOT NULL,
NILAI SMALLINT);
Create Table MAHASISWA
(NoMHS Integer NOT NULL,
Diktat Kuliah Basis Data 1-4
5. Structure Query Language (SQL)
NamaMHS varchar(30),
TglLahir DATE,
Alamat Varchar(50),
Primary key(NoMHS));
Diktat Kuliah Basis Data 1-5
6. Structure Query Language (SQL)
MERUBAH TABEL
ALTER TABLE Nama_tabel
ADD NamaKolom Typedata
Contoh:
ALTER TABLEMAHASISWA
ADD Alamat char(25);
Diktat Kuliah Basis Data 1-6
7. Structure Query Language (SQL)
MEMBUAT INDEX
CREATE {UNIQUE} INDEX NamaIndex
ON Nama Tabel
UNIQUE Jika nilai pada kolom yang diindex terdapat beberapa nilai yang ditampilkan hanyalah
satu nilai saja
ASC Urutan dari Kecil-Besar (Naik)
DESC Urutan dari Besar-Kecil (Turun)
Default ASC
Contoh:
CREATE INDEX IDXMHS
ON Mahasiswa (NO_MHS)
Diktat Kuliah Basis Data 1-7
8. Structure Query Language (SQL)
MENGHAPUS DATABASE,TABEL & INDEX
DROP DATABASE dbMahasiswa
DROP TABLE Nama_tabel;
DROP INDEX Nama_Index;
MENAMBAH DATA KE TABEL
INSERT INTO Nama_tabel {([Namakolom]...)}
VALUES ([konstan]...)
INSERT INTO Nama_tabel {([Namakolom]...)}
SELECT ... FROM....
Diktat Kuliah Basis Data 1-8
9. Structure Query Language (SQL)
Contoh:
Insert Into Transkrip
(NOMHS, KDMK, NILAI) VALUES (2930,’MSM160’,80)
Insert Into Transkrip
VALUES (2930,’MSM160’, 80)
Insert Into NewTranskrip
Select * From Transkrip
Where KDMK <> ‘MSM 100’
Jumlah kolom dalam insert into = Jumlah kolom dalam SELECT
Type data kolom-kolom dalam Insert Into = tipe data kolom-kolom dalam SELECT
Diktat Kuliah Basis Data 1-9
10. Structure Query Language (SQL)
MENGHAPUS DATA
DELETE FROM NamaTabel
{WHERE Kondisi}
Contoh:
Delete
From transkrip;
Delete
From transkrip
Where NoMhs = 3001;
Diktat Kuliah Basis Data 1-10
11. Structure Query Language (SQL)
MENGUPDATE DATA
UPDATE NamaTabel
SET [Namakolom =[ Ekspresi]]...
{WHERE Kondisi}
Contoh:
UPDATE MataKuliah
Set NamaMK = ‘Program Terstruktur’
Where KdMk = ‘MSM 200’;
UPDATE Transkrip
Set Nilai = Nilai + 10;
Where KDMK = ‘MSM 260’
Diktat Kuliah Basis Data 1-11
12. Structure Query Language (SQL)
QUERY DATA
SELECT {DISTINCT| ALL} [*| [Ekspresikolom]...]
FROM [Nama Tabel]....
{WHERE Kondisi}
{GROUP By [Nama Kolom]...
{HAVING Kondisi}}
{ORDER By [URUTAN]....}
Keterangan:
Setiap perintah SELECT minimal harus ada SELECT dan FROM.
WHERE, GROUP BY, HAVING, ORDER BY bersifat optional (boleh ada, boleh tidak)
Diktat Kuliah Basis Data 1-12
13. Structure Query Language (SQL)
GROUP By harus sesudah WHERE atau FROM,
dan ORDER By harus selalu terakhir.
HAVING hanya dapat digunakan jika ada GROUP By.
Betul/Salah perintah Select berikut ini:
Select ..........
Where ...........
Order by .............
Select....
From..
Having...
Group By....
Diktat Kuliah Basis Data 1-13
14. Structure Query Language (SQL)
Select .....
From..
Order by.......
Group by........
URUTAN PEMROSESAN PERINTAH SELECT
SELECT Pilih Kolom
FROM Dari tabel mana data berasal
WHERE Pilih record yang memenuhi kondisi
GROUP BY Kelompokkan berdasarkan nilai yang sama dari kolom
HAVING Pilih kelompok yang memenuhi kondisi
ORDER BY urutkan baris berdasarkan kolom
Diktat Kuliah Basis Data 1-14
15. Structure Query Language (SQL)
QUERY SEDERHANA
Select *
From mahasiswa;
Select Distinct KdMk
From Transkrip;
PENGGUNAAN WHERE
Diikuti oleh:
Perbandingan sederhana
Kondisi (syarat) yang terhubungkan dengan AND, OR, dan NOT
Operator BETWEEN
Diktat Kuliah Basis Data 1-15
16. Structure Query Language (SQL)
Operator IN
Operator LIKE
Operator IN dengan sub-query
Operator perbandingan dengan sub-query
Operator ANY dan ALL
Operator EXIST
PERBANDINGAN SEDERHANA: menggunakan operator perbandingan
=; < ; >; <=; >=; <> (!=)
Contoh:
Select NOMHS
Diktat Kuliah Basis Data 1-16
17. Structure Query Language (SQL)
From Mahasiswa
Where Kota = ‘Jakarta’
Select NOMHS, NamaMhs
From Mahasiswa
Where Year(TglLahir) = 1990
Where 2011 - year(TglLahir) = 25
Kondisi dengan AND, OR, dan NOT
Contoh:
Diktat Kuliah Basis Data 1-17
18. Structure Query Language (SQL)
Select NoMHS
From MAHASISWA
Where Kota <> ‘Jakarta’
OR JnKel = ‘L’
catatan : operator = pada contoh di atas dapat diganti dengan operator yang lain.
Operator BETWEEN
- Mengecek apakah nilai dari kolom dalam suatu range
- Format: <Namakolom> {NOT} BETWEEN <Nilai1> AND <Nilai2>
Contoh:
Select NOMHS, NAMAMHS
Diktat Kuliah Basis Data 1-18
19. Structure Query Language (SQL)
From Mahasiswa
Where Year(TglLahir) Between 1990 AND 1993
Note:
<kolom> between A AND B ⇔ (<kolom> >= A) AND (<kolom> <= B)
<kolom> NOT Between A AND B ⇔ NOT(<kolom> Between A AND B) ⇔ (<kolom> < A OR
(<kolom> > B)
Operator IN
Select NoMhs, NamaMhs, Kota From Mahasiswa
Where Kota = “Bandung”
OR Kota = “Jakarta”
Diktat Kuliah Basis Data 1-19
20. Structure Query Language (SQL)
OR Kota = “Medan”
OR Kota = “Surabaya”
Dapat diganti dengan menggunakan operator IN, sebagai berikut:
Select NoMhs, NamaMhs, Kota
From Mahasiswa
Where Kota IN (‘Bandung’,’Jakarta’,’Medan’,’Surabaya’)
Operator LIKE
% : Pengganti 0, 1, atau lebih karakter
_ : underscore pengganti satu karakter
Diktat Kuliah Basis Data 1-20
21. Structure Query Language (SQL)
Contoh:
Select NoMhs
From Mahasiswa
Where NamaMhs LIKE ‘%n%’
Contoh Lain:
Nama mata kuliah memuat string ‘ta’ -----NamaMK LIKE ‘%t%a%’
Nama mahasiswa panjangnya 10 huruf ---- NamaMHS LIKE ‘__________’
Nama mahasiswa minimal panjangnya 10 -- NamaMHS Like ‘__________%’
Select NAMA from mahasiswa where nama LIKE ‘_ _ _ _ _ _ _ _ _ _%’
Operator IN dengan sub-query
Diktat Kuliah Basis Data 1-21
22. Structure Query Language (SQL)
Contoh:
SELECT NoMhs, NamaMhs
FROM Mahasiswa
WHERE Kota IN
(SELECT Kota
FROM Mahasiswa
WHERE NoMhs IN (2946, 5280))
SELECT NoMhs, NamaMhs
FROM Mahasiswa
WHERE NoMhs IN
(SELECT NoMhs
FROM Transkrip
Diktat Kuliah Basis Data 1-22
23. Structure Query Language (SQL)
WHERE NoMk = ‘MSM100’)
Operator TETHA dengan sub-query
- Operator tetha dapat digunakan jika sub-query menghasilkan tepat satu nilai
Contoh:
Select NoMhs, NamaMhs
From Mahasiswa
Where Kota =
(Select Kota From Mahasiswa
Where NoMhs = 5830)
Select NoMhs, NamaMhs
Diktat Kuliah Basis Data 1-23
24. Structure Query Language (SQL)
From Mahasiswa
Where Year(TglLahir) < (Select Year(TglLahir)
From Mahasiswa
Where NoMhs = 5830
Soal:
Tampilkan Nomor dan nama mahasiswa yang tahun lahirnya sama dengan tahun lahirnya ‘Budi’,
tetapi Budi tidak muncul dalam hasil.
Operator ANY dan ALL
Diktat Kuliah Basis Data 1-24
25. Structure Query Language (SQL)
Jika Y1,Y2,Y3,...., dan Yn nilai-nilai yang dihasilkan sub-query S, maka:
NamaKolom < ALL (s) ⇔
(NamaKolom < Y1) AND
(NamaKolom < Y2) AND
..............
(NamaKolom < Yn)
Contoh:
Select NoMhs, NamaMhs
From Mahasiswa
Where Year(TglLahir) <= ALL
(Select Year(TglLahir) from Mahasiswa)
Diktat Kuliah Basis Data 1-25
26. Structure Query Language (SQL)
Sedangkan
NamaKolom < ANY (S) ⇔
(NamaKolom < Y1) OR
(NamaKolom < Y2) OR
..............
(NamaKolom < Yn)
Operator EXIST
Digunakan untuk melakukan pengecekan apakah hasil dari suatu ‘correlated nested query’berisi tuple atau
tidak.
EXISTS (Q) : Memberikan nilai return True, jika dalam hasil query Q minimal terdiri dari satu tuple
NOT EXISTS (Q) : Memberikan nilai return TRUE, jika tak satupun tuple yang dihasilkandalam hasil query Q
Select NamaMhs
Diktat Kuliah Basis Data 1-26
27. Structure Query Language (SQL)
From Mahasiswa
Where EXIST
(Select *
From Transkrip
Where NoMhs = Mahasiswa.NoMhs AND
NoMk = ‘MSM160’)
GROUP BY
Mengelompokkan rekord berdasarkan nilai suatu atribut (kolom)
Contoh:
Diktat Kuliah Basis Data 1-27
31. Structure Query Language (SQL)
Select NoMhs
From Transkrip
Group by NoMhs
NoMhs KdMk Nilai
---------------------------------------------------------------------------
2530 MSM100,MSM200,M2M300 90,80,90
2700 MSM100,MSM200 60,80
Hasil akhir:
Diktat Kuliah Basis Data 1-31
32. Structure Query Language (SQL)
NoMhs
--------
2530
2700
HAVING
- Memilih (menyeleksi) kelompok berdasarkan karakteristik dari kelompok
- Selalu diikuti oleh kelompok fungsi dalam SQL:
COUNT - banyaknya nilai suatu kolom
- banyaknya baris dalam tabel
MIN - Nilai terkecil dalam suatu kolom
MAX- Nilai terbesar dalam suatu kolom
Diktat Kuliah Basis Data 1-32
33. Structure Query Language (SQL)
SUM- Nilai total dalam suatu kolom
AVG - Nilai rata-rata dalam suatu kolom
COUNT(*) menghitung jumlah semua baris dalam tabel tanpa menghilangkan duplikasi
COUNT, AVG, SUM dapat menggunakan DISTINCT untuk menghilangkan duplikasi sebelum
fungsi tersebut diberlakukan.
Contoh:
Select COUNT(*)
from Mahasiswa
Select COUNT(distinct NoMhs)
From transkrip
Diktat Kuliah Basis Data 1-33
34. Structure Query Language (SQL)
Where nilai >= 80
Select NoMhs, AVG(Nilai)
From(transkrip)
Group by NoMhs
Having AVG(Nilai) > 80
Diktat Kuliah Basis Data 1-34