Structured Query
Language
Sejarah
- Tahun 1986, ANSI (American National
Standards
Institute) dan ISO mengumumkan standard SQL, SQL-86
- IBM merilis Systems Application Architecture) SAA-SQL tahun 1987
- Berturut-turut ANSI merilis SQL-89, SQL- 92, dan SQL- 99
SQL (Structured
query language)
- SQL adalah bahasa yang digunakan untuk mengelola database relasional
- SQL adalah bahasa standard untuk sistem manajemen database relasional
- Sistem database yang menggunakan SQL :
- Oracle
- DB2
- Sybase
- MS SQL
- MS Access
- My SQL
Type Data
Dibedakan menjadi :
- Tipe data numerik
semua data bilangan
yang dapat diperhitungkan bukan angka yang bersifat keterangan, mis
jumlah komputer
jenis tipe data
numerik : integer, float, single, double, currency.
2. Tipe data
karakter
semua data huruf,
angka dan tanda baca jenis tipe data
karakter : char, string, text, memo.
3. Tipe data
tanggal
mendefinisikan
waktu
jenis tipe data
waktu : date, datetime, time, timestamp.
4. Tipe data
boolean ; tipe data khusus untuk menyatakan status benar atau
salah, ya atau tidak.
kebanyakan mereka
memiliki perintah tambahan yang proprietary.
Jenis perintah SQL
:
- DDL (Data Definition Language)
- DML (Data Manipulation Language)
- DCL (Data Control Language)
Skema Contoh
Struktur
Dasar
- Select, berkaitan dengan operasi proyeksi
pada
aljabar relasional. Digunakan untuk
mendaftar atribut yang ingin dikeluarkan sebagai hasil query
- From, berkaitan dengan operasi produk
kartesian
(relasi mana yang akan di-scan)
- Where, berkaitan dengan predikat seleksi.
Operasi SELECT
Operasi select
digunakan untuk mengambil sebagian atau seluruh isi
tabel dari suatu basisdata.
Contoh : “Tentukan
nama-nama dari semua cabang bank dalam
relasi loan “
Query-nya :
SELECT
branch-name FROM loan
Operasi WHERE
Klausa where
menspesifikasi kondisi yang harus dipenuhi oleh hasil
query
– Berkaitan
dengan predikat seleksi pada aljabar relasional.
Contoh : “Temukan
semua loan number untuk pinjaman-pinjaman yang
dibuat pada cabang Perryridge
dengan jumlah lebih besar dari
$1200”.
Query-nya ditulis
sebagai berikut :
SELECT
loan-number FROM loan WHERE
branch-name = “Perryridge” and amount >1200;
- Perbandingan dapat dikombinasikan dengan
menggunakan operasi
logika and, or, dan not.
- Operand hubungan logika dapat menggunakan
operasi
perbandingan <,<=,>,>=,=, dan <>
- Contoh:
SELECT
loan-number FROM loan WHERE
amount <=100000 and amount >=90000;
- SQL juga memasukkan perintah between
- untuk menentukan apakah suatu nilai lebih kecil daripada atau sama dengan suatu nilai lain dan lebih besar daripada atau sama dengan suatu nilai lain.
- Contoh : “jika diinginkan menemukan loan-number
yang jumlah
pinjamannya antara $90000 dan $100000”
Query ditulis
sebagai berikut :
SELECT
loan-number FROM loan WHERE
amount between 90000 and 100000
- Klausa from menunjukkan daftar relasi
yang dilibatkan
dalam query
– Berkaitan
dengan operasi produk kartesian pada aljabar
relasional
- Contoh: Produk Kartesian dari borrower x loan
select * from
borrower, loan;
Contoh query
: “Untuk semua customer yang mempunyai sebuah pinjaman dari
bank, temukan nama dan loan number mereka”.
Dalam SQL ditulis :
SELECT distinct
customer-name,borrower.loan-number FROM borrower,
loan WHERE
borrower.loan-number = loan.loan-number
Contoh:
“Tampilkan nama,loan number and loan amount dari semua customer yang
memiliki pinjaman di cabang Perryridge”
select
customer-name,
borrower.loan-number, amount from borrower,
loan where
borrower.loan-number =
loan.loan-number and
branch-name = ‘Perryridge’
DDL (data definition
language)
Merupakan kelompok
perintah yang digunakan untuk melakukan pendefinisian tabel.
Kelompok perintah
DDL dapat membuat :
- Tabel
- Mengubah struktur
- Menghapus tabel
- Membuat index
DML (Data
manipulation Language)
Digunakan untuk
melakukan manipulasi data dalam database, menambahkan (insert),
mengubah (update), menghapus (delete), mengambil dan mencari data
(query).
Perintah SQL
standar tsb dapat digunakan untuk menyelesaikan tugas yang diberikan
berhubungan dengan data suatu database.
Dcl (data control
language)
Perintah untuk
melakukan pendefinisian pemakai yang boleh mengakses database dan apa
saja privilegenya.
Fasilitas ini
tersedia pada sistem manajemen database yang memiliki fasilitas
keamanan dengan membatasi pemakai dan kewenangannya.
Data definision
language (DDL)
digunakan untuk
melakukan pembuatan struktur database, mulai dari mendefinisikan
database, tabel-tabel dan indexnya, view, dan perintah-perintah
berkenaan dengan maintenance dari strukture database itu sendiri.
Membuat database
Perintah CREATE
DATABASE namadatabase
Perintah ini
digunakan pertama kali sebelum membuat tabel, view, fungsi, prosedur
atau pun komponen lain suatu sistem database.
Contoh :
create database
datamahasiswa;
Membuat tabel
Perintah CREATE TABLE
namatabel(Field1 TipeData1
[, field2 tipedata2[, ...] ]
);
perintah ini
diberikan untuk membuat tabel dalam suatu database
contoh :
create table kota(kodekota char(3) not
null,namakota varchar(35) null,primary
key (kodekota));
Menambah Field baru
tabel
Perintah ALTER TABLE
namatable
ADD fieldbaru
tipenya;
namatabel
adalah nama dari tabel yang akan
ditambah fieldnya
fieldbaru
adalah nama field yang akan ditambahkan .
Contoh :
alter table
bukualamat add foreign key
(kodekota) reference kota
(kodekota);
Mengubah lebar field
tabel Perintah ALTER TABLE
namatabel
MODIFY fieldnya
tipenya panjangbaru namatabel adalah
nama dari table yang akan diubah salah satu fieldnya.
fieldnya adalah
nama field yang akan diubah lebar fieldnya.
tipenya dan
panjangbaru merupakan berubahan yang akan diterapkan kepada tabel
tsb.
contoh :
alter table
dbmahasiswa modify
(nama_mahasiswa char(45));
Menghapus tabel
Perintah DROP TABLE
namatabel
namatabel adalah
nama dari tabel yang akan dihapus secara fisik.
penghapusan
menyebabkan struktur dan data yang dibuat akan hilang
Menghapus database
Perintah DROP DATABASE
namadatabase;
namadatabase adalah
nama dari database yang akan dihapus.
penghapusan
database akan menyebabakan seluruh struktur dan data yang ada
didalamnya menjadi hilang
Membuat index
Perintah
CREATE INDEX
namaindeks ON namatabel (namakolom1[,namakolom2,
...])
namaindeks adalah
nama yang diacu untuk mendapatkan data index dari suatu kolom dalam
tabel.
namatabel adalah
nama dari tabel yang kolom-kolomnya akan dibuatkan indexnya.
contoh :
create index
kotaonbukualamat on bukualamat (kodekota);
Menghapus index
Perintah DROP INDEX
namaindex ON namatabel
penghapusan index
tidak menyebabkan terhapusnya tabel.
penghapusan index
tabel suatu kolom hanya menyebabkan prosees pencarian data pada kolom
tersebut bisa lebih lambat.
Data manipulation
language (DML)
Merupakan bagian
dari SQL yang digunakan untuk melakukan manipulasi dalam database
(tambah, ubah, hapus, cari)
Contoh Dataset Loan
loan-number | branch-name | amount |
L-170 | Downtown | 3000 |
L-230 | Redwood | 4000 |
L-260 | Perryridge | 1700 |
Borrower
customer-name | loan-number |
Jones | L-170 |
Smith | L-230 |
Hayes | L-155 |
Insert
Perintah INSERT INTO
namatabel (field1 [,field2 [,...]]) VALUE (nilai1
[,nilai2 [,...]]; atau INSERT INTO
namatabel VALUES (nilai1 [,nilai2[,...]]);
namatabel adalah
tabel yang akan diisi data.
field1,field2 ...
Adalah field-field (kolom) dari tabel yang akan diisi
nilai1,nilai2 ...
Adalah data yang akan dimasukkan dalam tiap kolom yang disebutkan
pada bagian field.
Untuk menambahkan
satu tuple dalam relasi digunakan statement
insert.
Contoh :
INSERT
INTO account values (“Perryridge”,”A-9732”,1200)
Query ini identik
dengan
INSERT
INTO account (branch-name, account-number,balance)
values (“Perryridge”,”A-9732”,1200)
Insert
juga dapat dilakukan untuk suatu hasil dari query yang lain.
Contoh :
INSERT INTO
account SELECT
branch-name, loan-number, 200
FROM
loan WHERE branch-name = “Perryridge”
Update
Perintah UPDATE namatabel
SET field1 = nilai1
[, field2= nilai2 [,...]] [WHERE kondisi];
namatabel adalah
nama dari tabel yang akan diperbaiki datanya
field1 adalah nama
field dalam tabel yang akan diubah.
nilai1 adalah data
yang akan dimasukan ke dalam field1
field2 dan nilai 2
adalah nama field dan datanya dst.
kondisi adalah
kriteria data dalam tabel yang akan diperbaiki
perintah update
digunakan untuk memperbaiki data dalam suatu record (baris) dalam
suatu tabel, perbaikan dapat dilakukan untuk satu record, beberapa
atau seluruh record.
Contoh :
untuk menaikkan
saldo para nasabah sebesar 5% ditulis
query sebagai
berikut :
UPDATE
account SET balance = balance * 1.05
Untuk menaikkan
saldo nasabah sebesar 6% bagi nasabah yang saldonya lebih dari $10000
UPDATE account SET balance =
balance *1.06 WHERE balance
>10000
question :
Apa yang akan
terjadi jika dalam pengupdate-an suatu record apabila lupa menulis
kondisinya ?
Query yang sama
dengan sebelumnya: Naikkan semua
account dengan saldo di atas $10,000 sebesar 6%,
account yang lain sebesar 5%.
update account set balance
= case when balance
<= 10000 then balance
*1.05 else balance
* 1.06 end
delete
Perintah DELETE FROM
namatabel [WHERE kondisi];
namatabel adalah
nama dari tabel yang akan dihapus datanya.
kondisi adalah
kriteria data dalam tabel yang akan dihapus.
perintah DELETE
digunakan untuk melakukan penghapusan record dari suatu tabel yang
memiliki kondisi yang dinyatakan dalam pernyataan kondisi.
“Hapus semua
account pada cabang Perryridge”
delete from
account where
branch-name = ‘Perryridge’
“Hapus semua
account di setiap cabang yang berlokasi di Needham city”
delete from
account where
branch-name in (select
branch-name
from branch where
branch-city = ‘Needham’) delete from
depositor
where
account-number in (select
account-number from
branch, account
where
branch-city = ‘Needham’ and
branch.branch-name =
account.branch-name)
Apa yang akan
terjadi jika dalam DELETE suatu record apabila lupa menulis
kondisinya ?
Data
mahasiswa
NIM | Nama | Jurusan |
2901 | Anjar | Sipil |
2902 | Jasmin | Hukum |
2903 | Bayu | Hukum |
Ingin menghapus data
Mahasiswa dengan NIM = 2902 :
DELETE from
Mahasiswa Where NIM = 2902;
Hasil
NIM | Nama | Jurusan |
2901 | Anjar | Sipil |
2903 | Bayu | Hukum |
Jika ingin
menghapus record mahasiswa bernama Anjar
dan Bayu bersamaan, dapat digunakan perintah :
DELETE from
Mahasiswa
where Nama =‘Anjar’
or Nama=‘Bayu’;
Beberapa hal yang
patut diperhatikan dalam penulisan perintah SQL adalah:
- Perhatikan huruf besar - huruf kecil. Agus tidak sama dengan agus. Gaji_Pegawai tidak sama dengan GajiPegawai.
- Jangan lupa untuk membubuhi tanda titik koma ( ; ) di setiap akhir penulisan perintah.
Select
Perintah
SELECT (* | field1
[,field2 [,...]]) FROM namatabel [WHERE kondisi]
namatabel adalah
nama dari tabel yang akan ditampilkan datanya
field1,field2 ...
Adalah nama field yang akan ditampilkan datanya.
* digunakan untuk
menampilkan seluruh field dari tabel
kondisi adalah
kriteria data dalam table yang akan ditampilkan
Perintah SELECT
digunakan untuk menampilkan isi dari suatu tabel
Kondisi
LIKE
merupakan kata
kunci dalam SQL yang digunakan untuk mendefinisikan suatu kriterisa
yang lebih fleksibel.
Kondisi yang
dinyatakan dengan menggunakan LIKE dapat memfilter data sehingga
dapat menampilkan suatu kriteria seolah dengan menggunakan bahasa
inggris.
Perintah
SELECT * FROM
namatabel WHERE namafield LIKE ‘datadicari’;
perintah ini akan
menampilkan seluruh record dalam tabel yang memiliki data dalam nama
field yang disebutkan dengan “datadicari”
Perintah
SELECT * FROM
namatabel WHERE namafield LIKE ‘datadicari%’;
perintah ini akan
menampilkan seluruh record dalam tabel yang memiliki data dalam nama
field yang disebutkan diawali dengan “datadicari”
View
Perintah
CREATE
VIEW namaview
AS ekspresiQuery
namaview adalah
nama dari view yang akan dibuat
ekspresiQuery
adalah perintah select dan kondisi query yang ditentukan sama seperti
halnya pada saat melakukan perintah select dengan menggunakan
kondisi.
Data control
language (DCL)
Terdiri atas
sekelompok perintah SQL untuk memberikan hak otorisasi mengakses
database, mengalokasikan space, pendefinisian space, pengauditan
penggunaan database.
Secara umum DCL
merupakan bahasa yang digunakan untuk melakukan pengelolahan pemakai
yang dapat melakukan akses dan manipulasi database terutama perintah
GRANT dan REVOKE
Perintah COMMIT dan
ROLLBACK merupakan kelengkapan fasilitas dalam pembuatan aplikasi
yang memungkinkan suatu transaksi yang terjadi untuk dapat segera
disimpan atau dibatalkan transaksinya.
Fungsi Agregat
Fungsi yang
disediakan oleh SQL untuk melakukan ringkasan (summary) data, bukan
menampilkan data baris per baris.
Fungsi Agregat di
SQL :
- Sum()
- Avg()
- Max()
- Min()
- Count()
Fungsi agregat
dapat disisipkan pada perintah SELECT, yang digunakan untuk melakukan
manipulasi sederhana ataupun untuk mendapatkan informasi dari suatu
tabel.
SUM
sum(namafield)
merupakan fungsi
agregat yang digunakan untuk melakukan penjumlahan isi field yang
bertipe numerik yang namanya disebutkan padan namafield yang
dijadikan parameter pada fungsi sum()
Tabel Karyawan
Kode | Nama | Gaji |
KP01 | Amrin | 200000 |
KP02 | Camelia | 300000 |
KP03 | Bembi | 100000 |
SELECT SUM(gaji)
From Karyawan
Hasil
Gaji |
600000 |
AVG
avg(namafield)
fungsi ini
digunakan untuk mendapatkan nilai rata-rata suatu field yang bertipe
numerik yang namanya disebutkan sebagai parameter pada fungsi avg().
SELECT AVG(gaji)
From Karyawan
Hasil
Gaji |
200000 |
Max
max(namafield)
fungsi ini
digunakan untuk mendapatkan nilai terbesar(maximum) dari field
bertipe numerik yang nama fieldnya dijadikan parameter pada fungsi
min
Tabel Karyawan
Kode | Nama | Gaji |
KP01 | Amrin | 200000 |
KP02 | Camelia | 300000 |
KP03 | Bembi | 100000 |
select MAX(gaji)
from Karyawan;
Hasil :
Gaji |
300000 |
Min
min(namafield)
fungsi ini
digunakan untuk mendapatkan nilai terkecil (minimum) dari field
bertipe numerik yang nama fieldnya dijadikan parameter pada fungsi
min
select MIN(gaji)
from Karyawan;
Gaji |
100000 |
count(namafield)
digunakan untuk
mengetahui jumlah record dari suatu tabel.
Jumlah record yang
ditampilkan adalah jumlah record berdasarkan perintah SELECT
sql> use
dbmahasiswa;
database changed
sql>select
count(*) from bukumahasiswa
+----------------+
| count(*) |
|-----------------|
| 2 |
+-----------------+
Group by
Perintah Group By
memiliki kegunaan untuk melakukan perhitungan berdasarkan kriteria
tertentu.
Pegawai_baru
Kode | Nama | Asal | Pendidikan | Gaji |
PB01 | Ronald | Jakarta | S1 | 400000 |
PB02 | Made | Bali | S1 | 300000 |
PB03 | Aziz | Semarang | S1 | 300000 |
PB04 | Mustofa | Semarang | D3 | 250000 |
PB05 | Eka | Jakarta | S1 | 275000 |
PB06 | Gozali | Yogya | D3 | 200000 |
PB07 | Dani | Jakarta | S1 | 350000 |
Dari tabel
Pegawai_baru, kita ingin menampilkan gaji tertinggi / maksimum yang
diperoleh pegawai berdasarkan pendidikannya.
select
Pendidikan,max(Gaji)
from Pegawai_baru
GROUP BY Pendidikan;
from Pegawai_baru
GROUP BY Pendidikan;
Hasil
D3 | 250000 |
S1 | 400000 |
select
Asal,count(Asal) from
Pegawai_baru GROUP BY Asal;
Bali | 1 |
Jakarta | 3 |
Semarang | 2 |
Yogya | 1 |
select
Pendidikan,count(Pendidikan),sum(Gaji) from
Pegawai_baru GROUP BY Pendidikan;
D3 | 2 | 162500 |
S1 | 5 | 450000 |
panjang juga pemaparannya...sampai ga ngerti
ReplyDeleteSuangarr bos.... salut...
ReplyDelete