Tugas Masbro Yudistira :) (By :Hanafiah Yudistira)
http://razzaktheprovider.blogspot.com/
Perintah Dasar SQL
SQL (Structured Query Language)
Terdapat 3 (dua) jenis perintah SQL, yaitu DDL, DML dan DCL.
1. DDL atau Data Definition Language
DDL merupakan perintah SQL yang berhubungan dengan pendefinisian suatu struktur database, dalam hal inidatabase dan table. Beberapa perintah dasar yang termasuk DDL ini antara lain :
- CREATE
- ALTER
- RENAME
- DROP
2. DML atau Data Manipulation Language
DML merupakan perintah SQL yang berhubungan dengan manipulasi atau pengolahan data atau record dalam table. Perintah SQL yang termasuk dalam DML antara lain :
- SELECT
- INSERT
- UPDATE
- DELETE
3. DCL atau Data Control Language
DCL (bukan BCL) merupakan perintah SQL yang berhubungan dengan
pengaturan hak akses user MySQL, baik terhadap server, database, tabel
maupun field. Perintah SQL yang termasuk dalam DCL antara lain :
- GRANT
- REVOKE
Membuat, Menampilkan, Membuka dan Menghapus Database
1. Membuat Database
Sintaks umum membuat database baru adalah:
CREATE DATABASE [IF NOT EXISTS] nama_database;
Bentuk perintah di atas akan membuat sebuah database baru dengan nama
nama_database. Aturan penamaan sebuah database sama seperti aturan
penamaan sebuah variabel, dimana secara umum nama database boleh terdiri
dari huruf, angka dan under-score (_). Jika database yang akan dibuat
sudah ada, maka akan muncul pesan error. Namun jika ingin otomatis
menghapus database yang lama jika sudah ada, aktifkan option IF NOT
EXISTS.Setiap kita membuat database baru, maka sebenarnya MySQL akan
membuat suatu folder (direktori) sesuai dengan nama databasenya yang
ditempatkan secara default di \mysql\data. Di dalam folder tersebut
nantinya akan terdapat file-file yang berhubungan dengan tabel dalam
database.
Berikut ini contoh perintah untuk membuat database baru dengan nama “mahasiswa” :
CREATE DATABASE mahasiswa;
Jika query di atas berhasil dieksekusi dan database berhasil dibuat, maka akan ditampilkan pesan sebagai berikut :
Query OK, 1 row affected (0.02 sec)
2. Melihat Database
Untuk melihat database yang baru saja dibuat atau yang sudah ada, dapat menggunakan perintah sebagai berikut :
SHOW DATABASES;
Hasil dari perintah di atas akan menampilkan semua database yang sudah
ada di MySQL. Berikut ini contoh hasil dari query di atas :
+--------------+ | Database | +--------------+ | mahasiswa | | mysql | | test | +--------------+ 3 rows in set (0.02 sec)
3. Membuka Database
Sebelum melakukan manipulasi tabel dan record yang berada di dalamnya,
kita harus membuka atau mengaktifkan databasenya terlebih dahulu. Untuk
membuka database “mahasiswa”, berikut ini querynya :
USE mahasiswa;
Jika perintah atau query di atas berhasil, maka akan ditampilkan pesan sebagai berikut :
Database changed
4. Menghapus Database
Untuk menghapus suatu database, sintaks umumnya adalah sbb :
DROP DATABASE [IF EXISTS] nama_database;
Bentuk perintah di atas akan menghapus database dengan nama
nama_database. Jika databasenya ada maka database dan juga seluruh tabel
di dalamnya akan dihapus. Jadi berhati-hatilah dengan perintah ini!
Jika nama database yang akan dihapus tidak ditemukan, maka akan
ditampilkan pesan error. Aktifkan option IF EXISTS untuk memastikan
bahwa suatu database benar-benar ada.
Berikut ini contoh perintah untuk menghapus database dengan nama “mahasiswa” :
DROP DATABASE mahasiswa;
-----
Membuat, Mengubah dan Menghapus Table
1. Membuat Table
Bentuk umum perintah SQL untuk membuat tabel baru adalah sbb:
CREATE TABLE nama_tabel ( field1 tipe(panjang), field2 tipe(panjang), ... fieldn tipe(panjang), PRIMARY KEY (field_key) );
Bentuk umum di atas merupakan bentuk umum pembuatan tabel yang sudah
disederhanakan. Penamaan tabel dan field memiliki aturan yang sama
dengan penamaan database.
MySQL menyediakan berbagai tipe data dengan spesifikasi dan panjang
masing-masing. Tipe data untuk field dalam MySQL diantaranya ditampilkan
pada tabel berikut ini :
JENIS TIPE | TIPE | KETERANGAN |
---|---|---|
NUMERIK | TINYINT | -128 s/d 127 SIGNED 0 s/d 255 UNSIGNED |
SMALLINT | -32768 s/d 32767 SIGNED 0 s/d 65535 UNSIGNED. | |
MEDIUMINT | -8388608 s/d 8388607 SIGNED 0 s/d 16777215 UNSIGNED | |
INT | -2147483648 s/d 2147483647 SIGNED 0 s/d 4294967295 UNSIGNED. | |
BIGINT | -9223372036854775808 s/d 9223372036854775807 SIGNED 0 s/d 18446744073709551615 UNSIGNED. | |
FLOAT | Bilangan pecahan presisi tunggal | |
DOUBLE | Bilangan pecahan presisi ganda | |
DECIMAL | Bilangan dengan desimal | |
DATE/TIME | DATE | Tanggal dengan format YYYY-MM-DD |
DATETIME | Tanggal dan waktu dengan format :
YYYY-MM-DD HH:MM:SS
| |
TIMESTAMP | Tanggal dan waktu dengan format :
YYYYMMDDHHMMSS
| |
TIME | Waktu dengan format HH:MM:SS | |
YEAR | Tahun dengan format YYYY | |
STRING | CHAR | 0 – 255 karakter |
VARCHAR | 0 – 255 karakter | |
TINYTEXT | String dengan panjang maksimum 255 karakter | |
TEXT | String dengan panjang maksimum 65535 karakter | |
BLOB | String dengan panjang maksimum 65535 karakter | |
MEDIUMTEXT | String dengan panjang maksimum 16777215 karakter | |
MEDIUMBLOB | String dengan panjang maksimum 16777215 karakter | |
LONGTEXT | String dengan panjang maksimum 4294967295 karakter | |
LONGBLOB | String dengan panjang maksimum 4294967295 karakter | |
KHUSUS | ENUM | Tipe data dengan isi tertentu |
SET | Tipe data dengan isi tertentu |
Sebagai contoh, kita akan membuat tabel baru dengan struktur sebagai berikut :
Nama tabel: mhs
No | Nama Field | Tipe | Panjang |
1 | nim | Varchar | 10 |
2 | nama | Varchar | 30 |
3 | tgllahir | Date | - |
4 | alamat | Text | - |
Untuk membuat tabel tersebut di atas, query atau perintah SQL-nya adalah sebagai berikut :
CREATE TABLE mhs ( nim varchar(10) NOT NULL, nama varchar(30) NOT NULL, tgllahir date, alamat text, PRIMARY KEY(nim) );
Jika query untuk membuat tabel di atas berhasil dijalankan, maka akan ditampilkan pesan sebagai berikut :
Query OK, 0 rows affected (0.16 sec)
Pada perintah di atas, beberapa hal yang perlu diperhatikan :
- CREATE TABLE merupakan perintah dasar dari pembuatan table.
- mhs merupakan nama tabel yang akan dibuat.
- Nim, nama, tgllahir dan alamat merupakan nama field
- Varchar, date dan text merupakan tipe data dari field
- NOT NULL merupakan option untuk menyatakan bahwa suatu field tidak boleh kosong.
- PRIMARY KEY merupakan perintah untuk menentukan field mana yang akan dijadikan primary key pada tabel.
- 10 dan 30 di belakang tipe data merupakan panjang maksimal dari suatu field
- Untuk tipe data date dan text (dan beberapa tipe data lainnya) panjang karakter maksimalnya tidak perlu ditentukan.
- Jangan lupa akhiri perintah dengan titik-koma (;)
Selanjutnya untuk melihat tabel mhs sudah benar-benar sudah ada atau belum, ketikkan perintah berikut ini :
SHOW TABLES;
Perintah di atas akan menampilkan seluruh tabel yang sudah ada dalam
suatu database. Contoh hasil dari perintah di atas adalah sebagai
berikut :
+---------------------+ | Tables_in_mahasiswa | +---------------------+ | mhs | +---------------------+ 1 rows in set (0.01 sec)
Untuk melihat struktur tabel “mhs” secara lebih detail, cobalah perintah atau query sebagai berikut :
DESC mhs;
DESC merupakan singkatan dari DESCRIBE (dalam query bisa ditulis lengkap
atau hanya 4 karakter pertama) dan mhs adalah nama tabel yang akan
dilihat strukturnya. Dari perintah di atas, akan ditampilkan struktur
tabel mhs sebagai berikut :
+----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | nim | varchar(10) | | PRI | | | | nama | varchar(30) | | | | | | tgllahir | date | YES | | NULL | | | alamat | text | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)
Dari struktur tabel mhs yang ditampilkan di atas, dapat diketahui bahwa :
- Terdapat 4 (empat) field dengan tipe masing-masing.
- Primary Key dari tabel mhs adalah nim. Lihat kolom Key pada field nim.
- Untuk field nim dan nama defaultnya tidak boleh kosong. Lihatlah kolom Null dan Default pada field nim dan nama
- Untuk field tgllahir dan alamat defaultnya boleh kosong. Lihatlah kolom Null dan Default pada field tgllahir dan alamat.
Minggu, 03 Februari 2013
Perintah Dasar SQL
SQL (Structured Query Language)
Bahasa SQL sangat luas sekali
digunakan dan sebagian besar bahasa pemrograman banyak yang mendukung bahasa
ini. Anda bisa menggunakan MS SQL keluaran Microsoft (SQL Server), Oracle atau
My SQL yang sering digunakan di WEB karena free, juga Microsoft Acces pun dalam
mengelola data menggunakan bahasa SQL.
Sedangkan Delphi, VB, Visual Foxpro, dan lain-lain dapat diintegrasikan dengan dengan produk SQL diatas.
Disini saya coba menguraikan perintah-perintah SQL sederhana dengan acuan SQL server produknya Microsoft, tapi My SQL dan lainnya juga pasti mengenali bahasa ini.
Perintah SQL dibentuk dari 4 (empat perintah utama) artinya yang paling sering digunakan yaitu :
1. Select
2. Insert
3. Delete
3. Update
Sedangkan Delphi, VB, Visual Foxpro, dan lain-lain dapat diintegrasikan dengan dengan produk SQL diatas.
Disini saya coba menguraikan perintah-perintah SQL sederhana dengan acuan SQL server produknya Microsoft, tapi My SQL dan lainnya juga pasti mengenali bahasa ini.
Perintah SQL dibentuk dari 4 (empat perintah utama) artinya yang paling sering digunakan yaitu :
1. Select
2. Insert
3. Delete
3. Update
Walaupun masih sangat banyak lagi
perintah-perintahnya tapi empat perintah itu yang paling sering digunakan, dan
memang kelihatan sederhana tapi sebenarnya satu perintah banyak sekali
kombinasinya.
Sebelum kita memulai diharapkan
Program SQL Server sudah terinstall di Komputer. Karena kita akan menjalnkan
perintah SQL ini lewat Program SQL Server tersebut.
Pertama kita membuat database
terlebih dahulu dan membuat database ini bisa dengan perintah CREATE
DATABASE, tapi untuk memudahkan sebaiknya kita lewat Enterprise Manager
saja yaitu suatu perangkat yang sudah disediakan untuk mengelola seluruh
database.
Pada bagian Databases kita bisa
menggunakan Klik kanan untuk membuat Database yang akan kita gunakan, kemudian
pilih New Database, dan isikan nama database yang akan kita gunakan. Misalnya
data1.
Setelah itu Klik OK, database anda
langsung terbentuk. Cukup mudah bukan?
Cara membuat database ini cukup saat
awal saja saja kita gunakan, selanjutnya kita lebih banyak memakai 4 (empat)
perintah seperti yang telah saya ceritakan.
Untuk mengetik perintah pun
sebenarnya di SQL Server ini telah disediakan sarananya untuk itu, yaitu Query
Anlyzer, kalau komputer Anda terinstall dengan baik menu Query Analyzer ini
tentu sudah tersedia Windows.
Setelah itu Kita butuh tahap kedua,
yaitu membuat tabel didalam database data1 tersebut dengan mengetik perintah
Create Table di Area kosong untuk mengetik perintah.
Misalnya
kita butuh table dengan field sebagai berikut
Kode_brg char(15)
Nama_brg char(50)
Perintahnya
create table tb_brg(kode_brg
char(15) primary key, nama_brg char(50) )
Untuk eksekusi perintah diatas harus
diblok dulu baru setelah itu tekan tombol CTRL+E.
Maka kita sudah punya table tb_brg.
Sampai disini dulu, tunggu
kelanjutannya.
·
Perintah INSERT
·
Pada kesempatan ini saya coba untuk menjelaskan
perintah INSERT.
·
Perintah INSERT digunakan untuk menambah data
pada tabel. Sebenarnya ada berbagai macam kombinasi dari perintah insert ini.
·
Disini saya coba jelaskan 3 macam model, yang
sekiranya cukup bagi kita untuk berkiprah di dunia SQL.
·
A. Model 1.
·
Disini INSERT yang dipakai merupakan perintah
standard
·
Misalnya pada tabel tb_brg yang telah kita bikin
pada
·
insert into tb_brg(kode_brg, nama_brg)
values(’1001′, ‘Buku’)
·
insert into tb_brg(kode_brg, nama_brg)
values(’1002′, ‘Pencil’)
·
insert into tb_brg(kode_brg, nama_brg)
values(’1003′, ‘Penggaris’)
·
Jalankan ketiga perintah diatas maka tb_brg akan
terisi dari nilai2 yang ada pada values.
·
Untuk dapat melihat hasilnya bisa menjalankan
perintah di bawah ini
·
select* from tb_brg
·
maka akan terlihat tabel dibawah ini :
·
B. Model 2.
·
Perintah INSERT disini lebih ringkas, tapi butuh
hapal susunan field tabelnya kalau tidak bisa ketukar informasi yang diberikan
antara kode_brg dengan nama_brg.
·
Perintah INSERT ini juga bisa dengan model
dibawah ini
·
insert into tb_brg values(’1004′, ‘Pulpen’)
·
Perintah seperti ini semua field harus terisi
oleh values, tidak boleh tidak.
·
C. Model 3.
·
Perintah ini dikombinasikan dengan SELECT, bisa
dengan kriteria yang ingin kita tentukan.
·
Biasanya perintah ini untuk memindah data dari
tabel1 ke tabel2
·
Mari kita coba :
·
Buat tabel kedua seperti pada
·
create table tb_brg2(kode_brg char(15)
primary key, nama_brg char(50))
·
maka terbentuk tabel dengan nama tb_brg2,
kemudian isi tabel tb_brg2 kita isikan dengan tabel tb_brg dengan kriteria
kode_brg >= ’1002′, seperti yang dituliskan dibawah ini :
·
insert into tb_brg2 select* from tb_brg
where kode_brg >= ’1002′
·
hasilnya dapat dilihat pakai perintah select*
from tb_brg2.
·
Disini terlihat isi data tb_brg2 akan terisi
dengan kode_brg >= ’1002′
·
Perintah Model ke-3 ini sangat praktis apabila
kita mengelola data dengan jumlah ribuan bahkan jutaan record.
·
Untuk perintah INSERT saya cukupkan sampai
disini dulu, nanti akan saya lanjutkan dengan perintah SELECT.
·
Dasar-Dasar
SQL-3
·
Perintah
SELECT
·
Perintah ini sangat sering sekali
dipakai dan paling efektif dalam mengelola (meng Query) Data. Dan apabila
dibandingkan dengan bahasa program lain dalam mengelola atau meng Query data
perintah SELECT di SQL ini sangat mudah sekali dan sangat efisien dalam
melakukan tugas-tugasnya dan juga mempunyai kecepatan yang sangat tinggi
sekali. Untuk itulah kenapa SQL dijadikan bahasa standard dalam pemrograman
komputer. Jadi sebagian besar mungkin seluruh bahasa pemrograman banyak mengacu
kepada bahasa SQL ini, sehingga bahasa-bahasa program selalu menyediakan
fasilitas untuk menjalankan perintah-perintah SQL.
·
Perintah SELECT sangat
domininan sekali digunakan apabila kita membuat program lewat SQL, dan Perintah
ini banyak sekali kombinasi-kombinasinya sehingga butuh banyak pengalaman juga
dalam melakukan kombinasi-kombinasi tersebut. Tetapi Programmer yang
berpengalaman sangat menyukai Perintah ini, karena sangat membantu sekali dalam
pembuatan suatu Aplikasi.
·
Perintah dasar SELECT adalah
sebagai berikut
·
SELECT*
FROM table_name
·
contoh :
SELECT* FROM tb_brg
·
Tanda bintang menyatakan keseluruhan
fied yang akan ditampilkan. Tapi ada kalanya kita hanya ingin menampilkan field
tertentu saja maka perintahnya menjadi :
·
SELECT
kode_brg, nama_brg FROM tb_brg
·
ORDER BY
·
Perintah ini dapat digabungkan
dengan perintah SELECT diatas. Fungsinya untuk mengurutkan data berdasarkan
nama_field tertentu.
·
Contoh : SELECT kode_brg,
nama_brg FROM tb_brg ORDER BY kode_brg
·
dari perintah tersebut Query yang
dihasilkan akan urut berdasarkan dengan kode_brg dan urutan dari Kecil ke Besar
(ASCENDING).
·
Dan apabila urutan ingin kita balik
dari Besar ke Kecil (DESCENDING) maka perintah menjadi
·
SELECT
kode_brg, nama_brg FROM tb_brg ORDER BY kode_brg DESC
·
WHERE
·
Perintah ini untuk memberikan syarat
data akan ditampilkan.
·
Untuk memudahkan saya dalam
memberikan penjelasan baiknya kita memakai DATABASE yang sudah tersedia atau
bawaan dari SQL Server.
·
Jalankan perintah USE northwind
·
Perintah USE disini artinya kita
menggunakan DATABASE yang bernama nortwind, dan DATABASE ini sudah tersedia di
SQL Server. Sekarang coba jalankan perintah berikut :
·
1. SELECT productID, productName,
categoryID FROM products
·
2. SELECT productID, productName,
categoryID FROM products WHERE categoryID = 2
·
Kita bisa membandingkan langsung
antara 1 dan 2, dimana perintah 1 merupakan perintah tanpa bersyarat sehingga
seluru data akan ditampilkan. Sedangkan perintah 2 merupakan perintah bersyarat
dimana hanya categoryID = 2 saja yang akan ditampilkan.
·
Perintah WHERE operatornya
berbeda-beda seperti :
·
1. = : untuk menyatakan sama dengan.
·
2. >= : untuk lebih besar atau
sama dengan,
·
3. <= : lebih kecil atau sama
dengan.
·
4. <> : tidak samadengan,
·
dan banyak lagi operator-operator
yang bisa digunakan yang tidak bisa jelaskan disini dan nantinya akan saya
jelas pada session tersendiri saja.
·
INNER
JOIN.
·
Perintah ini merupakan untuk
merelasikan data antara 2(dua) atau lebih table yang berbeda
·
contoh :
·
1. SELECT* FROM products
·
2. SELECT* FROM categories
·
3. SELECT SELECT a.productID,
a.ProductName, b.CategoryName FROM products a inner join categories b
·
ON a.categoryID = b.categoryID
·
Perintah 1 : menampilkan isi
products
·
Perintah 2 : menampilkan isi
categories
·
Perintah 3 : menampilkan isi dari 2(dua)
table yang berbeda yang di relasikan berdasarkan field categoryID. Untuk ‘a’
dan ‘b’ diatas merupakan suatu ALIAS untuk meringkas nama table.
·
Dalam merelasikan table ini ada juga
yang menggunakan LEFT JOIN dan RIGHT JOIN yang nantinya juga akan saya jelaskan
pada sesion tersendiri saja.
·
Untuk perintah SELECT saya rasa
sudah cukup sampai disini, dan pada pembahasan berikutnya kita akan menggunakan
DATABASE bawaannya SQL Server saja untuk meringkas pembahasan
·
Disini saya menerangkan bagaimana cara pemakaian
UPDATE dalam bentuk perintah SQL.
Perintah UPDATE merupakan suatu perintah untuk mengedit suatu data table di DATABASE dalam bentuk perintah/ script SQL.
Dan perintah ini bisa dilakukan per-record data atau bisa juga sekaligus beberapa record data secara bersamaan. Disini saya menggunakan DATABASE northwind bawaannya SQL Server
Perintah UPDATE merupakan suatu perintah untuk mengedit suatu data table di DATABASE dalam bentuk perintah/ script SQL.
Dan perintah ini bisa dilakukan per-record data atau bisa juga sekaligus beberapa record data secara bersamaan. Disini saya menggunakan DATABASE northwind bawaannya SQL Server
·
Coba kita analisa perintah berikut :
·
SELECT orderID, shipRegion FROM orders
·
result :
OrderID shipRegion
10.248,00 NULL
10.249,00 NULL
10.250,00 RJ
10.251,00 NULL
10.252,00 NULL
10.253,00 RJ
10.254,00 NULL
OrderID shipRegion
10.248,00 NULL
10.249,00 NULL
10.250,00 RJ
10.251,00 NULL
10.252,00 NULL
10.253,00 RJ
10.254,00 NULL
·
Sekarang kita berikan perintah UPDATE
·
UPDATE orders SET shipRegion = ‘JKT’
WHERE orderID = 10248
·
lihat hasil dengan perintah SELECT orderID,
shipRegion FROM orders
·
result :
OrderID shipRegion
10.248,00 JKT
10.249,00 NULL
10.250,00 RJ
10.251,00 NULL
10.252,00 NULL
10.253,00 RJ
10.254,00 NULL
OrderID shipRegion
10.248,00 JKT
10.249,00 NULL
10.250,00 RJ
10.251,00 NULL
10.252,00 NULL
10.253,00 RJ
10.254,00 NULL
·
disini terlihat OrderID no = 10248 kolom
shipRegion berubah menjadi ‘JKT’
Sekarang kalau kita diberi suatu kasus begini, bagamana seluruh shipRegion yang bernilai NULL diganti dengan ‘SBY’
Maka perintahnya menjadi
Sekarang kalau kita diberi suatu kasus begini, bagamana seluruh shipRegion yang bernilai NULL diganti dengan ‘SBY’
Maka perintahnya menjadi
·
UPDATE orders SET shipRegion = ‘SBY’
WHERE shipRegion IS NULL
·
result :
OrderID shipRegion
10.248,00 JKT
10.249,00 SBY
10.250,00 RJ
10.251,00 SBY
10.252,00 SBY
10.253,00 RJ
10.254,00 SBY
OrderID shipRegion
10.248,00 JKT
10.249,00 SBY
10.250,00 RJ
10.251,00 SBY
10.252,00 SBY
10.253,00 RJ
10.254,00 SBY
·
Disini terlihat nilai shipRegion yang isinya NULL
akan berubah menjadi ‘SBY’ semua.
·
Kekuatan dari perintah SELECT dalam bahasa SQL
terletak pada kemudahan metodenya dalam membentuk suatu relasi data dari 2
(dua) tabel atau lebih. Ada 3 ( tiga ) perintah utama dalam merelasikan data
tersebut, yaitu ;
INNER JOIN, LEFT JOIN, dan RIGHT JOIN. Tapi yang paling sering dipakai adalah INNER JOIN.
Baiklah disini saya coba untuk menerangkan dengan metode konsep himpunan dalam menerangkan relasi data ini.
1. Pemakaian INNER JOIN
Seandainya kita mempunyai 2 ( dua ) himpunan :
INNER JOIN, LEFT JOIN, dan RIGHT JOIN. Tapi yang paling sering dipakai adalah INNER JOIN.
Baiklah disini saya coba untuk menerangkan dengan metode konsep himpunan dalam menerangkan relasi data ini.
1. Pemakaian INNER JOIN
Seandainya kita mempunyai 2 ( dua ) himpunan :
·
A = {’1001′, ’1002′, ’1003′, ’1004′, ’1005′}
B = {’1002′, ’1004′, ’1006′, ’1007′}
B = {’1002′, ’1004′, ’1006′, ’1007′}
·
Maka anggota A dan B adalah C = {’1002′, ’1004′}
Dalam bentuk gambar terlihat seperti dibawah ini:
Dalam bentuk gambar terlihat seperti dibawah ini:
·
Jadi C merupakan irisan dari himpunan A dan B
Dan bentuk perintah SQL menjadi
Dan bentuk perintah SQL menjadi
·
SELECT* FROM A INNER JOIN B ON A.KODE = B.KODE
·
Jadi A dan B dihubungan dengan field yang
bernama KODE dimana isi dari kode tersebut merupakan anggota dari suatu
himpunan.
·
2. Pemakaian LEFT JOIN
Pemakaian perintah ini memang agak susah dipahami kalau kita tidak bergelut di bidang programming, walaupun agak jarang dipakai tetapi ada kalanya kita harus memakai perintah ini, tujuannya agar semua data utama (A) ditampilkan semua sedangkan data B yang diperlukan atau ditampilkan adalah field-field kedua yang muncul akibat dari relasi tersebut. Akan saya coba terangkan dengan konsep Himpunan.
Pemakaian perintah ini memang agak susah dipahami kalau kita tidak bergelut di bidang programming, walaupun agak jarang dipakai tetapi ada kalanya kita harus memakai perintah ini, tujuannya agar semua data utama (A) ditampilkan semua sedangkan data B yang diperlukan atau ditampilkan adalah field-field kedua yang muncul akibat dari relasi tersebut. Akan saya coba terangkan dengan konsep Himpunan.
·
A = {’1001′, ’1002′, ’1003′, ’1004′, ’1005′}
B = {’1002′, ’1004′, ’1006′, ’1007′}
B = {’1002′, ’1004′, ’1006′, ’1007′}
·
Dari 2 ( dua ) himpunan tersebut kalau kita
memakai LEFT JOIN hasilnya
C = {’1001′, ’1002′, ’1003′, ’1004′, ’1005′}
C = {’1001′, ’1002′, ’1003′, ’1004′, ’1005′}
·
Bagian yang diarsir hitam merupakan hasil
relasi, dan perintah dalam bentuk SQL sebagai berikut ;
·
SELECT* FROM A LEFT JOIN B ON A.KODE = B.KODE
·
Selintas himpunan A dan himpunan C sama tidak
ada bedanya, tetapi kalau dalam bentuk tabel akan terasa bedanya seperti akan
saya perlihatkan dibawah ini :
·
Tabel A :
·
kode_brg nama_brg
1001 Buku
1002 Pencil
1003 Penggaris
1004 Pulpen
1005 Penghapus
1001 Buku
1002 Pencil
1003 Penggaris
1004 Pulpen
1005 Penghapus
·
Tabel B :
·
kode_trans kode_brg QTY
T2124 1002 10
T3212 1004 5
T8952 1006 3
T1215 1007 20
T2124 1002 10
T3212 1004 5
T8952 1006 3
T1215 1007 20
·
Apabila kita menggunakan perintah
SELECT A.kode_brg, A.nama_brg, B.kode_trans, B.Qty FROM A LEFT JOIN B ON A.kode_brg = B.kode_brg
SELECT A.kode_brg, A.nama_brg, B.kode_trans, B.Qty FROM A LEFT JOIN B ON A.kode_brg = B.kode_brg
·
Maka hasilnya
kode_brg nama_brg kode_trans QTY
1001 Buku Null Null
1002 Pencil T2124 10
1003 Penggaris Null Null
1004 Pulpen T3212 5
1005 Penghapus Null Null
kode_brg nama_brg kode_trans QTY
1001 Buku Null Null
1002 Pencil T2124 10
1003 Penggaris Null Null
1004 Pulpen T3212 5
1005 Penghapus Null Null
·
3. Pemakaian RIGHT JOIN
Ini adalah kebalikan dari pemakaian LEFT JOIN, Perintah RIGHT JOIN ini hampir-hampir tidak pernah dipakai artinya sangat jarang sekali dipakai. Dan bentuk himpunannya adalah sebagai berikut :
Ini adalah kebalikan dari pemakaian LEFT JOIN, Perintah RIGHT JOIN ini hampir-hampir tidak pernah dipakai artinya sangat jarang sekali dipakai. Dan bentuk himpunannya adalah sebagai berikut :
·
A = {’1001′, ’1002′, ’1003′, ’1004′, ’1005′}
B = {’1002′, ’1004′, ’1006′, ’1007′}
B = {’1002′, ’1004′, ’1006′, ’1007′}
·
Dari 2 ( dua ) himpunan tersebut kalau kita
memakai RIGHT JOIN hasilnya
C = {’1002′, ’1004′, ’1006′, ’1007′}
C = {’1002′, ’1004′, ’1006′, ’1007′}
·
Dalam bentuk gambar terlihat seperti dibawah ini
:
·
Bagian yang diarsir hitam merupakan hasil
relasi, dan perintah dalam bentuk SQL sebagai berikut ;
·
SELECT* FROM A RIGHT JOIN B ON A.KODE = B.KODE
·
Apabila kita menggunakan perintah
SELECT A.kode_brg, A.nama_brg, B.kode_trans, B.Qty FROM A RIGHT JOIN B ON A.kode_brg = B.kode_brg
SELECT A.kode_brg, A.nama_brg, B.kode_trans, B.Qty FROM A RIGHT JOIN B ON A.kode_brg = B.kode_brg
·
kode_brg nama_brg kode_trans QTY
1002 Pencil T2124 10
1004 Pulpen T3212 5
1006 Null T8952 3
1007 Null T1215 20
1002 Pencil T2124 10
1004 Pulpen T3212 5
1006 Null T8952 3
1007 Null T1215 20
·
Instalasi
MySQL
·
MySQL adalah suatu program aplikasi
dibidang database, dan program ini bersifat free atau gratis jadi tidak perlu
lisensi untuk memakainya. Walaupun program ini gratisan jangan dikira murahan.
Program ini banyak dipakai oleh perusahaan-perusahaan besar didunia cyber. Dan
tidak bisa dipungkiri lagi bahwa MySQL merupakan program yang sangat luas
pemakainya hingga sampai saat ini. Hal ini terlihat program-program yang
berbasis web sebagian besar memanfaatkan sarana MySQL untuk penyimpanan maupun
dalam men-query database-nya. Dan sepertinya ada suatu kewajiban bagi orang-orang
yang berkecimpung didunia WEB harus menguasai MySQL ini.
·
Dan dalam kesempatan ini saya
membuat tulisan bagaimana cara meng-instalasi program MySQL, yang ditujukan
bagi yang ingin memulai untuk mendalami bahasa SQL dibawah fasilitas My SQL
ini.
·
Berbeda dengan MS.SQL kepunyaan
Microsoft kalau kita menginstall program sudah satu paket semua, jadi lebih
mudah untuk mempelajarinya. Kelebihan dari MySQL ini kita bisa mendapatkan
programnya secara gratis di internet. Tetapi untuk mengelolanya querynya kita
harus punya sarana yaitu MySQL Tools yang juga digratiskan. Kalau mau yang
lebih bagus lagi memakai versi Enterprise, disini dilengkapi dengan MySQL Query
Analyzer, jadi memudahkan kita untuk menganalisa perintah-perintah SQL.
Sayangnya versi Enterprise ini kita harus membayar, walaupun begitu kita diberi
kesempatan untuk trial selama 30 hari. Atau kalau mau yang lebih extrim lagi
kita tidak perlu memakai tools, jadi perintah-perintahnya dilakukan dengan dos
prompt. Bagi angkatan-angkatan lama mungkin masih lebih suka dengan fasilitas
ini, soalnya masih susah membuang kebiasaan lama.
·
Yang akan saya jelaskan disini hanya
cara mendownload dan menginstalasi MySQL dan bagaimana cara mencobanya, apakah
MySQL yang kita sudah running atau belum. Karena hal ini biasanya merupakan
tahap yang lumayan sulit dan merepotkan bagi pemula. Jadi saya disini menulis
untuk memudahkan bagi pemula untuk menjalankan MySQL dan dijadikan jalan
pembuka dalam penerapan perintah-perintah SQL.
·
Cara
Mendapatkan Download free MySQL :
·
Seperti yang telah saya terangkan
diatas MySQL merupakan program free, jadi kita bisa mendapatkannya secara bebas
di internet. Silakan berkunjung http://www.mysql.com,
akan muncul tampilan seperti ini :
·
Kita bisa memilih download
untuk mendapatkan file installer, dan akan muncul tampilan seperti ini :
·
Dari gambar di atas kita bisa
memilih versi MySQL 6.0 – Alpha, tampilan berikutnya
·
Pada langkah ini kita bisa memilih
MySQL yang mau dijalankan di bawah Operating System apa. Anggap saja Windows,
karena kebetulan saya memakai windows.
·
Pada gambar di atas pilih windows
ZIP/setup.EXE (x86), tekan tulisan Pick a mirror ( tidak ditunjukan pada
gambar di atas ). Tampilan yang akan muncul seperti dibawah ini ;
·
Pada tampilan diatas kita boleh isi
login tapi ini tidak wajib, kalau kita ingin langsung klik saja tulisan “No
thanks, jus take me …….”, dan tampilan berikutnya ;
·
Setelah muncul gambar diatas pilih
Indonesia, klik tulisan HTTP.
·
Tunggu sampai download selesai.
·
Setelah download selesai jangan lupa
men-download MySQL Tools caranya sama seperti diatas, Cuma setelah kita
meng-klik download cari saja MySQL Tools yang tampilannya seperti dibawah ini ;
·
Download
MySQL Tools ;
·
·
Kalau sudah muncul tampilan seperti
diatas klik MySQL GUI Tools, dan tampilan berikutnya ;
·
Pada tampilan ini pilih MySQL
Query Browser, tampilan selanjutnya
·
Tunggu sampai selesai proses
download.
·
Setelah kita mendapatkan file
download baik MySQL maupun MySQL Tool, file tersebut berupa compress-an dalam
bentuk zip, jadi sebelum melakukan instalasi harus di extract
terlebih dahulu, selanjutnya adalah bagaimana cara menginstall hasil
download-an tersebut.
·
Instalasi
MySQL
·
Pertama-tama kita harus meng-install
MySQL terlebih dahulu, cari file hasil extract dari MySQL nama file-nya Setup.
Setelah file tersebut dijalankan akan muncul suatu window kemudian tekan
tombol Next, akan muncul tampilan yang berupa pilihan Typical,
Complete, Custom. Anda boleh memilih sembarang, tapi dalam hal ini pilih
saja Typical. Kemudian tekan tombol Install. Selanjutnya tekan
tombol Next, terus tekan Next kembali, dan akan muncul tampilan
seperti berikut :
·
Centang pada tulisan Configure
the MySQL Server now, kemudian klik tombol Finish. Setelah itu tekan
tombol Finish. Dan untuk menghemat waktu dan tempat Anda terus klik saja
Next, sampai muncul tampilan berikut
·
Pada Current root password isikan
passwords, kalau belum punya password lama kosongkan saja.
·
New root
password : disini kita harus isikan password
tapi harus diingat baik-baik jangan sampai lupa, kalau perlu dicatat terlebih
dahulu
·
Cofirm : isikan password persis sama seperti di atas.
·
Kemudian klik next, muncul
gambar berikut :
·
Tekan tombol finish.
·
Tahap instalasi MySQL sudah selesai,
berikutnya adalah Instalasi MySQL Tools
·
Instalasi
MySQL Tools
·
Untuk tahapan ini lebih mudah. Cari
file yang sudah didownload diatas mysql-gui-tools-5.0-r14-win32.msi, kita
tinggal jalankan saja file ini dan ikuti terus perintah-perintahnya sampai
selesai.
·
Tahap
Implementasi :
·
Untuk menjalankannya kita harus
lewat menu Start > All Program > My SQL > My SQL Query Browser
·
Tampilan yang akan muncul
·
Stored
Connection : boleh diisi dengan nama yang kita
inginkan.
·
Server
Host harus diisi dengan “ localhost”,
·
sedangkan username harus
diisi dengan “root”,
·
dan password diisi dengan
password yang kita bikin waktu menginstalasi MySQL di atas.
·
Default
Schema boleh diisi boleh tidak. Kalau kita
ingin menuju langsung ke Database yang sudah ada misalnya saja “test” isikan
saja sesuai nama databasenya, kalau tidak ditemukan secara otomatis membentuk
database sendiri dengan nama yang kita isikan disini.
·
Kalau sampai tahap ini sudah tidak
ada error berarti MySQL kita sudah jalan dengan baik, silakan Anda mencoba
perintah-perintah SQL ditempat yang telah disediakan di program MySQL Tool
Query Browser ini.
Secara default Delphi menggunakan
Database bertype Paradox, atau kalau menggunakan database server biasanya
menggunakan Interbase. Tapi pada kenyataannya didunia programming terutama di
Indonesia kedua database tersebut diatas jarang digunakan. Tapi yang sering
digunakan justru SQL Server atau MS. SQL keluaran dari Microsoft. Padahal
antara Delphi dan SQL Server bukanlah satu paket, bahkan berbeda Vendor.
Tapi walaupun begitu antara Delphi dan SQL Server tetap memungkinkan
untuk saling terkoneksi. SQL Server digunakan untuk menyimpan Database
sedangkan Delphi dapat digunakan untuk membuat suatu tampilan interface ke
user, baik itu berupa tampilan entri data maupun tampilan report. Untuk itu diperlukan
suatu koneksi antara Program Delphi dan SQL Server. Ada 2 (dua cara) untuk
membuat koneksi, yaitu lewat sarana ODBC yang telah disediakan Microsoft
Windows. Dan yang kedua kita bisa langsung koneksi dari Delphi ke SQL Server.
Tapi yang akan dibahas disini yang lebih ringkas saja, yaitu koneksi langsung.
Langkah-langkahnya :
- Yakinkan terlebih dahulu bahwa SQL Server Anda dalam keadaan Running.
- Anda harus mengetahui lokasi komputer SQL Server di jalankan atau nama komputernya. Kalau dikomputer Anda sendiri berarti harus memakai nama komputer Anda sendiri (Computer Name).
- Anda harus mengetahui username masuk SQL Sever beserta passwordnya. Hal ini mutlak diperlukan untuk masuk ke sistem database tersebut.
Setelah 3 (tiga) langkah tersebut
diatas sudah diketahui Anda tinggal membuat settingan di Delphi. Untuk
meringkas kata, dalam contoh ini kita menggunakan database default bawaan dari
SQL Server yaitu Database yang bernama Pubs. Buka Aplikasi baru pada program
Delphi dan letakkan komponen Database di dalam form. Seperti gambar berikut ;
Seperti gambar diatas Anda tinggal double klik (klik
dua kali) pada komponen database sehingga muncul gambar berikut ;
Untuk pengisian Name terserah Anda, nama inilah yang
nantinya digunakan sebagai acuan nama database Anda di Delphi. Alias
Name, dikosongkan saja. Driver Name, pilih MS SQL Untuk Parameter,
klik saja tombol Default, maka akan muncul list parameter
default. Yang perlu Anda perhatikan dari parameter tersebut adalah : DATABASE
NAME Merupakan suatu nama database yang akan kita koneksikan yang ada di
SQL Server, kalau Anda mempunyai database sendiri kasih nama sesuai dengan nama
database Anda saja, tapi dalam contoh ini kita menggunakan database Pubs.
SERVER NAME Lokasi Database di SQL Server digunakan atau dijalankan,
apabila Anda menggunakan jaringan isi parameter ini dengan nama komputernya
atau (computer name). Begitu pula dengan dikomputer lokal, isikan saja
parameter ini dengan nama komputernya. Tapi nama komputer Anda harus jelas
terlebih dahulu, dan jangan ada sepasi. Apabila Computer Name Anda memakai
spasi lebih baik diubah terlebih dahulu untuk menghilangkan spasinya. USER
NAME Pada saat masuk SQL Server biasanya Anda ditanyai username, jadi Anda
isikan saja username tersebut. PASSWORD Parameter ini terletak paling
bawah sendiri, digambar tidak kelihatan. Untuk mengisinya gunakan saja password
yang Anda bikin pada saat instalasi SQL pertama kali apabila memakai
passwordnya, jika tidak ada kosongkan saja passwordnya. Jadi tergantung saat
Anda menginstall SQL pertama kali. Login Prompt dihilangkan
centangnya untuk menghindari pertanyaan permintaan username dan password setiap
kali koneksi ke SQL Server. Setelah semuanya sudah diatur seperti diatas klik tombol
OK. Tapi ini belum selesai, Anda harus mengatur propertis dari Komponen
Database. Klik satu kali Komponen Database kemudian tekan tombol F11, maka akan
muncul gambar dibawah ini :
isikan parameternya seperti diatas, untuk mengetes apakah Anda
sudah terhubung dengan Database, Connected diganti dengan true. Apabila
tidak ada error berarti setting Anda sudah sudah berhasil dan kembalikan lagi
nila ini false, biarkan didefaultkan false saja. Jika langkah-langkah tersebut
diatas sudah berhasil, Anda tinggal memberikan perintah-perintah SQL lewat
Komponen Query yang telah disediakan Delphi. Tapi sebelumnya kita pilih
terlebih dahulu tabel apa yang ingin kita tampilkan dari database Pubs tadi.
Anda bisa masuk lewat Query Analyzer bawaannya SQL Server dan cari tabel mana
yang ingin ditampilkan di Delphi. Sebagai contoh kita ambil saja tabel stores
yang ada di database Pubs. Pertama tambahkan komponen Query di form.
object inspector untuk Query :
DatabaseName : diisi dengan jrdata sesuai
setting Anda waktu bikin paramater di komponen Database. SQL : pada
TStrings klik dua kali dan muncul gambar berikut.
Kemudian isikan perintah Query pada box tersebut dengan
“select* from stores”. Terus tekan OK. Untuk menampilkan hasilnya Anda
butuh 2(dua) komponen lagi untuk ditambahkan, yaitu DATASOURCE dan
DBGRID. Seperti gambar barikut ini ;
Komponen DATASOURCE
Parameter yang perlu diisikan di Object Inspector pada komponen ini Dataset
: Query1 sesuai dengan nama komponen Query yang telah diberikan sebelumnya.
Komponen DBGRID Parameter yang perlu diisikan pada Object
Inspector DataSource : DataSource1 Berikutnya kita akan coba untuk
mengaktifkan apakah perintah Anda sudah terkoneksi dengan SQL Server. Pilih
Komponen Query dan pada object Inspector properties pada Active ganti
true, apabila dalam komponen Grid muncul suatu daftar berarti perintah Anda
sudah benar. Saya kira pembahasan saya untuk koneksi antara Delphi dengan SQL
Server saya cukupkan sampai disini saja. Mudah-mudahan bermanfaat bagi para
pemakai Delphi pemula yang ingin bermain-main dengan SQL Server lewat Delphi.
Melanjutkan artikel saya yang
berjudul Konsep Himpunan Dalam SQL
, disini saya akan melengkapi 2 (perintah) lagi yaitu Full Join dan Cross
Join. Perintah ini merupakan salah satu bentuk kombinasi dari beberapa
kombinasi dalam merelasikan 2 (tabel) atau lebih. Memang perintah ini sangat
jarang dipakai, tapi tidak ada salahnya untuk saya tuliskan disini karena saya
sendiri sebenarnya sudah lupa dengan dua perintah ini. Untung ada yang
mengingatkan saya lewat komentar di artikel yang telah saya sebutkan di atas.
Jadi walaupun nantinya saya lupa lagi masih bisa dibaca di artikel ini, dan
mungkin ada pengunjung yang lebih bisa memanfaatkannya.
Full Join :
Apabila Anda punya 2 (dua) table
yaitu tabel A dan tabel B.
Tabel A : Berisi nama-nama person.
Kode
|
Nama
|
Kota
|
1001
|
Udin
|
Surabaya
|
1002
|
Imul
|
Jakarta
|
1003
|
Dede
|
Jakarta
|
1004
|
Vina
|
Bandung
|
1005
|
Tutik
|
Semarang
|
Tabel B : Berisi daftar kota.
Kota
|
Area
|
Ambon
|
0911
|
Surabaya
|
031
|
Jakarta
|
021
|
Yogyakarta
|
0274
|
Solo
|
0271
|
Dengan perintah Full Join maka
gabungan dari dua tabel tersebut seluruhnya akan ditampilkan, disini kita
contohkan field “kota” sebagai kunci penghubung.
SELECT a.kode, a.nama,
a.kota as kota_person, b.kota as daft_kota FROM tabelA a FULL JOIN tabelB b on a.kota=b.kota ORDER BY kode |
Maka tabel yang dihasilkan :
Kode
|
Nama
|
Kota_Person
|
Daft_Kota
|
Area
|
null
|
null
|
null
|
Ambon
|
0911
|
null
|
null
|
null
|
Yogyakarta
|
0274
|
null
|
null
|
null
|
Solo
|
0271
|
1001
|
Udin
|
Surabaya
|
Surabaya
|
031
|
1002
|
Imul
|
Jakarta
|
Jakarta
|
021
|
1003
|
Dede
|
Jakarta
|
Jakarta
|
021
|
1004
|
Vina
|
Bandung
|
null
|
null
|
1005
|
Tutik
|
Semarang
|
null
|
null
|
Hasil tabel tersebut terlihat, untuk
kolom kota_person = “Bandung” dan “Semarang” mempunyai daft_kota
dan Area yang bernilai “null” (tidak punya nilai). Sebab dua kota
tersebut tidak terdaftar di tabel B.
Begitu pula dengan kolom Daft_kota
= “Ambon”, “Yogyakarta”, “Solo” mempunyai Kode, nama, kota_person = “null”.
Penyebabnya kota-kota tersebut terdaftar didalam tabel B tapi tidak ada dalam
tabel A.
Jadi semua sudah jelas bagaimana
cara menggunakan FULL JOIN.
CROSS JOIN :
Untuk memahami perintah ini saya
berikan 2 (dua) tabel yang sederhana saja sebagai contoh.
Dari tabel diatas cuma saya ringkas
saja garis relasinya, sebenarnya diteruskan sampai kode A = ’1005′.
Jadi himpunan yang terbentuk dari
CROSS JOIN di atas
hasil := {’1001A’, ’1001B’, ’1001C’,
’1002A’, ’1002B’, ’1002C’, …, ’1005B’, ’1005C’}.
Bentuk perintahnya sebagai berikut :
SELECT kodeA, kodeB FROM tabelA
CROSS JOIN tabelB ORDER BY KodeA |
Tabel yang dihasilkan :
KodeA
|
KodeB
|
1001
|
A
|
1001
|
B
|
1001
|
C
|
1002
|
A
|
1002
|
B
|
1002
|
C
|
1003
|
A
|
1003
|
B
|
1003
|
C
|
1004
|
A
|
1004
|
B
|
1004
|
C
|
1005
|
A
|
1005
|
B
|
1005
|
C
|
Demikian penjelasan mengenai FULL
JOIN dan CROSS JOIN mudah-mudah bermanfaat bagi pembaca.
Didalam query sebenarnya bisa
disisipkan lagi perintah query yang diistilahkan dengan subquery. Statement
yang biasanya dipakai SELECT, EXIST dan IN. Untuk memudahkan penjelasan dalam
pemakaian perintah tersebut kita akan menggunakan konsep himpunan.
Contohnya himpunan A ={’1001′,
’1002′, ’1003′, ’1004′, ’1005′}
Ada himpunan B = {’1001′, ’1004′,
’1006′}.
Kita ingin suatu data dimana data
tersebut terdiri dari himpunan A yang juga bukan merupakan anggota himpunan B
Dari gambar samping terlihat gambar
diagram himpunan. Dimana yang berwana hitam merupakan suatu data yang kita
cari.
Jawaban dari contoh soal diatas
sangat mudah yaitu {’1002′, ’1003′, ’1005′}
Karena jumlah datanya sangat sedikit
dan dapat dilihat dengan mata telanjang jadi sangat mudah sekali. Tapi
bagaimana kalau kita mempunyai ribuan data atau lebih, baik yang ada di
himpunan A maupun di himpunan B. Tentunya kita membutuhkan suatu trik-trik
sendiri. Dengan bantuan SQL kita sangat mudah untuk mendapatkan data-data yang
kita inginkan. Disinilah fungsi dari subquery berperanan sangat penting sekali.
Anggap saja himpunan A merupakan
tabel_A, dan himpunan B merupakan tabel_B. Dimana tabel-tabel tersebut
mengandung suatu field kode yang isinya berupa data-data himpunan tersebut.
tabel A
|
tabel B
|
||||||||||||
|
|
Kalau dalam perintah SQL
select kode from tabel_A where kode
not in(select kode from tabel_B)
maka data yang dihasilkan
Kode
|
1002
|
1003
|
1005
|
Sampai disini dulu, artikel
berikutnya saya akan membahas perintah EXISTS.
Perintah UNION digunakan untuk
menggabungkan isi dari 2 (dua) tabel atau lebih. Perintah ini terdiri dari dua
jenis, yaitu UNION dan UNION ALL. Seperti biasanya untuk menghasilkan suatu
dataset perintah UNION ini harus disisipkan diantara perintah SELECT.
Agar lebih jelas kita ambil contoh
sederhana dari sekumpulan data.
tabel_A = {‘1001’, ‘1002’, ‘1003’,
‘1004’, ‘1005’}
tabel_B =
{‘1002’,’1005’,’1006’,’1007’}
UNION
Kalau kita ingin menggabungkan dari
dua tabel tersebut dengan menggunakan UNION maka akan menghasilkan himpunan
data berikut {{‘1001’, ‘1002’, ‘1003’, ‘1004’, ‘1005’, ’1006’,’1007’}
Dalam bentuk diagram himpunan
terbentuk sebagai berikut :
Dalam bentuk tabel sebagai berikut
tabel_A
|
tabel_B
|
tabel Hasil
|
||
Kode
|
Kode
|
Kode
|
||
1001
|
1002
|
1001
|
||
1002
|
1005
|
1002
|
||
1003
|
1006
|
UNION
|
1003
|
|
1004
|
1007
|
1004
|
||
1005
|
1005
|
|||
1006
|
||||
1007
|
Bentuk perintahnya dalam SQL :
SELECT* FROM tabel_A UNION SELECT*
FROM tabel_B
|
UNION ALL
Berbeda dengan perintah UNION,
perintah UNION ALL menggabungkan keseluruhan data walaupun data tersebut
mempunyai isi yang sama. Untuk jelasnya kita ambil kembali contoh yang di atas.
tabel_A = {‘1001’, ‘1002’, ‘1003’,
‘1004’, ‘1005’}
tabel_B =
{‘1002’,’1005’,’1006’,’1007’}
Kalau kita memakai perintah UNION
ALL, data yang dihasilkan {‘1001’, ‘1002’, ‘1003’, ‘1004’, ‘1005’,
‘1002’,’1005’,’1006’,’1007’}. Jadi semua data akan digabung walaupun
menghasilkan data ganda seperti kode ’1002′ dan ’1005′ akan ditampilkan 2 (dua)
kali.
Bentuk diagram himpunan
Dalam bentuk tabel dapat digambarkan
sebagai berikut :
tabel_A
|
tabel_B
|
tabel Hasil
|
||
Kode
|
Kode
|
Kode
|
||
1001
|
1002
|
1001
|
||
1002
|
1005
|
1002
|
||
1003
|
1006
|
UNION ALL
|
1003
|
|
1004
|
1007
|
1004
|
||
1005
|
1005
|
|||
1002
|
||||
1005
|
||||
1006
|
||||
1007
|
Perintahnya dalam bentuk SQL
SELECT* FROM tabel_A UNION ALL
SELECT* FROM tabel_B
|
Cara Membuat Store Procedure di SQL
Server
Membuat STORE PROCEDURE di SQL
sangat penting untuk dikuasai terutama bagi ingin mendalami bahasa pemrograman
aplikasi yang berkaitan dengan DATABASE (entah itu Delphi, VBasic, VFoxro,
bahkan Web Base). Karena didalam STORE PROCEDURE ini kita akan melakukan
perhitungan-perhitungan data yang hasilnya berupa dataset langsung dapat kita
ambil melalui program aplikasi yang kita bikin.Mungkin Anda pernah mendengar
dengan program Client Server. Maksud dari program Client Server adalah kita
membuat suatu program yang diletakkan diserver berupa bahasa SQL dimana didalam
program tersebut biasanya ditugaskan untuk melakukan perhitungan-perhitungan
data dimana hasil akhirnya dapat kita ambil dan ditampilkan lewat
program-program aplikasi (seperti Delphi, Visual Basic, Visual Foxpro, dll)
yang berhubungan langsung dengan end user. Jadi STORE PROCEDURE tersebut
letaknya di Sever, sedangkan program aplikasi yang berhubungan langsung dengan
end user letaknya di komputer Client. Untuk itulah diistilahkan dengan program
Client Server. Penguasaan SQL wajib hukumnya bagi yang ingin mengembangkan
suatu program dengan berbasis DATABASE. Kalau tidak kita akan mendapat suatu
kesulitan yang sangat luar biasa dalam mengembangkan suatu program aplikasi.
Apalagi bahasa SQL ini sangat welcome sekali terhadap berbagai macam jenis
bahasa. Semuanya rata-rata mengenali bahasa ini. Kita kembali ke awal, dengan
menggunakan STORE PROCEDURE traffic (lalu lintas) data dijaringan dapat
dikurangi, karena perhitungan-perhitungan sudah dilakukan diserver dan program
di Client tinggal mengambil hasil akhirnya saja yang akan ditampilkan kepada
end user.
Disini saya akan membuat contoh
membuat STORE PROCEDURE dengan memakai SQL Server dengan menggunakan fasilitas
Query Analyzer.
Untuk memudahkan saya akan berikan
contoh kasus sederhana dibawah ini :
Kita mempunyai dua tabel, yang
pertama tb_masuk dimana tabel ini berisi quantity barang masuk. Dan yang
kedua tabel tb_keluar yang berisi data quantity barang keluar. Sekarang
hitung jumlah quantity dengan rumus qty_akhir = qtymasuk-qtykeluar.
tb_masuk
|
tb_keluar
|
|||
Kode
|
Qty
|
Kode
|
Qty
|
|
1001
|
50
|
1002
|
10
|
|
1002
|
25
|
1003
|
11
|
|
1001
|
12
|
1004
|
15
|
|
1003
|
15
|
1006
|
20
|
|
1006
|
26
|
1002
|
5
|
|
1004
|
30
|
1003
|
3
|
|
1001
|
25
|
1001
|
20
|
|
1002
|
23
|
1006
|
2
|
Pertama kali buka Query Analyzer,
dan diharapkan Anda sudah bisa membuat CREATE DATABASE dan CREATE TABLE dengan
isinya seperti tabel diatas.
Kemudian pertama-tama bikin perintah
seperti dibawah ini
CREATE PROC sp_hitungStok AS
Perintah tersebut di running
terlebih dahulu.
Kemudian diedit melalui
langkah-langkah berikut :
Klik Object Browser (F8)
muncul gambar seperti diatas, pilih
database yang digunakan dan di expand, kemudian pilih folder Store Procedure,
disini merupakan daftar dari Store Procedure termasuk Store Procedure yang kita
bikin diatas. Cari nama Store Procedure yang telah kita bikin yaitu sp_hitungStok.
Kemudian klik kanan dan edit…..
setelah ALTER PROC sp_hitungStok
AS sisipkan perintah ini :
create table #tb_hasil(kode
char(4), qty float)insert into #tb_hasil
select kode, qty from tb_masuk
insert into #tb_hasil
select kode, -qty from tb_keluar
select kode, sum(qty) from
#tb_hasil group by kode order by kode
|
“create table #tb_hasil(kode
char(4), qty float)” merupakan tabel temporary, setelah procedure selesai
dijalankan table ini otomatis terhapus.
Setelah perintah disisipkan silakan
di running terlebih dahulu procedure ini dengan menekan tombol Ctrl+E.
Setelah itu ditutup tidak apa-apa,
atau masuk dalam window lain dengan menekan tombol Ctrl+W, pilih window
sebelumnya atau untitled1.
Berikan perintah untuk memanggil
procedure yang dibikin tadi dengan perintah berikut :
exec sp_hitungStok
kemudian perintah ini diblok, dan di
running dengan Ctrl+E
Untuk lebih jelas hasilnya dalam
bentuk grid Anda harus men-setting menu Query-Result in Grid
Anda akan melihat hasilnya :
Tabel hasil tersebut merupakan
penjumlahan dari tabel tb_masuk dan tb_keluar.
Store Procedure dengan Parameter
Dengan contoh yang sama kita akan
membuat suatu store procedure dengan parameter.
Seperti contoh diatas kita harus
melakukan pengeditan dengan mengklik kanan Store Procedure yang kita bikin dan
berikan perintah berikut :
ALTER PROC sp_hitungStok @kode
char(4) AScreate table #tb_hasil(kode char(4), qty float)
insert into #tb_hasil
select kode, qty from tb_masuk
where kode = @kode
insert into #tb_hasil
select kode, -qty from tb_keluar
where kode = @kode
select kode, sum(qty)from
#tb_hasil group by kode order by kode
|
Lengkapnya sbb :
Kemudian di running, terus untuk
memanggilnya :
exec sp_hitungStok isi_paramater
contoh : exec sp_hitung ’1001′
silakan jalankan, kita akan
mendapatkan hasil berikut :
Yang akan tampil hanya kode ’1001′
Anda bisa mencobannya dengan kode
lainnya.
Perintah LIKE dalam SQL
Perintah ini sering digunakan
bersama-sama dengan perintah SELECT, dan biasanya dimanfaatkan untuk pencarian
data. Sesuai dengan artinya LIKE berarti mirip. Jadi yang dicari adalah suatu
data yang mirip dengan apa yang kita inginkan.
Ada beberapa kombinasi untuk
perintah ini,
Simbol “%”
Simbol ini biasanya digunakan untuk
mengabaikan semua string atau zero.
Misalnya kita punya data tabel
berikut :
Tabel A
Kode
|
Nama
|
1001
|
Budi Handoko
|
1002
|
Budi Salam
|
2003
|
Slamet Budiono
|
2005
|
Abdul Budiyanto
|
3006
|
Guntur Slamet
|
4007
|
Budi Guntur
|
5001
|
Slamet Raharjo
|
6003
|
Guntur Saputra
|
6004
|
Dwi Raharjo
|
Misalkan kita perintahkan begini :
Mencari nama depan :
SELECT*
FROM tabel_A WHERE nama LIKE ‘Budi%’
|
Maka data yang ditampilkan atau
dihasilkan adalah semua nama yang mempunyai nama awal “Budi”, seperti tabel
yang dihasilkan dibawah ini,
Kode
|
Nama
|
1001
|
Budi Handoko
|
1002
|
Budi Salam
|
4007
|
Budi Guntur
|
Mencari nama belakang :
SELECT*
FROM tabel_A WHERE nama LIKE ‘%Raharjo’
|
Perintah diatas ini artinya kita
akan menampilkan seluruh nama yang mempunyai nama akhir Raharjo, tidak peduli
dengan nama depan.
Maka tabel yang dihasilkan :
Kode
|
Nama
|
5001
|
Slamet Raharjo
|
6004
|
Dwi Raharjo
|
Mencari nama yang mengandung suatu
nama yang kita cari :
SELECT*
FROM tabel_A WHERE nama LIKE ‘%Budi%’
|
Perintah diatas merupakan pencarian
dengan suatu nama yang mengandung nama “budi” dan data yang dihasilkan :
Kode
|
Nama
|
1001
|
Budi Handoko
|
1002
|
Budi Salam
|
2003
|
Slamet Budiono
|
2005
|
Abdul Budiyanto
|
4007
|
Budi Guntur
|
Create Trigger dalam SQL
Trigger merupakan store procedure
yang dijalankan secara automatis saat user melakukan modifikasi data pada
tabel. Modifikasi data yang dilakukan pada tabel yaitu berupa perintah INSERT,
UPDATE, dan DELETE.
INSERT , UPDATE dan DELETE bisa
digabung jadi satu trigger yang dinamakan Multiple Trigger.
Bentuk dasar perintahnya :
CREATE TRIGGER nama_trigger
ON nama_tabel
FOR INSERT, UPDATE, DELETE
AS
isi statement-statement Anda
disini.
GO
|
Saya akan memberi contoh sederhana
untuk mudah memahami bagaimana cara kerja trigger ini.
Misalkan kita punya data di table
DaftarSiswa
DaftarSiswa
|
|
Kode
|
Status
|
1001
|
|
1002
|
|
1003
|
Di tabel yang lain kita juga punya
tabel Daftar Nilai :
DaftarNilai
|
|
Kode
|
Nilai
|
Daftar nilai ini belum ada isinya
yang nantinya akan kita isi dengan perintah INSERT.
Kolom Status pada tabel DaftarSiswa
akan kita isi dengan “Lulus” dan “Tidak Lulus” secara automatis saat kita
melakukan INSERT dan UPDATE pada tabel DaftarNilai.
Cara membuat dan mengisi kedua tabel
diatas :
CREATE TABLE daftarSiswa (kode
char(4), status char(10))
CREATE TABLE daftarnilai (kode
char(4), nilai float)
Pada tabel DaftarSiswa diisi dengan
perintah berikut :
INSERT INTO daftarSiswa
VALUES(’1001′,”)
INSERT INTO daftarSiswa
VALUES(’1002′,”)
INSERT INTO daftarSiswa
VALUES(’1003′,”)
Setelah semuanya dijalankan di Query
Analyzer, berikutnya kita akan membuat suatu trigger di tabel daftarNilai.
CREATE TRIGGER
tr_status
ON daftarnilai
FOR INSERT, UPDATE
AS
DECLARE @kode char(4)
DECLARE @nilai float
SELECT @kode = kode, @nilai =
nilai FROM daftarNilai
IF @nilai >= 60
UPDATE daftarSiswa SET status =
‘Lulus’ WHERE kode=@kode
ELSE UPDATE daftarSiswa SET status
= ‘Tidak Lulus’ WHERE kode=@kode
go
|
Untuk menganalisa lihat isi kedua
tabel diatas dengan perintah
SELECT* FROM daftarSiswa
SELECT* FROM daftarNilai
Setelah Anda melihat hasilnya
kemudian jalankan perintah dibawah ini :
INSERT INTO daftarNilai
values(’1001′,70)
INSERT INTO daftarNilai
values(’1002′,50)
INSERT INTO daftarNilai
values(’1003′,80)
Setelah dijalankan Anda bisa lihat
kembali isi tabel daftarSiswa dan daftarNilai.
DaftarSiswa
|
|
Kode
|
Status
|
1001
|
Lulus
|
1002
|
Tidak
Lulus
|
1003
|
Lulus
|
DaftarNilai
|
|
Kode
|
Nilai
|
1001
|
70
|
1002
|
50
|
1003
|
80
|
Disini terlihat saat kita melakukan
perintah INSERT di tabel daftarNilai secara otomatis program trigger melakukan
pengisian pada tabel daftarSiwa pada kolom “status”
Cukup sampa
Perintah CASE sering
digunakan untuk menampilkan nilai tertentu dari beberapa barisan data dengan
syarat-syarat atau kondisi yang kita berikan.
Kalau kita belajar bahasa
pemrograman tentu kita kenal dengan perintah IF Condition, fungsinya CASE
hampir sama. Bedanya perintah CASE digunakan untuk beberapa kondisi
sekaligus, dan didalam SQL perintah CASE tidak bisa berdiri sendiri
melainkan harus disisipkan dalam perintah SELECT. Jadi berbeda dengan
perintah IF yang lebih bebas, akan tetapi perintah IF hanya
berguna apabila dimasukan dalam STORE PROCEDURE, FUNCTION dan TRIGGER.
Perbedaannya dalam SQL sangat jelas sekali, karena perintah CASE
disisipkan dalam perintah SELECT jadi yang dihasilkan langsung berupa DATASET
dan langsung bisa dilihat hasilnya.
Perintah CASE ini mempunyai
dua format :
1. Simple Case function :
Maksudnya adalah perintah CASE
sederhana.
Bentuk Sintaknya
CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END
WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END
2. Searched CASE function:
Maksudnya perintah CASE ini diikuti
dengan syarat kondisi boolean, seperti >, <, >=, <= , dan
lain-lain.
Sintaknya sebagai berikut.
CASE
WHEN Boolean_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END
WHEN Boolean_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END
Saya akan memberikan contoh dari
kedua jenis CASE tersebut agar dapat bisa membedakan, kapan saat kita
memakai Simple Case dan kapan saat kita memakai Search Case.
Terlebih dahulu saya akan memberi
contoh Simple Case,
Misalnya kita mempunyai lima
kategori penilaian terhadap nilai ujian Mahasiswa.
A = Sangat Baik, B = ‘Baik’, C =
‘Cukup’, D = ‘Jelek’, E = ‘Sangat Jelek’
Dibawah ini ada tabel dasar berupa
nilai ujian dari sejumlah Mahasiswa, kita namakan saja tb_nilai
No_induk
|
Nilai
|
M1001
|
A
|
M1002
|
B
|
M1003
|
D
|
M1004
|
E
|
M1005
|
A
|
M1006
|
C
|
M1007
|
B
|
M1008
|
E
|
M1009
|
A
|
M1010
|
D
|
Dari data tersebut kita ingin
mengkonversikan nilai-nilai tersebut dengan memakai perintah CASE sehingga
menghasilkan barisan data dibawah ini.
No_induk
|
Nilai
|
Keterangan
|
M1001
|
A
|
Sangat
Baik
|
M1002
|
B
|
Baik
|
M1003
|
D
|
Jelek
|
M1004
|
E
|
Sangat
Jelek
|
M1005
|
A
|
Sangat
Baik
|
M1006
|
C
|
Cukup
|
M1007
|
B
|
Baik
|
M1008
|
E
|
Sangat
Jelek
|
M1009
|
A
|
Sangat
Baik
|
M1010
|
D
|
Jelek
|
Untuk menghasilkan data diatas kita
menggunakan skrip SQL sebagai berikut :
SELECT no_induk, nilai,
keterangan = CASE nilai WHEN ‘A’ THEN ‘Sangat Baik’ WHEN ‘B’ THEN ‘Baik’ WHEN ‘C’ THEN ‘Cukup’ WHEN ‘D’ THEN ‘Jelek’ ELSE ‘Sangat Jelek’ END FROM tb_nilai |
Dari skrip SQL tersebut terlihat
kita membentuk kolom keterangan yang mana isinya sesuai dengan kondisi CASE.
Berikutnya saya akan memberi contoh Search
Case,
Anggaplah kita mempunyai kategori
nilai
nilai > 8,5 dapat kategori ‘A’,
nilai >6,5 dan <=8,5 kategori
‘B’
nilai > 5,5 dan <= 6,5
kategori ‘C’
nilai >4,5 dan <= 5,5 kategori
‘D’
Nilai <= 4,5 kategori E.
Dan kita mempunyai tabel kita beri
nama saja daftar_nilai dengan isi sebagai berikut
No_induk
|
Nilai
|
M1001
|
9
|
M1002
|
8
|
M1003
|
6
|
M1004
|
4.5
|
M1005
|
3
|
M1006
|
5.5
|
M1007
|
8
|
M1008
|
7
|
M1009
|
6
|
M1010
|
6.5
|
Dan kita ingin menghasilkan suatu
dataset yang bentuk tampilannya sebagai berikut :
No_induk
|
Nilai
|
Kategori
|
M1001
|
9
|
A
|
M1002
|
8
|
C
|
M1003
|
6
|
B
|
M1004
|
4.5
|
E
|
M1005
|
3
|
E
|
M1006
|
5.5
|
D
|
M1007
|
8
|
B
|
M1008
|
7
|
B
|
M1009
|
6
|
C
|
M1010
|
6.5
|
C
|
Maka Skrip yang akan harus ditulis
sebagai berikut :
SELECT no_induk, nilai, kategori =
CASE WHEN nilai > 8.5 THEN ‘A’ WHEN nilai > 6.5 THEN ‘B’ WHEN nilai > 5.5 THEN ‘C’ WHEN nilai > 4.5 THEN ‘D’ ELSE ‘E’ END FROM daftar_nilai |
Kedua contoh diatas merupakan
contoh-contoh sederhana dan apabila sudah dipahami dapat dikembangkan lebih
lanjut sesuai dengan kebutuhan situasi.
Mudah-mudahan dapat bermanfaat bagi
yang suka bermain-main dengan SQL.
Tidak ada komentar:
Posting Komentar