Structure Query Language (SQL)
Ada 2 (dua) komponen utama dari SQL :
1. Sebuah DDL untuk mendefenisikan struktur database.
2. Sebuah DML untuk retrieval dan update data.
Dalam SQL tidak ada If … Then … Else, Go To, dan Do … While. SQL merupakan bahasa yang relatif mudah dipelajari karena :
- SQL merupakan sebuah non procedural language, SQL tidak membutuhkan kita untuk mendefenisikan metode akses data.
- Seperti bahasa yang paling modern, SQL pada dasarnya bebas format, yang berarti bagian dari statement tidak harus diketik pada lokasi yang khusus di layar.
- Struktur perintah terdiri dari kata-kata inggris yang standar seperti : Create, Table, Insert, Select.
1. Data Definition Language (DDL)
Hasil kompilasi dari perintah DDL adalah satu set dari tabel yang disimpan dalam file khusus disebut data dictionary/directory. Satu set directory adalah satu file yang berisi meta data yaitu “data mengenai data” file ini dikonsultasikan sebelum data sebenarnya dibaca atau dimodifikasikan dalam satu sistem database.
Statement yang terdapat dalam DDL :
> CREATE DATABASE
TABLE
INDEX
VIEW
> DROP DATABASE
TABLE
INDEX
VIEW
> ALTER TABLE
Data Definition menggunakan SQL :
Tabel Dokter (Kode_Dok menunjukkan primary key dari tabel dokter)
Kode_Dok |
Nama_Dok |
D001 D003 D004 D015 |
Alfian Joni Kuniawan Esti Yuliana Sri Ningsih |
Tabel Pasien (Kode_Pas menunjukkan primary key dari tabel pasien)
Kode_Pas |
Nama_Pas |
Jekel |
Alamat |
P051 P063 P004 P015 P125 P023 |
Elfis Linda Yati Helmi Depi Haryanto Yanti Octavia Devi Marlina |
L P L L P P |
Sungai Penuh Tanjung Tanah Semurup Sebukar Sungai Penuh Sungai Penuh |
Tabel Berobat
Kode_Pas |
Kode_Dok |
Tgl_Berobat |
Nama_sakit |
P051 P063 P004 P015 P051 P063 P015 P015 |
D004 D015 D001 D003 D004 D015 D004 D004 |
12-05-2005 10-04-2005 10-04-2005 12-05-2005 15-05-2005 15-05-2005 16-05-2005 22-05-2005 |
> Create Database → membuat database
Bentuk Umum :
Create Database (nama_database); |
Contoh :
- Buat file database dengan nama Dokter
→ Create Database Dokter
- Buat file database dengan nama Pasien
→ Create Database Pasien
> Create Table → membuat tabel
Bentuk Umum :
Create Table nama_tabel (nama_kolom1 tipe_data lebar_data,….); |
Keterangan :
nama_tabel → nama yang diberikan di tabel baru. Nama tabel maksimal terdiri dari 8 karakter. Tidak boleh memakai spasi, terdiri dari huruf.
nama_kolom → nama yang diberikan untuk kolom baru, maksimal terdiri dari 10 karakter. Tidak boleh memakai spasi, terdiri dari huruf, angka dan lain-lain.
type_data → jenis data yang nilainya dimasukkan dalam kolom yang telah ditentukan.
lebar_data → nomor spasi karakter untuk mengikuti data yang dimasukkan dalam kolom yang telah ditentukan.
Contoh :
- Buat tabel Dokter
→ Create Table Dokter (Kode_Dok (4) notnull, nama_dok (25) notnull);
- Buat tabel Berobat
→ Create Table Berobat (Kode_Pas (4) notnull, Kode_Dok (4) notnull, tgl_berobat (8) notnull, nama_sakit (25) notnull);
> Create Index → membuat index.
Bentuk Umum :
Create (unique) Index nama_index on nama_tabel (nama_kolom); |
Keterangan :
unique → pilihan perincian yang dapat digunakan untuk menguatkan nilai data di dalam kolom nama index menjadi unik.
nama_index → nama index yang baru.
nama_tabel → nama tabel yang berisi kolom index akan dibuat.
nama_kolom → nama dari kolom tempat index akan dibuat. Yang terdiri dari Asc untuk pilihan index naik dan Desc untuk pilihan index menurun.
Index memungkinkan suatu tabel diakses dengan urutan tertentu tanpa harus mengubah urutan fisik datanya dan juga dapat mempercepat proses pencarian data berdasarkan nilai field tertentu.
Contoh :
- Buat index data pasien berdasarkan kode_pas dengan nama pasien2
→ Create index pasien2 on pasien (kode_pas);
- Buat index data berobat berdasarkan kode_dok dengan nama obat2
→ Create index obat2 on berobat (kode_dok);
> Create View → untuk membuat tabel view.
Create view lebih bersifat manipulasi data daripada pernyataan definisi data.
Bentuk Umum :
Create View nama_view [(nama_kolom1,…)] As Select statement [with check option]; |
Keterangan :
nama_view → harus dimulai dari huruf, bilangan atau garis bawah. Maksimal terdiri dari 9 karakter.
with check option → merupakan klausa optimal yang menyebabkan semua perubahan dan penyisipan ke view akan diperiksa untuk mengetahui apakah semua itu memenuhi definisi view.
Contoh :
- Buat view dengan nama pasienview yang berisi semua data pasien.
→ Create view pasienview As select * from pasien;
- Buat view dengan nama berobatview yang berisi kode_pas, kode_dok dan tgl_berobat.
→ Create view berobatview (kode_pas, kode_dok, tgl_berobat)
As select kode_pas, kode_dok, tgl_berobat from berobat ;
> Drop (database, table, index, view) → digunakan untuk menghapus database, tabel, index, dan view.
Bentuk Umum :
Drop Database nama_database ; → untuk menghapus database Drop Table nama_tabel ; → untuk menghapus tabel Drop Index nama_index ; → untuk menghapus tabel index Drop View nama_view ; → untuk menghapus view |
Contoh :
- Hapus database pasien
→ Drop database pasien ;
- Hapus tabel berobat
→ Drop table berobat ;
- Hapus tabel index dokter
→ Drop index dokter ;
- Hapus tabel view pasien
→ Drop view pasien ;
> Alter Table → digunakan untuk menambah satu atau lebih kolom di tabel yang baru dibuat.
Bentuk Umum :
Alter Table nama_tabel ADD (nama_kolom, jenis_kolom) → untuk menambah kolom MODIFY (nama_kolom, jenis_kolom) → untuk mengubah kolom DROP (nama_kolom, jenis_kolom) → untuk menghapus kolom |
Contoh :
- Tambahkan kolom alamat (Alt) dengan panjang 25 karakter pada tabel Dokter
→ Alter table dokter add (alt char(25)) ;
- Ubah panjang kolom nama dokter (nama_dok) menjadi 15 karakter
→ Alter table dokter modify (nama_dok char(15))
- Hapus kolom tanggal berobat (tgl_berobat) dari tabel berobat
→ Alter table berobat drop (tgl_berobat char(8)) ;
2. Data Manipulation Language (DML)
Merupakan bahasa yang memperbolehkan pemakai untuk akses atau manipulasi data sebagaimana yang telah diorganisasikan sebelumnya dalam model data yang tepat.
Dengan DML berarti akan :
- Mengambil informasi yang tersimpan di database.
- Menyisipkan informasi baru ke database.
- Menghapus informasi dari database.
Secara dasar ada 2 (dua) type Data Manipulation Language (DML) :
1. Procedural
Yang membutuhkan pemakai untuk menspesifikasikan data apa yang dibutuhkan dan bagaimana untuk mendapatkannya.
Contoh : dBase III, Foxbase
2. Non Procedural
Yang membutuhkan pemakai untuk menspesifikasikan data apa yang dibutuhkan tanpa menspesifikasikan bagaimana untuk mendapatkannya.
Contoh :
- SQL (Structure Query Language)
- QBE (Query By Example)
Data Manipulation using SQL :
Tabel Barang (Kode_Brg menunjukkan primary key dari tabel barang)
Kode_Brg |
Nama_Brg |
Harga |
A01 A02 K01 |
AC Split ½ PK AC Split 1 PK Kulkas 2 Pintu |
550.000,- 750.000,- 1.500.000,- |
Tabel Supplier (Kode_Supp menunjukkan primary key dari tabel supplier)
Kode_Supp |
Nama_Supp |
Alamat |
P01 P02 P23 |
Putra Kerinci Intan Sutra Monalisa |
Sungai Penuh Jambi Sungai Penuh |
Tabel Nota
No_Fak |
Tgl_Fak |
Qty |
Kode_Supp |
Kode_Brg |
809 809 988 235 105 105 |
12-05-2005 12-05-2005 15-05-2005 17-06-2005 17-06-2005 17-06-2005 |
6 5 3 2 5 6 |
P01 P01 P01 P23 P02 P02 |
A01 K01 A01 A01 K01 A02 |
> Insert → digunakan untuk menyisipkan data.
Bentuk Umum :
Insert Into nama_tabel [(nama_kolom1,…)] values (data 1, …); |
Contoh :
- Masukkan data nama barang “Rice Cooker CC3” dengan kode barang “R05” dan harganya 250.000,-
→ Insert Into Barang
Values (“R05”, “Rice Cooker CC3”,250000) ;
- Masukkan kedalam file nota berupa No_Fak, Tgl_Fak, Qty, Kode_Brg dengan nilai No_Fak = 689, Tgl_Fak = 25-05-2005, Qty = 3 dan Kode_Brg = ”K01”.
→ Insert Into Nota (No_Fak, Tgl_Fak, Qty, Kode_Brg) Values (689 , 25-05-2005 , 3 , ”K01”) ;
Catatan :
Jumlah kolom = jumlah nilai, jika dalam tabel semua kolom akan diisi. Bentuk umumnya : Insert Into nama_tabel Values (nilai 1, nilai 2, …) dan nilai-nilainya sebanyak kolomnya.
> Update → digunakan untuk memperbaharui data dan mengubah kolom atau baris.
Bentuk Umum :
Update nama_tabel Set nama_kolom = ekspresi Where kondisi ; |
Keterangan :
[nama_tabel] → merupakan nama tabel atau view yang akan diupdate.
[nama_kolom] → nilai untuk menggantikan nilai lama.
[where kondisi] → klausa yang menetapkan baris yang akan diupdate.
Contoh :
- Ubahlah tanggal faktur menjadi 18-05-2005 untuk nomor faktur “988” dan kode barang “A01” pada file nota.
→ Update Nota Set Tgl_Fak=18-05-2005
Where No_Fak=988 and Kode_Brg=”A01” ;
- Ubahlah fila barang dimana harga barangnya menjadi 850000 untuk kode barang “A02”.
→ Update Barang
Set Harga=850000
Where Kode_Brg=”A02” ;
> Delete → digunakan untuk menghapus data.
Bentuk Umum :
Delete From nama_tabel Where kondisi ; |
Keterangan :
[nama_tabel] → merupakan nama tabel atau view yang akan dihapus.
[where kondisi] → klausa yang menetapkan baris yang akan dihapus.
Contoh :
- Hapus data barang yang mempunyai kode barang “R05”.
→ Delete From Barang
Where Kode_Brg=”R05” ;
- Hapus data nota yang mempunyai kode barang “A01” dan nomor faktur 809.
→ Delete From Nota
Where Kode_Brg=”A01” and No_Fak=809 ;
> Select → digunakan untuk menentukan informasi yang ingin ditampilkan dari tabel-tabel data.
Bentuk Umum :
Select [Distinct] nama_kolom From nama_tabel [Where kondisi] [Group by field_name] [Having kondisi] [Order by field_name] |
Keterangan :
[Distinct] → untuk menghilangkan duplikasi.
[nama_kolom] → nama kolom yang akan ditampilkan.
[from] → mendefenisikan seluruh tabel yang digunakan dalam query.
[nama_tabel] → merupakan nama dari tabel yang akan ditampilkan.
[where kondisi] → untuk menentukan syarat data yang akan dipilih.
[group by] → mengelompokkan data yang mempunyai nilai sama.
[having] → syarat data yang dikelompokkan digunakan bersama group by.
[order by] → untuk mengurutkan data.
Contoh :
- Tampilkan semua data supplier.
→ Select * From Supplier ;
Hasilnya :
Kode_Supp |
Nama_Supp |
Alamat |
P01 P02 P23 |
Putra Kerinci Intan Sutra Monalisa |
Sungai Penuh Jambi Sungai Penuh |
- Tampilkan semua data nota yang mempunyai kode barang “A01”.
→ Select * From Nota Where Kode_Brg=”A01” ;
Hasilnya :
No_Fak |
Tgl_Fak |
Qty |
Kode_Supp |
Kode_Brg |
809 988 235 |
12-05-2005 15-05-2005 17-06-2005 |
6 3 2 |
P01 P01 P23 |
A01 A01 A01 |
- Tampilkan semua data barang yang mempunyai harga diatas 650000.
→ Select * From Barang Where harga > 650000
Hasilnya :
Kode_Brg |
Nama_Brg |
Harga |
A02 K01 |
AC Split 1 PK Kulkas 2 Pintu |
750.000,- 1.500.000,- |
- Tampilkan no_fak dan tgl_fak pada file nota yang mempunyai kode supplier “P01” dan kode barang “A01”.
→ Select No_Fak, Tgl_Fak From Nota Where Kode_Supp=”P01” and Kode_Brg=”A01” ;
Hasilnya :
No_Fak |
Tgl_Fak |
809 988 |
12-05-2005 15-05-2005 |
- Tampilkan nama supplier yang diawali huruf “M”.
→ Select Nama_Supp From Supplier
Where Nama_Supp like “M%” ;
Hasilnya :
Nama_Supp |
Monalisa |
- Tampilkan data nama supplier yang tidak mengandung huruf “S”.
→ Select Nama_Supp From Supplier
Where Nama_Supp not like “%S%” ;
Hasilnya :
Nama_Supp |
Putra Kerinci |
- Tampilkan semua data barang yang karakter kedua pada nama barang mengandung huruf “U”
→ Select * From Barang Where Nama_Brg like “_U%” ;
Hasilnya :
Kode_Brg |
Nama_Brg |
Harga |
K01 |
Kulkas 2 Pintu |
1.500.000,- |
- Tampilkan semua data nota berdasarkan kuantitas (QTY) secara ascending.
→ Select * From Nota Order by Qty ASC ;
Hasilnya :
No_Fak |
Tgl_Fak |
Qty |
Kode_Supp |
Kode_Brg |
235 988 809 105 809 105 |
17-06-2005 15-05-2005 12-05-2005 17-06-2005 12-05-2005 17-06-2005 |
2 3 5 5 6 6 |
P23 P01 P01 P02 P01 P02 |
A01 A01 K01 K01 A01 A02 |
- Tampilkan data kode barang pada tabel nota dimana kode barang yang sama hanya ditampilkan satu kali saja.
→ Select Distinct Kode_Brg From Nota ;
Hasilnya :
Kode_Brg |
A01 K01 A02 |
- Tampilkan nomor faktur dari tabel nota dan jumlah data yang mempunyai nomor faktur tersebut.
→ Select No_Fak, Count (*) From Nota
Group by No_Fak ;
Hasilnya :
No_Fak |
Count (*) |
809 988 235 105 |
2 1 1 2 |
- Tampilkan nomor faktur dari tabel nota dan jumlah data yang mempunyai nomor faktur tersebut lebih dari 1.
→ Select No_Fak, Count (*) From Nota
Group by No_Fak Having Count (*) > 1 ;
Hasilnya :
No_Fak |
Count (*) |
809 105 |
2 2 |
- Tampilkan kuantitas (QTY) tertinggi dan terendah dari tabel nota yang mempunyai kode barang “A01”.
→ Select Max (Qty), Min (Qty) From Nota
Where Kode_Brg=”A01” ;
Hasilnya :
Max (Qty) |
Min (Qty) |
6 |
2 |
- Tampilkan rata-rata dan jumlah kuantitas (QTY) dari tabel nota yang mempunyai kode barang “K01”.
→ Select Avg (Qty), Sum (Qty) From Nota
Where Kode_Brg=”K01” ;
Hasilnya :
Avg (Qty) |
Sum (Qty) |
5 |
10 |
- Tampilkan nama barang yang dibeli oleh “Monalisa”.
→ Select Nama_Brg From Barang Where Kode_Brg in ( Select Kode_Brg From Nota Where Kode_Supp in ( Select Kode_Supp From Supplier Where Nama_Supp=”Monalisa”));
atau
→ Select Nama_Brg From Barang, Nota, Supplier
Where Supplier.Nama_Supp = ”Monalisa” and Nota.Kode_Supp=Supplier.Kode_Supp and Barang.Kode_Brg=Nota.Kode_Brg;
Hasilnya :
Nama_Brg |
AC Split ½ PK |
- Tampilkan nama supplier yang tidak membeli AC Split ½ PK (A01).
→ Select Nama_Supp From Supplier Where not exists (Select * From Nota Where Nota.Kode_Supp = Supplier.Kode_Supp and Kode_Brg=”A01”) ;
Hasilnya :
Nama_Supp |
Intan Sutra |
- Tampilkan kode supplier yang bernama “Monalisa” dan yang tidak membeli AC Split ½ PK (A01).
→ Select Kode_Supp From Supplier Where Nama_Supp=”Monalisa” Union Select Kode_Supp From Nota Where Kode_Brg <> “A01” ;
Hasilnya :
Kode_Supp |
P02 P23 |