You are on page 1of 50

LorJ%

G*Y*

IKUM
!g*J\; E'j\

'#lY

PROGRAM STUDI TEKNIK INFORMATIKA UNIVERSITAS INDRAPRASTA PGRI

'ii tl
tll

t. PENGENALANSQL. I"ANGUAGE.. 3. DATA MANIPUI,ATION I"ANGUAGE.. 4. FUNGSI AGREGAT 5. FUNGSI TAI{GGAI 6. FUNGSI STRING 7. DATASASE REI"ATION
2.
DATA DEFINITION

.......... 5

......7 ......I5
.....2g .....25

.........3I
......35 .....43 .....47 ....49 ....55

..... 9. RELAST Ar{TAR 3 TABET (..WHERE..) .


REI"AST

8.

AIffAR

TASEI (WHERE)

lo.REr,ASr ArffAR TABEr I I.I'NION, II{ITERSECT,

oOrN)

EXCEPT

;bl

SEJARAH SQL
Sejak kapan SQL mulai diperkenalkan ke khalayak umum sebagai bahasa standar database?

Pada tahun 1970, seiring dengan perkembangan database yang kian kompleks. E.F. Cold memperkenalkan database relasional dalam sebuah artikel yang berjudul "A Relational Model of data for large shared data bank". Dari sinilah lahir suatu konsep dasar untuk mengembangkan
database atau basis data.

Jadi pada tahun 1979-lah awal mula lahirnya SQL, yaitu dimulai dari Codd yang
memperkenalkan idenya tersebut dalam konsep yang lebih nyata, kemudian dikembangkan menjadi sebuah database relasional, yang salah satunya dari bahasa database relasional tersebut adalah SQL. Kelahiran SQL juga tidak terlepas dengan sebuah proyek IBM yang dikenal dengan Sisteln R. Proyek, yaitu sebuah proyek yang bertujuan untuk mengembangkan sebuah sistem database

relasional yang dapat memenuhi segala jenis sistem pengoperasian database modern. Dengan memperkenalkan sebuah bahasa yang dinamakan sequel yang berkembang menjadi SQL.

PENGGU\AA\ SQL
Menurut penggunaannya, perintah-perintah SQL dapat dikelompokkan rnenjadi yaltu
:

bagian,

l.

Secara Interpretasi (Interactive SQL), yaitu dengan cara memasukkan perintah-perintah SQL

melalui console atau mikrokomputer dan secara langsung diproses sehirrgga dapat langsung
dilihat.

2.

Secara Sisip (Embedded SQL), yaitu dengan cara menyisipkan perintah-perintah SQL ke dalarr-r
bahasa perrlrogram tertentu sehingga untuk melihatnya dibutuhkan rnedia khusus yang dirancang

oleh seorang programmer.

STATEMEN SQL Yang dimaksud dengan statement SQL adalah sekumpulan perintah-perintah SQL l,ang memiliki peranan dalam pembentukan dan pengaturan suatu databasc. Statemen SQL terbagi menjadi 3 bagian, yaitu l. DDL (Data Definition Language), yaitu sebuah perintah SQL yang berorier.rtasi 1rrtl,r
:

pembentukan atau penghapusan database, tabel dan index. Yang termasuk ke dalam kategori DDL :

CREATEDATABASE DROPDATABASE
CRE.ATE

TABLE

CREATE INDEX CREATE VIEW

DROP TABLE DROP INDEX

ALTER TABLE

MODUL PRAI{TIKUM SISTEM BASIS DATA (MySQL)


2.

DML (Data Manipulation Language), yaitu perintah-perintah SQL yang berhubungan


data atat record, di antaranya menampilkan data, menghapus data, dan meng-update data.

dengan

Yang termasuk ke dalam kategori DML


3.

INSERT, SELECT, UPDATE, dan DELETE DCL (Data Control Language), merupakan kumpulan perintah SQL yang berfungsi untuk melakukan pendefinisian pemakai yang boleh atau tidak mengakses database dan apa saja
privilegenya. Yang termasuk dalam kategori DCL
:

COMMIT, ROLLBACK, GRANT, dan REVOKE. MySQL Console dari DOS pada sistem operasi Windows penulisan perintah-perintahnya tidak membedakan huruf besar dan huruf kecil, tapi pada sistem operasi Unix./Linux huruf besar dan kecil harus dibedakan. Dan sintak SQL pada linux harus huruf kecil semua.
FUNGSI SQL Fungsi-fungsi SQL

ini

penggunaannya harus bersamaan dengan perintah

DML.

Fungsi-

fungsi SQL yang lazim digunakan, di antaranya adalah : 1. Fungsi Agregat, yaitu sebuah fungsi built-in yang hampir pasti ada dalam sistem database relasional. Dengan kata lain fungsi agregat merupakan fungsi standar dari SQL. Yang termasuk dalam fungsi agregat: AVG, SUM, COLfNT, MAX, MIN, STD, dan STDDEV. 2. Fungsi Aritmatik, yaitu sebuah fungsi yang berguna dalam proses perhitungan atau manipulasi
data numerik.
f;
,ll

d*

i
$

Yang termasuk dalam fungsi aritmatik, di antaranya : + (penjumlahan), - (pengurangan), * (perkalian), / (pembagian),

3.

.itil

ilrt

:it

(sisa hasil bagi), AIIS (x), (x), (x), (x), (x), (x), (x), CEILING ROLTND dan lain sebagainya. ACOS ASIN ATAN COS Fungsi String, berfungsi untuk melakukan manipulasi data yang bertipe data datetime Format tanggal dan jam pada mySQL : Yyyy-mm-dd hh:ii:ss Yang termasuk dalam fungsi string, di antaranya
:

o%

NOW ( ), HOUR ( ), MINUTE ( ), MONTH ( ), dan sebagainya.

,.**

.m",.:
t .:
il

-b
f

..DATA DE
:irl:llr:lr,i'
iut:1,u1

l:lilrlll

tl],,,li, l.,t

:l;la PENDAHULUAN i,t, peanbuatan dan pengaturan database Sebelumnya, telah dijelaskan melalui browser, yaitu dengan phpmyadmin. Mungkin bagi yang terbiasa meliakukan pembuatan dan
'

Ii ;l

11|ii

pengaturan database lewat',.Console,::,,'g161r,i",dos-prompt akan terasa kurang nyaman jika harus melakukannya pada browser. Untuk itu pada bab ini, akan dibahas bagaimana cara melakukan pembuatan dan pengaturan database lewat console pada operating system Linux atau dos-prompt
pada operating system Windows. Cara pembuatan dan pengaturan database pada console Linux
:

1.

Pada console, masukkan perintah

suUntuk masuk ke dalam super user.

2.

Lalu masukkan perintah


I

opt/ lampp / lampp start

Untuk mengaktifl<an apache dan MySQL

3.

Setelah mengaktifkan apapche dan MySQL, langkah selanjutnya yaitu menjalankan mysql. Dengan cara memasukkan perintah : lopt/lampp/birVmysql Akan terlihat tampilan pada console.

Cara pembuatan dan pengaturan database pada dos-prompt Windows : l. Setelah mengaktifl<an command prompt atau dos-prompt, masukkan perintah seperti berikut

2.

cd\Pro gram Files\xampp\mysql\bin Akan terlihat pada command prompt

: :

C:\Program Files\xampp\mysql\bin> dan masukkan perintah seperti berikut Mysql -u root

2.

DATABASE Terdapat perintah-perintah

DDL dalam pembuatan,

penghapusan,

dan

menampilkan database. r Membuat Database Bentuk umum penulisannya

CREATE DATABASE nama database;

MODUL PRAMIKUM SISTEM BASIS DATA (MySQL)

Ketentuan dalam membuat nama database, jangan menggunakan spasi database lebih dari satu kata. Dapat menggunakan underscore ( ).

jika memiliki

nama

Contoh: Mysql>CREATE DATABASE siswa 25;

Menampilkan Seluruh Database


:

Bentuk umum penulisannya ) SHOW DATABASE:

Contoh: Mysql>SHOW DATABASES;

MengaktifkanDatabase
:

Bentuk umum penulisannya


IJse name_database;

Contoh

Mysql>USE siswa; Menghapus Database Bentuk umum penulisannya : DROP DATABASE nama_database;
Contoh
:

Mysql>DROP DATABASE, baru;

3. TABEL
Tabel merupakan media yang dapat melakukan proses relasional antartabel. Pada tabel
terdapat field dan record.

Field merupakan judul kolom yang memiliki tipe data, slze record, kunci relasi, dan
sebagainya. Record adalah kumpulan data yang tersusun secara per baris.

Tipe Data Tipe data dapat dikelompokkan menjadi


dan tipe data datetime.

bagian, yaitu tipe data string, tipe data numerik,

Tipe Data String


Yang termasuk ke dalam kategori ini, adalah
:

Char Pendeklarasian Char (size)

Char merupakan tipe data string yang menyediakan panjang karakter maksimal 255 karakter. Tipe data char juga memiliki panjang yang tetap untuk setiap data yang dimasukkan sesuai
dengan panjang yang dideklarasikan. Contoh: Anda menentukan char (15), lalu terdapat record

"lstimewa" pada field tersebut. Karena "Istimewa" memiliki 8 karakter maka mysql akan
menambah 7 spasi untuk melengkapi sisa spasi menjadi 15 spasi sesuai dengan apa yang telh
dideklarasikan.

DATA DEFINITI ON I'ANGUAGE

Varchar
Pendeklarasian : Varchar (size)

Pada dasarnya tipe data varchar memiliki kesamaan dengan tipe data char, yaitu memiliki panjang maksimal 255 karakter. Perbedaannya apabila ada pada char jika jumlah karakter pada suatu field kurang dari ukuran nilai yang telah dideklarasikan, maka sisanya akan ditambahkan oleh jumlah spasi yang tersisa. Tidak demikian halnya dengan varchard, jika jumlah karakter

pada suatu field kurang dari ukuran nilai yang telah dideklarasikan, maka tidak akan ditambahkan spasi, melainkan hanya memasukkan jumlah karakter yang dimasukkan saja,
sehingga tipe data varchar lebih hemat dari char.

Tinl.text
Pendeklarasian:

Tinltext

Memiliki nilai size yang sama dengan varchar (255).


Text dan Blob
Pendeklarasian: Text atau Blob

Tipe data text dan blob memikiki kesamaan dengan tipe data char dan varchar, yaitu memiliki kesamaan dan perbedaan. Persamaan antara tipe data text dan blob adalah dapat menampung teks atau string yang tidak terbatas jumlahnya. Perbedaan tipe data blob memungkinkan untuk menyimpan data garnbar atau dokumen, sehingga antara dokumen dan gambar tidak lagi terpisah.
Tipe data text hanya dap4t menampung teks atau string saja. Mediumtext
Pendeklarasian: Mediumtext

Tipe data ini memiliki panjang maksimal 1.677.2L5 karakter. Longtext


Pendeklarasian : Longtext

Tipe daia longtext memiliki size maksimal 4.294.967 .295 karal<ter.

Tipe Data Numerik


Yang termasuk ke dalam kategori ini adalah : - Integer/Int Pendeklarasian: Int(size) Nilai yang dapat disimpan antara -2.147.483.648 sampai 4.294.967.295-

I rnvlnt Pendeklarasian: Tinyint(size)

Nilai yang dapt disimpan


Mediumint

aratara -128 sarnpai 255.

Pendeklarasian: Mediumint(size)

Nilai yang dapat disimpar' arrtata -8.388.608 sampai 8.288.6Oi

MODULPRAKTIKUM SISTEM BASIS DATA (MySQL)

Bigint
Pendeklarasian: B igint(size)

Nilai Float

yang dapat disimpan antara -92.233.720.368.547.i.58.079 samp:

92.233.7 20.3 68.5 47 .7 58.O7 8.

Pendeklarasian: Float

Float menyimpan bilangan real dan tidak dapat bernilai negatif,

Double
Pendeklarasian: Double

I{ebalikan dari float yang hanya menerima bilangan real, double dapat menerima bilangan re:
atau desimal.

Tipe Data Date dan Time Yang termasuk ke dalam kategori ini, adalah

Date Pendeklarasian: Date

Date menyimpan nilai format YYYY-MM-DD. Nilai yang diizinkan arrtara 1000-01-01 sampadengan 9999-12-31.

Datetime
Pendeklarasian: Datetime

Datetime menyimpan nilai format YYYY-MM-DD HH:MM:SS. Nilai yang diizinkan antar"
1000-01-01 00:00:00 sampai dengan 9999-12-31 23:59:59.

Timestamp
Pendeklarasian: Timestamp(size)

timestamp(2)

Pada tipe data datetime ini, saat pendeklarasian harus disertakan dengan size. Contoh + YY atau timestamp(4) -+ YYMM.

Time
Pendeklarasian: Time Format time adalah HH MM
:

S (Hour: Minute

econd).

Year
Pendeklarasian: Year(digit)

Untuk tipe data datetime year terdapat digit yang ditentukan dengan 2 atau 4. Jika dipilih 2 d,igi-. maka akan menghasilkan 00 (untuk 2000). Nilainya antara 1970-2069. Sedangkan untuk 4 digi: nilainya arrtara 190 1 -2I 5 5.

t0

DATA D EFIN IT I O N I'AN G UAG E

Tipe Key (Kunci) penggunaan

key pada umumnya digunakan pada relasi tabel, namun tidak

menutup

key kemungkinan satu tabel juga mernbutuhkan key, yaitu prirnary key. Berikut ini merupakan tipe yang digunakan dalam relasi antar tabel atau satu tabel :
Super key

Merupakan kumpulan atribute(freld) atau satu atribut yang secara unik mengidentifikasi sebuah
record pada suatu relasi.
iI
r

Candidate key

Merupakan field unik yang umumnya dapat dijadikan sebagai relasi. Primary key Merupakan candidate key yang terpilih untuk mengidentifikasi record secara unik dalam suatu primary relasi. Jika terdapat auto_increment pada suatu field, maka field tersebut harus bersifat
key.

Alternative key Merupakan bagian dari candidate key yang tidak terpilih sebagai primary key. Foreign key Field yang menjadi penghubung suatu relasi, yaitu dari primary key'

Auto_Increment Berfungsi untuk memberikan nilai dengan kelipatan satu dimulai dari 1 secara otomatis, harus yang sehingga user tidak perlu memasukkan nilai. Field yang dapat diberikan auto-increment
bertipe data numerik. Dan umumnya digunakan dalam pembuatan nomor urut.

Membuat Tabel yang perlu diperhatikan sebelum membuat sebuah tabel adalah melakukan pengaktifan

database tertentu terlebih dahulu.

Bentuk umum penulisannYa:

>

CREATE TABLE nama-table(freldl tipe(size),''');

Contoh:

Mysql>CREATE TABLE siswa(no int(5) auto-increment primary key,


->nis varchar(1), narna varchar(25));

'

Menghapus Tabel

Bentuk umum penulisannYa: DROP TABLE nama-table;


Contoh:

Mysql>DROP TABLE kesiswaan;

II

MODUL PMI{TIKUM SISTEM BASIS DATA (MySQL)

Memodifikasi Tabel Macam modifikasi tabel, yaitu menambahkan field, mengganti size record suatu field, menghapus field, dan mengganti nama field. - Menambahkan Field
Bentuk umum penulisannya:

ALTER TABLE nama_table ADD Column field tipe(size);


Contoh:

Mysql>ALTER TABLE tsiswa ADD column alamat varchar(3O):


Catatan tambahan:

. .

IJntuk menyisipkan atau menambahkan field pada awal field. Mysql>ALTER TABLE tsiswa ADD column phone varchar(30) first; Untuk menyisipkan atau menambahkan field setelah field tertentu.

Mysql>ALTER TABLE tsiswa ADD column phone varchar(30)


-> after alamat;

Mengganti Nama, Tipe Data, dan Size Field


Bentuk umum penulisannya:

ALTER TABLE nama_table change olrl_fig14 new_field tipe(size);


Contoh:

Mysql>ALTER TABLE tsiswa change phone -> telephone cha{25); Phone varchar(30) -+ telephone char(25)

Mengganti Tipe Data Field


Bentuk umum penulisannya:

ALTER TABLE nama_table modify field new_tipe(size);


Contoh:

Mysql>ALTER TABLE tsiswa modifz telephone varchar(25); Telephone char(25) + telephone varchar(25)

Menghapus Nama Field


Bentuk umum penulisannya:

ALTER TABLE nama table DROp field:


Contoh:

Mysql>ALTER TABLE tsiswa DROP telephone:

Menampilkan Struktur Tabel

Bentuk umum penulisannya: DESC nama_table;


Contoh:

Mysql>DESC tsiswa;

t2

DATA

D EFI NIT I O N

I,AN G UAG E

I
I

Mengganti Nama Tabel

I I j

Bentuk umum penulisannya:

ALTER TABLE old_table_name rename new_table_name; Contoh: Mysql>ALTER TABLE tsiswa rename kesiswaan;

li
:

Menghapus Tabel

Bentuk umum penulisannya: DROP TABLE nama_tabel;


Contoh:

Mysql>DROP TAIILE kesiswaan;

Menampilkan Seluruh Tabel

Bentuk umum penulisannya: SHOW TABLES; Contoh: Mysql>SHOW TABLES;

4. INDEX
Index berfungsi mempercepat proses pencarian data dalam suatu tabel. Adanya index pada suatu field tabel, menyebab,kan proses pencarian otomatis akan dilakukan terlebih dahulu ke dalam index, apabila ditemukan baru akan diambilkan data yang sesungguhnya dari tabel. Apabila tidak ditemukan dalam index, sudah dapat dipastikan bahwa data tersebut memang tidak ada dalam tabel. Index juga dapat dibuat untuk setiap kolom yang akan dijadikan kriteria tertentu untuk
pencarian data, sehingga proses pencariannya akan lebih cepat.

Pada index terdapat perintah pembuatan dan penghapusan index, namun tidak terdapat
perintah perubahan nama index.

Membuat Index

Bentuk umum penulisannya: CREATE INDEX nama index ON nama nama table(freld); Atau

ALTER TABLE nama table ADD index nama index(field);


Contoh:

Mysql>CREATE INDEX idxnomor ON kesiswaan(no);


Atau

Mysql>ALTER TABLE kesiswaan ADD index idxnis(nis);

Menghapus Index
Penghapusan nama index

tidak akan menghapus field table atau tabel, namun hanr a

rnemperlambat proses pencarian saja.

Bentuk umum penulisannya: DROP INDEX nama index ON nama table;

I?

MODUL PRAI<TIKUM SISTEM BASIS DATA (MySQL)

Atau ALTER TABLE nama_table DROP INDEX nama_index;


Contoh:

Mysql>DROP INDEX idxnomor ON kesiswaan;


Atau

Msyql>ALTER TABLE kesiswaan DROP INDEX idxnis:

5.

MENGHAPUS PRIMARY KEY


:

Bentuk urnum penulisannya


Contoh:

ALTER TABLE nama_table DROP primary key, ADD primary key(no);


Mysql>ALTER TABLE kesiswaan DROP primary key; ->ADD primary key(no);

6. VIEW
Sebuah view adalah tabel yang dibangun dari satu atau beberapa tabel yang sudah ada. Secara VIEW tidak membuat penyimpanan data seperti tabel biasa, melainkan hanya menyimpan referensi./pointer ke record pada tabel-tabel yang berkaitan. VrEWbiasa disebut juga ,.virtual tabel,,.

fisk'

View dapat juga diciptakan dari beberapa tabel.

Membuat View
Bentuk umum penulisannya
:
.

CREATE VIEW view_namef(column l,column2, . . )l AS SELECT table_name [with check option]; Contoh: Mysql>CREATE VIEW mhs AS SELECT * FROM mahasiswa;
Keterangan:

statement

FROM

) Column ) Statement ) Table name )


View_name

nama view yang akan dibuat. nama atribut untuk view. atribut yang akan dipilih dari tabel basis data nama tabel basis data.

.t

fl
3
.tt

Memperoleh Informasi pada View View yang sudah dibuat dapat di akses seperti dalam mengakses tabel. Contoh: Mysql>SELECT * FROM mhs; Mengubah View Contoh: ALTER VIEW mhs AS
SELECT npm, nama FROM mahasiswa:

Menghapus View
Bentuk umum penulisannya : DROP VIEW nama view;

Contoh: Mysql>DROP VIEW mhs;

DATA MAN
1.
INSERT
Insert merupakan perintah SQL yang berfungsi untuk menyisipkan nilai-nilai pada field-field
tabel.

Bentuk umum penulisannya Atau

INSERT INTO nama_table VALUES (nil 1, n|t2, ...); INSERT INTO nama table(fieldl, field2,
Contoh:
..

.) VALUES

(nill, nil2, . . .);

Mysql>INSERT INTO kesiswaan(nis,nama,alamat) ->VAIUES (*0 123 4 5 6", "Sukamto", "Jakarta")


Atau

Mysql>INSERT INTO matakuliah ->VALUES ("M-0 1 ","Matematika");


Mengapa dalam penulisan perintah insert terdapat perbedaan? Perbedaan itu disebabkan oleh
beberapa sebab:

l.

Rumusan bagian B: Adanya salah satu field yang memiliki sifat auto_increment, sehingga dalam

melakukan penyisipan nilai secara otomatis langsung disisipi walau tanpa ada nilai yang disisipi secara langsung. Contoh rumus yang digunakan adalah:

Mysql>INSERT INTO kesiswaan (nis,nama,alamat) ->VALUES ("0|23456", "Sukamto", "Jakarta")


Perhatikan struktur tabel kesiswaan berikut inr
:

Field
no

NULL auto lncrement MUL NULL nls Varchar(7) NULL nama Varchar(25) NULL alamat Varchar(30) "auto_increment" pada bagian "Extra". Karena sifat dari Pada field "no" terdapat auto_increment, yaitu menyisipkan nilai secara otomatis, maka user tidak perlu menyisipi nilai. Oleh sebab itu hanya ada 3 held yang harus disisipi secara langsung, yaitu: nis, nama. dan
PRI alamat. 15

Type Int(5)

I(ev

Default

Extra

MODUL PMI{TIKUM SISTEM BASIS DATA (MySQL)

melakukan bentuk nrmusan bagian "B", selain field yang memiliki auto increment. Ada juga field yang harus dimasukkan dengan rumusan tertentu. Contoh, hatikan tabel ransaKsl ransaksi berikut oerlKut 1nl ini : Kode Jenis Harga Jumlah

Yang

dapat

01

? ?

3500

03

2s000

Untuk "Jenis" tidak dapat diinput secara manual melainkan harus menggunakan rumusan. Jika Kode 01 maka Elektronik, jika Kode 02 maka Komputer dan jika Kode 3 maka Game Station. Maka cara menyisipkan nilai untuk field Kode, Harga dan Jumlah adalah sebagai berikut
:

Msyql>INSERT INTO transaksi(I(ode, Harga, Jumlah) ->VALUES ("0 1 ",3 500,5),

Untuk Jenis bila penyisipan nilainya secara interprestasi (langsung), maka hanya dapat
dilakukan dengan perintah update. Jika penyisipannya dengan cara Embedded (penyisipan lewat program tertentu), dalam menyisipkan jenis dapat dilakukan dengan rumusan bagian B, atau dengan perintah update.
2.

Rumusan basian A: Apabila deretan field-field yang terdapat pada suatu tabel memiliki deretan ilai sama. Perhatikan rernatlKan stnrKtur struktur taDel tabel mataKullan. natakuli h. berikut berlKut m1: ini:

Field
Kode narnamtk

Type Varchar(7) Varchar(25)

Kev

Default

Extra

NULL NULL

Karena field-field yang terdapat pada tabel matakuliah tidak mengandung sifat auto_increment atau rumusan tertentu, maka deretan field dan penyisipan nilai adalah sama. Contoh penyisipan
adalah sebagai berikut
:

Mysql>INSERT INTO matakuliah ->VALUES ("M-0 1 ", "Matematika")

2" SELECT
Select merupakan perintah untuk menampilkan record atau data. Dalam menampilkan record atau data dapat dilakukan dengan 2 cara, yaitu tanpa kondisi dan dengan kondisi.

Bentuk umum penulisan tanpa kondisi: SELECT fieldl,... FROM nama_table; Atau

SELECT * FROM nama table:


Contoh:

Mysql>SELECT * FROM kesiswaan; Artinya: Menampilkan seluruh record table kesiswaan.


Atau

Mysql>SELECT nis,nama,alamat FROM kesiswaan; Artinya: Menampilkan data nis, nama, dan alamat saja.

DATA MAN IPU I,AT I O N I,AN G UAG E

Bentuk umum penulisan dengan kondisi: SELECT fieldl, ... FROM nama table WHERE kondisi;

Atau
SELECT * FROM nama table WHERE kondisi; Contoh:

Mysql>SELECT * FROM transaksi WHERE kodr"0l"; Artinya: Menampilkan seluruh record yang berkode 01. Atau Mysql>SELECT kode,harga FROM transaksi WHERE kode:"03"; Artinya: Menampilkan data kode dan harga yang berkode 03.

Yang perlu diperhatikan dalam penyeleksian data atau record dengan kondisi, terdapat
operator-operator dan tanda-tanda khusus.

Pembandi

Operator

Arti
Sama Densan

Lebih Besar Lebih Kecil Lebih Besar Sama Densan Lebih Kecil Sama Densan Bukan atau Tidak Termasuk

Like

Sama halnya dengan Sama Dengan (:), namun pada Like pada diikuti oleh tanda-tanda khusus, yaitu : %o (persen) dan _ (underscore). Penjelasan : 7o untuk menggantikan beberapa

karakter. untuk menqgantikan satu karakter.

Untuk lebih mudah memahami perintah select dengan menggunakan kondisi, maka dibuatlah tabel kuliahan yang field dan recordnya seperti Alamat Nim Nama Bosor Bintang 21196353 Bogor Ningrum 4r29652s
s0096487

Pipit Nurhavati

Bekasi Jakarta

r0296832

3r296500 3t292521

Budi

Depok
Jakarta Jakarta T7

Lilik
Pratiwi

4tt97522

rl

-t

MODUL PMKTIKUM SISTEM BASIS DATA (MySQL)

..i,t

Bagaimana cara menampilkan seluruh data kuliahan bagi yang namanya mengandung huruf

i
Penulisannya:

Mysql>SELECT * FROM kuliahan WHERE Nama Like

,o/oiyo,:

x $
N

cara menampilkan data' namun hanya Nama dan Alamat saja bagi yang beralamat di Jakarta.
Penulisannya:

Mysql>SELECT Nama,Alamat FROM kuliahan WHERE ->AlamaF'Jakarta'; cara menampilkan seluruh data bagi yang beralamat di Jakarta dan Boqor.
Penulisannya:

Mysql>SELECT * FROM kuliahan WHERE ->Alamat:' J akarta, OR Alamat:,Bogor,

cara menampilkan seluruh databagryang naman yahanyaterdiri dari 4 karakter.


Penulisannya:

Mysql>SELECT * FROM kuliahan WHERE Nama LIKE (4 x underscore)

cara menampilkan seruruh data bagi yang namanya berawalan dari huruf ,p,
Penulisannya:

Mysql>SELECT * FROM kuliahan WHERE Nama LIKE .p%,; cara menampilkan seluruh d,ata padatabel transaksi yang harganyaantara Rp. 10.000 sampai dengan Rp. 35.000.
Penulisannya:

Mysql>SELECT * FROM transaksi WHERE ->Harga>: 1 0000 AND Har ga<:3

5000;

Cara menampilkan seluruh data mahasiswa secara urut dari Z ke A. Penulisannya:

Mysql>SELECT * FROM kuliahan ORDER By Nama DESC:

t8

DATA MANIPUI,ATION I,ANGTJAG E Cara menampilkan seluruh data mahasiswa secara urut dari Ake Z. Penulisannya:

Mysql>SELECT * FROM kuliahan ORDER By Nama ASC: cara menampilkan seluruh data mahasiswa yang tidak mengandung huruf .u,
Penulisannya:

Mysql>SELECT * FROM kuliahan WHERE Nama NOT LIKE,%ouo/o,: cara menampilkan seluruh data transaksi yang harganya bukan Rp. 20.000.
Penulisannya:

Mysql>SELECT * FROM transaksi WHERE harga<>20000;

3.

UPDATE
Perintah update digunakan untuk melakukan penyimpanan hasil editing suatu data. Sama halnya dengan perintah select, dalam proses update dapat dilakukan tanpa
:

dengan kondisi.

kondisi atau

Bentuk umum penulisan tanpa kondisi UPDATE nama_table SET field:nilai;

Contoh: Mysql>tIPDATE kuliahan SET Nama:,'Agus";


Penjelasan: Seluruh nama mahasiswa akan berubah menjadi ..Agus" semua.

Untuk itu diperlukan kondisi agr yang berubah hanya kondisi-kondisi tertentu.
Bentuk umum penulisan dengan kondisi : UPDATE nama_table SET field:nilai WHERE kondisi;

Contoh: Mysql>UPDATE kuliahan SET Nama:"Budi Setiawan" -> WHERE Nama:"Budi,,:

'lq

MODULPMI<TIKUM SISTEM BASIS DATA (MySQL)


Penjelasan
:

Nama mahasiswa yang bernama "Budi" akan berubah meniadi..Budi Setiawan"

I
f. .:

Perhatikan tabel transaksi berikut ini

Kode
01

Jenis

Harga
3500 25000 10000

Jumlah
5 2
2
J

I
?

03

o2
03

? 2

27500

Jika Kode 0l maka Elektronik. Jika Kode O2 maka Komputer. Jika Kode 03 maka Game Station. cara menginput nilai untuk field "Jenis" menjadi Elektronik bagi yang berkode 01. Penulisannya:

Mysql>UPDATE transaksi SET Jenis:"Elektronik" WHERE

->Kode:"01";
cara menginput nilai untuk field "Jenis" menjadi Komputer bagi yang berkode 02
Penulisannya:

I
i
a:

Mysql>UPDATE transaksi SET Jenis:"Komputer" WHERE

->Kode:"02":
cara menginput nilai untuk field "Jenis" menjadi Game Station bagi yang berkode 03.
Penulisannya:

Mysql>UPDATE transaksi SET Jenis:"Game Station,, WHERE

->Kode:"03";

4.

DELETE
Delete memiliki fungsi untuk menghapus suatu data pada suatu tabel. Delete pun memiliki dari2bagiaq yaitu tanpa kondisi dan dengan kondisi.
:

cara kerja yang terdiri

Bentuk umum penulisan tanpa kondisi DELETE FROM nama table:


Contoh:

Mysql>DELETE FRoMtransaksi;
Penjelasan:

Seluruh data pada tabel kuliahan akan terhapus semua. Untuk itu harus berhati-hati dalam
menggunakan perintah delete.

DATA MAN I PI] MT I O N I'AN G UAG E

Bentuk umum penulisan dengan kondisi : DELETE FROM nama-table WHERE kondisi;

Contoh: Mysql>DELETE FROM transaksi WHERE Kode:"0l";


Penjelasan: tabel transaksi' Seluruh dalayangberkode 01 akan dihapus dari

yang memiliki range antara 10000 s/d 25000 Cara menghapus harga pada tabel transaksi
PenulisannYa:

AND Mysql>DELETE FROM transaksi WHERE Harga>:1000 ->Harea<:25000;


Latihan menerapkan perintah DDL dan DML 1. Buatlah database dengan nama "Mahasiswa"?
pada kasus seperti berikut
:

2'Buatlahtabeldengannama.?enilaian,,denganstrukturtabelsepertiberikut Extra

Field Nim
KdMK

Key
PRI

In(8)
Varchar(5) Varchar Float(5) Float(5) Float(5)
I

NamaMK Mid
Final

NilRata
n nilai- nilain

Default NULL NULL NULL NULL NULL NULL

tabel berikut

Nim to296832
t0297732 20216832 30216832 ro297732 20216832 30216832
4.
5.

KdMK
KKO2I KD132
KKO21

NamaMK
,| ,| ?

Mid
/J
'71
5

Final
82

NilRata
?

R1 5

81,7
17 82,5 6J

f
1
? ,) 2

KUT22
KKO2I
,)

654 7q5
80.5 67

KDI32
KKO21

I
?

'/8

TampilkanseluruhrecordmahasiswayangberkodematakuliahatauuI(dMK:KKO2l!
bagi yang nilai mid-nya antara 75 dan Tampilkan fecofd field Nim,KdMK dan Mid saja
90
!

ZL

MODUL PRAI<TIKIJM SISTEM BASIS DATA (MySQL)

t
lsrpkan nilai untu k field nama matakuliah

KdMK
KKO21

NamaMI(
Sistem Basis Data

amaMK), dengan ketentuan sebagai berikut

KDI32 KUI22
7.

SIM
Pancasila

Mid+Final/2
8.

Sisipkan nilai untuk field nilai rata-rata(NilRata), dengan ketentuan sebagai berikut

Hapuslah record yang memiliki Nim

102968321

I e
,
*

22

FU
,, . 'I'UNGSI AGREGATT,
't
"

.:,.

,rttr:,,,, ..,_.

,::r,,rlri.l "tt"''

survt 1et<spresillli '"' .' terdapat pada suatu field Yang bersifat Berfungsi untuk mencari total nilai ikan tabel nilai di bawah ini : numerik. Untuk lebih mudahnya dalam mernbgat rgatgjl5 Final Mid KdMK Nim
'
.."''

ro296832 r0297732 20216832 30216832


10297732 Contoh:

KI(021 KD132
KKO21

75 75 R1
5

82

7?5
81,7
'7',7

KUI22
KKO2I

65,4

79,5

82,5

Mysql>SELECT SUM(Mid)Total-Mid FROM nilai;

ffir
I

Hasilnya:

378,4

Mysql>SELECT SUM(DISTINCT Mid)Total-Mid FROM nilai; Hasilnya:

Total Mid
303,4

COUNT (x) tabel' Memiliki fungsi untuk mencari berapa jumlah total baris yang terdapat pada suatu

Contoh:

Mysql>SELECT COLTNT(*)Jumlah-Record FROM nilai;

23

MODULPMI{TIKUM SISTEM r|

BASIS

DATA (MySQL)

. AVG (ekspresi)
Berfungsi untuk mencari nilai rata_rat apadasuatu pada field bersifat numerik. Contoh: Mysql>SELECT AVG(Final) Rata_rata_Final FROM nilai:

Hasilnya:

(ekspresi) Berfungsi untuk mencari nilai tertinggi dari suatu field yang bersifat numerik. Contoh:

. MAX

Mysql>SELECT MAx(Final)Nilai_Final_Tertinggi FROM nitai:


Hasilnya:

a t

. MIN (ekspresi)
Berfungsi untuk mencari nilai terendah dari suatu field yang bersifat numerik. Contoh:

Mvsql>SELECT MlN(Mid)Nilai_Mid_Terendah FRoM nilai;


Hasilnya:

,f**

24

FU
Interval'nilaijnterval)
:

:'(
'

ADDATE (x,

penjumlahannilai interval Berfungsi untuk me,pdapatkan tanggal o-aru,katelr.t*trxoses'dari

Daftar Ti

Nilai Interval I(eterangan_ Tipe Nilai


Second

Satuan detik
Satuan menit

Minute

Hour
Day

Satuan iam
Satuan hari Satuan bulan Satuan tahun

Month
Year

Minute Second Hour Minute Day Hour Year Month Hour Second
Contoh:

"Menit:Detik" "Jam:Menit" "Hari:Jam" "Tahun:Bulan" "Jam:Detik"

10 dav) Mysql>SELECT ADDDATE("2005-05-3 1"'Interval

->Hasilnya-setelah-Ditambah-1

0hari;

CURDATE ( ) sePerti halnya fungsi now ( ) Yang drsertal Menghasilkan tanggal saat ini, namun tidak

dengan waktu.

Contoh: Mysql>SELECT curtime( )Tanggal- Hari Ini;


Hasilnya:

Tanggal llari-Ini
2006-05-O1

25

il
5:

MODULPMKTIKUM 1ISTEM

BASIS

DATA (MySQL)

. CURTIME ( )
Menghasi lkan waktu terkini.

Contoh: Mysql>SELECT currime( )Waktu


Hasilnya:

CURRENT_TIMESTAMPO
Menampilkan tanggal saat ini berikut dengan jam, menit, dan detik.

Contoh:

Mysql>SELECT current_timestamp( ) ->Waktu_S aat_Ini_B erikut_Waktu_Terkini;

DAYNAME.(penanggalan)
:

Berfungsi untuk menampilkan nama hari sesuai dengan tanggal saat itu. Contoh
;1

Mysql>SELE CT daynam

e(,, 2O O 6 _0 5 _ 07,,)

T anggat Tersebut Hari:

. DAYOFMONTH (penanggalan)
Berfungsi untuk menampilkan tanggal pada suatu format penanggalan dari sebulan.
Contoh:

Mysql>SELECT dayofmo nth(,,200 6 -05_07,,)Tanggalnya_adalah;

26

. .
DAYOFWEEK(penanggalan)

FI]NGSITAAIGGAL

Berfungsi untuk menampilkan hari dari seminggu dengan menggunakan kode angkayai Berikut ini daftar nama hari dan kode

Nama Hari
Sundav

Kode Angka

I
z
J

Mondav
Tuesday Wednesday

4
5

Thursday

Fridav
Saturdav Contoh:

6 7

Mysql>SELECT dayofweek("2006-05-07")Kode-Tanggalnya:
Hasilnva:

@ .

F
DAYOFYEAR(penanggalan)
Berfungsi untuk menampilkan hari ke berapa dalam setahun
Contoh: Mysql>S ELECT dayo $r eat ("2o0 6 -o 5- 07 ") S aat Ini-Hari-I(e
;

Fungsi extract ini dapat mengambil bagian dari tanggal, bulan, atau tahun saja dari suatu penanggalan. Juga dapat mengambil bagian dari jam, menit, atau detik dari suatu pengaturan waktu.
Contoh extract dari penanggalan: Mysql>SELECT Extract(Day FROM"2OO6-O5-O7")NiIai Extraatnya; Hasilnya:

' EXTRACT(nilai FROM

penanggalan/waktu)

Nilai Extractnva
7

Contoh extract dari pengaturan waktu:

27

MODUL PMKTIKUM SISTEM

BASIS

DATA (MySQL)

Contoh:

FROM_DAyS(tanggal dalam nilai) Fungsi ini berguna dalam mengubah nilai menjadi bentuk penanggalan. Namun nilai tersebu: harus hanya terdiri dari 6 angka. contoh: g145 16, 901234.
I5I

Mysql>SELECT FROM_DAYS(90
Hasilnya: Hasilnya:

0)penanggalannya_adalah;

i Penanggalannla_aclatah

1 .

2468_04_0t

Contoh:

HOUR (pengaturan waktu) Berfllngsi untuk mengamb' nirai jam dari suatu pengaturan waktu.
I 2 : 3 5 :0

Mysql>SELECT HOUR(..
Hasilnya:

1,,)Jamnya_adatah;

- MINUTE

(pengaturan waktu)

Berfungsi untuk mengambir nirai menit dari suatu pengaturan waktu


Contoh:

Mysql>SELECT minute (..12:35:01,,)Jamnya_adalah;


Hasilnya: Hasilnva:

I I
:

I i .

Nlenitnya adalah

:s --l

SECOND (pengaturan waktu)


Berfungsi untuk mengambil nilai detik dari suatu pengaturan waktu.

Contoh: Mysq I>SELECT second(..


1

2 : 3 5 :0

1,,)Jamnya_adalah;

Hasilnya: Hasilnya:

Detiknvu

uduluh--

28

MODULPMI{TIKUM SISTEM

BASIS DATA (MySQL)

TO_DAYS(penanggalan)

Menampilkan nilai peninggalan dari suatu penanggalan.

Contoh:

Mysql>SELECT to_days("2006-05 -07")Nilainya_adalah;

diinginkan.

DATE_FORMAT(penanggalan/waktu, simbol format) Berfungsi untuk merubah nirai penanggalan atau pengaturan waktu dengan format yane

Berikut ini
Menampilkan nama bulan bukan dalam bentuk Menampilkan bulan

Menampilkan nama bulan dalam bentuk sing<atan. Menampilkan nama hari bukan dalam bentuk singkatan. Menampilkan nilai hari ke dalam sebulan. Menampilkan tahun format 4 disit. Menampilkan tahun dengan format 2 dipit. Menampilkan nomor hari dalam setahun. Menampilkan nama hari dalam bentuk s Menampilkan nomor hari dalam sebulan.

I
::

Menampilkan jam dalam format 12 iam. Menampilkan jam dalam format 24 i Menampilkan jam dalam format 24 dalam format 12 iam OO-12. ilkan detik

!
i i

Contoh:
Mysq
1> S

ELE CT date_fo rrnat(,,

2O 0 6

-Og - |

->Formatnya;

7',,, yoW, yoM, yoD, %y )

r-

IF

Hasilnya: Thursday, August


17th

2006

*rkt<

30

,i:'llli''

tlr

Ascii

(x)

,,,

',,'

Berfungsi untuk mnCari nilai ascii dari


Contoh:

_suattlii$11i1$;l

Mysql>SELECT ascii("7o")Nilai_Asciinya;
Hasilnya:

Nilai Asciinva
J/

Char (xl, x2, ...) Fungsi ini merupakan kebalikan dari fungsi ascii(x), jika pada tungsi ascii (x) mengembalikan string menjadi nilai ascii. Fungsi char(xl,...) adalah mengubah fungsi ascii menjadi
karakter. Contoh:

Mysql>SELECT char(3 7, 65, 43, 37, 66)Karakternya_adalah;


Hasilnya:

Karakternva adalah
YoA+YIB

Char_Length(string)atauLength(string) Char_length(string) memiliki fungsi yng sama dengan length(string), yaitu untuk menghitung jumlah karakter pada sebuah string.
Contoh:

Mysql>SELECT char_length("Aku Ingin Pulang")


->Jumlah_I(arakternya
;

Hasilnya:

MODUL PNAI{TIKUM SISTEM BASIS DATA (MySQL)

Encode (stringrstring_enkripsi)

Berfungsi untuk merubah nilai string menjadi kode-kode tertentu. Dalam merubah string menjadi kode harus terdapat string dan string_enkripsi. Jika hanya terdapat string saja maka proses
tidak dapat dilakukan. Contoh: Mysql>SELECT encode("AuTo","CAD")Kodenya_adalah;

i.

Left(stringonilai pengambilan dari kiri) Berfungsi untuk mengambil karakter terkiri dari suatu string dengan jumlah pengambilan karakter dari kiri.
Contoh:

Mysql>SELECT
Hasilnya:

left ("Indonesia,3

")3 Digit_Dari_Kiri;

Mid(stringrposisi,nilai pengambilan dari posisi)

Berfungsi untuk mengambil karakter dari suatu string, sebelumnya harus menentukan terlebih dahulu posisi pengambilan. Setelah itu baru menentukan jumlah karakter yang akan diambil dari posisi yang telah ditentukan. Contoh:

Mysql>SELECT mid("Indonesia,4,3 ")3Digit_Dari_HuruLO


Hasilnva:

I I

Right (string,nilai pengambilan dari kanan) Berfungsi untuk mengambil karakter terkanan dari suatu string dengan jumlah pengambilan

karakter dari kanan. Contoh:

Mysql>SELECT right("Indonesia,3 ")3 Digit_Dari_Kanan;


Hasilnya:

3Disit Dari Kanan


Sia

32

FUNGSI STRING

kecil.

Lcase(string)AtauLower(string) Berfungsi untuk merubah tipe karakter dari suatu string dari huruf kapital menjadi huruf

Contoh:

Mysql>SELECT lcase("KUMENANTI DALAM KESUNYIAN,')


-

>P erubahann y a _adalah;

Hasilnva:

Ucase(string)AtauUpper(string)

Fungsi ucase(string) atau upper(string) adalah merupakan kebalikan dari fungsi lcase(string), yaitu untu! merubah huruf kecil menjadi huruf kapital atau besar.
Contoh:

Mysql>SELECT upper("kumenanti dalam kesunyian',)


->Perubahannya_adalah;

. Ltrim(string)
Berfungsi untuk menghilangkan atau menghapus spasi dari bagian kiri suatu string.
Contoh:

Mysql>SELECT ltrim ("


->Setelah_di_ltrim;

Kugapai harapan')

. Rtrim(string)
Berfungsi untuk menghilangkan atau menghapus spasi dari bagian kanan suatu string.
Contoh:

Mysql>SELECT rtrim("Kugapai
->Setelah_di*rtrim; Hasilnya:

harapan .)

Setelah
Kueaoai

di rtrim

MODULPRAKTIKUM SISTEM BA9IS DATA (MySQL)

. Trim(string)
Berfungsi untuk menghilangkan atau menghapus spasi dari bagian
string.

kiri

dan kanan

qlt:-

t
r ; :

Contoh:

Mysql>SELECT trim('. ->Setelah di trim;

Kugapai harapan

")

t
.
Password(string)
Berfungsi untuk merubah suatu string menjadi kode sandi yang telah dienkripsi.
Contoh:

Mysql>SELECT password(..rahasia',)Dijassword_menjadi;
Hasilnya:

rl.**

34

Pada dasarnya model relasional digunakan untuk mengatasi kesulitan dalam pengelolaan dan

anomali-anomali (enn, ororr .i-r-^-^:^.-,--:


Untuk memahami k
relasl, lasi

;,"il;;ffiH:"*':ffir;
berikut ini:
Sks
2
A +

Nomor
2
J
A

ikan daftar mahasisrve rfqn matotn

Nim
99130012
9914sO21

tr(ode-mfl'
101

05 03 o2 03

99276521

991300t2 98254t23
99145021

4 2 4 2
4
A

6 7
8

99671204

o4 o6
o5 o2

99r30012
99276521 99145021

t0

ll 1.
Anomali fnsert

r03
101

982s4123

4
2

Kesalahan yang terjadi di saat proses penyisipan record baru. Contoh:

Jika kampus akan mengadakan matakuliah baru dengan kode matakuliah 107, maka proses penyisipan untuk kode matakuliah r07 tidak dapat dilakukan sampai ada mahasiswa yans mengambil
matakuliah tersebut.

35

MODULPRAKTIKUM SISTEM BASIS DATA (MYSQL)

2.

Anomali Delete
atau tuple' Kesalahan yang terjadi di saat proses penghapusan record

Contoh:

untuk membatalkan mengamb: Mahasiswa yang memiliki Nim 99671204 memutuskan tersebut, akan berakibat hilangnl' matakuliah 106, maka dengan demikian jika didelete record
informasi tentang kode matakuliah 106'

3.

Anomali UPdate Anomaliataukesalahanyangterjadipadasaatprosessuaturecord.


Contoh:

kode matakuliah yang diambil ole: Jika Anda perhatikan pada tabel kuliahan, terdapat banyak dilakukan perubahan SKS untuk koc' mahasiswa dengan NIM yang berbeda. Misalnya akan kali sesuai dengan banyaknrmatakuliah 103, maka akan dilakukan proses update beberapa

jumlah yang mengambil kode matakuliah tersebut' dan matakuliah bukaDari anomali-anomali yang terjadi di atas maka daftar mahasiswa jumlah kerangkapan dalanya sedikit)' termasuk well-Structure relation (sebuah relasi dengan dilakukan proses normalisasi, yat:' Dengan demikian daftar mahasiswa & matakuliah harus tersebut adalah sebagai berikut ini : dengan membagi 2 tabelyang terpisah. Tabel-tabel

Tabel matakuliah:

Tabel kuliah:
Sks
2
A A

Kode-mtk
101

Nim
99130012

Kode-mtk
101

t02
103

99r4502r
99276521

105 103

104
105 106

99130012
98254123 99L45021

r02
103

4 2

r04

terkait antara satu dengan ya: Dari kedua tabel tersebut akan dibentuk relasi yang saling field yang memiliki primary key atau fore:' lainnya. Untuk melakukan prosoes relasi dibutuhkan
key.

.Kode.mtk' terdapat banyak data yang Sama, seperti kode matakuliah 1' pada tabel kuliah field .Kode-mtk, pada tabel kuliah tidak dapat dijadikan primary key. Jika Anda amati fie Berarti field .Kode-mtk'pada tabel matakuliah tidak terdapat datayang sama, berarti field 'Kode-mtk' pada ta:" I
matakuliah dapat dijadikan primary key' sebagai primary key' sedangkan fi' Kesimpulannya field 'Kode-mtk' pada tabel matakuliah .Kode-mtk, pada tabel kuliah sebagai foreign key. Untuk lebih jelasnya perhatikan skema di sini :
Tabel kuliah:

Sifatfieldprimarykey,yaitutidakbolehterdapatdatasamadalamfieldtersebut.Contc,

Tabel matakuliah:

Kode-mtk
Sks

Nim Kode-mtk

36

DATABASE REI,ATION

Dari relasi kedua tabel ini, yaitu tabel matakuliah dan kuliah dapat terbentuk daftar mahasiswa & matakuliah seperti yang nampak seperti berikut:
Daftar mahasiswa & matakuliah:

Nomor
I

Nim 99r30012
9914s021

Kode-mtk
101

Sks
2 4

105

PEMBENTUKAN NORMALISASI Perubahan daftar mahasiswa & matakuliah menjadi 2 tabel, yaitu tabel matakuliah dan kuliah adalah merupakan bentuk normalisasi. Dengan demikian terjadi suatu kondisi di mana proses penginputan record baru untuk kode matakuliah dilakukan pada tabel matakuliah, maka secara otomatis akan terlihat perubahan SKS atau kode matakuliah, maka secara otomatis akan terlihat pula dalam daftar mahasiswa & matakuliah. Berikut ini akan dijelaskan seputar pembentukan normalisasi d.ari bentuk tidak normal
(Unnormalized Form).

2.

a)

Bentuk tidak normal (Unnormalized Form) Pada bagian ini setiap record yang diinput tidak mengalami tahap penyeleksian, sehingga akan terjadi kerangkapan data atau duplikasi data. Jadi datayang diinput terlihat apa adanya sesuai
dengan yang diinput.

Contoh:

I(obuk

l0l-K
103-c
1

Judul
Belajar Sendiri

Pengarang

RKI
001

RK2
003
001

VB.6
Kisah Cinta
Sans Penvair
10-S

M. Bakri
Minolsta Cokro
S.

RI(3
001

003

106-4

Belajar Cepat Berhituns Bertauhid Yang Benar

o02
003

o02

001 003

Ust. Soleh

b)

Bentuk INF (First Normal Form)


Pada bentuk form jenis pertama

ini atau yang disebut INF harus bersifat atomik. Atom yaitu

terkecil yang masih dapat dipecah lagi.

Ciri-ciri INF:
Tiap field harus bernilai "atomik, yaitu setiap recordnya hanya terdiri dari satu nilai. Setiap field harus hanya memiliki satu pengertian dan memiliki nama yang unik. Tidak terdapat record yang sama atau bernilai ganda. Hasil han darr Unnormalized Form adi INF adalah berikut : Kobuk Judul Pengarang I(ode RK l0l-K Belaiar Sendiri VB. 6 M. Bakr 001 l0l-K Belaiar Sendiri VB. 6 M. Bakr 003 103-c Kisah Cinta Sans Penvair Minolsta 001 103-c Kisah Cinta Sane Penvair Minolsta 003 1 10-S Belajar Cepat Berhitune Cokro S. o0l I l0-s Belaiar Ceoat Berhituns Cokro S. o02 106-A Cara Cepat Belaiar Database Lina Marlina 003

37

MODULPRAI{TIKUM SISTEM BASIS DATA (MYSQL)

c)

Bentuk 2NF (Second Normal Form) Apabila bentuk normal pertama atau

lNF terpenuhi,

maka dapat menuju ke bentuk norrn:

kedua atau 2NF. Pada tahap ini tabel yang terdapat pada bentuk normal Der1.arna atau dibagi menjadi 2bagian, yaitu : Tabel Buku

lNF

aka:

Kobuk
101-K
103-C
1 t.

Judul
Belaiar Sendiri VB. 6 Kisah Cinta Sang Penyar Belaiar Cenat Berhitung Cara Cepat Belaiar Database

Pensarang

10-S

106-A

M. Bakri Minolsta Cokro S. Lina Marlina

Tabel Rak Buku

Kobuk
101-K 101-K
103-C

Kode RI(
001 003 001 003 001

103-c
1

I 10-S 10-S

o02
003

106-4'

d)

Bentuk 3NF (Third Normal Form) pada tahap bentuk normal ketiga, terjadi suatu relasi yang terdapat dependency, yaitu fie.: yang bergantung dengan field yang lain pada tabel yang berbeda. Seperti pada contoh bentuk norm kedua di mana field Kobuk (foreign key) pada tabel rak buku bergantung kepada field Kobu' (primary key) pada tabel Buku. Dengan demikian contoh bentuk normal kedua telah memenuhi syarat untuk dijadikan bentu' normal ketiga.
Tabel Buku: Tabel Buku:

Kobuk (primary key)


Judul
Pengarang

Kobuk (foreign key)

Kode RI(

3. JENISRELASITABEL
Terdapat 3 jenis relasi tabel, yaitu one to one, one to Many, dan Many to Many.

Relasi One to One pada jenis relasi one to one, setiap record pada tabel induk hanya memiliki satu relasi deng":

tabel anak.

38

DATABASE REI,ATION

Contoh: Tabel Wali I(elas Tabel Kelas Ko l(elas


Kelas

TD WK
0l
02
03

Nama Wali I(elas


Suhendar Samsusi Zainab

A
B
C

TD WK

IA IB
1C

0l
o2 03

Relasi One to Many

Relasi one

to many, yaitu suatu jenis relasi tabel yang memberikan hak untuk

berrelasi

dengan lebih dari satu baris. Contoh

I(dHwn
01

Tabel Hewan Jenis Hewan


Kamb ns
Sap

02
03

Kerbau

ID Pemilik
A001

Nama Pemilik
H. Bajuri
ZainaI Sambri

Jumlah
2

Jenis llewan
Kambing Kambing I(erbau
Sapi

A003 A002
A003

I
I

Andi Solahudin
Zatnal Sambri

A002 A004 A005

Andi Solahudin
Syamsudin

2
J

Kambing Kambing Kambing


Sapi

Diah Armintai

A00l
A001

H. Bajuri
H. Bajuri

I
1

I(erbau

Contoh relasi
kerbau.

di

atas menunjukkan bahwa setiap pengqurban dapat berqurban dengan lebih

dari satu jenis hewan yang berbeda. Contoh seperti H. Bajuri yang berqurban kambing, sapi, dan

Relasi Many To Many Pembentukan relasi many to many akan terjadi apabila beberapa baris pada sebuah tabel berelasi ke beberapa jenis pada tabel yang lain. Untuk merepresentasi relasi ini tidak cukup hanya
menggunakan dua table, melainkan harus memerlukan tabel perantara lain.

39

MODUL PRAI{TIKTIM SISTEM BASIS DATA (MySQL)

Contoh:

ID

Penerbit
01

Tabel Penerbit Nama Penerbit


CV. Pustaka Java Setia Kawan Alexander
Surya Kencana

Kota
Jakarta Jakarta

02 03

Banduns
Padans

o4

ID

Pensarans

A0l
AI02

Tabel Penqarang Nama Pengarans


Dede Sunarya Drs. Amelia Anggoro Mohamad Suharto, S.H.

Alamat
Jakarta Jakarta Subans Banduns Medan Jakarta Subans

A03

A04
A05 A06
AO7

Ust. Yudo Kuncoro

M. Zaidan.\lwt Apriastuti Nur Komalasari Retno Yuniar

Tabel Toko
Nama Pengarans Ust. Yudo Kuncoro
Mohamad Suharto. S.H.
Dede Sunarya

ID

Toko I
2
5

Nama Penerbit CV. Pustaka Java


Setia Kawan

Ust. Yudo Kuncoro Apriastuti Nur Komalasari Mohamad Suharto, S.H.


Retno Yuniar Drs. Amelia Anssoro

CV. Pustaka Java


Surya Kencana Setia Kawan CV. Pustaka Java Surya Kencana

4
5

6 7
8

Alexander

Pada Tabel Toko terlihat bahwa penerbit dapat berhubungan dengan lebih darr
pengarang' begitu juga halnya dengan pengarang yang dapat berelasi dengan banyak penerbit.

4. MASALAH

YANG TIMBUL AKIBAT NORMALISASI

yaitu permasalahan tampilan tabel dan permasalahan integritas referensial. Untuk memudahkan memahami kedua permasalahan tersebut, perhatikan tabel Buku dar !.,"
Buku.

Walaupun normalisasi telah membantu dalam menghilangkan anomali-anomali, bai. anomali insert, update, ara.u delete. Ada hal yang ditimbulkan setelah proses normalisasi itu ber:;

Permasalahan Tampilan TabeI Jika pada sebelumnya hanya terdapat satu table, maka untuk menampilkan semua re::cukup hanya dengan menggunakan perintah sql: SELECT * FROM nama_tabel. Sedangkan u :_: menampilkan beberapa record saja dapat menggunakan sintaks LIMIT dan oFFSET.

Contoh: Untuk menampilkan 5 record pertama dari tabel buku. Mysql>SELECT * FROM buku LIMIT 5; - Untuk menampilkan 3 baris pertama yang diurutkan berdasarkan pengarang. Mysql>SELECT * FROM buku ORDER By pengarang LIMIT 3; - Menampikan 2 baris setelah melewati 2 baris pertama yang diurutkan berdasarkan kode buku

DATABASE REI,ATION

Mysql>SELECT * FROM buku ORDER By kobuk LIMIT 2 OFFSET 2;


Setelah melalui proses normalisasi, maka telah terbentuk dua tabel, yaitu tabel Buku dan tabel Rak Buku. Pernyataan SQL untuk menampilkan record tidak sama dengan sebelum proses normalisasi. Perintah SQL-nya yaitu : SELECT nama_tabel.nama_fie1d,... FROM nama tabel.nama field i

Contoh:
Menampilkan judul buku pengarang, dan rak buku yang kode rak bukunya 001. Mysql>SELECT Buku.Judul,Buku.Pengarang, Rakbuku.Kode_RK ->FROM Buku, Rak buku WHERE Rakbuku.Kode RK:,001';

t:

ll

. -

Peirmasalahan Integritas Referensial Berupa Maintenance Consistency of Reference antara 2 buah tabel relasi vans salins terkait. Sebelum terjadinya proses normalisasi, setiap penambahan record dapat dilakukan pada tabel Relasi. Setelah normalisaasi, untuk menambahkan rak buku harus melalui proses pengecekan

Contoh:

terlebih dahulu, apakah buku yang akan ditampilkan pada suatu rak apakah sudah ada dalam tabel Buku atau belum. Jika belum terdapat kode buku tersebut pada tabel Buku, maka proses

penginputan record pada tabel Rak Buku tidak dapat dilakukan. Jika ingin melakukan penghapusan data pada tabel Buku harus berhati-hati, karena akan berpengaruh pada tabel Rak Buku. Jika Anda menghapus pada bagian tabel Rak Buku saja, maka tidak akan berpengaruh pada tabel Buku. Karena sifat field Kobuk pada tabel Buku bersifat primary key, sedangkan field I(obuk pada tabel Rak Buku sebagai penghubung saja.

***

4t

:
rrr.

:.1
rii'lti.l

r.r:,,

RELASI AN.
,,.iit,,t.i.,.....

'
i,.".

Diberikan sampel 3 buah tabel yang saling berelasi satu sama lain beserla sampel datanya.

Nasabah

ld_nasabah Nama_nasabah

ld

nasabah

Nomor_rekening
Saldo

I(ode_cabang Nama_cabang

Alamat nasabah

Kota

Kode cabang

Nasabah Rekening

Id

r-rasabah

Nomor rekening
001000123
0020001 23

Saldo

Kode cabang
A123

AAOOI
ABOO2
CCOO3

CDO04
DDOO5

003000123 004000123 005000 1 23

20.000.000 5.000.000 75.000.000 20.000.000 1.500.000

Bt23 ct23 Dr23


F.t23

id

nasabah

Narna nasabah
Rudi

Alamat nasabah
Jl. Sepat
Jl. Baung Jl. Gurame Jl. Nila Jl. Mujair

AAOOl
ABOO2
CCOO3

Yuni
Hani

CDO04
DDOO5

Kiki Lala

Cabang

Kode cabang
A123

Nama cabang
JKTOI
JKTO2

kota
Jakarta Pusat Jakarta Selatan Bandung Surabaya

Bl23 cl23 Dt23


Et23

BDOOl SBYOl
DPKOI

Buat database dengan nama bank, kemudian buat 3 tabel di atas" lsikan data sesuai tabel di atas..!

+*J

jrMODULPRAI<TIKUM SISTEM BASIS DATA (MYSQL)

l. Tampilkan id-nasabah, nama-nasabah,

dan saldo..

I
..

Tentukan tabel mana saja yang dibutuhkan. Untuk menampilkan id-nasabah dan nama- nasabah kita membutuhkan tabel nasabah Sedangkan untuk menampilkan saldo kita membutuhkan tabel rekening' Jadi kita akan menggunakan 2 tabel tersebut.

.
a

Perhatikan relasi dari tabel tersebut. Tabel nasabah dan rekening dihubungkan olei atribut id_nasabah. Buat query SQL. SELECT id_nasabah.nasabah, nama_nasabah.nasabah, saldo.rekening FROM nasabah, rekening WHERE nasabah.id nasabah : rekening. id-nasabah;

2.

Tampilkan nomor-rekening dan nama-cabang..l - SELECT rekening.nomor-rekening, cabang.nama-cabang FROM rekening, cabang WHERE rekening.kode-cabang : cabang.kode-cabang; Tampilkan nama-nasabah, alamat-nasabah, dan nomor-rekening" Tampilkan nomor-rekening dan kota..!
!

3. 4.

Mahasiswa npm
nama

kelas

200912300r 2009123002
2009123003

Abisail
Reddi
Reva

48
4C

4A
4E 4B

2009123004
2009123005

Chyntia
Steven

npm
2009123001

no mk
I 1001 12001

mid
78 80 69 80
85

final
80 87 75

2009123002 2009r23003 2009123004 2009t23005

I I

13001 I
1

1001 I

60 90

14001

l00l I
Algoritma

Buatlah database dengan nama mhs dan tabel di atas kemudian kedakan latihan..l

l.
2.

Tampilkan npm dan no mk..! Tampilkan npm, nama, dan mid..


I

J.

Tampilkan tampilkan nama mahasiswa yang nilai midnya di atas g0..! Tampilkan nama, kelas yang nilai mid dibawah g0 atau nilai final di atas g0..! Tampilkan nama matakuliah yang nilai mid di atas g0..1

4.
5.

rF*{.

45

.ELASI

AN
l't:
lli;]].:

bandung..

a. b. c.

atribut id-nasabah, sedangkan rekening dan cabang dihubungkan oleh atribut


kode_cabang).

Tentukan tabel yang akan digunakan. (nasaball rekening, cabang) Cari atribut penghubung antar tabel. (nasabah dengan rekening dihubungkan oleh

Buat query SQL. SELECT nasabah.nama_nasabah

FROM cabang, rekening, nasabah WHERE nasabah.id nasabah : rekening.irl_nasabah


rekening.kode_cabang

cabang.kode_cabang

AND saldo >'20000000' AND kota: 'bandune':

2. 3. 4. 5.

Tampilkannama nasabah, saldo, dankota..! Tampilkan id-nasabah dan nomor-rekening yang cabangnya berada di Surabaya.. ! Tampilkan tampilkan nama nasabahyang saldonya di atas 5.000.000 dan berada di cabane
Jakarta Pusat..
!

Tampilkan nama nasabah yang tinggal di Jl. Gurame atau yang cabangnya di kota Depok..

Cunakan database mhs..

1.

2. 345.

Tampilkan nama mahasiswa dan nama matakuliah yang nilai midnya antara 70 sampai g0.. SELECT mahasiswa.nama, matakuliah.nama mk FROM mahasiswa, matakuliah WHERE mid BETWEEN 70 AND 80; Tampilkan nama mahasiswa yang mengambil mata kuliah komunikasi data..! Tampilkan nama mahasiswa, nilai final, dan nar''amatakuliahnya..! Tampilkan nama mahasiswa yang nilainya kurang dari 80 dan mengambil mata kuliah

Algoritma..!
Tampilkan kelas yang nilai finalnya di atas g0 atau yang jumlah sksnya 3.. !

*rt *

47

lir'l

':t.i,l.
l
I

RELASI
JolNadalahpenggabungandatayangberasaldaribeberapatabel.operatoryangbiasa join ataru equiioin' dengan (:), maka sering disebut dengan equality

digunakan adalah sama

Equijoindikelompokkankedalamduabagianyaituinnerequijoin(innerjoin)danouter equijoin(outerjoin).YangtermasukdalamouterJoinadalahLeftJoindanRightJoin.

adalah perkalian cartesian Bentuk penggabungan data yang terakhir yang akan dibahas join' join atau full (Carlesian product) atau disebut juga dengan cross

1.

JOIN / INNERJOIN tabel paling tidak satu barts' Akan menghasilkan baris-baris yang cocok antar kedua Sintaks : SELECT column-name(s) FROM table-namel INNER JOIN table-name2 ON table name 1 .column-name

table-name2'column-name

2.

LEFT JOIN

kiri (tabel 1), walaupun tidak ada yang Akan menampilkan selumh baris dari tabel di sebelah cocok dengan tabel di sebelah kanan (tabel 2)'
Sintaks
:

SELECT column-name(s) FROM table-namel LEFT JOIN table-name2 ON table name I .column-name

table-name2'column-name

3. RIGHT

(tabel2), walaupun tidak ada Akan menampilkan selurrrh baris dari tabel di sebelah kanan yang cocok dengan tabel di sebelah kiri (tabel 1)' Sinlaks:
SELECT column-name(s)

JOIN

FROM table-namel RIGHT JOIN table-nan,le2 ON table name 1'column-name

table-name2'column-name

49

MODIJL PRAKTIKUM SISTEM BASIS DATA (MYSQL)

4.

FULL JOIN Akanmenampilkanbaris-barisyangcocokdarisalahsatutabel.


Sintaks
:

SELECT column-name(s)

FROM table-name1

FULL JOIN table-name2


ON table-name I .column-name

table

-name2'column-name

Contoh:
Buat database penjualan..
Pelanggan
!

Order

I o ra ! Nootd". I r-ro 1,-,,"-.-,,'-'---.*-.- "l-*--^ "-**'.- ---*',*"-l*.-**-*-"---**l


*

.r\7789si3 t--***"---"--*-i-*-*--*--"--*""*"-i*---*^ ***l2':44678i3i l_*'-.*,'-*-,^***f****--.*-----*-'*


f-.-,.--,..,-..,",, -'...-''.-'-i-

r31zz+seltr *.'.-"-..-- "--"*--^-----"-i-"''."----*-.'*.-:qiz+se211r *- " *-;;;;;o---

j-*"---:

..'l

i--i

t-.--

i"--

;---l

1.

JOIN/INNER JOIN
nama' Menampilkan nama dan nomor order yang diurutkan berdasarkan

Sintaks : SELECT Pelanggan.nama' Order'NoOrder

FROM Pelanggan INNER JOIN Order ON Pelanggan.P-Id:Order.P-Id


ORDER BY Perlanggan.nama;

Hasilnya:

Hani
Hani

':

22456
Z+S1Z

7X895 44678

RET ASI

ANTAR TABEL 1OIN)

LEFT JOIN
Menampilkan nama dan nomor order yang di urutkan berdasarkan nama

SELECT Pelanggan.Nama, Order.NoOrder

FROM Pelanggan LEFT JOIN Order


ON Pelanggan. p_Id:Order.p_Id ORDER By pelanggan.Nama;

Hasilnya:

:
,

i-----

Nama --j.i
Hani
-'t- - - -"-

Noorder
-----

Hani i Pipit , Pipit | rrplt I :-"----*i--*--; Stefan , 3.


RIGHT JOIN

Z+SAZ

77895

++en 44678
- .-.-

Null --..-**

--*.-.-*..-.J

Menampilkan nama dan nomor order yang di urutkan berdasarkan nama.

Sintaks

SELECT pelanggan.Nama, Order.NoOrder

FROM Pelanggan RIGHT JOIN Order


ON Pelanggan.p_Id:Order. p_Id ORDER By pelanggan.Nama;

Hasilnya:

Pipit Pipit

i
_

IISSS
44678
_3,4764

Nqtl, i

5t

MODULPRAKTIKUM SISTEM BASIS DATA @YSQL)

4.

FULL JOIN/CROSS JOIN

urutkan berdasarkan nama' Menampilkan nama dan nomor order yang di

Sintaks

SELECT Pelanggan'Nama, Order'NoOrder

FROM Pelanggan FULL JOIN Order


ON Pelanggan.P-Id

Order'P-Id

ORDER BY Pelanggan'Nama; Hasilnya


:

Nama
Hanr

OrderNo
22456 24562

Hani Piptt

1189s
44678

Pipit
Stefan

Null
34'764

Null

ON dan USING Penggunaan cross join tanpa menggunakan

Contoh:
1g

SELECT Pelanggan'Nama, Order'NoOrder

.t

FROM Pelanggan
CROSS JOIN Order;

t!

Hasilnya
,i

nama
i1

no order
'/'7895 44618 22456 24562 34164 77895 44678 22456 24562
341 64

i!
i{
t$ 1t

Han Han Han Han

Han
Steian Stefan
Ste
n

l$
tg

il
tl
t;
rl

Stefan Stefan

ll ll ll
ll
tl

Pioit Pipit Piptt Pipit Pioit

17895 44678 22456

24s62
5+ /O+

52

il
I

REI,AS I ANTAR TABEL AO IN)

Buat database animal.. ! Buat tabel-tabel berikut dan cari hasil dari JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN..!

Animal

id

.......... .: ......

I 2 3

animal .
, .......

id
I
2
J

rFood

Cat
tDog

tMilk
Bone
Grass

Cow

:f*{<

53

UNION,
)

LINION berguna untuk menampilkan Sintaks :


SELECT co.luaur-name (s)

LINION

FROM:table- el

l'

SELECT column_name(s) FROM table_name2;

Sintaks

INTERSECT berguna untuk menampilkan irisan dari dua tabel.


:

INTERSECT

SELECT column_name (s) FROM table namel

SELECT column_name (s) FROM table name2:

EXCEPT berguna untuk menampilkan perkecualian dari dua tabel. Sintaks :

EXCEPT

SELECT column*name (s) FROM table namel

SELECT column_name (s) FROM table name2:

Buat database dengan nama union kemudian buat tabel-tabel berrkut

cabang

pid
I
2
J
A

nama Hani

Pipit

Pipit B
Stefan

cabang_b

pid
I
2 3

p nama
Lona

Marni
Pipit B
Jon

55

MODUL PRAKTIKUM SISTEM BASIS DATA (MYSQL)

Contoh:

1.

SELECT p-nama FROM cabang-a

IINION
SELECT p-nama FROM cabang-b;

Hasilnya:

nama Hani
Jon

Lona

Marni Pipit A

Pbit B
Stefan

2.

SELECT p-nama FROM cabang-a


LTNION

ALL

SELECT p-nama FROM cabang-b;


1!
4

Hasilnya:

1!

,il

D nama
Hani

Pipit A Pipit B
Stefan

Lona

Marni Pipit B
Jon

3.

SELECT

p nama FROM

cabang-a

INTERSECT
SELECT p-nama FROM cabang-b;

56

UNION, INTERSECT EXCEPT


4.

SELECT p_nama FROM cabans a

EXCEPT
SELECT p_nama FROM cabang_b;

Buat database angka..! Buat tabel-tabel di bawah ini..

Tampilkan hasil dari LrNIoN, LTNION ALL,

ExcEpr, INTERSECT..T

Angkal
I

Angka2
J

2
a J

4
5

4
5

6 7

57

You might also like