100% menganggap dokumen ini bermanfaat (1 suara)
505 tayangan32 halaman

Memahami SQL Statement

Dokumen tersebut membahas tentang SQL statement yang digunakan untuk manipulasi data pada database. SQL terdiri atas bahasa DDL untuk mendefinisikan struktur database dan DML untuk manipulasi data. Dokumen ini menjelaskan penggunaan perintah SQL seperti CREATE TABLE, CREATE INDEX, ALTER TABLE, serta contoh definisi tabel dan hubungan antar tabel.

Diunggah oleh

mikel dulas
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
100% menganggap dokumen ini bermanfaat (1 suara)
505 tayangan32 halaman

Memahami SQL Statement

Dokumen tersebut membahas tentang SQL statement yang digunakan untuk manipulasi data pada database. SQL terdiri atas bahasa DDL untuk mendefinisikan struktur database dan DML untuk manipulasi data. Dokumen ini menjelaskan penggunaan perintah SQL seperti CREATE TABLE, CREATE INDEX, ALTER TABLE, serta contoh definisi tabel dan hubungan antar tabel.

Diunggah oleh

mikel dulas
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 32

Memahami SQL Statement Hendra, S.T.

Mengenal SQL 1
Structured Query Language (SQL) adalah suatu bahasa database standar industri. SQL
menyediakan Data Definiton Language (DDL) dan Data Manipulation Language (DML).
Walaupun dalam beberapa bagian saling bersangkutan, perintah DDL memungkinkan
kita untuk membuat dan mendefinisikan tabel (CREATE TABLE), dan index (CREATE
INDEX), sedangkan perintah DML memungkinkan anda untuk membangun query untuk
mengambil data (SELECT) dari beberapa tabel, menyisip (INSERT) data baru,
memperbaiki (UPDATE) data, dan menghapus (DELETE).

Penguasaan SQL Statement merupakan syarat mutlak bagi Database Programmer, karena
dengan pemanfaatan SQL Statement akan menghasilkan efisiensi dan efektifitas yang
tinggi dalam manipulasi data.

Pada trend pemrograman Client Server, Client melakukan request ke server dengan suatu
query yang ditulis dalam bentuk SQL Statement, dan kemudian query tersebut akan
diproses oleh Database Server, serta mengembalikan data ataupun hasil untuk query
tersebut kembali ke komputer Client.

Data Definition Language (DDL)


Membuat Tabel Baru

CREATE TABLE table (field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)]
[NOT NULL] [index2] [, ...]] [, CONSTRAINT multifieldindex [, ...]])

Perintah CREATE TABLE digunakan untuk mendefinisikan suatu tabel baru beserta
fieldnya dan konstraint, jika NOT NULL disebutkan, maka record baru membutuhkan
data yang sah untuk field tersebut.

CONSTRAINT clause dapat digunakan untuk membuat berbagai batasan pada field
termasuk PRIMARY KEY, anda dapat juga menggunakan perintah CREATE INDEX
untuk membuat index dan PRIMARY KEY pada tabel yang ada. CONSTRAINT clause
menyerupai CREATE INDEX, tetapi dapat digunakan untuk membuat Relation antar
tabel.

CONSTRAINT name {PRIMARY KEY | UNIQUE | NOT NULL |


REFERENCES foreigntable [(foreignfield1, foreignfield2)]}

dimana :

table nama tabel yang akan dibuat


field1, field2 nama field

Indoprog 1
Memahami SQL Statement Hendra, S.T.

type jenis data pada masing-masing field


size ukuran field untuk jenis data TEXT dan Binary
index untuk membuat CONSTRAINT

jenis data pada database JET

Jenis Data Ukuran Penyimpanan Keterangan


BINARY 1 byte per karakter Menyimpan segala jenis data sebagaimana adanya tanpa translasi.
BIT 1 byte Menyimpan nilai Yes atau No.
BYTE 1 byte Menyimpan nilai integer 0 s/d 255
Menyimpan nilai numerik yang otomatis bertambah setiap record
COUNTER 4 byte
baru ditambahkan.
Menyimpan suatu nilai skalar antara – 922,337,203,685,477.5808
CURRENCY 8 byte
dan 922,337,203,685,477.5807
Menyimpan suatu nilai tanggal dan waktu antara tahun 100 s/d
DATETIME 8 byte
9999
Menyimpan suatu nomor identifikasi unik yang digunakan untuk
GUID 128 byte
RPC
Menyimpan suatu nilai floating point single-precision dengan
SINGLE 4 byte jangkauan – 3.402823E38 s/d – 1.401298E-45 untuk nilai negatif
, 1.401298E-45 s/d 3.402823E38 untuk nilai positif dan 0.
Menyimpan suatu nilai floating point double-precision dengan
jangkauan – 1.79769313486232E308 s/d – 4.94065645841247E-
DOUBLE 8 byte
324 untuk nilai negatif, 4.94065645841247E-324 s/d
1.79769313486232E308 untuk nilai positif, dan 0
SHORT 2 byte Menyimpan suatu nilai short integer antara – 32,768 dan 32,767.
Menyimpan suatu nilai long integer antara – 2,147,483,648 dan
LONG
2,147,483,647.
LONGTEXT 1 byte per karakter Kosong s/d maksimal 1.2 gigabytes.
LONGBINARY Sesuai dengan kebutuhan Kosong s/d maksimal 1.2 gigabytes. Digunakan untuk objek OLE.
TEXT 1 byte per karakter 0 s/d 255 karakter

Contoh :

Tabel Forum

Nama Field Type Size AutoIncrField AllowNulls Require

ForumID Text 25 Tidak Ya

Keterangan Text 50

Alamat Text 50 Tidak Ya

Primary Key (P_Key) dengan field ForumID

Perintah SQL :

CREATE TABLE FORUM (


ForumID TEXT(25) NOT NULL CONSTRAINT P_KEY PRIMARY KEY,
Keterangan TEXT(50),

Indoprog 2
Memahami SQL Statement Hendra, S.T.

Alamat TEXT(50) NOT NULL);

atau

CREATE TABLE FORUM (


ForumID TEXT(25) NOT NULL ,
Keterangan TEXT(50),
Alamat TEXT(50) NOT NULL,
CONSTRAINT P_KEY PRIMARY KEY (ForumID));

Tabel Status

Nama Field Type Size AutoIncrField AllowNulls Require

Status Byte 1 Tidak Ya

Keterangan Text 50

Primary Key (P_Key) dengan field Status

Perintah SQL :

CREATE TABLE STATUS (


Status BYTE NOT NULL CONSTRAINT P_KEY PRIMARY KEY,
Keterangan TEXT(50));

Tabel Peserta

Nama Field Type Size AutoIncrField AllowNulls Require

Email Text 25 Tidak Ya

Nama Text 50

Alamat Text 50

Kota Text 50

Telepon Text 25

Homepage Text 50

Perusahaan Text 50

TanggalGabung Date 8

Primary Key (P_Key) dengan field Email

Perintah SQL :

CREATE TABLE PESERTA (Email TEXT(25) NOT NULL CONSTRAINT P_KEY PRIMARY
KEY,
Nama TEXT(50),
Alamat TEXT(50),
Kota TEXT(50),

Indoprog 3
Memahami SQL Statement Hendra, S.T.

Telepon TEXT(50),
Homepage TEXT(50),
Perusahaan TEXT(50),
TanggalGabung Date);

Tabel Aktifitas

Nama Field Type Size AutoIncrField AllowNulls Require

ID Long 4 Ya

Email Text 25 Tidak Ya

ForumID Text 25 Tidak Ya

Status Byte Tidak Ya

Primary Key (P_Key) dengan field ID

Berserta Relation terhadap tabel PESERTA, FORUM dan STATUS

Nama Field (Foreign key) Foreign Tabel Foreign Field


Email Peserta Email
ForumID Forum ForumID
Status Status Status

Perintah SQL :

Indoprog 4
Memahami SQL Statement Hendra, S.T.

CREATE TABLE AKTIFITAS (


ID COUNTER CONSTRAINT P_KEY PRIMARY KEY,
Email TEXT(25) NOT NULL CONSTRAINT AktifitasPeserta REFERENCES
PESERTA(Email),
ForumID TEXT(25) NOT NULL CONSTRAINT AktifitasForum REFERENCES
FORUM (ForumID),
Status BYTE CONSTRAINT AktifitasStatus REFERENCES
STATUS(Status));

Membuat Index
CREATE [ UNIQUE ] INDEX indexON table (field [ASC|DESC][, field [ASC|DESC],
...])[WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]

Membuat suatu index pada tabel yang telah ada.

dimana :

index nama dari index yang akan dibuat


table nama dari tabel yang akan mengandung index tersebut
field nama dari field yang akan di index

Gunakan UNIQUE untuk membuat nilai unik terhadap field tertentu sehingga tidak
memungkinkan duplikasi data. Gunakan WITH clause untuk menentukan apakah :

• Tidak memperbolehkan pemasukan nilai Null pada field yang diindex dengan
menggunakan option DISALLOW NULL.
• Menghindarkan record dengan nilai Null pada field yang diindex untuk
diikutsertakan dalam index.
• Membuat index sebagai PRIMARY, setiap tabel hanya dapat memiliki satu index
PRIMARY.

Contoh membuat Index S_KEY berdasarkan Nama pada tabel PESERTA, perintah SQL
DDL-nya adalah sebagai berikut :

CREATE INDEX S_KEY ON PESERTA(NAMA);

Memodifikasi Tabel

ALTER TABLE table {ADD {COLUMN field type[(size)] [NOT NULL]


[CONSTRAINT index] |CONSTRAINT multifieldindex} |DROP {COLUMN field I
CONSTRAINT indexname} }

Melakukan modifikasi terhadap rancangan tabel yang telah ada.

dimana :

Indoprog 5
Memahami SQL Statement Hendra, S.T.

table Nama dari tabel


field Nama field yang akan ditambah (ADD), dihapus (DROP)
type Type field yang akan ditambahkan
size Ukuran field yang akan ditambahkan
index Perintah CONSTRAINT clause
indexname Nama index yang akan dihapus

Contoh menambahkan field Keterangan Text(50) pada tabel aktifitas :

ALTER TABLE Aktifitas ADD COLUMN Keterangan Text(50);

Menghapus Table atau Index

DROP {TABLE table | INDEX index ON table}

Menghapus tabel yang ada dalam database, atau index dari suatu tabel

table nama tabel yang akan dihapus atau tabel dimana index berada
index nama index yang akan dihapus

Contoh menghapus tabel TEMP

DROP TABLE Temp;

Indoprog 6
Memahami SQL Statement Hendra, S.T.

Latihan 1
Judul : Pembuatan Tabel, Index dan Konstraint dengan
DML
1. Aktifkan Visual Data Manager pada menu Add-Ins, dan buatlah suatu Database file
baru Rental.Mdb

Kemudian akan muncul jendela VisData

Pada Menu File, Pilih New, Microsoft Access, Version 7.0 MDB …

Indoprog 7
Memahami SQL Statement Hendra, S.T.

Ketik Rental

Dan Pilih Save.

2. Dengan menggunakan DDL SQL buatlah tabel-tabel berikut ini

Tabel Anggota

Nama Field Type Size AutoIncrField AllowNulls Require

KodeAnggota Text 5 Tidak Ya

Nama Text 50 Tidak Ya

Alamat Text 50 Tidak Ya

Indoprog 8
Memahami SQL Statement Hendra, S.T.

Telepon Text 15 Ya

Limit Byte Tidak Ya

Daftar DateTime Ya

PrimaryKey P_KEY KodeAnggota

Caranya :

Pada SQL Statement Window, ketikkan perintah SQL DDL berikut :

CREATE TABLE Anggota (


KodeAnggota Text(5) NOT NULL CONSTRAINT P_KEY PRIMARY KEY,
Nama Text(50) NOT NULL,
Alamat Text(50) NOT NULL,
Telepon Text(15),
Limit Byte NOT NULL,
Daftar DateTime);

Lakukan klik pada tombol Execute, dan akan muncul dialog box :

Lakukan klik pada No

Indoprog 9
Memahami SQL Statement Hendra, S.T.

Kalau muncul dialog box berikut, abaikan saja, karena DDL SQL tidak menghasilkan
Recordset

Klik kanan pada Database Window, dan pilih Refresh List

Selanjutnya buatlah tabel-tabel berikut ini :

Tabel CD

Nama Field Type Size AutoIncrField AllowNulls Require

KodeCD Text 7 Tidak Ya

Judul Text 50 Tidak Ya

Kategori Text 20 Tidak Ya

Aktor Text 30 Ya

Harga Currency Tidak Ya

Daftar DateTime Ya

Indoprog 10
Memahami SQL Statement Hendra, S.T.

PrimaryKey P_KEY KodeCD

Perintah SQL DDL :

CREATE TABLE CD (
KodeCD Text(7) NOT NULL CONSTRAINT P_KEY PRIMARY KEY,
Judul Text(50) NOT NULL, Kategori Text(20) NOT NULL,
Aktor Text(30),
Harga Currency NOT NULL,
Daftar DateTime);

Tabel Transaksi

Nama Field Type Size AutoIncrField AllowNulls Require

NoTransaksi Long Ya Tidak Ya

Tanggal DateTime Tidak Ya

KodeAnggota Text 5 Tidak Ya

KodeCD Text 7 Tidak Ya

Kembali DateTime Ya

Denda Currency Ya

PrimaryKey P_KEY NoTransaksi

dan Relation sebagai berikut :

Perintah SQL DDL :

Indoprog 11
Memahami SQL Statement Hendra, S.T.

CREATE TABLE Transaksi (NoTransaksi Counter CONSTRAINT P_KEY PRIMARY


KEY,
Tanggal DateTime NOT NULL,
KodeAnggota Text(5) NOT NULL CONSTRAINT TransaksiAnggota
REFERENCES Anggota(KodeAnggota),
KodeCD Text(7) NOT NULL CONSTRAINT TransaksiCD REFERENCES
CD(KodeCD),
Kembali DateTime,
Denda Currency);

3. Tambahkan Index untuk tabel Anggota berdasarkan nama, tabel CD berdasarkan Judul

Perintah SQL DDL :

CREATE INDEX S_KEY ON Anggota (Nama);


CREATE INDEX S_KEY ON CD (Judul);

4. Tambahkan field BlackList pada Tabel Anggota, dan field Status pada CD

Nama Field Type Size AutoIncrField AllowNulls Require

BlackList Bit Ya

Perintah SQL DDL :

ALTER TABLE Anggota ADD COLUMN BlackList Bit;


Nama Field Type Size AutoIncrField AllowNulls Require

Status Text 1 Ya

Perintah SQL DDL :

ALTER TABLE CD ADD COLUMN Status Text(1);

Indoprog 12
Memahami SQL Statement Hendra, S.T.

Judul : Tantangan pemakaian DDL SQL


1. Aktifkan Visual Data Manager, dan buatlah suatu Database file baru Akademik.Mdb

2. Dengan menggunakan DDL SQL buatlah tabel-tabel berikut ini, definisikan Primary
Key masing-masing tabel dan Relation antar tabel.

Tabel Fakultas

Nama Field Type Size AutoIncrField AllowNulls Require

Fakultas Text 2 Tidak Ya

Keterangan Text 50 Tidak Ya

Tabel Jurusan

Nama Field Type Size AutoIncrField AllowNulls Require

Jurusan Text 2 Tidak Ya

Keterangan Text 50 Tidak Ya

Tabel Mahasiswa

Nama Field Type Size AutoIncrField AllowNulls Require

NIM Text 10 Tidak Ya

Nama Text 50 Tidak Ya

Fakultas Text 2 Tidak Ya

Jurusan Text 2 Tidak Ya

Tabel Kuliah

Nama Field Type Size AutoIncrField AllowNulls Require

MataKuliah Text 6 Tidak Ya

Keterangan Text 50 Tidak Ya

SKS Byte Tidak Ya

Semester Byte Tidak Ya

Tabel Dosen

Nama Field Type Size AutoIncrField AllowNulls Require

NIP Text 10 Tidak Ya

Indoprog 13
Memahami SQL Statement Hendra, S.T.

Nama Text 50 Tidak Ya

Tabel KHS

Nama Field Type Size AutoIncrField AllowNulls Require

Id Long Ya Ya

NIM Text 10 Tidak Ya

MataKuliah Text 6 Tidak Ya

NIP Text 10 Tidak Ya

Tanggal DateTime Tidak Ya

NilaiHuruf Text 1 Tidak Ya

Indoprog 14
Memahami SQL Statement Hendra, S.T.

Mengenal SQL 2
Sebagaimana telah diterangkan pada Modul sebelumnya bahwa perintah SQL dibagi atas
dua kelompok besar yaitu DDL (Data Definition Language) dan DML (Data
Manipulation Language). Pada DML, terbagi atas APPEND, UPDATE, DELETE, dan
SELECT query yang dapat digunakan untuk pengolahan data.

Menambah data dengan APPEND query


INSERT INTO target [(field1[, field2[, ...]])]
VALUES (value1[, value2[, ...])

Menambah suatu record ke table, hal ini dikenal sebagai append query.

Contoh :

KodeAnggota Nama Alamat Telepon Limit Daftar Blacklist


Susan Jl. Thamrin No. 95 23-Sept-
SD001 4513490 3 False
Dewichan Medan 2001

INSERT INTO Anggota (KodeAnggota, Nama, Alamat, Telepon, Limit,


BlackList)
VALUES ('SD001','Susan Dewichan','Jl. Thamrin No. 95','4513490',3,#23-
Sept-2001#);

Menghapus data dengan DELETE query


DELETE FROM table
WHERE criteria

Menghapus satu atau lebih record dari tabel yang berada di daftar FROM clause yang
memenuhi WHERE clause.

Pada tabel yang memiliki hubungan one-to-many relationship dengan tabel lain. Operasi
Cascade delete dapat menyebabkan record lain yang berada pada sisi many ikut terhapus
ketika penghapusan di lakukan terhadap data pada sisi one.

Penting

· Data yang telah dihapus dengan delete query, tidak dapat dibatalkan.
· Lakukan backup terhadap data anda setiap saat. Jika anda salah menghapus, maka anda
dapat mengambil kembali dari backup.

Indoprog 15
Memahami SQL Statement Hendra, S.T.

Contoh :

DELETE FROM Anggota WHERE BlackList;

Catatan :
Kita tidak perlu menulis BlackList=True, karena BlackList sendirinya
bertipe Logical

Memperbaiki Data dengan UPDATE query


Mengubah nilai pada field-field yang ditentukan pada tabel berdasarkan kriteria tertentu.

Syntax

UPDATE table
SET newvalue
WHERE criteria;

Penting :

· UPDATE tidak menghasilkan suatu himpunan hasil. Juga, setelah anda mengupdate
record dengan menggunakan update query, anda tidak dapat membatalkan operasi
tersebut. Jika anda ingin mengetahui record mana saja yang akan terupdate, pertama anda
perlu melakukan select query dengan kriteria yang sama.
· Lakukan backup terhadap data anda setiap saat. Jika anda salah menghapus, maka anda
dapat mengambil kembali dari backup.

Contoh :

UPDATE Anggota SET BlackList = True WHERE KodeAnggota = 'SD001';

Mengambil Data dengan SELECT query


Memerintahkan kepada Microsoft Jet Engine untuk mengembalikan data dari database
dalam bentuk recordset.

Syntax yang paling minimum dari SELECT statement adalah

SELECT fields FROM table

dimana fields adalah daftar dari field-field yang akan diambil dari tabel, anda dapat
menggunakan tanda * (Asterisk) untuk menyatakan seluruh field dari tabel.

Contoh :

SELECT KodeAnggota, Nama, Alamat, Telepon, Limit, Daftar, Blacklist


FROM Anggota;

Indoprog 16
Memahami SQL Statement Hendra, S.T.

Atau

SELECT * FROM Anggota;

Menganti nama kolom recordset dengan reserved word AS

Ketika recordset terbentuk, Microsoft Jet Engine menggunakan nama field sebagai nama
objek field pada recordset, anda dapat menentukan nama objek field tersebut dengan
reserved word AS.

Contoh :

SELECT KodeAnggota, Nama, Daftar As TanggalDaftar FROM Anggota;

dalam hal ini nama objek field TanggalDaftar akan digunakan untuk field Daftar.

Anda dapat menggunakan AS untuk menentukan nama objek field pada recordset yang
merupakan hasil dari fungsi Agregate maupun ekspresi.

Contoh :

SELECT Count(*) AS JlhAnggota FROM Anggota;

Akan mendapat suatu recordset dengan field JlhAnggota dan record tunggal yang berisi
jumlah anggota yang terdaftar pada tabel Anggota.

Membatasi hasil query dengan WHERE clause

SELECT fieldlist
FROM tableexpression
WHERE criteria

Sebagaimana pemakaian WHERE clause pada UPDATE dan DELETE query, anda dapat
menggunakan WHERE clause untuk membatasi data yang dikembalikan berdasarkan
kriteria tertentu.

Contoh :

SELECT * FROM Anggota WHERE TanggalDaftar <= #01-Jan-2001#;

Mengurut hasil query dengan ORDER BY clause

SELECT fieldlist
FROM table
WHERE selectcriteria
[ORDER BY field1 [ASC | DESC ][, field2 [ASC | DESC ]][, ...]]]

Indoprog 17
Memahami SQL Statement Hendra, S.T.

Anda dapat menggunakan ORDER BY clause untuk menentukan urutan data hasil query
berdasarkan field tertentu, pada defaultnya adalah Ascending kalau tidak disebutkan ASC
ataupun DESC.

Contoh :

SELECT * FROM Anggota ORDER BY Nama;


SELECT * FROM Anggota WHERE TanggalDaftar <= #01-Jan-2001# ORDER BY
Nama;

Mengetahui statistik data dengan Fungsi Agregate

Anda dapat menggunakan fungsi-fungsi Agregate seperti AVG (rata-rata), COUNT


(jumlah data), MIN atau MAX, SUM (hasil jumlah), StDEV atau StDEVP (standard
deviasi sample/populasi), VAR atau VARP (variasi sample / populasi) untuk
mendapatkan nilai statistifk field terentu.

Contoh :

SELECT Sum(Denda) AS JlhDenda FROM Transaksi Where Kembali = #20-


Sep=2001#;

Akan mendapat suatu recordset dengan field JlhDenda dan record tunggal yang berisi
jumlah perhitungan field denda pada tanggal 20 September 2001 dari tabel Transaksi.

Meringkas data dengan GROUP BY clause

SELECT fieldlist
FROM table
WHERE criteria
[GROUP BY groupfieldlist]

Anda dapat menggunakan ORDER BY clause untuk meringkas record yang nilai fieldnya
sama menjadi satu record dikombinasikan dengan fungsi Agregate untuk mendapatkan
statistik dari masing-masing ringkasan.

Misalnya kita ingin mendapatkan suatu daftar recordset yang berisi jumlah denda harian
berdasarkan tanggal pengembalian (Kembali), maka perintah SQL adalah :

SELECT Kembali, Sum(Denda) AS JlhDenda FROM Transaksi ORDER BY kembali;

Membatasi data yang telah diringkas dengan HAVING clause

SELECT fieldlist
FROM table
WHERE selectcriteria

Indoprog 18
Memahami SQL Statement Hendra, S.T.

GROUP BY groupfieldlist
[HAVING groupcriteria]

Jika anda menggunakan WHERE clause untuk membatasi data hasil query berdasarkan
kriteria tertentu, maka HAVING clause digunakan untuk membatasi data setelah
GROUPING dilakukan.

Contoh :

SELECT Kembali, Sum(Denda) AS JlhDenda FROM Transaksi


ORDER BY kembali
HAVING Sum(Denda) > 10000;

Mendapatkan daftar hasil jumlah denda harian, dimana yang dikembalikan hanya jumlah
denda yang diatas 10000.

Menggunakan predikat ALL, DISTINCT, DISTINCT ROW dan TOP

SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]]


FROM table

Secara default kalau tidak dituliskan, maka predikat ALL akan digunakan. Anda dapat
menggunakan predikat DISTINCT untuk mengambil satu record dari beberapa record
yang memiliki nilai yang sama.

Contoh :

SELECT DISTINCT Aktor FROM CD;

Akan menghasilkan daftar nama Aktor dari tabel CD yang kita miliki. pemakaian
predikat DISTINCT dalam hal ini untuk memastikan hanya 1 aktor terambil dari
beberapa CD yang mungkin memiliki aktor utama yang sama.

Pemakaian predikat TOP untuk mendapatkan n record atau n persen record dari daftar
teratas.

Misalnya kita ingin mendapatkan 10 kode CD yang paling sering diTransaksi oleh
Anggota.

SELECT TOP 10 KodeCD, Count(*) FROM Transaksi


GROUP BY KodeCD
ORDER BY Count(*) DESC;

Syntax penulisan kongkrit dari SELECT statement

SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [, [table.]field2 [AS alias2] [,


...]]}

Indoprog 19
Memahami SQL Statement Hendra, S.T.

FROM tableexpression [, ...]


[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]

Mengambil kolom dari dua atau lebih tabel dengan Operasi INNER JOIN

Kadang-kadang kita perlu melakukan kombinasi kolom-kolom dari beberapa tabel


menjadi suatu recordset tunggal dimana yang memiliki nilai yang sama pada kolom
tertentu.

Pada operasi INNER JOIN akan mengabungkan record-record yang memiliki nilai sama
pada kolom tertentu pada kedua tabel.

FROM table1 INNER JOIN table2 ON table1.field1 compopr table2.field2

Perhatikan kembali tabel-tabel pada Rental.Mdb modul sebelumnya :

Tabel Transaksi

Nama Field Type


NoTransaksi Long
Tanggal DateTime
KodeAnggota Text
KodeCD Text
Kembali DateTime
Denda Currency

Tabel CD

Nama Field Type


KodeCD Text
Judul Text
Kategori Text
Aktor Text
Harga Currency
Daftar DateTime

Tabel Anggota

Nama Field Type


KodeAnggota Text
Nama Text
Alamat Text
Telepon Text

Indoprog 20
Memahami SQL Statement Hendra, S.T.

Limit Byte
Daftar DateTime

Misalnya kita ingin mengambil suatu recordset yang berisi kolom-kolom berikut :

Kolom Tabel sumber Kriteria

Tanggal Transaksi

Judul Transaksi

Nama Anggota

Denda Transaksi Not Null

Dalam hal ini kita akan menggambil data dari dua tabel, yaitu tabel Transaksi, dan tabel
Anggota, dimana dalam pengambilan tersebut KodeAnggota pada tabel Transaksi harus
bersesuaian dengan KodeAnggota pada tabel Anggota, sehingga FROM clause-nya
dapat ditulis menjadi :

FROM Transaksi INNER JOIN


Anggota ON Transaksi.KodeAnggota = Anggota.KodeAnggota

Sehingga Perintah SQL adalah sebagai berikut :

SELECT Transaksi.Tanggal, Transaksi.KodeAnggota, Anggota.Nama,


Transaksi.Denda
FROM Transaksi INNER JOIN
Anggota ON Transaksi.KodeAnggota = Anggota.KodeAnggota
WHERE NOT Denda Is NULL;

Pada perintah SELECT yang menggambil kolom lebih dari satu tabel, kita perlu
menuliskan nama Tabel dan Field yang dipisahkan dengan dot (.).

Anda dapat melakukan nested untuk mengambil data lebih dari dua tabel

Misalnya kita ingin mengambil suatu recordset yang berisi kolom-kolom berikut :

Kolom Tabel sumber Kriteria

Tanggal Transaksi

Judul CD

Nama Anggota

Harga CD

Dalam hal ini kita akan menggambil data dari tiga tabel, yaitu tabel Transaksi, tabel CD
dan tabel Anggota, dimana dalam pengambilan tersebut KodeCD pada tabel Transaksi
harus bersesuaian dengan KodeCD pada tabel CD, dan KodeAnggota pada tabel

Indoprog 21
Memahami SQL Statement Hendra, S.T.

Transaksi harus bersesuaian dengan KodeAnggota pada tabel Anggota, sehingga FROM
clause-nya dapat ditulis menjadi :

FROM (Transaksi INNER JOIN Anggota ON Transaksi.KodeAnggota =


Anggota.KodeAnggota) INNER JOIN CD ON Transaksi.KodeCD =CD.KodeCD;

atau

FROM (Transaksi INNER JOIN CD ON Transaksi.KodeCD =CD.KodeCD) INNER


JOIN Anggota ON Transaksi.KodeAnggota = Anggota.KodeAnggota ;

dan perintah SQLnya adalah sebagai berikut :

SELECT Transaksi.NoTransaksi, CD.Judul, CD.Harga, Anggota.Nama


FROM (Transaksi INNER JOIN Anggota ON Transaksi.KodeAnggota =
Anggota.KodeAnggota)
INNER JOIN CD ON Transaksi.KodeCD =CD.KodeCD;

atau

SELECT Transaksi.NoTransaksi, CD.Judul, CD.Harga, Anggota.Nama


FROM (Transaksi INNER JOIN CD ON Transaksi.KodeCD =CD.KodeCD)
INNER JOIN Anggota ON Transaksi.KodeAnggota = Anggota.KodeAnggota ;

Operasi LEFT JOIN, RIGHT JOIN

Jika pada operasi INNER JOIN, recordset yang dihasilkan adalah data-data yang
memiliki nilai yang bersesuaian pada kolom tertentu, sedangkan operasi OUTER JOIN
seperti LEFT JOIN dan RIGHT JOIN dapat digunakan untuk mengambil seluruh data
dari suatu tabel walaupun pada tabel lainnya tidak ada data yang bersesuaian.

Contoh :

SELECT Transaksi.Tanggal, Transaksi.KodeAnggota, Anggota.Nama,


Transaksi.Denda
FROM Transaksi LEFT JOIN
Anggota ON Transaksi.KodeAnggota = Anggota.KodeAnggota
WHERE NOT Denda Is NULL;

Membuat union query dengan Operasi UNION

Membuat suatu query union, yang mana mengabung hasil dari dua query atau tabel
dengan menghilangkan record duplikat, untuk mengikutkan record yang duplikat, anda
dapat mencamtumkan ALL.

[TABLE] query1 UNION [ALL] [TABLE] query2 [UNION [ALL] [TABLE] queryn [ ...
]]

Indoprog 22
Memahami SQL Statement Hendra, S.T.

Misalnya kita memiliki dua tabel History (data transaksi bulan lalu), Transaksi (data
transaksi sekarang), kita ingin mengambil data dari dua tabel tersebut menjadi satu
recordset.

SELECT * FROM History UNION ALL SELECT * FROM Transaksi;

Membuat CROSSTAB query dengan TRANSFORM statement

TRANSFORM aggfunction
selectstatement
PIVOT pivotfield [IN (value1[, value2[, ...]])]

Anda dapat menggunakan perintah TRANSFORM untuk membuat suatu Crosstab query
yang merupakan ringkasan data yang kolomnya berasal dari field atau ekspresi.

Misalnya kita akan membuat ringkasan data jumlah transaksi peminjaman CD oleh
masing-masing Anggota (baris) pada masing-masing bulan JAN, FEB, ... (kolom)

Maka perintahnya adalah :

TRANSFORM Count(NoTransaksi)
SELECT Transaksi.KodeAnggota
FROM Transaksi
GROUP BY Transaksi.KodeAnggota

Indoprog 23
Memahami SQL Statement Hendra, S.T.

PIVOT Format([Tanggal],"mmm") In
("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec
");

Indoprog 24
Memahami SQL Statement Hendra, S.T.

Latihan 1
Judul : Mencoba Append, Update, dan Delete query
1. Dengan menggunakan Visual Data Manager, buka database Rental.mdb.

2. Dengan menggunakan Append query, tambahkan data-data berikut ke :

Tabel Anggota

KodeAnggota Nama Alamat Telepon Limit Daftar Blacklist


Jl. Sudirman 10/22 22-Sept-
HW001 Hendra 4521056 3 False
Medan 2001
Susan Jl. Thamrin No. 95 23-Sept-
SD001 4513490 3 False
Dewichan Medan 2001

Tabel CD

KodeCD Judul Kategori Aktor Harga Daftar Status


MI01.01 Mission Impossible Action Tom Cruise 3500 10-Mar-2000 B
RA01.01 Run Away Bride Drama Julia Robert 3500 22-Apr-2000 B

Tabel Transaksi

Tanggal KodeAnggota KodeCD


23-Sept-2001 HW001 RA01.01

3. Dengan menggunakan UPDATE query, set BlackList untuk KodeAnggota SD001


menjadi True

4. Dengan menggunakan DELETE query, hapus data Anggota yang di BlackList.

Indoprog 25
Memahami SQL Statement Hendra, S.T.

Latihan 2
Judul : Mencoba SELECT query
1. Dengan menggunakan Visual Data Manager aktifkan Nwind.Mdb yang merupakan
database sample pada Visual Basic maupun Microsoft Access.

Pada menu File, pilih Open Database…, Microsoft Access…

Perhatikan tabel-tabel yang ada.

• Categories

Indoprog 26
Memahami SQL Statement Hendra, S.T.

• Customers
• Employees
• Orders
• Orders Details
• Products
• Shippers
• Suppliers

2. Aktifkan tampilan dengan menggunakan DBGrid , yang dapat dipilih dari Toolbar.

3. Bukalah tabel Customers, dan perhatikan kolom-kolom didalamnya.

• CustomerId
• CompanyName
• ContactName
• ContactTitle
• Address
• City
• Region
• PostalCode
• Country
• Phone
• Fax

4. Pada Jendela SQL ketikkan perintah SQL berikut, dan klik pada Execute.

SELECT CustomerId, CompanyName, ContactName FROM Customers;

Indoprog 27
Memahami SQL Statement Hendra, S.T.

Ketik SQL statement tersebut, dan klik pada Execute

Lanjutkan untuk soal berikut ini :

Dengan menggunakan WHERE clause, batasi data yang ContactTitle adalah Sales
Manager

SELECT CustomerId, CompanyName, ContactName FROM Customers WHERE


ContactTitle = 'Sales Manager';

Dengan menggunakan ORDER BY clause, urutkan recordset hasil berdasarkan


CompanyName secara Descending.

SELECT CustomerId, CompanyName, ContactName FROM Customers WHERE


ContactTitle = 'Sales Manager' ORDER BY CompanyName DESC;

Indoprog 28
Memahami SQL Statement Hendra, S.T.

Hitung Jumlah pelangan yang terdapat di Country USA dengan Fungsi Agregate Count

SELECT Count(*) As JlhPelangan FROM Customers WHERE Country = 'USA';

Buatlah Statistik jumlah pelangan berdasarkan Country dengan GROUP BY clause

SELECT Country, Count(*) As JlhPelangan FROM Customers GROUP BY Country;

Buatlah Daftar Negara yang mana jumlah pelangan diatas 10 perusahaan dengan
HAVING clause

SELECT Country, Count(*) As JlhPelangan FROM Customers GROUP BY Country


HAVING Count(*) >= 10;

Buatlah Daftar Negara dimana langanan berada (tidak boleh double) dengan
menggunakan predikat DISTINCT

SELECT DISTINCT Country FROM Customers;

Buatlah Daftar 10 besar Negara berdasarkan jumlah pelanggan, dengan predikat TOP

SELECT TOP 10 Country, Count(*) As JlhPelangan FROM Customers GROUP BY


Country ORDER BY Count(*) DESC;

5. Bukalah tabel Products dan perhatikan kolom-kolom didalamnya.

• ProductID
• ProductName
• SupplierID
• CategoryID
• QuantityPerUnit
• UnitPrice
• UnitInStock
• UnitOnOrder
• ReorderLevel
• Discontinued

6. Bukalah tabel Categories dan perhatikan kolom-kolom didalamnya.

• CategoryID
• CategoryName
• Description
• Picture

7. Dengan menggunakan perintah SQL dan operasi INNER JOIN antara tabel Products
dan Categories, tampilkan kolom ProductName, CategoryName, dan Unit Price.

Indoprog 29
Memahami SQL Statement Hendra, S.T.

SELECT Products.ProductName, Categories.CategoryName, Products.UnitPrice FROM


Products INNER JOIN Categories ON Products.CategoryId = Categories.CategoryId;

8. Bukalah tabel Suppliers dan perhatikan kolom-kolom didalamnya.

• SupplierId
• CompanyName
• ContactName
• ContactTitle
• Address
• City
• Region
• PostalCode
• Country
• Phone
• Fax
• Homepage

9. Dengan menggunakan perintah SQL dan operasi INNER JOIN antara tabel Products,
Categories, Suppliers, tampilkan kolom ProductName, CategoryName, SupplierName,
dan Unit Price.

SELECT Products.ProductName, Categories.CategoryName, Suppliers.CompanyName,


Products.UnitPrice FROM ( Products INNER JOIN Categories ON Products.CategoryId
= Categories.CategoryId) INNER JOIN Suppliers ON Products.SupplierId =
Suppliers.SupplierId;

10. Buatlah suatu daftar negara dimana perusahaan memiliki hubungan, baik dari tabel
Customers maupun tabel Suppliers, dengan operasi UNION.

SELECT DISTINCT Country From Customers UNION SELECT DISTINCT Country


From Suppliers;

11. Bukalah tabel Orders dan perhatikan kolom-kolom didalamnya.

• OrderID
• CustomerID
• EmployeeID
• OrderDate
• RequiredDate
• ShippedDate
• ShipVia
• Freight
• ShipName
• ShipAddress
• ShipCity

Indoprog 30
Memahami SQL Statement Hendra, S.T.

• ShipRegion
• ShipPostalCode
• ShipCountry

12. Buatlah suatu daftar jumlah Order Per CustomerID untuk Jan, Feb, ..., Dec.

TRANSFORM Count(*)
SELECT Orders.CustomerId
FROM Orders
GROUP BY Orders.CustomerId
PIVOT Format([OrderDate],"mmm") In
("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

Bagaimana kalau untuk data Order tahun 1994 saja.

TRANSFORM Count(*)
SELECT Orders.CustomerId
FROM Orders WHERE Year([OrderDate]) = 1994
GROUP BY Orders.CustomerId
PIVOT Format([OrderDate],"mmm") In
("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

Indoprog 31
Memahami SQL Statement Hendra, S.T.

Latihan 3
Judul : Latihan
1. Dengan menggunakan Visual Data Manager aktifkan Biblio.Mdb

2. Gunakan perintah SQL untuk :

• Menampilkan kolom PubId, Name, dan Company Name dari tabel Publishers
• Batasi data yang dari City New York
• Urutkan data berdasarkan Name Descending
• Hitung jumlah publishers dari City Carmel
• Hitung jumlah pelanggan dari masing-masing City
• Buatlah Daftar City yang mana jumlah publishernya diatas 3
• Buatlah Daftar City publishers (tidak boleh double)
• Buatlah Daftar 10 besar City berdasarkan jumlah publishers

3. Tampilan recordset dengan kolom ISBN, Author dari tabel TitleAuthor dan Authors.

4. Tampilan recordset dengan kolom Title, Author, Name, dari tabel Titles, Title Author,
Authors, dan Publishers (4 Table)

SELECT Titles.Title, Authors.Author, Publishers.Name


FROM (Titles INNER JOIN Publishers ON Titles.PubID = Publishers.PubID) INNER
JOIN (Authors INNER JOIN [Title Author] ON Authors.Au_ID = [Title Author].Au_ID)
ON Titles.ISBN = [Title Author].ISBN;

Indoprog 32

Anda mungkin juga menyukai