SQL (Structured Query Language

SQL secara garis besar terdiri dari 3 bagian,yaitu :

  1. DDL (Data Definition Language)
  2. DML (Data Manipulating Language)
  3. DCL (Data Control Language)

Hubungan antara SQL dan Basis Dats Relasional

Secara sederhana hubungan atara SQL dan basis data relasional adalah penghubung antara aplikasi dan basis data relasional.
Aplikasi adalah bahasa pemograman umum seperti : Oracle Developer,C++Builder,Delphi,Power Builder,Visual Basic,Visual FoxPro,Microsoft Access,dll.Sedangkan Basis Data Relasional adalah basis data dimana tabel-tabel yang ada di dalamny saling berelasi satu dengan yang lain (ERD).

  • Data Defenition Language (DDL)

DDL merupakan perintah yang digunakan untuk melakukan pendefenisian database dan pendefenisian tabel. Dengan kelompok perintah dalam DDL ini maka dapat dibuat tabel, mengubah strukturnya, menghapus tabel, membuat indeks untuk tabel dan lain-lain yang bermuara pada pembentukan struktur database. Sebagai salah satu contoh perintah dalam kelompok DDL dalam pembuatan tabel.

CREATE TABLE NamaTabel

(Field1 TipeData1 [,Field2 TipeData2 [,…] ] )

  • Data Manipulation language (DML)

DML merupakan kelompok perintah untuk melakukan manipulasi data dalam database, menambahkan data, mengubah data, menghapus data, mengambil dan mencari data. Sebagai salah satu contoh perintah dalam kelompok DML dalam penambahan data.

INSERT INTO NamaTabel (NamaFiled1 [ , NamaFiel2 ] [,…])

VALUES (IsiField1 [,IsiFild2 ] [,…])

  • Data Control Language (DCL)

DCL merupakan kelompok  perintah untuk melakukan pendefinisian pemakai yang boleh mengakses database dan apa saja privilegenya (hak untuk menggunakan). Fasilitas ini tersedia pada sistem manajemen database yang memiliki fasilitas keamanan dengan membatasi pemakai dengan kewenangannya. Kelompok perintah DCL  sering digunakan oleh DBA (Database Administrator). Sebagai salah satu contoh perintah dalam kelompok DCL adalah

      GRANT PerintahSQL [,…]

 TO NamaPengguna [,…]

STRUCTURE SQL

DATA DEFINITION LANGUAGE

  • CREATE TABLE

Fungsi : membuat tabel
Sintaks :

CREATE TABLE tbname
(col 1  data type data spec,
col 2             data type data spec,
.
.
PRIMARY KEY (col1,……))

Contoh :
CREATE TABLE PERSONEL
(REGNO CHAR(10) NOT NULL,
NAME   CHAR(45) NOT NULL,
ADDRESS CHAR(45),
BIRTH DATE    NOT NULL WITH DEFAULT,
PRIMARY KEY (REGNO))
NULL
Spesifikasi
NULL,  NOT NULL,  NOT NULL WITH DEFAULT

NULL :
dapat diinterpretasikan sebagai nilai yang tidak diketahui atau tidak tersedianya suatu nilai. Null bukan berarti kosong (blank) atau 0 (Nol)
NOT NULL :
pemakai atau program harus memberikan nilai-nilai pada saat memasukkan record
NOT NULL WITH DEFAULT :
nilai default disimpan pada saat record dimasukkan tanpa nilai yang ditentukan untuk kolom ini.

Nilai default-nya :

Nol                             untuk tipe field NUMERIC

Blank                         untuk tipe field CHARACTER
CURRENT DATE  untuk tipe field DATE
CURRENT TIME   untuk tipe field TIME

Pada saat membuat tabel, salah satu atribut tersebut di atas dispesifikasikan pada
sebuah kolom.

  • CREATE VIEW

Fungsi : membuat tabel view.
View merupakan bentuk alternatif  penyajian data dari satu atau lebih tabel. View dapat berisi semua atau sebagian kolom yang terdapat pada tabel dimana kolom tersebut didefinisikan.

Tujuan membuat view :

  1. Meningkatkan keamanan data
  2. Meningkatkan kemandirian data
  3. Penyederhanaan bagi end user (data yang sedikit, nama-nama kolom yang baru dan dapat dibaca dengan lebih baik)

Properti :

  1. Tidak terdapatnya data tambahan
  2. View mencakup subset kolom dan / atau baris
  3. View dapat berisikan data dari beberapa tabel dan / atau tabel-tabel view lainnya
  4. View dapat berisikan perolehan data, misal : nilai rata-rata
  5. Manipulasi data melalui view terbatas

Sintaks :
CREATE VIEW  viewname (column1, column2, ……..)
AS SELECT statement FROM tbname
[WITH CHECK OPTION]

Keterangan :

  •  View-name  : nama view yang akan dibuat.
  • Column         : nama atribut untuk view
  • Statement     : atribut yang dipilih dari tabel basis data
  • Tabel-name  : nama tabel basis data.

Contoh :
CREATE VIEW VPERSON (REGNO, NAME) AS
SELECT  REGNO, NAME FROM PAUL.PERSONEL

  • CREATE INDEX  

Fungsi : membuat index

Sintaks : CREATE [UNIQUE] INDEX indexname
ON nama_table (nama_kolom)

Contoh : CREATE UNIQUE INDEX PRSONIDX
ON PERSONEL(REGNO)

Dengan indeks memungkinkan suatu tabel diakses dengan urutan tertentu tanpa harus merubah urutan fisik dari datanya dan dapat pula diakses secara cepat melalui indeks yang dibuat berdasar nilai field tertentu. Spesifikasi  UNIQUE akan menolak key yang sama dalam file.

  • DROP TABLE

Fungsi : menghapus Tabel
Sintaks : DROP TABLE tbname
Contoh : DROP TABLE PERSONEL

Dengan perintah itu obyek lain yang berhubungan dengan tabel tersebut otomatis
akan dihapus atau tidak akan berfungsi seperti :

  • semua record dalam tabel akan terhapus
  • index dan view pada tabel akan hilang
  • deskripsi tabel akan hilang
  • DROP VIEW

Fungsi : menghapus view

Sintaks :   DROP VIEW viewname

Contoh : DROP VIEW VPERSON

  • DROP INDEX

Fungsi : menghapus index

Sintaks : DROP INDEX indexname

Contoh : DROP INDEX PRSONIDX

  • ALTER

Fungsi : merubah atribut pada suatu tabel
Sintaks : ALTER TABLE tbname
MODIFY (nama_kolom  tipe_kolom)
ADD      (nama_kolom   tipe_kolom [[before, nama_kolom]])
DROP     (nama_kolom  tipe_kolom)

Contoh :  merubah Tabel TABX dengan menambah Field D.

ALTER TABLE TABX
ADD D CHAR(3)

Contoh Kasus DDL :

  • Membuat Tabel (CREATE TABLE)

1. CREATE TABLE S
(Sn          Char(5) NOT NULL,
Sname Char(20) NOT NULL,
Status   Smallint  NOT  NULL,
City       Char(15) NOT NULL);

2. CREATE TABLE P
(Pn         Char(6) NOT NULL,
Pname Char(20) NOT NULL,
Color    Char(6) NOT NULL,
Weight  Smallint NOT NULL);

3. CREATE TABLE SP
(Sn     Char(5) NOT NULL,
Pn     Char(6) NOT NULL,
QTY  INTEGER NOT NULL);
4. CREATE UNIQUE INDEX Sidx  ON S(Sn);
CREATE UNIQUE INDEX Pidx  ON P(Pn);
CREATE  INDEX Sdx ON SP(Sn);
CREATE  INDEX Pdx ON SP(Pn);

  • Modifikasi Table P dengan perintah  :

RENAME COLUMN P.COLOR TO WARNA
ALTER TABLE P  ADD (City CHAR(15) NOT NULL)

  • Membuat View (CREATE VIEW)

1. Membuat view untuk suplier yang statusnya lebih besar dari 15

CREATE VIEW GOOD_SUPPLIERS
AS SELECT Sn, Status, City FROM S
WHERE Status > 15;

2. Membuat view yang berisi supplier yang tinggal di Paris

CREATE VIEW Paris_Suppliers
AS SELECT * FROM Supliers
WHERE City = ‘ Paris ‘

3. Membuat view dengan mengganti nama_atributnya

CREATE VIEW Parts (PNum, Part_Name, WT)
AS SELECT P#, Pname, Weight FROM Part
WHERE COLOR = ‘Red’

Contoh Kasus DML :

Menambah record (INSERT)

INSERT INTO S VALUES (‘S1′,’Smith’,20,’London’);
INSERT INTO S VALUES (‘S2′,’Jones,10,’Paris’);
INSERT INTO S VALUES (‘S3′,’Blake’,30,’Paris’)

  • Merubah record (UPDATE)

1. Merubah data (record) pada tabel P yang mempunyai nomor part P2, warnanya dirubah menjadi Kuning dan beratnya ditambah 5

UPDATE P SET Warna  = ‘Yellow’,
Weight = Weight + 5
WHERE Pn  = ‘P2’

2. Merubah record pada tabel S, statusnya menjadi dua kali status awal untuk
supplier yang bertempat tinggal di kota London

UPDATE S SET Status    = 2 * Status
WHERE City = ‘London’

  • Menghapus record (DELETE)

Menghapus record pada tabel S yang nomor supplier-nya S5

DELETE FROM S
WHERE Sn =’S5′

  • Menampilkan record (SELECT 1 tabel)

1. Menampilkan semua data supplier

SELECT * FROM S
atau

SELECT Sn, Sname, Status, City  FROM S

2. Menampilkan semua nilai Pn pada tabel SP

SELECT Pn FROM SP

3. Menampilkan nomor supplier dan status untuk supplier yang tinggal di Paris

SELECT Sn, Status FROM S
WHERE City =’Paris’

4. Menampilkan no.supplier yang tinggal di Paris dengan status > 20
SELECT Sn FROM S
WHERE City =’Paris” AND Status > 20

5. Menampilkan jumlah pengiriman P1
SELECT COUNT(*) FROM SP
WHERE Pn = ‘P1’

6. Perintah untuk menghindari hasil data yang sama terulang kembali (distinct)
SELECT DISTINCT Pn FROM SP

7. Menampilkan no.supplier dan status bagi supplier yang tinggal di Paris dalam urutan status menurun
SELECT  Sn,Status FROM S
WHERE City = ‘Paris’
ORDER BY Status desc

8. Menampilkan no.Part dari semua part yang dipasok oleh lebih dari seorang supplier
SELECT Pn FROM SP
GROUP BY Pn
HAVING COUNT(*) > 1

9.Menampilkan semua part yang nomornya dimulai dengan huruf C
SELECT * FROM P
WHERE Pname LIKE ‘C%’

  • Menampilkan record (SELECT lebih dari satu tabel / JOIN)

1. Menampilkan semua supplier dan part yang keduanya bertempat tinggal pada kota yang sama

SELECT Sn, Sname,S tatus, S.City , Pn, Pname, Warna, Weight FROM S,P
WHERE S.City = P.City
2. Menampilkan nama supplier yang memasok barang dengan nomor part P2
SELECT Sname FROM S, SP
WHERE S.Sn = SP.Sn AND SP.Pn = ‘P2’

3. Menampilkan nama supplier yang memasok part berwarna merah
SELECT Sname FROM S, SP, P
WHERE S.Sn = SP.Sn
AND SP.Pn = P.Pn
AND P.COLOR = ‘RED’

  • Menampilkan record (SELECT lebih dari satu tabel / SELECT Bertingkat)

1. Menampilkan nama supplier yang memasok barang dengan nomor part P2
SELECT Sname FROM S WHERE Sn IN
(SELECT Sn FROM SP WHERE Pn = ‘P2’)
atau
SELECT Sname FROM S WHERE Sn = ANY
(SELECT Sn FROM SP WHERE Pn = ‘P2’)

2. Menampilkan nama supplier yang memasok part berwarna merah
SELECT Sname FROM S WHERE Sn IN
(SELECT Sn FROM SP WHERE Pn IN
(SELECT Pn FROM P WHERE Warna = ‘Red’))

3. Menampilkan no.supplier dengan nilai status lebih kecil daripada nilai maksimum status yang ada pada tabel S
SELECT Sn FROM S WHERE Status <
(SELECT  MAX(Status) FROM S)

4. Menampilkan nama supplier yang tidak memasok barang dengan nomor part P2
SELECT Sname FROM S WHERE Sn NOT IN
(SELECT Sn FROM SP WHERE  Pn = ‘P2’)

5. Menampilkan semua nomor supplier yang sama lokasinya dengan S1

SELECT Sn FROM S WHERE CITY =
(SELECT CITY FROM S WHERE Sn = ‘S1’)

Sumber :

Heryanto Imam,Menguasai SQL-Metode Praktis,Informatika,

Komentar ditutup.