14 Maret 2021

Structure Query Language (SQL)

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