STRUKTUR QUERY LANGUAGE (SQL)
SQL
dipublikasikan oleh E.F.
CODD (1970) mengenai
model
relational.
Kemudian pada tahun
1974, D. Chamberlin
dan R.F.
Boyce
mengembangkan bahasa query
untuk memanipulasi dan
mengekstraksi data dari basisdata relational.
Sasaran SQL
a. Menciptakan
basis data dan struktur relasi
b. Melakukan
menajemen data tingkat dasaar
c. Membentuk
query sederhana dan kompleks
d. Melakukan
tugas-tugas dengan seminimal mungkin memakai struktur dan sintaks perintah relatif mudah dipelajari
e. Harus
portabel
Jenis SQL :
1. Interactive
SQL
2. Static
SQL
3. Dynamic
SQL
Subdivisi SQL
1. DDL (Data
Definition Language)
Query-query ini digunakan
untuk mendefinisikan struktur
atau skema basis data
2. DML (Data
Manipulation Language)
Query-query ini digunakan
untuk manajemen data
dalam basis data
3. DCL (
Data Control Language)
Query-query ini berhubungan dengan pengaturan hak akses dan wewenang.
PENGELOMPOKAN STATEMEN SQL
1. Data Definition Language (DDL)
CREATE DATABASE DROP
DATABASE
CREATE TABEL DROP TABEL
CREATE INDEX DROP INDEX
CREATE VIEW DROP VIEW
ALTER TABLE
2. Data Manipulation Language
INSERT, SELECT, UPDATE, DELETE
3. Data Access
GRANT , REVOKE
4. Data Integrity
RECOVER TABLE
5. Auxiliary
SELECT INTO OUTFILE,
LOAD, RENAME TABLE
KASUS DATA DEFINITION LANGUAGE (DDL)
A. CREATE
1. Pembuatan DatabaseNama Database adalah yang dapat mewakili suatu kejadian dapat berupa nama organisasi atau perusahaan.Sintaks : CREATE DATABASE nama_database
Contoh : Buat
database dengan nama PT.ABC
CREATE DATABASE PT.ABC
2. Pembuatan
Tabel
Sintaks : CREATE TABLE
nama_table
( nama_kolom1 tipe_data_kolom1,
nama_kolom2,tipe_data_kolom2,….)
Contoh :
Buat struktur tabel dengan nama tabel MHS dengan data NIM
char(8),
NAMA char(25), ALAMAT char(30)
CREATE TABLE MHS (NIM
char(8) not null,
NAMA char(25) notnull,
ALAMAT char(30) notnull)
3. Pembuatan Index
Sintaks : CREATE [UNIQUE] INDEX nama_index
ON nama_table (nama_kolom) ;
Contoh :
Buat index data
mahasiswa berdasarkan NIM
dengan nama MHSIDX
Dimana NIM tidak boleh sama
CREATE UNIQUE INDEX
MHSIDX ON MHS(NIM)
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
B. DROP (MENGHAPUS)
1. Menghapus Database
Sintaks : DROP
DATABASE nama_db ;
2. Menghapus Tabel
Sintaks : DROP
TABLE nama_table ;
3. Menghapus Index
Sintaks : DROP INDEX
nama_index ;
4. Menhapus View
Sintaks : DROP
VIEW nama_view ;
Contoh :
DROP DATABASE Mahasiswa;
DROP TABLE MHS;
DROP INDEX MHSIDX;
DROP VIEW MHSVIEW;
C. ALTER TABLE (MERUBAH STRUKTUR TABEL)
Sintaks : ALTER TABLE
nama_tabel
ADD nama_kolom jenis_kolom
[FIRST | AFTER nama_kolom]
CHANGE [COLUMN] oldnama newnama
MODIFY nama_kolom jenis kolom, …
DROP nama_kolom
RENAME newnama_tabel
Contoh :
1. Tambahkan kolom
JKEL dengan panjang 1 char pada tabel MHS
ALTER TABLE MHS ADD
JKEL char(1);
2. Ubah panjang kolom
MTKULIAH menjadi 30 char
ALTER TABLE
MKUL MODIFY COLUMN MTKULIAH char(30);
3. Hapus kolom JKEL
dari data table MHS
ALTER TABLE MHS
DROP JKEL;
DATA MANIPULATION LANGUAGE (DML)
1. INSERT
Sintaks : INSERT INTO Nama_tabel [(nama_kolom1,…)]
Contoh :
Masukan data matakuliah
Berkas Akses dengan
kode KK222 dan
besarnya 2
INSERT INTO MKUL VALUES(“KK222”,”Berkas Akses”, 2);
2. UPDATE
Sintaks :
UPDATE nama_tabel
SET nama_kolom =
value_1
WHERE kondisi ;
Contoh :
Ubah alamat menjadi
“Depok” untuk mahasiswa
yang memiliki NPM
“50096487”
UPDATE MHS
SET ALAMAT=”Depok”
WHERE NPM=”50096487”;
3. DELETE
Sintaks :
DELETE FROM nama_table
WHERE kondisi
Contoh :
Hapus data nilai
matakuliah “KK021” bagi
mahasiswa yang
mempunyai NPM “ 10296832”
DELETE FROM NILAI
WHERE NPM=”10296832”
AND KDMK=”KK021”
Tabel dibawah ini untuk mengerjakan Select (tampilan)
dari SQL
4. SELECT
Sintaks : SELECT [DISTINCT | ALL] nama_kolom
FROM nama_tabel
[ WHERE condition ]
[ GROUP BY column_list ]
[HAVING condition ]
[ ORDER BY column_list [ASC | DESC]]
Contoh :
a. Tampilkan semua data mahasiswa
SELECT NIM,NAMA,ALAMAT FROM MAHASISWA;
Atau
SELECT * FROM MAHASISWA;
Maka hasilnya adalah :
b. Tampilkan Mata Kuliah yang SKSnya 2
Select NAMA_MK from matakuliah Where sks = 2
Maka Hasilnya :
c. Tampilkan
semua data nilai
dimana nilai MID
lebih besar sama dengan 60 atau nilai finalnya lebih besar 75.
maka penulisannya :
SELECT * FROM NILAI WHERE MID >= 60 OR FINAL > 75
Hasilnya :
JOIN
1. JOIN atau INNER
JOIN
Menggabungkan
dua tabel dimana
diantara dua tabel
datanya bersesuaian.
2. LEFT JOIN atau LEFT OUTER JOIN
Menggabungkan
dua tabel dimana
diantara dua tabel
datanya bersesuaian dan juga semua record pada tabel
sebelah kiri.
3. RIGHT JOIN atau RIGHT OUTER JOIN
Menggabungkan
dua tabel dimana
diantara dua tabel
datanya bersesuaian dan juga semua record pada tabel
sebelah kanan.
SELECT Nilai.NIM, NAMA_MHS, KD_MK, MID
FROM Nilai INNER JOIN Mahasiswa
ON Nilai.NIM = Mahasiswa.NIM
Hasil :
SELECT Mahasiswa.NIM, NAMA_MHS, KD_MK, MID
FROM Mahasiswa LEFT OUTER JOIN Nilai
ON Nilai.NIM = Mahasiswa.NIM
Hasil :
SELECT Mahasiswa.NIM, NAMA_MHS, KD_MK, MID
FROM Nilai RIGHT OUTER JOIN Mahasiswa
ON Nilai.NIM = Mahasiswa.NIM
Hasil :
DATA ACCESS
1. GRANT
Sintaks :
GRANT
hak_akses ON nama_db TO nama_pemakai
[IDENTIFIED BY] [PASSWORD] ‘Password’
[WITH GRANT OPTION] ;
GRANT hak_akses ON
[nama_db.]nama_tabel
TO nama_pemakai
[IDENTIFIED BY] [PASSWORD] ‘Password’
[WITH GRANT OPTION];
Contoh :
Berikan hak akses kepada Adi untuk menampikan nilai final test pada tabel Nilai.
GRANT SELECT (FINAL) ON NILAI TO ADI
2. REVOKE
Sintaks : REVOKE
hak_akses ON nama_db
FROM nama_pemakai ;
REVOKE hak_akses ON
nama_tabel
FROM nama_pemakai ;
Contoh :
Tarik kembali dari Adi
hak akses untuk menampilkan nilai final test
REVOKE SELECT (FINAL) ON NILAI FROM ADI
DATA INTEGRITY
RECOVER TABLE
Sintaks : RECOVER
TABLE nama_tabel
Contoh :
Kembalikan keadaan data mahasiswa seperti pada saat sebelum terjadi kerusakan
RECOVER TABLE MAHASISWA ;
AUXILIARY
1. SELECT … INTO
OUTFILE ‘filename’
Sintaks ini digunakan untuk mengekspor data dari tabel ke file lain.
Sintaks :
SELECT … INTO OUTFILE ‘Nama File’
[FIELDS | COLUMNS]
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char'] ]
Contoh :
Ubah semua data mahasiswa ke bentuk ASCII dan disimpan ke file teks di directory/home/adi dengan pemisah antar kolom ‘|’
SELECT * FROM MAHASISWA
INTO OUTFILE “/home/adi/teks” FIELDS TERMINATED BY “ ”;
2. LOAD
Sintaks query ini digunakan untuk mengimpor data dari file
lain ke tabel.
Sintaks :
LOAD
DATA INFILE “ nama_path”
INTO TABLE nama_tabel [ nama_kolom] ;
[FIELDS | COLUMNS]
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char'] ]
Contoh :
Memasukkan
data-data dari file
teks yang berada
pada direktori “/home/adi” ke dalam
tabel MHS_2. Dimana
pemisah antara kolom dalam file teks adalah tab (\t) :
LOAD FROM “/home/adi/teks”
INTO MHS_2 FILELDS TERMINATED BY ‘\t’;
3. RENAME TABLE
Sintaks :
RENAME TABLE
OldnamaTabel TO NewNamaTabel
Contoh :
RENAME TABLE MAHASISWA
TO MHS
MENGGUNAKAN FUNGSI AGGREGATE :
1. COUNT
digunakan untuk menghitung jumlah.
Menghitung jumlah record mahasiswa dari tabel MAHASISWA
SELECT COUNT(*) FROM MAHASISWA
2. SUM
digunakan untuk menghitung total dari kolom yang mempunyai tipe data numerik.
3. AVG
digunakan untuk menghitung rata-rata dari data-data dalam sebuah kolom.
SELECT
AVG(FINAL) AS ‘FINAL’
FROM Nilai
4. MIN digunakan untuk menghitung nilai minimal dalam sebuah kolom.
SELECT MIN(FINAL) FROM Nilai
5. MAX diguankan untuk menghitung nilai maksismum
dalam sebuah kolom
SELECT MAX(MID) FROM Nilai
SUBQUERY Adalah subselect yang dapat digunakan di klausa WHERE dan HAVING dipernyataan select luar untuk menghasilkan tabel akhir.
Aturan-aturan untuk membuat subquery, yaitu :
1. Klausa
Order By tidak boleh digunakan di subquery, Order By hanya dapat digunakan di pernyataan Select luar.
2. Klausa
subquery Select harus berisi satu nama kolom tunggal atau ekspresi kecuali untuk subquery-subquery menggunakan kata
kunci EXIST
3. Secara
default nama kolom di subquery mengacu ke nama tabel di klausa FROm dari subquery tersebut.
4. Saat subquery adalah salah satu dua operan dilibatkan di pembandingan, subquery harus muncul disisi kanan
pembandingan
Penggunanaan ANY dan ALL
Jika subquery diawali
kata kunci ALL,
syarat hanya akan bernilai TRUE jika dipenuhi semua nilai yang dihasilkan subquery itu.
Jika subquery diawali kata kunci ANY,
syaratnya akan bernilai TRUE jika
dipenuhi sedikitnya satu nilai yang dihasilkan subquery tersebut.
Penggunanaan EXIST DAN NOT EXIST
EXIST akan mengirim nilai TRUE jika dan hanya jika terdapat sedikitnya satu baris
di tabel hasil
yang dikirim oleh subquery dan EXIST mengirim nilai FALSE jika subquery mengirim tabel kosong.
Untuk NOT EXIST kebalikan dari EXIST.
CONTOH SUBQUERY :
1. Coba ambil
nilai mid dan
final dari mahasiswa
yang bernama Astuti.
SELECT MID, FINAL FROM NILAI WHERE NIM=( SELECT NIM FROM MAHASISWA WHERE NAMA_MHS=‘Astuti’)
2. Ambil nilai kode matakuliah, mid dan final dari mahasiswa yang tinggal di jakarta.
SELECT KD_MK, MID,
FINAL FROM NILAI WHERE
NIM IN(SELECT NIM FROM MAHASISWA WHERE ALAMAT_MHS = ‘Jakarta’)
3. Ambil nama-nama mahasiswa yang mengikuti ujian.
SELECT NAMA FROM MAHASISWA WHERE EXISTS (SELECT NIM FROM NILAI WHERE NILAI.NIM=MAHASISWA.NIM)
4. Ambil nama-nama mahasiswa yang tidak mengikuti ujian.
SELECT NAMA FROM MAHASISWA WHERE NOT EXISTS (SELECT NIM
FROM NILAI WHERE
NILAI.NIM=MAHASISWA.NIM)
Aplikasi yang digunakan sebagai contoh adalah phptriad-mysql front
Dari Address ketik : http://localhost/phpmyadmin
Tampilan password ketik
root dan untuk password ketik password
Tidak ada komentar:
Posting Komentar