Panduan Lengkap SQL: DDL dan DML
Panduan Lengkap SQL: DDL dan DML
Sistem Informasi B
SQL OVERVIEW
A. Definisi SQL
SQL merupakan singkatan dari Structured Query Language. SQL atau juga sering disebut sebagai
query merupakan suatu bahasa (language) yang digunakan untuk mengakses database. SQL
dikenalkan pertama kali dalam IBM pada tahun 1970 dan sebuah standar ISO dan ANSII ditetapkan
untuk SQL. Standar ini tidak tergantung pada mesin yang digunakan (IBM, Microsoft atau Oracle).
Hampir semua software database mengenal atau mengerti SQL. Jadi, perintah SQL pada semua
software database hampir sama. SQL dapat diterapkan pada beberapa software diantaranya adalah:
Dbase IV, Informix, AS-400, Access.
Jenis SQL
1. Interactive; langsung dapat dioperasikan.
2. Embedded; disisipkan ke dalam sebuah program (Cobol, C, Fortran).
B. Komponen-komponen SQL
a. Data Definition Language (DDL):
Digunakan untuk mendefinisikan data dengan menggunakan perintah: create, drop, alter.
b. Data Manipulation Language (DML):
Digunakan untuk memanipulasi data dengan menggunakan perintah: select, insert, update,
delete.
Data Manipulation Language merupakan bagian terpadu bahasa SQL. Perintah-perintahnya dapat
dibuat secara interaktif atau ditempelkan pada sebuah program aplikasi. Pemakai hanya perlu
menentukan 'APA' yang ia inginkan, DBMS menentukan 'BAGAIMANA' cara mendapatkannya.
c. Data Control Language (DCL):
Digunakan untuk mengontrol hak para pemakai data dengan perintah: grant dan revoke
Sebagai tambahan
d. Data Integrity
RECOVER TABLE
Pertemuan 2 ‐ Jeje, SKom, MMSI – Universitas Gunadarma 1
Konsep Sistem Informasi B
e. Auxiliary
UNLOAD, LOAD, RENAME COLUMN
Uraian:
1. CREATE DATABASE
Fungsi: membuat database
Sintaks: CREATE DATABASE nama_db;
2. CREATE TABLE
Fungsi: membuat tabel
Sintaks: CREATE TABLE table_name
(col 1 data type data spec,
col 2 data type data spec,
.
.
PRIMARY KEY (col1,……))
Contoh :
CREATE TABLE PERSONEL
(REGNO CHAR(10) NOT NULL,
NAME CHAR(45) NOT NULL,
ADDRESS CHAR(45),
BIRTH DATE NOT NULL WITH DEFAULT,
PRIMARY KEY (REGNO));
NULL
Spesifikasi NULL, NOT NULL, NOT NULL WITH DEFAULT
NULL:
dapat diinterpretasikan sebagai nilai yang tidak diketahui atau tidak tersedianya suatu nilai.
Null bukan berarti kosong (blank) atau 0 (Nol)
NOT NULL:
pemakai atau program harus memberikan nilai-nilai pada saat memasukkan record
Pada saat membuat tabel, salah satu atribut tersebut di atas dispesifikasikan pada sebuah
kolom.
Pertemuan 2 ‐ Jeje, SKom, MMSI – Universitas Gunadarma 2
Konsep Sistem Informasi B
3. CREATE VIEW
Fungsi: membuat tabel view.
View merupakan bentuk alternatif penyajian data dari satu atau lebih tabel. View dapat berisi
semua atau sebagian kolom yang terdapat pada tabel dimana kolom tersebut didefinisikan.
Tujuan membuat view:
a. Meningkatkan keamanan data
b. Meningkatkan kemandirian data
c. Penyederhanaan bagi end user (data yang sedikit, nama-nama kolom yang baru dan
dapat dibaca dengan lebih baik)
Properti:
a. Tidak terdapatnya data tambahan
b. View mencakup subset kolom dan atau baris
c. View dapat berisikan data dari beberapa tabel dan atau tabel-tabel view lainnya
d. View dapat berisikan perolehan data, misal: nilai rata-rata
e. Manipulasi data melalui view terbatas
Keterangan:
View-name : nama view yang akan dibuat
Column : nama atribut untuk view
Statement : atribut yang dipilih dari tabel basis data
Tabel-name : nama tabel basis data
Contoh :
CREATE VIEW VPERSON (REGNO, NAME) AS
SELECT REGNO, NAME FROM [Link];
4. CREATE INDEX
Fungsi: membuat index
Sintaks: CREATE [UNIQUE] INDEX indexname
ON nama_table (nama_kolom)
Contoh:
Membuat index dengan nama PRSONIDX berdasarkan REGNO dari tabel PERSONEL
Dengan indeks memungkinkan suatu tabel diakses dengan urutan tertentu tanpa harus merubah
urutan fisik dari datanya dan dapat pula diakses secara cepat melalui indeks yang dibuat
berdasar nilai field tertentu. Spesifikasi UNIQUE akan menolak key yang sama dalam file.
5. DROP TABLE
Fungsi: menghapus tabel
Sintaks: DROP TABLE tbname
Contoh: DROP TABLE PERSONEL
Dengan perintah itu obyek lain yang berhubungan dengan tabel tersebut otomatis akan dihapus
atau tidak akan berfungsi seperti:
Pertemuan 2 ‐ Jeje, SKom, MMSI – Universitas Gunadarma 3
Konsep Sistem Informasi B
a. Semua record dalam tabel akan terhapus
b. Index dan view pada tabel akan hilang
c. Deskripsi tabel akan hilang
6. DROP VIEW
Fungsi: menghapus view
Sintaks: DROP VIEW viewname
Contoh: DROP VIEW VPERSON;
7. DROP INDEX
Fungsi: menghapus index
Sintaks: DROP INDEX indexname
Contoh: DROP INDEX PRSONIDX;
8. ALTER
Fungsi: merubah atribut pada suatu tabel
Sintaks: ALTER TABLE tbname
MODIFY (nama_kolom tipe_kolom)
ADD (nama_kolom tipe_kolom [[before, nama_kolom]])
DROP (nama_kolom tipe_kolom)
2. CREATE TABLE P
(Pn Char(6) NOT NULL,
Pname Char(20) NOT NULL,
Color Char(6) NOT NULL,
Weight Smallint NOT NULL);
3. CREATE TABLE SP
(Sn Char(5) NOT NULL,
Pn Char(6) NOT NULL,
QTY INTEGER NOT NULL);
Pertemuan 2 ‐ Jeje, SKom, MMSI – Universitas Gunadarma 4
Konsep Sistem Informasi B
c. Membuat view (CREATE VIEW)
1. Membuat view untuk suplier yang statusnya lebih besar dari 15
CREATE VIEW GOOD_SUPPLIERS
AS SELECT Sn, Status, City FROM S
WHERE Status > 15;
1. INSERT
Fungsi: menambah baris (record) baru
Sintaks: INSERT INTO tbname
(col1, ...) VALUES (value1, ...)
Catatan :
Sintaks tersebut dapat digunakan jika jumlah kolom = jumlah nilai, tetapi jika dalam tabel
semua kolom akan diisi dapat digunakan sintaks berikut ini:
2. UPDATE
Fungsi: merubah record
Sintaks: UPDATE tbname SET field = ekspresi
WHERE kondisi
3. DELETE
Fungsi: menghapus record
Sintaks: DELETE FROM tbname
WHERE kondisi
4. SELECT
Fungsi: menampilkan record
Sintaks: SELECT [DISTINCT] colname FROM tbname
[WHERE kondisi]
[GROUP BY kondisi]
[HAVING kondisi]
[ORDER BY kondisi]
Pertemuan 2 ‐ Jeje, SKom, MMSI – Universitas Gunadarma 5
Konsep Sistem Informasi B
Contoh Kasus DML:
a. Menambah record (INSERT)
INSERT INTO S VALUES ('S1','Smith',20,'London');
INSERT INTO S VALUES ('S2','Jones,10,'Paris');
INSERT INTO S VALUES ('S3','Blake',30,'Paris');
Tabel S, P dan SP isikan dengan data-data sebagai berikut:
Tabel S
Tabel P
Tabel SP
Pertemuan 2 ‐ Jeje, SKom, MMSI – Universitas Gunadarma 6
Konsep Sistem Informasi B
b. Merubah record (UPDATE)
1. Merubah data (record) pada tabel P yang mempunyai nomor part P2, warnanya dirubah
menjadi Kuning dan beratnya ditambah 5
UPDATE P SET Warna = 'Yellow',
Weight = Weight + 5
WHERE Pn = 'P2';
2. Merubah record pada tabel S, statusnya menjadi dua kali status awal untuk supplier yang
bertempat tinggal di kota London
UPDATE S SET Status = 2 * Status
WHERE City = 'London';
3. Menampilkan nomor supplier dan status untuk supplier yang tinggal di Paris
SELECT Sn, Status FROM S
WHERE City ='Paris';
6. Perintah untuk menghindari hasil data yang sama terulang kembali (distinct)
SELECT DISTINCT Pn FROM SP;
7. Menampilkan [Link] dan status bagi supplier yang tinggal di Paris dalam urutan
status menurun
SELECT Sn,Status FROM S
WHERE City = 'Paris'
ORDER BY Status desc;
8. Menampilkan [Link] dari semua part yang dipasok oleh lebih dari seorang supplier
SELECT Pn FROM SP
GROUP BY Pn
HAVING COUNT(*) > 1;
Pertemuan 2 ‐ Jeje, SKom, MMSI – Universitas Gunadarma 7
Konsep Sistem Informasi B
9. Menampilkan semua part yang nomornya dimulai dengan huruf C
SELECT * FROM P
WHERE Pname LIKE 'C%';
3. Menampilkan [Link] dengan nilai status lebih kecil daripada nilai maksimum status
yang ada pada tabel S
SELECT Sn FROM S WHERE Status <
(SELECT MAX(Status) FROM S);
4. Menampilkan nama supplier yang tidak memasok barang dengan nomor part P2
SELECT Sname FROM S WHERE Sn NOT IN
(SELECT Sn FROM SP WHERE Pn = 'P2');
g. Fungsi perhitungan
COUNT : jumlah baris dan kolom
SUM : jumlah nilai dalam kolom
AVG : rata-rata nilai dalam kolom
MAX : nilai terbesar dalam kolom
MIN : nilai terkecil dalam kolom
Pertemuan 2 ‐ Jeje, SKom, MMSI – Universitas Gunadarma 8
Konsep Sistem Informasi B
Untuk SUM dan AVG nilainya harus numerik (INT, SMALLINT, FLOAT). Fungsi-fungsi tersebut
jika dikenakan pada nilai yang NULL maka nilainya akan diabaikan kecuali untuk COUNT(*)
1. Menghitung jumlah supplier
SELECT COUNT(*) FROM S;
atau
SELECT COUNT (Sn) FROM S;
2. Menampilkan nomor part dan total kuantitas pengiriman dari setiap part
SELECT Pn, SUM(QTY) FROM SP
GROUP BY Pn;
4. Menampilkan jumlah pengiriman barang dengan nomor P4 dan dipasok oleh nomor
suppplier S1
SELECT COUNT(*) FROM SP
WHERE Pn = 'P4' AND Sn = 'S1';
1. GRANT
Fungsi: digunakan untuk memberikan izin akses kepada user
Sintaks: GRANT privileges ON tbname TO user
Contoh:
GRANT SELECT ON CLUB TO PUBLIC;
GRANT SELECT, INSERT, UPDATE, DELETE ON CLUB TO USER01;
2. REVOKE
Fungsi: digunakan untuk mencabut izin akses kepada user
Sintaks: REVOKE privileges ON tbname FROM user
Contoh :
REVOKE INSERT, UPDATE, DELETE ON CLUB FROM USER01;
REVOKE ALL ON CLUB FROM PUBLIC;
Contoh-contoh Lainnya:
Kasus Data Definition Language (DDL)
Struktur tabel
MHS (npm char(8), nama char(25), alamat char(30))
MKUL (kdmk char(5), mtkul char(25), sks smallint))
NILAI (npm char(8), kdmk char(5), mid smallint, final smallint)
Pertemuan 2 ‐ Jeje, SKom, MMSI – Universitas Gunadarma 9
Konsep Sistem Informasi B
1. Pembuatan tabel
CREATE TABLE MHS (npm char(8) notnull, nama char(25) notnull, alamat char(30) notnull);
CREATE TABLE MKUL (kdmk char(5) notnull, mtkuliah char(25) notnull, sks smallint notnull);
CREATE TABLE NILAI (npm char(8) notnull, kdmk char(5) notnull, mid smallint, final smallint);
Catatan:
Diumpamakan sudah terbentuk tiga (3) buah tabel dengan rincian sbb:
Tabel MHS
NPM NAMA ALAMAT
10296832 Nurhayati Jakarta
10296126 Astuti Jakarta
31296500 Budi Depok
41296525 Prananingrum Bogor
50096487 Pipit Bekasi
21196353 Quraish Bogor
Tabel MKUL
KDMK MTKULIAH SKS
KK021 P. Basis Data 2
KD132 SIM 3
KU122 Pancasila 2
Tabel NILAI
NPM KDMK MID FINAL
10296832 KK021 60 75
10296126 KD132 70 90
31296500 KK021 55 40
41296525 KU122 90 80
21196353 KU122 75 75
50095487 KD132 80 0
10296832 KD132 40 30
2. Pembuatan index
Sintaks: CREATE [UNIQUE] INDEX nama_index ON nama_tabel (nama_kolom);
Contoh:
Buat index dengan nama MHSIN berdasarkan NPM dari tabel MHS!
CREATE UNIQUE INDEX MHSIN ON MHS(NPM);
Hasil :
MHSIN
NPM NAMA ALAMAT
10296126 Astuti Jakarta
10296832 Nurhayati Jakarta
21196353 Quraish Bogor
31296500 Budi Depok
41296525 Prananingrum Bogor
50096487 Pipit Bekasi
Pertemuan 2 ‐ Jeje, SKom, MMSI – Universitas Gunadarma 10
Konsep Sistem Informasi B
3. Pembuatan view
Sintaks: CREATE VIEW nama_view [(nama_kolom1, …, …)] AS SELECT statement [WITH
CHECK OPTION];
Contoh:
Buat view dengan nama MHSVIEW yang berisi semua data mahasiswa!
CREATE VIEW MHSVIEW AS SELECT * FROM MHS;
4. Menghapus database/tabel/index/view
Sintaks : DROP DATABASE nama_db
DROP TABLE nama_tabel
DROP INDEX nama_index
DROP VIEW nama_view
Contoh :
Menghapus tabel MHS:
DROP TABLE MHS;
Contoh :
a. Tambahkan kolom JKEL pada tabel MHS!
ALTER TABLE MHS ADD(JKEL char(1));
Hasil:
MHS
NPM NAMA ALAMAT JKEL
10296832 Nurhayati Jakarta
10296126 Astuti Jakarta
31296500 Budi Depok
41296525 Prananingrum Bogor
50096487 Pipit Bekasi
21196353 Quraish Bogor
Pertemuan 2 ‐ Jeje, SKom, MMSI – Universitas Gunadarma 11
Konsep Sistem Informasi B
Kasus Data Manipulation Language (DML)
1. INSERT
Sintaks : INSERT INTO
nama_tabel [(nama_kolom1, …)]
VALUES (data1, …);
Contoh :
Memasukkan data pada tabel MKUL untuk mata kuliah Berkas Akses dengan kode KK222 dan
jumlah SKS 2
Hasil :
MKUL
KDMK MTKULIAH SKS
KK021 P. Basis Data 2
KD132 SIM 3
KU122 Pancasila 2
KK222 Berkas Akses 2
2. UPDATE
Sintaks : UPDATE nama_tabel
SET nama_kolom = ekspresi
WHERE kondisi;
Contoh :
Ubah alamat mahasiswa menjadi depok untuk mahasiswa yang memiliki NPM = “50096487”!
UPDATE MHS SET ALAMAT=”Depok”
WHERE NPM=”50096487”;
Hasil:
MHS
NPM NAMA ALAMAT
50096487 Pipit Depok
3. DELETE
Sintaks : DELETE FROM nama_tabel
WHERE kondisi
Contoh :
Hapus nilai mahasiswa yang mempunyai NPM=”10296832” dan KDMK=”KK021”!
DELETE FROM NILAI WHERE NPM=”10296832” AND KDMK=”KK021”;
Pertemuan 2 ‐ Jeje, SKom, MMSI – Universitas Gunadarma 12
Konsep Sistem Informasi B
Hasil:
NILAI
NPM KDMK MID FINAL
10296126 KD132 70 90
31296500 KK021 55 40
41296525 KU122 90 80
21196353 KU122 75 75
50095487 KD132 80 0
10296832 KD132 40 30
4. SELECT
Sintaks : SELECT [DISTINCT] nama_kolom
FROM nama_tabel
[WHERE kondisi]
[GROUP BY nama_kolom]
[HAVING kondisi]
[ORDER BY nama_kolom [ASD/DESC]]
a. Contoh satu tabel (Simple Query)
Menampilkan data
Tampilkan semua data mahasiswa!
SELECT * FROM MHS; atau
SELECT NPM,NAMA,ALAMAT FROM MHS;
Hasil:
MHS
NPM NAMA ALAMAT
10296832 Nurhayati Jakarta
10296126 Astuti Jakarta
31296500 Budi Depok
41296525 Prananingrum Bogor
50096487 Pipit Bekasi
21196353 Quraish Bogor
Mengambil data dari suatu tabel dengan satu atau banyak kondisi
Hasil:
MKUL
MTKULIAH
P. Basis Data
Pancasila
Hasil:
MHS
NAMA
Prananingrum
Pipit
Mengambil data pada suatu tabel dengan hanya menampilkan satu kali saja data
yang sama
Tampilkan alamat mahasiswa, dimana alamat yang sama hanya ditampilkan satu kali saja!
SELECT DISTINCT ALAMAT FROM MHS;
Hasil:
MHS
ALAMAT
Jakarta
Depok
Bogor
Bekasi
Memilih beberapa atau semua data dari suatu tabel untuk diurutkan atau
dikelompokkan
Tampilkan semua data dari tabel MHS, dengan nama terurut dari “Z” ke “A”!
SELECT * FROM MHS ORDER BY NAMA DESC;
Pertemuan 2 ‐ Jeje, SKom, MMSI – Universitas Gunadarma 14
Konsep Sistem Informasi B
Hasil:
MHS
NPM NAMA ALAMAT
21196353 Quraish Bogor
41296525 Prananingrum Bogor
50096487 Pipit Bekasi
10296832 Nurhayati Jakarta
31296500 Budi Depok
10296126 Astuti Jakarta
Tampilkan alamat mahasiswa dan jumlah mahasiswa yang bertempat tinggal di alamat
tersebut!
Hasil:
MHS
ALAMAT COUNT(*)
Jakarta 2
Depok 1
Bogor 2
Bekasi 1
Tampilkan alamat dan jumlah masiswa yang bertempat tinggal pada alamat yang jumlahnya
lebih dari satu!
SELECT ALAMAT, COUNT(*) FROM MHS GROUP BY ALAMAT HAVING COUNT(*) > 1;
Hasil:
MHS
ALAMAT COUNT(*)
Jakarta 2
Bogor 2
Hasil:
NILAI
MAX(MID) MIN(MID)
80 40
Tampilkan rata-rata nilai final test dan jumlah nilai final test dengan KDMK = “KD132”!
SELECT AVG(FINAL), SUM(FINAL) FROM NILAI WHERE KDMK=”KD132”;
Pertemuan 2 ‐ Jeje, SKom, MMSI – Universitas Gunadarma 15
Konsep Sistem Informasi B
Hasil:
NILAI
AVG(FINAL) SUM(FINAL)
40 120
NILAI
KDMK FINAL
KD132 90
KD132 0
KD132 30
Sub Query
SELECT NAMA FROM MHS WHERE NPM IN (SELECT NPM FROM NILAI WHERE MID <= 60);
JOIN
SELECT NAMA FROM MHS, NILAI WHERE [Link] = [Link] AND [Link] <= 60;
Hasil :
MHS
NAMA
Nurhayati
Budi
Quraish
JOIN
SELECT NAMA FROM MHS, NILAI, MKUL WHERE [Link]=”SIM” AND [Link]
= [Link] AND [Link] = [Link];
Hasil:
MHS
NAMA
Astuti
Prananingrum
Pipit
Quraish
Pertemuan 2 ‐ Jeje, SKom, MMSI – Universitas Gunadarma 16
Konsep Sistem Informasi B
Penggunaan Union
Tampilkan NPM mahasiswa yang bernama Budi dan yang memiliki nilai final > 75!
SELECT NPM FROM MHS WHERE NAMA = “Budi” UNION
SELECT NPM FROM NILAI WHERE FINAL > 75;
Hasil:
NPM
31296500
10296126
41296525
1. Grant
Sintaks : - GRANT hak_akses ON nama_db
TO nama_pemakai
[WITH GRANT OPTION]
[AS GRANTOR];
Contoh:
Berikan hak akses kepada Avi untuk menampilkan nilai final test!
GRANT SELECT (FINAL) ON NILAI TO AVI;
2. Revoke
Sintaks : - REVOKE hak_akses ON nama_db
FROM nama_pemakai;
Contoh :
Tarik kembali hak akses untuk menampilkan nilai final test dari Avi!
REVOKE SELECT(FINAL) ON NILAI FROM AVI;
1. RECOVER TABLE
Sintaks : RECOVER TABLE nama_tabel;
Contoh :
Kembalikan keadaan data mahasiswa seperti pada saat sebelum terjadi kerusakan
RECOVER TABLE MHS;
Pertemuan 2 ‐ Jeje, SKom, MMSI – Universitas Gunadarma 17
Konsep Sistem Informasi B
[DELIMITER “char_pemisah”]
SELECT statement;
Contoh :
Merubah semua data mahasiswa ke bentuk ASCII dan disimpan ke file teks di directory
/home/avi
UNLOAD TO “/home/avi/teks”
DELIMITER “|” SELECT * FROM MHS;
2. Load
Sintaks : LOAD FROM “nama_path”
DELIMITER “char_pemisah”
INSERT INTO
nama_tabel [nama_kolom];
Contoh :
Merubah file teks ke tabel MHS_2 di directory /home/avi
LOAD FROM “/home/avi/teks”
DELIMITER “|” INSERT INTO MHS_2;
3. Rename Column
Sintaks : RENAME COLUMN nama_kolom_lama
TO Nama_kolom_baru;
Contoh :
Mengganti kolom ALAMAT yang ada pada tabel MHS menjadi KOTA
RENAME COLUMN [Link] TO KOTA;
Referensi:
[Link]
[Link]
[Link]
Pertemuan 2 ‐ Jeje, SKom, MMSI – Universitas Gunadarma 18