MODUL SQL DASAR
RPL KELAS X
SEMESTER GASAL
SMK MAARIF 9
KEBUMEN
Ppendahuluan
SQL
merupakan singkatan dari Structured Query Language. SQL atau juga sering
disebut sebagai query merupakan suatu bahasa (language) yang digunakan
untuk mengakses database. SQL dikenalkan pertama kali dalam IBM pada tahun 1970
dan sebuah standar ISO dan ANSII ditetapkan untuk SQL. Standar ini tidak
tergantung pada mesin yang digunakan (IBM, Microsoft atau Oracle). Hampir semua
software database mengenal atau mengerti SQL. Jadi, perintah SQL pada semua
software database hampir sama.
Terdapat
3 (tiga) jenis perintah SQL, yaitu :
1. DDL
atau Data Definition Language
DDL
merupakan perintah SQL yang berhubungan dengan pendefinisian suatu struktur
database, dalam hal ini database dan table. Beberapa perintah dasar yang
termasuk DDL ini antara lain :
2. DML
atau Data Manipulation Language
DML
merupakan perintah SQL yang berhubungan dengan manipulasi atau pengolahan data
atau record dalam table. Perintah SQL yang termasuk dalam DML antara lain :
- SELECT
- INSERT
- UPDATE
- DELETE
3. DCL
atau Data Control Language
DCL
merupakan perintah SQL yang berhubungan dengan manipulasi user dan hak akses
(priviledges). Perintah SQL yang termasuk dalam DCL antara lain :
2.
Membuat, Menampilkan, Membuka dan Menghapus Database
Membuat Database
Sintaks umum
SQL untuk membuat suatu database adalah sebagai berikut :
CREATE DATABASE [IF NOT EXISTS]
nama_database;
Bentuk
perintah di atas akan membuat sebuah database baru dengan nama nama_database.
Aturan penamaan sebuah database sama seperti aturan penamaan sebuah
variabel, dimana secara umum nama database boleh terdiri dari huruf,
angka dan under-score (_). Jika database yang akan dibuat sudah ada, maka
akan muncul pesan error. Namun jika ingin otomatis menghapus database
yang lama jika sudah ada, aktifkan option IF NOT EXISTS.
Berikut ini
contoh perintah untuk membuat database baru dengan nama “penjualan” :
CREATE
DATABASE penjualan;
Jika query
di atas berhasil dieksekusi dan database berhasil dibuat, maka akan
ditampilkan pesan kurang lebih sebagai berikut :
Query OK, 1
row affected (0.02 sec)
Menampilkan Database
Untuk
melihat database yang baru saja dibuat atau yang sudah ada, dapat menggunakan
perintah sebagai berikut:
SHOW DATABASES;
Hasil dari
perintah di atas akan menampilkan semua database yang sudah ada di MySQL.
Berikut ini contoh hasil dari query di atas :
+--------------+
|
Database |
+--------------+
|
penjualan |
|
mysql |
|
test |
+--------------+
3 rows in
set (0.02 sec)
Membuka Database
Sebelum
melakukan manipulasi tabel dan record yang berada di dalamnya, kita harus
membuka atau mengaktifkan databasenya terlebih dahulu. Untuk membuka database
“penjualan”, berikut ini querynya :
USE
penjualan;
Jika
perintah atau query di atas berhasil, maka akan ditampilkan pesan sebagai
berikut :
Database
changed
Menghapus Database
Untuk
menghapus suatu database, sintaks umumnya adalah sbb :
DROP
DATABASE [IF EXISTS] nama_database;
Bentuk
perintah di atas akan menghapus database dengan nama nama_database. Jika
databasenya ada maka database dan juga seluruh tabel di dalamnya akan dihapus.
Jadi berhati-hatilah dengan perintah ini! Jika nama database yang akan dihapus
tidak ditemukan, maka akan ditampilkan pesan error. Aktifkan option IF
EXISTS untuk memastikan bahwa suatu database benar-benar ada.
Berikut ini
contoh perintah untuk menghapus database dengan nama “penjualan” :
DROP
DATABASE penjualan;
3. Membuat, Mengubah dan Menghapus Table
Membuat Tabel Baru
Bentuk umum
SQL untuk membuat suatu table secara sederhana sebagai berikut :
CREATE TABLE
nama_tabel (
field1
tipe(panjang),
field2
tipe(panjang),
...
fieldn
tipe(panjang),
PRIMARY KEY
(field_key)
);
Bentuk umum
di atas merupakan bentuk umum pembuatan tabel yang sudah disederhanakan.
Penamaan tabel dan field memiliki aturan yang sama dengan penamaan
database.
Untuk
membuat tabel tersebut di atas, query atau perintah SQL-nya adalah
sebagai
berikut :
CREATE TABLE pelanggan (
id_pelanggan varchar(5) NOT NULL,
nm_pelanggan varchar(30) NOT NULL,
alamat text,
telepon varchar (20),
email varchar (50),
PRIMARY KEY(id_pelanggan)
);
Jika query
untuk membuat tabel di atas berhasil dijalankan, maka akan ditampilkan pesan
sebagai berikut :
Query OK, 0 rows affected (0.16 sec)
Pada
perintah di atas, beberapa hal yang perlu diperhatikan :
a)
CREATE TABLE merupakan perintah dasar dari pembuatan table.
b)
pelanggan merupakan nama tabel yang akan dibuat.
c)
id_pelanggan, nm_pelanggan, alamat, telepon dan email merupakan nama
field.
d) varchar
dan text merupakan tipe data dari field
e) NOT
NULL merupakan option untuk menyatakan bahwa suatu field tidak boleh kosong.
f)
PRIMARY KEY merupakan perintah untuk menentukan field mana yang akan dijadikan
primary key pada tabel.
g) 5,
10, 30 dan 50 di belakang tipe data merupakan panjang maksimal dari suatu
field.
h)
Untuk tipe data date dan text (juga date dan blob) panjang karakter
maksimalnya tidak perlu ditentukan.
i)
Jangan lupa akhiri perintah dengan titik-koma (;)
Selanjutnya untuk melihat tabel
mhs sudah benar-benar sudah ada atau belum, ketikkan perintah berikut ini
:
SHOW TABLES;
Perintah di
atas akan menampilkan seluruh tabel yang sudah ada dalam suatu database. Contoh
hasil dari perintah di atas adalah sebagai berikut :
+---------------------+
| Tables_in_penjualan |
+---------------------+
| pelanggan |
+---------------------+
1 rows in set (0.01 sec)
Untuk
melihat struktur tabel “mhs” secara lebih detail, cobalah perintah atau query
sebagai berikut :
DESC
pelanggan;
DESC
merupakan singkatan dari DESCRIBE (dalam query bisa ditulis lengkap atau hanya
4 karakter pertama) dan pelanggan adalah nama tabel yang akan dilihat
strukturnya. Dari perintah di atas, akan ditampilkan struktur tabel
pelanggan sebagai berikut :
+--------------+-------------+------+-----+---------+-------+
| Field |
Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| id_pelanggan | varchar(5) | NO | PRI
| |
|
| nm_pelanggan | varchar(30) | NO |
|
| |
| alamat |
text | YES
| | NULL
| |
| telepon | varchar(20) | YES
| | NULL
| |
| email | varchar(50) | YES
| | NULL |
|
+--------------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
Dari
struktur tabel mhs yang ditampilkan di atas, dapat diketahui bahwa :
a)
Terdapat 5 (lima) field dengan tipe masing-masing.
b)
Primary Key dari tabel pelanggan adalah id_pelanggan. Lihat kolom
Key pada field id_pelanggan.
c)
Untuk field id_pelanggan dan nm_pelanggan defaultnya tidak
boleh kosong. Lihatlah kolom Null dan Default pada field
id_pelanggan dan nm_pelanggan.
d) Untuk
field alamat, telepon dan email default-nya boleh
kosong. Lihatlah kolom Null dan Default pada field alamat dan telepon.
Mengubah Struktur Table dengan ALTER
Untuk
mengubah struktur suatu tabel, bentuk umum perintah SQL-nya sebagai berikut :
ALTER
TABLE nama_tabel alter_options;
dimana
:
a)
ALTER TABLE merupakan perintah dasar untuk mengubah tabel.
b)
nama_tabel merupakan nama tabel yang akan diubah strukturnya.
c)
alter_options merupakan pilihan perubahan tabel. Option yang bisa digunakan,
beberapa di antaranya sebagai berikut :
1)
ADD definisi_field_baru
Option ini
digunakan untuk menambahkan field baru dengan “definisi_field_baru” (nama
field, tipe dan option lain).
2)
ADD INDEX nama_index
Option ini
digunakan untuk menambahkan index dengan nama “nama_index” pada tabel.
3) ADD PRIMARY
KEY (field_kunci)
Option untuk
menambahkan primary key pada table
4) CHANGE
field_yang_diubah definisi_field_baru
Option untuk
mengubah field_yang_diubah menjadi definisi_field_baru
5) MODIFY
definisi_field
Option untuk
mengubah suatu field menjadi definisi_field
6) DROP
nama_field
Option untuk menghapus field nama_field
7) RENAME TO
nama_tabel_baru
Option untuk mengganti nama tabel
Beberapa
contoh variasi perintah ALTER untuk mengubah struktur suatu tabel antara lain :
1.
Menambahkan field “tgllahir” ke tabel pelanggan
ALTER
TABLE pelanggan ADD tgllahir date NOT NULL;
2.
Menambahkan primary key pada suatu tabel
ALTER TABLE pelanggan ADD
PRIMARY KEY(id_pelanggan);
3.
Mengubah tipe field tgllahir menjadi varchar dalam tabel pelanggan
ALTER
TABLE pelanggan MODIFY tgllahir varchar(8) NOT NULL;
4.
Menghapus field tgllahir dari tabel pelanggan
ALTER
TABLE pelanggan DROP tgllahir;
Mengubah Nama Tabel
Untuk
mengubah nama suatu tabel, dapat menggunakan perintah SQL sbb :
RENAME TABLE pelanggan TO plg;
ALTER TABLE plg RENAME TO pelanggan;
Perintah di
atas akan mengubah tabel pelanggan menjadi plg dan sebaliknya.
Menghapus Tabel
Untuk
menghapus sebuah tabel, bentuk umum dari perintah SQL adalah sebagai berikut :
DROP TABLE nama_tabel;
Contohnya
kita akan menghapus tabel dengan nama “pelanggan” maka perintah
SQL-nya
adalah :
DROP TABLE pelanggan;
Menambah Record dengan INSERT
Bentuk umum
perintah SQL untuk menambahkan record atau data ke dalam
suatu tabel
adalah sebagai berikut :
INSERT INTO nama_tabel VALUES (‘nilai1’,’nilai2’,...);
atau dapat
dengan bentuk sebagai berikut :
INSERT INTO
nama_tabel(field1,field2,...)
VALUES
(‘nilai1’,’nilai2’,...);
atau dapat
juga dengan bentuk sebagai berikut :
INSERT INTO
nama_tabel
SET
field1=’nilai1’, field2=’nilai2’,...;
Sebagai
contoh, kita akan menambahkan sebuah record ke dalam tabel pelanggan yang telah
kita buat sebelumnya. Berikut ini perintah SQL untuk menambahkan sebuah record
ke dalam tabel pelanggan :
INSERT INTO pelanggan VALUES ('P0001',
'Achmad Solichin','Jakarta Selatan',
'0217327762', 'achmatim@gmail.com');
Jika
perintah SQL di atas berhasil dieksekusi maka akan ditampilkan pesan sebagai
berikut :
Query OK, 1
row affected (0.00 sec)
Setelah
perintah SQL di atas berhasil dieksekusi, maka record atau data dalam
tabel pelanggan akan bertambah. Jalankan perintah berikut ini untuk
melihat isi tabel pelanggan !
SELECT * FROM pelanggan;
Dan berikut
ini hasil dari perintah SQL di atas :
------+-----------------+-----------------+------------+-----
---------------+
| id_pelanggan | nm_pelanggan |
alamat |
telepon |
email |
+--------------+-----------------+-----------------+------------+-----
---------------+
| P0001 | Achmad Solichin |
Jakarta Selatan | 0217327762 |
achmatim@gmail.com |
+--------------+-----------------+-----------------+------------+-----
---------------+
1 row in set (0.00 sec)
Mengedit Record dengan UPDATE
Proses
update bisa sewaktu-waktu dilakukan jika terdapat data atau record dalam suatu
tabel yang perlu diperbaiki. Proses update ini tidak menambahkan data (record)
baru, tetapi memperbaiki data yang lama. Perubahan yang terjadi dalam proses
update bersifat permanen, artinya setelah perintah dijalankan tidak dapat
di-cancel (undo).
Bentuk umum
perintah SQL untuk mengedit suatu record atau data dari suatu tabel
adalah sebagai berikut :
UPDATE nama_tabel SET field1=’nilaibaru’
[WHERE kondisi];
Pada
perintah untuk update di atas :
a)
UPDATE merupakan perintah dasar untuk mengubah record tabel.
b)
nama_tabel merupakan nama tabel yang akan diubah recordnya.
c)
Perintah SET diikuti dengan field-field yang akan diubah yang mana
diikuti juga dengan perubahan isi dari masing-masing field. Untuk
mengubah nilai dari beberapa field sekaligus, gunakan koma (,) untuk
memisahkan masing-masing field.
d) Perintah
WHERE diikuti oleh kondisi tertentu yang menentukan record mana yang akan
diedit (diubah). Perintah WHERE ini boleh ada boleh juga tidak.
Jika WHERE tidak ditambahkan pada perintah update maka semua record
dalam tabel bersangkutan akan berubah.
Perhatikan
beberapa contoh perintah UPDATE tabel pelanggan berikut ini !
1.
Mengubah alamat menjadi “Tangerang” untuk pelanggan yang mempunyai id
‘P0001’
UPDATE pelanggan SET alamat='Tangerang' WHERE
id_pelanggan='P0001';
Dan jika
query di atas berhasil dieksekusi maka akan ditampilkan hasil sebagai berikut :
Query OK, 1
row affected (0.27 sec)
Rows
matched: 1 Changed: 1 Warnings: 0
2.
Mengubah email menjadi “budi@luhur.com” dan alamat menjadi “Bandung”
untuk
pelanggan yang mempunyai id_pelanggan ‘P0002’
UPDATE pelanggan SET email='budi@luhur.com',
alamat='Bandung' WHERE id_pelanggan='P0002';
Menghapus Record dengan DELETE
Proses
delete dilakukan jika terdapat data atau record dalam suatu tabel yang perlu
dihapus atau dihilangkan. Perubahan yang terjadi dalam proses delete bersifat
permanen, artinya setelah perintah dijalankan tidak dapat di-cancel (undo).
Jadi berhati-hatilah dengan perintah delete !
Bentuk umum
perintah SQL untuk menghapus suatu record atau data dari tabel adalah
sebagai berikut :
DELETE FROM nama_tabel [WHERE kondisi];
Pada
perintah untuk delete di atas :
a)
DELETE FROM merupakan perintah dasar untuk menghapus suatu record dari
tabel.
b)
nama_tabel merupakan nama tabel yang akan dihapus recordnya.
c)
Perintah WHERE diikuti oleh kondisi tertentu yang menentukan record mana yang
akan dihapus (didelete). Perintah WHERE ini boleh ada boleh juga tidak.
Namun
demikian, jika WHERE tidak ditambahkan pada perintah delete maka semua
record dalam tabel bersangkutan akan terhapus. Jadi jangan lupa
menambahkan WHERE jika kita tidak bermaksud mengosongkan tabel
Perhatikan
beberapa contoh perintah DELETE dari tabel pelanggan berikut
ini !
1. Menghapus data pelanggan
yang mempunyai id_pelanggan P0005
DELETE FROM pelanggan WHERE
id_pelanggan='P0005';
Dan jika
query di atas berhasil dieksekusi dan record yang akan dihapus ada,
maka akan
ditampilkan hasil sebagai berikut :
Query OK, 1
row affected (0.11 sec)
2.
Menghapus semua pelanggan yang beralamat di “Bandung”
DELETE FROM pelanggan WHERE alamat='Bandung';
Menampilkan Record dengan SELECT
Perintah
SELECT digunakan untuk menampilkan sesuatu. Sesuatu di sini bisa berupa
sejumlah data dari tabel dan bisa juga berupa suatu ekspresi.
Dengan
SELECT kita bisa mengatur tampilan atau keluaran sesuai tampilan yang
diinginkan.
Bentuk dasar
perintah SELECT data dari tabel adalah sebagai berikut :
SELECT [field | *] FROM nama_tabel [WHERE kondisi];
Perhatikan
beberapa contoh perintah SELECT dari tabel pelanggan berikut
ini !
1.
Menampilkan seluruh data atau record (*) dari tabel pelanggan
SELECT * FROM pelanggan;
Dan jika
query di atas berhasil dieksekusi maka akan ditampilkan hasil sebagai berikut :
+--------------+-----------------+----------------------------------+--
----------+---------------------+
| id_pelanggan | nm_pelanggan |
alamat
|
telepon |
email
|
+--------------+-----------------+----------------------------------+--
----------+---------------------+
| P0001 | Achmad Solichin |
Jakarta
Selatan
|
0217327762 | achmatim@gmail.com |
| P0002 | Agus
Rahman | Jl H Said,
Tangerang
|
0217323234 | agus20@yahoo.com |
| P0003 | Doni
Damara | Jl. Raya Cimone, Jakarta Selatan |
0214394379 | damara@yahoo.com |
| P0004 | Reni
Arianti | Jl. Raya Dago No
90
|
0313493583 | renren@yahoo.co.id |
| P0005 | Dewi
Aminah | Jl Arjuna No
40
|
0314584883 | aminahoke@plasa.com |
| P0006 | Chotimatul
M | RT 04 RW 02 Kel Pinang sari
|
0219249349 | fixiz@yahoo.co.id |
+--------------+-----------------+----------------------------------+--
----------+---------------------+
6 rows in set (0.00 sec)
2.
Menampilkan field id_pelanggan dan nm_pelanggan dari seluruh
pelanggan
dalam tabel pelanggan
SELECT id_pelanggan, nm_pelanggan FROM pelanggan;
Jika query
di atas berhasil dieksekusi maka akan ditampilkan hasil sebagai
berikut :
+--------------+-----------------+
| id_pelanggan | nm_pelanggan |
+--------------+-----------------+
| P0001 | Achmad Solichin |
| P0002 | Agus Rahman
|
| P0003 | Doni
Damara |
| P0004 | Reni
Arianti |
| P0005 | Dewi
Aminah |
| P0006 | Chotimatul
M |
+--------------+-----------------+
6 rows in set (0.00 sec)
3.
Menampilkan id, nama dan alamat dari data pelanggan yang mempunyai id
P0006
SELECT id_pelanggan, nm_pelanggan, alamat
FROM pelanggan WHERE id_pelanggan = 'P0006';
Hasil query
di atas adalah sbb :
+--------------+--------------+-----------------------------+
| id_pelanggan | nm_pelanggan |
alamat
|
+--------------+--------------+-----------------------------+
| P0006 | Chotimatul M | RT 04 RW
02 Kel Pinang sari |
+--------------+--------------+-----------------------------+
1 row in set (0.00 sec)
4.
Menampilkan id, nama dan email data semua pelanggan yang mempunyai
email di
yahoo
SELECT id_pelanggan, nm_pelanggan, email
FROM pelanggan WHERE email LIKE '%yahoo%';
Hasil query
di atas adalah sbb :
+--------------+--------------+--------------------+
| id_pelanggan | nm_pelanggan |
email
|
+--------------+--------------+--------------------+
| P0002 | Agus Rahman |
agus20@yahoo.com |
| P0003 | Doni Damara |
damara@yahoo.com |
| P0004 | Reni Arianti |
renren@yahoo.co.id |
| P0006 | Chotimatul M |
fixiz@yahoo.co.id |
+--------------+--------------+--------------------+
4 rows in
set (0.00 sec)
Berikut ini
operator perbandingan yang dapat digunakan untuk membandingkan dua buah
nilai dalam MySQL :
a)
Operator =, akan bernilai TRUE jika nilai yang dibandingkan sama.
b)
Operator != atau <>, akan bernilai TRUE jika nilai yang dibandingkan
TIDAK SAMA (berbeda).
c)
Operator >, akan bernilai TRUE jika nilai yang pertama lebih besar dari
nilai kedua.
d) Operator
>=, akan bernilai TRUE jika nilai yang pertama lebih besar atau sama dengan
nilai kedua.
e)
Operator <, akan bernilai TRUE jika nilai yang pertama lebih kecil dari
nilai kedua.
f)
Operator <=, akan bernilai TRUE jika nilai yang pertama lebih kecil atau
sama dengan nilai kedua.
5.
Menampilkan data semua pelanggan yang beralamat di Jakarta Selatan dan
mempunyai
email di gmail.
SELECT id_pelanggan, nm_pelanggan, alamat, email
FROM pelanggan WHERE alamat = 'Jakarta Selatan' &&
email LIKE '%gmail.com';
Hasil query
di atas adalah sbb :
+--------------+-----------------+-----------------+--------------------+
| id_pelanggan | nm_pelanggan |
alamat |
email
|
+--------------+-----------------+-----------------+--------------------+
| P0001 | Achmad Solichin |
Jakarta Selatan | achmatim@gmail.com |
+--------------+-----------------+-----------------+--------------------+
1 row in set (0.00 sec)
Berikut ini
operator penghubung yang dapat digunakan untuk menghubungkan antara dua
kondisi dalam MySQL :
a)
Operator && atau AND, akan menghubungkan dua kondisi dimana akan
bernilai TRUE jika kedua kondisi bernilai TRUE.
b)
Operator || atau OR, akan menghubungkan dua kondisi dimana akan bernilai
TRUE jika salah satu atau kedua kondisi bernilai TRUE.
c)
Operator !, akan me-reverse nilai suatu kondisi logika. \
6.
Menampilkan semua data pelanggan secara urut berdasarkan nama pelanggan
dengan perintah ORDER BY
SELECT id_pelanggan, nm_pelanggan
FROM pelanggan ORDER BY nm_pelanggan;
Hasil query
di atas adalah sbb :
+--------------+-----------------+
| id_pelanggan | nm_pelanggan |
+--------------+-----------------+
| P0001 | Achmad Solichin |
| P0002 | Agus
Rahman |
| P0006 | Chotimatul
M |
| P0005 | Dewi
Aminah |
| P0003 | Doni
Damara |
| P0004 | Reni
Arianti |
+--------------+-----------------+
6 rows in set (0.00 sec)
7.
Menampilkan semua data pelanggan secara urut berdasarkan nama pelanggan
secara DESCENDING
SELECT id_pelanggan, nm_pelanggan
FROM pelanggan ORDER BY nm_pelanggan DESC;
Hasil query
di atas adalah sbb :
+--------------+-----------------+
| id_pelanggan | nm_pelanggan |
+--------------+-----------------+
| P0004 | Reni
Arianti |
| P0003 | Doni
Damara |
| P0005 | Dewi
Aminah |
| P0006 | Chotimatul
M |
| P0002 | Agus
Rahman |
| P0001 | Achmad Solichin |
+--------------+-----------------+
6 rows in set (0.00 sec)
8.
Menampilkan 3 record (data) pertama dari tabel pelanggan secara urut
berdasarkan nama pelanggan dengan LIMIT
SELECT id_pelanggan, nm_pelanggan
FROM pelanggan ORDER BY nm_pelanggan LIMIT 0,3;
Hasil query
di atas adalah sbb :
+--------------+-----------------+
| id_pelanggan | nm_pelanggan |
+--------------+-----------------+
| P0001 | Achmad Solichin |
|
P0002 | Agus
Rahman |
|
P0006 | Chotimatul
M |
+--------------+-----------------+
3 rows in
set (0.00 sec)
Keterangan
Pada query
di atas bentuk LIMIT digunakan untuk membatasi hasil tampilan.
LIMIT banyak
digunakan untuk menampilkan data yang relatif banyak. Format fungsi LIMIT
adalah sebagai berikut :
LIMIT awal, jumlah_record
9.
Menampilkan jumlah record yang ada di tabel pelanggan.
SELECT COUNT(*)FROM pelanggan;
Hasil query
di atas adalah sbb :
+----------+
| count(*) |
+----------+
| 6 |
+----------+
1 row in set (0.00 sec)