4.1. Komponen-Komponen SQL - BAB 4 SQL

BAB 4 STRUCTURE QUERY LANGUAGE Structured Query Language (SQL) merupakan komponen bahasa

  

relational database system. SQL merupakan bahasa baku (ANSI/SQL),

non procedural, dan berorientasi pada himpunan. SQL dapat digunakan

  baik secara interaktif atau ditempelkan pada sebuah program aplikasi.

4.1. Komponen-Komponen SQL Komponen-komponen pada SQL dapat dilihat pada gambar 4.1.

Gambar 4.1. Bagan Komponen-komponen SQL a. Data Definition Language (DDL) : Digunakan untuk mendefinisikan data dengan menggunakan perintah : create, drop, alter.

  b. Data Manipulation Language (DML) : Digunakan untuk memanipulasi data dengan menggunakan perintah : select, insert, update, delete.

  Data Manipulation Language merupakan bagian terpadu bahasa

  SQL. Perintah-perintahnya dapat dibuat secara interaktif atau ditempelkan pada sebuah program aplikasi. Pemakai hanya perlu menentukan 'APA' yang ia inginkan, DBMS menentukan 'BAGAIMANA' cara mendapatkannya.

  c. Data Control Language (DCL) : Digunakan untuk mengontrol hak para pemakai data dengan perintah : grant, revoke

4.1.1. DDL

  Perintah-perintah pada DDL dapat dijabarkan sebagai berikut:

  1. CREATE TABLE Perintah CREATE TABLE berfungsi untuk membuat tabel.

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

  Contoh : CREATE TABLE MAHASISWA (NPM CHAR(8) NOT NULL, NAMA CHAR(45) NOT NULL, ALAMAT CHAR(45), TGL-LAHIR DATE NOT NULL WITH DEFAULT, PRIMARY KEY (NPM))

  Pernyataan NULL yang digunakan dapat dispesifikasikan sebagai berikut :  NULL

  NULL dapat diinterpretasikan sebagai nilai yang tidak diketahui atau tidak tersedianya suatu nilai. NULL bukan berarti kosong (blank) atau 0 (Nol).  NOT NULL

  NOT NULL dimana 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.

   2. CREATE VIEW Perintah CREATE VIEW berfungsi untuk 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 :  Meningkatkan keamanan data  Meningkatkan kemandirian data  Penyederhanaan bagi end user (data yang sedikit, nama-nama kolom yang baru dan dapat dibaca dengan lebih baik)

  Properti :  Tidak terdapatnya data tambahan  View mencakup subset kolom dan / atau baris  View dapat berisikan data dari beberapa tabel dan / atau tabel-tabel view lainnya  View dapat berisikan perolehan data, misal : nilai rata-rata

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

  Manipulasi data melalui view terbatas

  Keterangan : - View-name : nama view yang akan dibuat.

  • Column : nama atribut untuk view

  Statement : atribut yang dipilih dari tabel basis - data. Tbname : nama tabel basis data. -

  Contoh : CREATE VIEW VMHS (NPM, NAMA) AS SELECT NPM, NAMA FROM MAHASISWA

  3. CREATE INDEX Perintah CREATE INDEX berfungsi untuk membuat tabel index.

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

  Contoh : CREATE UNIQUE INDEX MHSIDX ON MAHASISWA(NPM) 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.

  4. DROP TABLE Perintah DROP TABLE berfungsi untuk menghapus tabel.

  Sintaks : DROP TABLE tbname Contoh : DROP TABLE MAHASISWA

  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

  5. DROP VIEW Perintah DROP VIEW berfungsi untuk menghapus view.

  Sintaks : DROP VIEW viewname Contoh : DROP VIEW VMHS

   6. DROP INDEX Perintah DROP INDEX berfungsi untuk menghapus index.

  Sintaks : DROP INDEX indexname Contoh : DROP INDEX MHSIDX

   7. ALTER Perintah ALTER berfungsi untuk 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)

4.1.2. DML

  Perintah-perintah pada DML dapat dijabarkan sebagai berikut:

   1. INSERT Perintah INSERT berfungsi untuk menambah baris (record) baru.

  Sintaks : INSERT INTO tbname (col1, ...) VALUES (value1, ...)

  Catatan : Sintaks tersebut dapat digunakan jika jumlah kolom = jumlah nilai, tetapi jika dalam tabel semua kolom akan diisi dapat digunakan sintaks berikut ini : Sintaks : INSERT INTO tbname

  VALUES (value1, value2, ...) Nilai-nilai diisikan sebanyak kolom yang terdapat di tabel tersebut.

  Contoh : pada tabel MAHASISWA akan ditambahkan record mahasiswa baru.

  INSERT INTO MAHASISWA

  VALUES (‘00105543’,’MUHAMMAD ADI’,JL. MERUYA NO.100, JAKARTA’,02-02-1990)

  2. UPDATE Perintah UPDATE berfungsi untuk merubah record.

  Sintaks : UPDATE tbname SET field = ekspresi WHERE kondisi

  Contoh :akan diubah nama mahasiswa dari MUHAMMAD ADI dengan NPM 00105432 menjadi MUHAMMAD ALI UPDATE MAHASISWA SET nama =’MUHAMMAD ALI’ WHERE NPM=’00105432’

  3. DELETE Perintah DELETE berfungsi untuk menghapus record.

  Sintaks : DELETE FROM tbname WHERE kondisi Contoh : akan dihapus data mahasiswa dengan NPM 00105004.

  DELETE FROM MAHASISWA WHERE NPM=’00105004

4. SELECT Perintah SELECT berfungsi untuk menampilkan record.

  Sintaks : SELECT [DISTINCT] colname FROM tbname [WHERE kondisi] [GROUP BY kondisi] [HAVING kondisi] [ORDER BY kondisi]

4.1.3. Contoh Kasus DDL

  Contoh kasus DDL antara lain :

   1. Membuat Tabel

  a. CREATE TABLE PEMASOK (Kd-P Char(5) NOT NULL, Nama-P Char(20) NOT NULL, Status Smallint NOT NULL, Kota Char(15) NOT NULL);

  b. CREATE TABLE BARANG (Kd-B Char(6) NOT NULL, Nama-B Char(20) NOT NULL, Warna Char(6) NOT NULL, Berat Smallint NOT NULL);

  c. CREATE TABLE PB (Kd-P Char(5) NOT NULL, Kd-B Char(6) NOT NULL, Jumlah INTEGER NOT NULL);

  d. CREATE UNIQUE INDEX Sidx ON PEMASOK(Kd-P);

  CREATE UNIQUE INDEX Pidx ON BARANG(Kd-B); CREATE INDEX Sdx ON PB(Kd-P); CREATE INDEX Pdx ON PB(Kd-B);

   2. Modifikasi Table BARANG dengan perintah : RENAME COLUMN PEMASOK.Warna TO Warna-B ALTER TABLE BARANG ADD (Kota CHAR(15) NOT NULL)

   3. Membuat View

  a. Membuat view untuk pemasok yang statusnya lebih besar dari 15 CREATE VIEW PEMASOK-YG-BAGUS AS SELECT Kd-P, Status, Kota FROM PEMASOK WHERE Status > 15

  b. Membuat view yang berisi pemasok yang tinggal di Paris CREATE VIEW PEMASOK-PARIS AS SELECT * FROM PEMASOK WHERE Kota = ' Paris '

  c. Membuat view dengan mengganti nama_atributnya CREATE VIEW BARANG (Kd-Brg, Nm-Brg, Brt) AS SELECT Kd-B, Nama-B, Berat FROM BARANG WHERE Warna = 'Red'

4.1.4. Contoh Kasus DML

  Contoh kasus DML antara lain :

  1. 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') Tabel S, P dan SP berisikan dengan data-data seperti terlihat pada tabel 4.1, 4.2. dan 4.3.

Tabel 4.1. TABEL PEMASOK

  Kd-P Nama- P Statu s Kota P1 Smith

30 Athens

  a. Merubah data (record) pada tabel BARANG yang mempunyai nomor barang B2, warnanya dirubah menjadi Kuning dan beratnya ditambah 5

  Kd-P Kd-B Jumlah P1 B1 300 P1 B2 200 P1 B3 400 P1 B4 200 P1 B5 100 P1 B6 100 P2 B1 300 P2 B2 400 P3 B2 200 P4 B2 200 P4 B4 300 P4 B5 400

Tabel 4.3. Tabel PEMASOK-BRG

  

12 Paris

B6 Cog Red

  14 London B5 Cam Blue

  

17 Rome

B4 Screw Red

  

17 Paris

B3 Screw Bleu

  12 London B2 Bolt Green

  B1 Nut Red

  Kd-B Nama- B Warn a

Berat Kota

Tabel 4.2. Tabel BARANG

  20 London P5 Adams

  30 Paris P4 Clark

  10 Paris P3 Blake

  20 London P2 Jones

19 London

2. Merubah record (UPDATE)

  UPDATE BARANG SET Warna = 'Yellow', Berat = Berat + 5 WHERE Kd-B = 'B2'

  b. Merubah record pada tabel PEMASOK, statusnya menjadi dua kali status awal untuk pemasok yang bertempat tinggal di kota London

  UPDATE PEMASOK SET Status = 2 * Status WHERE Kota = 'London'

   3. Menghapus record (DELETE) Menghapus record pada tabel PEMASOK yang nomor pemasoknya P5 DELETE FROM PEMASOK WHERE Kd-P ='P5'

  4. Menampilkan record (SELECT 1 tabel)

  a. Menampilkan semua data pemasok SELECT * FROM PEMASOK atau SELECT Kd-P, Nama-P, Status, Kota FROM PEMASOK

  b.. Menampilkan semua nilai kode barang pada tabel PEMASOK-BRG

  SELECT Kd-B FROM PEMASOK-BRG

  c. Menampilkan kode pemasok dan status untuk pemasok yang tinggal di Paris SELECT Kd-P, Status FROM PEMASOK

  WHERE Kota ='Paris' d. Menampilkan kode pemasok yang tinggal di Paris dengan status >

  20 SELECT Kd-P FROM PEMASOK WHERE Kota ='Paris” AND Status > 20

  e. Menampilkan jumlah pengiriman B1 SELECT COUNT(*) FROM PEMASOK-BRG WHERE Kd-B = 'B1'

  f. Perintah untuk menghindari hasil data yang sama terulang kembali (distinct) SELECT DISTINCT Kd-B FROM PEMASOK-BRG

  g. Menampilkan kode pemasok dan status bagi pemasok yang tinggal di Paris dalam urutan status menurun SELECT Kd-P,Status FROM PEMASOK WHERE Kota = 'Paris' ORDER BY Status desc

  h. Menampilkan kode barang dari semua barang yang dipasok oleh lebih dari seorang pemasok SELECT Kd-B FROM PEMASOK-BRG

  GROUP BY Kd-B HAVING COUNT(*) > 1 i. Menampilkan semua barang yang namanya dimulai dengan huruf C

  SELECT * FROM BARANG WHERE Nama-B LIKE 'C%'

   5. Menampilkan record (SELECT lebih dari satu tabel / JOIN)

  a. Menampilkan semua pemasok dan barang yang keduanya bertempat tinggal pada kota yang sama SELECT Kd-P, Nama-P,Status, PEMASOK.Kota , Kd-B, Nama-

  B, Warna, Berat FROM PEMASOK, BARANG

  WHERE PEMASOK.Kota = BARANG.Kota

  b. Menampilkan nama pemasok yang memasok barang dengan nomor barang B2

  SELECT Nama-P FROM PEMASOK, PEMASOK-BRG WHERE PEMASOK.Kd-P = PEMASOK-BRG.Kd-P AND PEMASOK-BRG.Kd-B = 'B2'

  c. Menampilkan nama pemasok yang memasok barang berwarna merah SELECT Nama-P FROM PEMASOK, PEMASOK-BRG, BARANG WHERE PEMASOK.Kd-P = PEMASOK-BRG.Kd-P

  AND PEMASOK-BRG.Kd-B = BARANG.Kd-B AND BARANG.Warna = 'RED'

  6. Menampilkan record (SELECT lebih dari satu tabel /

  SELECT Bertingkat)

  Contoh queri :

  a. Menampilkan nama pemasok yang memasok barang dengan kode barang B2 SELECT Nama-P FROM PEMASOK WHERE Kd-P IN

  (SELECT Kd-P FROM PEMASOK-BRG WHERE Kd-B = 'B2') atau

  SELECT Nama-P FROM PEMASOK WHERE Kd-P = ANY

  (SELECT Kd-P FROM PEMASOK-BRG WHERE Kd-B = 'B2')

  b. Menampilkan nama pemasok yang memasok barang berwarna merah SELECT Nama-P FROM PEMASOK WHERE Kd-P IN

  (SELECT Kd-P FROM PEMASOK-BRG WHERE Kd-B IN

  (SELECT Kd-B FROM BARANG WHERE Warna = 'Red'))

  c. Menampilkan kode pemasok dengan nilai status lebih kecil daripada nilai maksimum status yang ada pada tabel PEMASOK

  SELECT Kd-P FROM PEMASOK WHERE Status <

  (SELECT MAX(Status) FROM PEMASOK)

  d. Menampilkan nama pemasok yang tidak memasok barang dengan nomor barang B2 SELECT Nama-P FROM PEMASOK WHERE Kd-P NOT IN

  (SELECT Kd-P FROM PEMASOK-BRG WHERE Kd-B = 'B2')

  e. Menampilkan semua kode pemasok yang sama lokasinya dengan pemasok P1 SELECT Kd-P FROM PEMASOK WHERE Kota =

  (SELECT Kota FROM PEMASOK WHERE Kd-P = 'P1')

   7. Fungsi Perhitungan Fungsi-fungsi yang dapat digunakan antara lain:

   COUNT : jumlah baris dan kolom  SUM : jumlah nilai dam kolom  AVG : rata-rata nilai dalam kolom  MAX : nilai terbesar dalam kolom  MIN : nilai terkecil dalam kolom Untuk SUM dan AVG nilainya harus numerik (INT, SMALLINT, FLOAT). Fungsi- fungsi tersebut jika dikenakan pada nilai yang NULL maka nilainya akan diabaikan kecuali untuk COUNT(*) Berikut ini contoh queri yang menggunakan fungsi-fungsi perhitungan : a. Menghitung jumlah pemasok

  SELECT COUNT(*) FROM PEMASOK atau SELECT COUNT (Kd-P) FROM PEMASOK

  b. Menampilkan kode barang dan total jumlah pengiriman dari setiap barang SELECT Kd-B, SUM(Jumlah) FROM PEMASOK-BRG

  GROUP BY Kd-B

  c. Menghitung jumlah kuantitas dari B2 yang telah dipasok SELECT SUM (Jumlah) FROM PEMASOK-BRG WHERE Kd-B = 'B2'

  d. Menampilkan jumlah pengiriman barang dengan nomor B4 dan dipasok oleh kode pemasok P1 SELECT COUNT(*) FROM PEMASOK-BRG WHERE Kd-B = 'B4' AND Kd-P = 'P1'

  e. Menampilkan kode barang dan total kuantitas dari masing-masing barang SELECT Kd-B, SUM(Jumlah) FROM PEMASOK-BRG

  GROUP BY Kd-B

4.1.5. DCL

  Berikut ini adalah perintah-perintah pada DCL :

   1. GRANT Perintah GRANT berfungsi untuk memberikan izin akses kepada pemakai.

  Sintaks : GRANT privileges ON tbname TO user Contoh : GRANT SELECT ON CLUB TO PUBLIC GRANT SELECT, INSERT, UPDATE, DELETE ON CLUB TO USER01

   2. REVOKE Perintah REVOKE berfungsi untuk mencabut izin akses kepada pemakai.

  Sintaks : REVOKE privileges ON tbname FROM user Contoh : REVOKE INSERT, UPDATE, DELETE ON CLUB FROM USER01 REVOKE ALL ON CLUB FROM PUBLIC