STRUCTURE
QUERY LANGUAGE (SQL)
SQL telah dugunakan pada tahun 1970-an. SQL adalah
suatu bahasa yang sangat mendukung berbagai tipe format database. Kemampuan
bahasa ini dapat diandalkan untuk mengolah suatu database dengan cepat dan
efisien.
Perkembangan SQL cukup berarti bagi pemrograman database di dunia.
Sintak SQL dibuat oleh bagian ANSI (American Antional Standards Institute).
Sintak SQL atau lebih dikenal SQL-89 sangatlah popular pada tahun 1989, dan
tiga tahun kemudian megalami pembaharuan yang menjadi SQL-92. SQL-92 inilah
yang menjadi sintak SQL yang digunakan di dalam lingkungan Delphi (Local SQL)
untuk mengelola database Paradox, Foxpro.
Kita akan membuat
database kuliah dengan nama tabel mahasiswa, seperti tabel berikut:
NIM
|
Nm_mahasiswa
|
Nilai
|
alamat
|
111201106234
|
juki
|
75
|
semarang
|
DDL
(Data Definition Language)
-
Create Databases
Membuat database
kuliah, ketikkan perintah “create database kuliah;” seperti gambar berikut.
-
Create Tables
Untuk membuat tabel
pada database kuliah kita ketikkan perintah “use kuliah”, lalu barulah kita
buat tabel mahasiswa dengan cara mengetikkan perintah:
CREATE TABLE table (An
Dn, An Dn, .., An Dn)
Keterangan :
tabel = nama tabel yang
akan dibuat
A1..An = atribut atau
variabel field
D1, Dn= tipe data untuk
A1..An
Misalkan kita buat
“create table mahasiswa (NIM char(12)
primary key,nama_mhs varchar(20),nilai
integer(3),alamat varchar(25));”.
Seperti gambar berikut.
Untuk melihat struktur
tabel yang telah dibuat ketikkan perintah “describe mahasiswa;” seperti gambar
di bawah.
Akan terlihat nama-nama
field, type, null (tidak boleh kosong), key, dan lain-lainnya.
-
Create Indexes
Index berfungsi untuk
mengurutkan atau mengatur pointer data dalam sebuah table. Untuk membuatnya kita
ketikkan perintah berikut:
CREATE INDEX
nama_index
ON nama_tabel (nama_field)
misalkan
“CREATE INDEX idxNIM
ON mahasiswa
(NIM):”
Hasilnya akan seperti
gambar berikut.
-
Altering Tables
Perintah ini digunakan
untuk mengubah struktur tabel yang telah dibuat. Pekerjaannya mencakup
mengganti nama tabel, menambah kolom, mengubah kolom, menghapus kolom, maupun
memberikan atribut pada kolom. Salah satu perintahnya seperti berikut:
alter table
nama_tabel_yang_akan_dirubah rename nama_tabel_setelah_dirubah;
misalkan
alter table mahasiswa
rename wisudawan;
untuk lebih jelasnya
seperti gambar berikut.
Disana kita
bisalihansaat kita ketikkan perintah “SHOW COLUMNS FROM mahasiswa; akan
menampilkan pesan error, itu karena tabel mahasiswa sudah kita rubah mnjadi
tabel wisudawan, dan kita ketikkan “SHOW COLUMNS FROM wisudawan;” akan keluar
struktur tabel mahasiswa yang sudah dirubah namanya menjadi wisudawan.
DML
(Data Manipulation Language )
-
INSERT
Perintah ini digunakan
untuk menyisipkan atau memasukkan data baru ke dalam tabel. Penggunaannya
setelah database dan tabel selesai dibuat. Misalkan:
“Insert into wisudawan
values (“111201106234”, “juki”,”75”,”semarang”);”
Hasilnya akan seperti
gambar berikut:
Untuk melihat hasil
tabel dan data yang diinputkan ketikkan perintah “select *from wisudawan;”
hasilnya seperti gambar diatas.
-
SELECT
Perintah ini digunakan
untuk mengambil data atau menampilkan data dari satu tabel atau beberapa tabel
dalam relasi. Data yang diambil dapat kita tampilkan dalam layar prompt MySQL
secara langsung maupun ditampilkan pada tampilan aplikasi. Misalkan:
“Select nama_mahasiswa
from wisudawan where nilai = 75;”
Hasilnya akan sebagai
berikut.
-UPDATE
Perintah ini digunakan
untuk memperbarui data lama menjadi data terkini. Jika Anda memiliki data yang
salah atau kurang up to date dengan kondisi sekarang, maka dapat diubah isi
datanya menggunakan perintah UPDATE. Misalkan:
“update wisudawan set
nim = 111201106235;”
Hasilnya akan sebagai
berikut.
Diatas terlihat bahwa
NIM nya sudah berubah dari 111201106234 menjadi 111201106235.
Data
Control Language (DCL)
-GRANT
Perintah ini digunakan
untuk memberikan hak/ijin akses oleh administrator (pemilik utama) server
kepada user (pengguna biasa). Hak akses tersebut berupa hak membuat (CREATE),
mengambil (SELECT), menghapus (DELETE), mengubah (UPDATE), dan hak khusus berkenaan
dengan sistem databasenya. Misalkan:
“GRANT insert ON wisudawan TO gloyor;”
Hasilnya kan seperti gambar berikut.
-REVOKE
Perintah ini memiliki
kegunaan terbalik dengan GRAND, yaitu untuk menghilangkan atau mencabut hak
akses yang telah diberikan kepada user oleh administrator. Misalkan:
“REVOKE insert ON wisudawan FROM gloyor;”
Hasilnya akan seperti berikut.
Untuk perintah DDL DROP
dan DML DELETE, sengaja saya buat di akhir agar tidak mengulang pembuatan table
dan database yang sudah dibuat.
DML
(Data Manipulation Language )
-DELETE
Perintah ini digunakan
untuk menghapus data dari tabel. Biasanya data yang dihapus merupakan data yang
sudah tidak diperlukan lagi. Pada saat menghapus data, perintah yang telah
dijalankan tidak dapat digagalkan, sehingga data yang telah hilang tidak dapat
dikembalikan lagI. Misalkan:
“DELETE FROM wisudawan
WHERE NIM =
111201106235;”
Hasilnya bisa dilihat
seperti berikut
Diatas terlihat setelah
data dihapus, data tabel wisudawan kosong.
DDL
(Data Definition Language)
-
DROP TABLE
Perintah ini digunakan
untuk menghapus database dan tabel. Misalkan:
“DROP TABLE wisudawan;”
Hasilnya akan seperti
beriku.
Gambar diatas
menunjukkan bahwa, sebelum tabel wisudawan dihapus, tabel wisudawan dapat di
describe, setelah tabel wisudawan dihapus tabel wisudawan tidak dapat di
describe karena tabel tersebut sudah dihapus.
-DROP
DATABASE
Sama seperti DROP
TABLE, Cuma perberbedanya menghapus database. Misalkan:
“DROP DATABASE kuliah;”
Hasilnya seperti
berikut.
Gambar diatas
menunjukkan bahwa sebelum dihapus perintah “show databases;” menunjukkan
database kuliah ada, setelah database kuliah dihapus dan perintah “show
databases;” diketik lagi menunjaukkan database kuliah sudah tidak ada karena
sudah dihapus.
Pada perintah join kita mengunakan tabel seperti
berikut:
kd_proyek
|
nm_proyek
|
kd_pegawai
|
P001
|
XXX
|
N001
|
P002
|
YYY
|
N001
|
P002
|
YYY
|
N002
|
P003
|
ZZZ
|
N002
|
P003
|
ZZZ
|
N003
|
kd_pegawai
|
nm_pegawai
|
kd_bagian
|
N001
|
Adi
|
B01
|
N002
|
Bima
|
B02
|
N003
|
Candra
|
B03
|
kd_bagian
|
nm_bagian
|
B01
|
EDP
|
B02
|
HDP
|
B03
|
produksi
|
Untuk pembuatan tabel-tabel diatas caranya seperti
cara yang sebelunmnya.
INNER
JOIN
Dengan inner join, tabel akan digabungkan dua arah,
sehingga tidak ada data yang NULL di satu sisi.
Misalkan:
SELECT
proyek1.kd_proyek, proyek1.nm_proyek, proyek1.kd_pegawai, proyek2.nm_pegawai,
proyek2.kd_bagian
FROM
proyek1, proyek2
WHERE
proyek1.kd_pegawai=proyek2.kd_pegawai;
Outer
Join
Dengan outer join, tabel akan digabungkan satu arah,
sehingga memungkinkan ada data yang NULL (kosong) di satu sisi. Outer Join
terbagi menjadi 2 (dua) yaitu LEFT JOIN dan RIGHT JOIN.
LEFT
JOIN
Misalkan:
SELECT
proyek1.kd_proyek, proyek1.nm_proyek, proyek1.kd_pegawai, proyek2.nm_pegawai,
proyek2.kd_bagian
FROM
proyek1 LEFT JOIN proyek2
ON
proyek1.kd_pegawai=proyek2.kd_pegawai;
RIGHT
JOIN
Misalkan:
SELECT
proyek1.kd_proyek, proyek1.nm_proyek, proyek1.kd_pegawai, proyek2.nm_pegawai,
proyek2.kd_bagian
FROM
proyek1 RIGHT JOIN proyek2
ON
proyek1.kd_pegawai=proyek2.kd_pegawai;
Menggabungkan
Tiga Tabel ATAU LEBIH
Misalkan:
SELECT
proyek1.kd_proyek, proyek1.nm_proyek, proyek1.kd_pegawai, proyek2.nm_pegawai,
proyek2.kd_bagian, proyek3.nm_bagian
FROM
proyek1, proyek2, proyek3
WHERE
proyek1.kd_pegawai=proyek2.kd_pegawai AND proyek2.kd_bagian=proyek3.kd_bagian;
Pengelompokkan
Hasil Query dengan GROUP BY
Pada perintah join kita mengunakan tabel seperti
berikut:
nim
|
nama
|
semester
|
A11.2011.00001
|
budi
|
4
|
A11.2011.00002
|
adi
|
4
|
A11.2011.00003
|
banu
|
4
|
A11.2011.00004
|
rudi
|
6
|
nim
|
matkul
|
sks
|
A11.2011.00001
|
basis
data
|
3
|
A11.2011.00001
|
rpl
|
4
|
A11.2011.00001
|
sistem
oprasi
|
3
|
A11.2011.00002
|
rpl
|
4
|
A11.2011.00003
|
sistem
oprasi
|
3
|
A11.2011.00003
|
PBO
|
5
|
A11.2011.00004
|
sistem
oprasi
|
3
|
Hasil query terkadang perlu
dikelompokkan berdasarkan kriteria atau kondisi tertentu. Misalnya kita akan
menampilkan jumlah barang yang dibeli untuk masing-masing transaksi
(pemesanan).
jumlah sks ditampilkan jumlahnya, maka dapat
menggunakan fungsi GROUP BY dan juga SUM untuk menjumlahkan jumlah sks.
Misalkan:
SELECT
mahasiswa.nim, mahasiswa.nama,
SUM(matkul.sks)
as sks
FROM
mahasiswa, matkul
WHERE
mahasiswa.nim=matkul.nim
GROUP
BY mahasiswa.nim;
Having
Untuk menyeleksi suatu fungsi agregasi, kita tidak
dapat menggunakan WHERE, namun kita dapat menggunakan HAVING. Berikut ini
perintah query yang menggunakan HAVING.
Misalkan:
SELECT
mahasiswa.nim, COUNT(matkul.kd_matkul) as sks
FROM
mahasiswa, matkul
WHERE
mahasiswa.nim=matkul.nim
GROUP
BY mahasiswa.nim
HAVING
sks > 2
SubSELECT
MySQL mendukung perintah query SubSELECT dimana
memungkinkan untuk melakukan query di dalam query. Misalnya kita akan
menampilkan data yang kondisinya merupakan hasil dari query lain.
Perintah SubSELECT memiliki banyak variasi. Berikut
ini beberapa variasi bentuk perintah SubSELECT.
Misalkan:
SELECT
nim, nama
FROM
mahasiswa
WHERE
nim IN(SELECT nim from matkul);
Tidak ada komentar:
Posting Komentar