Selasa, 22 Oktober 2013

STRUCTURE QUERY LANGUAGE (SQL)

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