50
LorJ% IKUM !g*J\; E'j\ G*Y* '#lY PROGRAM STUDI TEKNIK INFORMATIKA UNIVERSITAS INDRAPRASTA PGRI

Mysql

Embed Size (px)

Citation preview

Page 1: Mysql

LorJ% IKUM

!g*J\; E'j\G*Y*

'#lY

PROGRAM STUDI TEKNIK INFORMATIKAUNIVERSITAS INDRAPRASTA PGRI

Page 2: Mysql

'iitltll

t. PENGENALANSQL. .......... 5

2. DATA DEFINITION I"ANGUAGE.. ......7

3. DATA MANIPUI,ATION I"ANGUAGE.. ......I5

4. FUNGSI AGREGAT .....2g

5. FUNGSI TAI{GGAI .....25

6. FUNGSI STRING .........3I

7. DATASASE REI"ATION ......35

8. REI"AST AIffAR 2 TASEI (WHERE) ..... .....43

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

lo.REr,ASr ArffAR TABEr oOrN) ....49

I I.I'NION, II{ITERSECT, EXCEPT ....55

Page 3: Mysql

;bl

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

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

Jadi pada tahun 1979-lah awal mula lahirnya SQL, yaitu dimulai dari Codd yangmemperkenalkan idenya tersebut dalam konsep yang lebih nyata, kemudian dikembangkan menjadisebuah database relasional, yang salah satunya dari bahasa database relasional tersebut adalah SQL.

Kelahiran SQL juga tidak terlepas dengan sebuah proyek IBM yang dikenal dengan SistelnR. Proyek, yaitu sebuah proyek yang bertujuan untuk mengembangkan sebuah sistem database

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

PENGGU\AA\ SQLMenurut penggunaannya, perintah-perintah SQL dapat dikelompokkan rnenjadi 2 bagian,

yaltu :

l. Secara Interpretasi (Interactive SQL), yaitu dengan cara memasukkan perintah-perintah SQLmelalui console atau mikrokomputer dan secara langsung diproses sehirrgga dapat langsungdilihat.

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 dirancangoleh seorang programmer.

STATEMEN SQLYang 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,rpembentukan atau penghapusan database, tabel dan index.

Yang termasuk ke dalam kategori DDL :

CREATEDATABASE DROPDATABASECRE.ATE TABLE DROP TABLECREATE INDEXCREATE VIEW

DROP INDEXALTER TABLE

Page 4: Mysql

2.

3.

MODUL PRAI{TIKUM SISTEM BASIS DATA (MySQL)

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

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

Yang termasuk ke dalam kategori DML :

INSERT, SELECT, UPDATE, dan DELETEDCL (Data Control Language), merupakan kumpulan perintah SQL yang berfungsi untukmelakukan 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 SQLFungsi-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.

Yang termasuk dalam fungsi aritmatik, di antaranya :

+ (penjumlahan), - (pengurangan), * (perkalian), / (pembagian), o% (sisa hasil bagi), AIIS (x),

ACOS (x), ASIN (x), ATAN (x), COS (x), CEILING (x), ROLTND (x), dan lain sebagainya.

3. 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 :

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

,.**

d*

f;i,ll

$!.itil

ilrt

:it

6

Page 5: Mysql

.m",.:t .: il

-bf

:irl:llr:lr,i'

:l;lal.,t i,t, '

iut:1,u1

l:lilrlll

tl],,,li, Ii11|ii

;l

..DATA DE

PENDAHULUAN

2. DATABASETerdapat perintah-perintah DDL dalam pembuatan, penghapusan,

menampilkan database.

r Membuat Database

Bentuk umum penulisannya :

) CREATE DATABASE nama database;

Sebelumnya, telah dijelaskan peanbuatan dan pengaturan database

melalui browser, yaitu dengan phpmyadmin. Mungkin bagi yang terbiasa meliakukan pembuatan dan

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 :

su-Untuk 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

cd\Pro gram Files\xampp\mysql\bin

2. Akan terlihat pada command prompt :

C:\Program Files\xampp\mysql\bin> dan masukkan perintah seperti berikut :

Mysql -u root

dan

Page 6: Mysql

MODUL PRAMIKUM SISTEM BASIS DATA (MySQL)

Ketentuan dalam membuat nama database, jangan menggunakan spasi jika memiliki namadatabase lebih dari satu kata. Dapat menggunakan underscore ( ).Contoh:Mysql>CREATE DATABASE siswa 25;

. Menampilkan Seluruh DatabaseBentuk umum penulisannya :

) SHOW DATABASE:Contoh:Mysql>SHOW DATABASES;

. MengaktifkanDatabaseBentuk umum penulisannya :

IJse name_database;

Contoh :

Mysql>USE siswa;

. Menghapus DatabaseBentuk umum penulisannya :

DROP DATABASE nama_database;

Contoh :

Mysql>DROP DATABASE, baru;

3. TABELTabel 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, dansebagainya. Record adalah kumpulan data yang tersusun secara per baris.

Tipe DataTipe data dapat dikelompokkan menjadi 3

dan tipe data datetime.

Tipe Data StringYang termasuk ke dalam kategori ini, adalah :

- Char

bagian, yaitu tipe data string, tipe data numerik,

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 sesuaidengan panjang yang dideklarasikan. Contoh: Anda menentukan char (15), lalu terdapat record"lstimewa" pada field tersebut. Karena "Istimewa" memiliki 8 karakter maka mysql akanmenambah 7 spasi untuk melengkapi sisa spasi menjadi 15 spasi sesuai dengan apa yang telhdideklarasikan.

Page 7: Mysql

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.textPendeklarasian: TinltextMemiliki nilai size yang sama dengan varchar (255).

Text dan BlobPendeklarasian: 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 NumerikYang 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 aratara -128 sarnpai 255.

MediumintPendeklarasian: Mediumint(size)

Nilai yang dapat disimpar' arrtata -8.388.608 sampai 8.288.6Oi .

Page 8: Mysql

MODULPRAKTIKUM SISTEM BASIS DATA (MySQL)

- BigintPendeklarasian: B igint(size)

Nilai 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.

- Float

Pendeklarasian: FloatFloat menyimpan bilangan real dan tidak dapat bernilai negatif,

- Double

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

Tipe Data Date dan TimeYang termasuk ke dalam kategori ini, adalah :

- Date

Pendeklarasian: Date

Date menyimpan nilai format YYYY-MM-DD. Nilai yang diizinkan arrtara 1000-01-01 sampa-

dengan 9999-12-31.

- Datetime

Pendeklarasian: DatetimeDatetime 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)Pada tipe data datetime ini, saat pendeklarasian harus disertakan dengan size. Contohtimestamp(2) + YY atau timestamp(4) -+ YYMM.

- Time

Pendeklarasian: Time

Format time adalah HH : MM : S S (Hour: Minute : S 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

Page 9: Mysql

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

kemungkinan satu tabel juga mernbutuhkan key, yaitu prirnary key. Berikut ini merupakan tipe key

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.

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

relasi. Jika terdapat auto_increment pada suatu field, maka field tersebut harus bersifat primary

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_IncrementBerfungsi untuk memberikan nilai dengan kelipatan satu dimulai dari 1 secara otomatis,

sehingga user tidak perlu memasukkan nilai. Field yang dapat diberikan auto-increment harus yang

bertipe data numerik. Dan umumnya digunakan dalam pembuatan nomor urut.

. Membuat Tabelyang 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

r

II

Page 10: Mysql

MODUL PMI{TIKUM SISTEM BASIS DATA (MySQL)

. Memodifikasi TabelMacam 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

Mysql>ALTER TABLE. Untuk menyisipkan atau

Mysql>ALTER TABLE-> after alamat;

menambahkan field pada awal field.tsiswa ADD column phone varchar(30) first;menambahkan field setelah field tertentu.tsiswa ADD column phone varchar(30)

- Mengganti Nama, Tipe Data, dan Size FieldBentuk 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 FieldBentuk 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 FieldBentuk umum penulisannya:

ALTER TABLE nama table DROp field:Contoh:

Mysql>ALTER TABLE tsiswa DROP telephone:

. Menampilkan Struktur TabelBentuk umum penulisannya:

DESC nama_table;

Contoh:

Mysql>DESC tsiswa;

t2

Page 11: Mysql

DATA D E F I N IT I O N I,AN G UAG E

. Mengganti Nama TabelBentuk umum penulisannya:

ALTER TABLE old_table_name rename new_table_name;

Contoh:Mysql>ALTER TABLE tsiswa rename kesiswaan;

. Menghapus TabelBentuk umum penulisannya:

DROP TABLE nama_tabel;

Contoh:

Mysql>DROP TAIILE kesiswaan;

. Menampilkan Seluruh TabelBentuk umum penulisannya:

SHOW TABLES;Contoh: Mysql>SHOW TABLES;

4. INDEXIndex 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 IndexBentuk 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 IndexPenghapusan 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

I

I

I

I

j

li:

I?

Page 12: Mysql

MODUL PRAI<TIKUM SISTEM BASIS DATA (MySQL)

AtauALTER 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 KEYBentuk urnum penulisannya :

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

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

6. VIEWSebuah view adalah tabel yang dibangun dari satu atau beberapa tabel yang sudah ada. Secara

fisk' VIEW tidak membuat penyimpanan data seperti tabel biasa, melainkan hanya menyimpanreferensi./pointer ke record pada tabel-tabel yang berkaitan. VrEWbiasa disebut juga ,.virtual tabel,,.View dapat juga diciptakan dari beberapa tabel.

.t

fl

3.tt

r Membuat ViewBentuk umum penulisannya :

CREATE VIEW view_namef(column l,column2, . . . )ltable_name [with check option];

Contoh:Mysql>CREATE VIEW mhs AS SELECT * FROM

AS SELECT statement FROM

mahasiswa;

I

Keterangan:

View_name )Column )Statement )Table name )

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

I Memperoleh Informasi pada ViewView yang sudah dibuat dapat di akses seperti dalam mengakses tabel.Contoh:

Mysql>SELECT * FROM mhs;. Mengubah View

Contoh:ALTER VIEW mhs ASSELECT npm, nama FROM mahasiswa:

. Menghapus ViewBentuk umum penulisannya :

DROP VIEW nama view;Contoh:

Mysql>DROP VIEW mhs;

Page 13: Mysql

DATA MAN

1. INSERTInsert merupakan perintah SQL yang berfungsi untuk menyisipkan nilai-nilai pada field-field

tabel.

Bentuk umum penulisannya :

INSERT INTO nama_table VALUES (nil 1, n|t2, ...);Atau

INSERT INTO nama table(fieldl, field2, . . .) VALUES (nill, nil2, . . .);

Contoh:

Mysql>INSERT->VAIUES

Atau

Mysql>INSERT->VALUES

INTO kesiswaan(nis,nama,alamat)

(*0 123 4 5 6", "Sukamto", "Jakarta") ;

INTO matakuliah("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 Type I(ev Default Extrano Int(5) PRI NULL auto lncrement

nls Varchar(7) MUL NULLnama Varchar(25) NULL

alamat Varchar(30) NULLPada field "no" terdapat "auto_increment" pada bagian "Extra". Karena sifat dari

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

alamat.

15

Page 14: Mysql

MODUL PMI{TIKUM SISTEM BASIS DATA (MySQL)

Yang dapat

auto increment.

hatikan tabel

melakukan bentuk

Ada juga field yang

ransaksi berikut ini :

nrmusan bagian

harus dimasukkan

"B", selain field yang

dengan rumusan tertentu.

memilikiContoh,

ransaKsl oerlKut 1nl

Kode Jenis Harga Jumlah01 ? 3500 5

03 ? 2s000 2

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 lewatprogram tertentu), dalam menyisipkan jenis dapat dilakukan dengan rumusan bagian B, atau

dengan perintah update.

2. Rumusan basian A: Apabila deretan field-field yang terdapat

natakuli

pada suatu tabel memiliki deretan

h. berikut ini:

*

ilai Perhatikan struktur tabelsama. rernatlKan stnrKtur taDel mataKullan. berlKut m1:

Field Type Kev Default ExtraKode Varchar(7) NULL

narnamtk Varchar(25) NULL

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

Mysql>INSERT INTO matakuliah

->VALUES ("M-0 1 ", "Matematika") ;

2" SELECTSelect 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.

Page 15: Mysql

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

Bentuk umum penulisan dengan kondisi:

SELECT fieldl, ... FROM nama table WHERE kondisi;

AtauSELECT * FROM nama table WHERE kondisi;

Contoh:

Mysql>SELECT * FROM transaksi WHERE kodr"0l";Artinya: Menampilkan seluruh record yang berkode 01.

AtauMysql>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.

o Pembandi

Operator ArtiSama 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 Likepada diikuti oleh tanda-tanda khusus, yaitu : %o (persen) dan _(underscore). Penjelasan : 7o untuk menggantikan beberapa

karakter. untuk menqgantikan satu karakter.

tabel kuliahan yang field dan recordnya seperti

Nim Nama Alamat21196353 Bintang Bosor

4r29652s Ningrum Bogor

s0096487 Pipit Bekasi

r0296832 Nurhavati Jakarta

3r296500 Budi Depok

3t292521 Lilik Jakarta

4tt97522 Pratiwi Jakarta

Untuk lebih mudah memahami perintah select dengan menggunakan kondisi, maka dibuatlah

T7

Page 16: Mysql

-trlMODUL PMKTIKUM SISTEM BASIS DATA (MySQL)

..i,t ? Bagaimana cara menampilkan seluruh data kuliahan bagi yang namanya mengandung huruf

Penulisannya:

Mysql>SELECT * FROM kuliahan WHERE Nama Like ,o/oiyo,:

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.Rp. 35.000. 10.000 sampai dengan

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:

i

x

$

N

t8

Page 17: Mysql

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. UPDATEPerintah update digunakan untuk melakukan penyimpanan hasilSama halnya dengan perintah select, dalam proses update dapat

dengan kondisi.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,,:

editing suatu data.

dilakukan tanpa kondisi atau

'lq

Page 18: Mysql

If.

.:

MODULPMI<TIKUM SISTEM BASIS DATA (MySQL)

Penjelasan :

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

Perhatikan tabel transaksi berikut ini :

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:

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. DELETEDelete memiliki fungsi untuk menghapus suatu data pada suatu tabel. Delete pun memiliki

cara kerja yang terdiri dari2bagiaq yaitu tanpa kondisi dan dengan kondisi.

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 dalammenggunakan perintah delete.

Kode Jenis Harga Jumlah01 I 3500 503 ? 25000 2o2 ? 10000 2

03 2 27500 J

Iia:

=

!

Page 19: Mysql

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:

Seluruh dalayangberkode 01 akan dihapus dari tabel transaksi'

Cara menghapus harga pada tabel transaksi yang memiliki range antara

PenulisannYa:

Mysql>DELETE FROM transaksi WHERE Harga>:1000 AND

->Harea<:25000;

10000 s/d 25000

Latihan menerapkan perintah DDL dan DML pada kasus seperti berikut :

1. Buatlah database dengan nama "Mahasiswa"?

2'Buatlahtabeldengannama.?enilaian,,denganstrukturtabelsepertiberikut

nilain tabel berikutn nilai- I

Nim KdMK NamaMK Mid Final NilRata

to296832 KKO2I,| /J 82 ?

t0297732 KD132,| '71 5 ?

? R1 5 81,7 f20216832 KKO21

30216832 KUT22 654 17 1

ro297732 KKO2I,) 7q5 82,5 ?

20216832 KDI32 I 80.5 6J,)

67 '/8 230216832 KKO21 ?

TampilkanseluruhrecordmahasiswayangberkodematakuliahatauuI(dMK:KKO2l!

Tampilkan fecofd field Nim,KdMK dan Mid saja bagi yang nilai mid-nya antara 75 dan 90 !

4.

5.

Field T Key Default Extra

NULLNim In(8) PRI

KdMK Varchar(5) NULL

NamaMK Varchar NULLNULLMid Float(5)NULLFinal Float(5)NULLNilRata Float(5)

ZL

Page 20: Mysql

t

MODUL PRAI<TIKIJM SISTEM BASIS DATA (MySQL)

lsrpkan nilai untu k field nama matakuliahKdMK NamaMI(KKO21 Sistem Basis DataKDI32 SIMKUI22 Pancasila

amaMK), dengan ketentuan sebagai berikut :

7.

8.

Sisipkan nilai untuk field nilai rata-rata(NilRata), dengan ketentuan sebagai berikut :Mid+Final/2

Hapuslah record yang memiliki Nim : 102968321

Ie,*

22

Page 21: Mysql

FU

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

. ,, ,::r,,rlri.l

' 't

" "tt"''I'UNGSI AGREGATT,

survt 1et<spresillli '"' ' .' .."''

Berfungsi untuk mencari total nilai terdapat pada suatu field Yang bersifat

ikan tabel nilai di bawah ini :

Contoh:

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

Hasilnya:ffirI 378,4 |

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

Hasilnya:Total Mid

303,4

. COUNT (x)

Memiliki fungsi untuk mencari berapa jumlah total baris yang terdapat pada suatu tabel'

Contoh:

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

numerik. Untuk lebih mudahnya dalam mernbgat rgatgjl5Nim KdMK Mid Final

ro296832 KI(021 75 82

r0297732 KD132 75 7?5

20216832 KKO21 R1 5 81,7

30216832 KUI22 65,4 '7',7

10297732 KKO2I 79,5 82,5

23

Page 22: Mysql

r|

MODULPMI{TIKUM SISTEM BASIS DATA (MySQL)

. AVG (ekspresi)

Berfungsi untuk mencari nilai rata_rat apadasuatu padaContoh:Mysql>SELECT AVG(Final) Rata_rata_Final FROM nilai:

Hasilnya:

. MAX (ekspresi)

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

Mysql>SELECT MAx(Final)Nilai_Final_Tertinggi FROM nitai:

Hasilnya:

. MIN (ekspresi)

Berfungsi untuk mencari nilai terendah dari suatu field yang bersifat numerik.Contoh:

Mvsql>SELECT MlN(Mid)Nilai_Mid_Terendah FRoM nilai;

Hasilnya:

field bersifat numerik.

a

t

,f**

24

Page 23: Mysql

FU

ADDATE (x, Interval'nilaijnterval) : '

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

:'(

Daftar Ti Nilai Interval

Tipe Nilai I(eterangan_

Second Satuan detik

Minute Satuan menit

Hour Satuan iam

Day Satuan hari

Month Satuan bulan

Year Satuan tahun

Minute Second "Menit:Detik"

Hour Minute "Jam:Menit"

Day Hour "Hari:Jam"

Year Month "Tahun:Bulan"

Hour Second "Jam:Detik"

Contoh:

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

->Hasilnya-setelah-Ditambah-1 0hari;

. CURDATE ( )Menghasilkan tanggal saat

dengan waktu.

Contoh:Mysql>SELECT curtime( )Tanggal-

Tanggal llari-Ini2006-05-O1

ini, namun tidak sePerti halnya fungsi now ( ) Yang drsertal

Hasilnya:

Hari Ini;

25

Page 24: Mysql

a

il

5:

;

MODULPMKTIKUM 1ISTEM BASIS DATA (MySQL)

. CURTIME ( )Menghasi lkan waktu terkini.Contoh:

. CURRENT_TIMESTAMPOMenampilkan 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 saatContoh :

Mysql>SELE CT daynam e(,, 2O O 6 _0 5 _ 07,,) T anggat Tersebut Hari:

itu.

;1

e

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

Contoh:

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

Mysql>SELECT currime( )Waktu

Hasilnya:

26

Page 25: Mysql

. FI]NGSITAAIGGAL

. DAYOFWEEK(penanggalan)Berfungsi untuk menampilkan hari dari seminggu dengan menggunakan kode angka-

Berikut ini daftar nama hari dan kode

Nama Hari Kode Angka

Sundav I

Mondav z

Tuesday J

Wednesday 4

Thursday 5

Fridav 6

Saturdav 7

yai

Contoh:

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 ;

' EXTRACT(nilai FROM penanggalan/waktu)

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:

Nilai Extractnva7

Contoh extract dari pengaturan waktu:

27

Page 26: Mysql

I

MODUL PMKTIKUM SISTEM BASIS DATA (MySQL)

. 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.

Contoh:

Mysql>SELECT FROM_DAYS(90 I 5 I 0)penanggalannya_adalah;

Hasilnya:

Hasilnya:

i Penanggalannla_aclatah i

1 2468_04_0t I

-

. HOUR (pengaturan waktu)Berfllngsi untuk mengamb' nirai jam dari suatu pengaturan waktu.

Contoh:

- MINUTE (pengaturan waktu)Berfungsi untuk mengambir nirai menit dari suatu pengaturan waktu

Contoh:

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

Hasilnya:

Hasilnva:

I Nlenitnya adalahi :s I--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:

I Detiknvu uduluh--

-

t

I

I:a

28

Mysql>SELECT HOUR(.. I 2 : 3 5 :0 1,,)Jamnya_adatah;Hasilnya:

Page 27: Mysql

I

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;

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

i

I dengan format yanediinginkan.

Berikut ini

)

I::

!ii

I

Contoh:Mysq 1> S ELE CT date_fo rrnat(,, 2O 0 6 -Og - | 7',,, yoW, yoM, yoD, %y )

->Formatnya;

Hasilnya:

IFr-I Thursday, August 17th 2006

|

30

Menampilkan nama bulan bukan dalam bentuk s

Menampilkan bulanMenampilkan 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.

Menampilkan jam dalam format 12 iam.Menampilkan jam dalam format 24 iMenampilkan jam dalam format 24

dalam format 12 iam OO-12.

ilkan detik

*rkt<

Page 28: Mysql

,i:'llli''

tlr Ascii (x) ,,, , : ',,'

Berfungsi untuk m€nCari nilai ascii dari _suattlii$11i1$;l

Contoh:

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

Hasilnya:

Nilai Asciinva

J/

. Char (xl, x2, ...)Fungsi ini merupakan kebalikan dari fungsi ascii(x),

mengembalikan string menjadi nilai ascii. Fungsi char(xl,...) adalah

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:

jika pada tungsi ascii (x)mengubah fungsi ascii menjadi

Page 29: Mysql

MODUL PNAI{TIKUM SISTEM BASIS DATA (MySQL)

r Encode (stringrstring_enkripsi)Berfungsi untuk merubah nilai string menjadi kode-kode tertentu.

menjadi kode harus terdapat string dan string_enkripsi. Jika hanya terdapat

tidak dapat dilakukan.

Contoh:

Mysql>SELECT encode("AuTo","CAD")Kodenya_adalah;

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

karakter dari kiri.

Contoh:

Mysql>SELECT left ("Indonesia,3 ")3 Digit_Dari_Kiri;

Hasilnya:

. 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 dariposisi yang telah ditentukan.

Contoh:

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

Hasilnva:

. 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 KananSia

Dalam merubah string

string saja maka proses

I

i.

)

I

I

32

Page 30: Mysql

FUNGSI STRING

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

kecil.

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

yaitu untu! merubah huruf kecil menjadi huruf kapital atau besar.Contoh:

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

kebalikan dari fungsi lcase(string),

. 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 harapan .)->Setelah_di*rtrim;

Hasilnya:

Setelah di rtrimKueaoai

->Perubahannya_adalah;

Page 31: Mysql

MODULPRAKTIKUM SISTEM BA9IS DATA (MySQL)

. Trim(string)Berfungsi untuk menghilangkan atau menghapus spasi

string.

Contoh:

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

dari bagian kiri dan kanan

")

qlt:-

tr;:

t

Kugapai harapan

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

Contoh:

rl.**

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

Hasilnya:

34

Page 32: Mysql

Pada dasarnya model relasional digunakan untuk mengatasi kesulitan dalam pengelolaan dan;,"il;;ffiH:"*':ffir;anomali-anomali (enn, ororr .i-r-^-^:^.-,--:

Untuk memahami k lasiberikut ini:

relasl, ikan daftar mahasisrve rfqn matotnNomor Nim tr(ode-mfl' Sks

99130012 101 22 9914sO21 05 A+J 99276521 03 4A 991300t2 o2 25 98254t23 03 46 99145021 o4 27 99671204 o6 48 99r30012 o5 A

9 99276521 o2 2t0 99145021 r03 4ll 982s4123 101 2

1. Anomali fnsertKesalahan yang terjadi di saat proses penyisipan record baru.Contoh:

Jika kampus akan mengadakan matakuliah baru dengan kodepenyisipan untuk kode matakuliah r07 tidak dapat dilakukanmengambil matakuliah tersebut.

matakuliah 107, maka prosessampai ada mahasiswa yans

35

Page 33: Mysql

MODULPRAKTIKUM SISTEM BASIS DATA (MYSQL)

2. Anomali Delete

Kesalahan yang terjadi di saat proses penghapusan record atau tuple'

Contoh:

Mahasiswa yang memiliki Nim 99671204 memutuskan untuk membatalkan mengamb:

matakuliah 106, maka dengan demikian jika didelete record tersebut, akan berakibat hilangnl'

informasi tentang kode matakuliah 106'

3. Anomali UPdate

Anomaliataukesalahanyangterjadipadasaatprosessuaturecord.Contoh:

Jika Anda perhatikan pada tabel kuliahan, terdapat banyak kode matakuliah yang diambil ole:

mahasiswa dengan NIM yang berbeda. Misalnya akan dilakukan perubahan SKS untuk koc'

matakuliah 103, maka akan dilakukan proses update beberapa kali sesuai dengan banyaknr-

jumlah yang mengambil kode matakuliah tersebut'

Dari anomali-anomali yang terjadi di atas maka daftar mahasiswa dan matakuliah buka-

termasuk well-Structure relation (sebuah relasi dengan jumlah kerangkapan dalanya sedikit)'

Dengan demikian daftar mahasiswa & matakuliah harus dilakukan proses normalisasi, yat:'

dengan membagi 2 tabelyang terpisah. Tabel-tabel tersebut adalah sebagai berikut ini :

Tabel kuliah:Tabel matakuliah:Kode-mtk Sks

101 2

t02 A

103 A

104 2

105 4

106 2

Nim Kode-mtk99130012 101

99r4502r 105

99276521 103

99130012 r0298254123 103

99L45021 r04

I

Dari kedua tabel tersebut akan dibentuk relasi yang saling terkait antara satu dengan ya:

lainnya. Untuk melakukan prosoes relasi dibutuhkan field yang memiliki primary key atau fore:'

key.

Sifatfieldprimarykey,yaitutidakbolehterdapatdatasamadalamfieldtersebut.Contc,pada tabel kuliah field .Kode.mtk' terdapat banyak data yang Sama, seperti kode matakuliah 1'

Berarti field .Kode-mtk, pada tabel kuliah tidak dapat dijadikan primary key. Jika Anda amati fie

.Kode-mtk'pada tabel matakuliah tidak terdapat datayang sama, berarti field 'Kode-mtk' pada ta:"

matakuliah dapat dijadikan primary key'

Kesimpulannya field 'Kode-mtk' pada tabel matakuliah sebagai primary key' sedangkan fi'.Kode-mtk, pada tabel kuliah sebagai foreign key. Untuk lebih jelasnya perhatikan skema di sini :

Tabel kuliah:

NimKode-mtk

Tabel matakuliah:

Kode-mtkSks

36

Page 34: Mysql

DATABASE REI,ATION

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

Nomor Nim Kode-mtk SksI 99r30012 101 22 9914s021 105 4

2. PEMBENTUKAN NORMALISASIPerubahan daftar mahasiswa & matakuliah menjadi 2 tabel, yaitu tabel matakuliah dan kuliah

adalah merupakan bentuk normalisasi. Dengan demikian terjadi suatu kondisi di mana prosespenginputan record baru untuk kode matakuliah dilakukan pada tabel matakuliah, maka secaraotomatis akan terlihat perubahan SKS atau kode matakuliah, maka secara otomatis akan terlihat puladalam daftar mahasiswa & matakuliah.

Berikut ini akan dijelaskan seputar pembentukan normalisasi d.ari bentuk tidak normal(Unnormalized Form).

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 sesuaidengan yang diinput.

Contoh:I(obuk Judul Pengarang RKI RK2 RI(3l0l-K Belajar Sendiri

VB.6M. Bakri 001 003 001

103-c Kisah CintaSans Penvair

Minolsta 003 001

1 10-S Belajar CepatBerhituns

Cokro S. o02 o02 001

106-4 Bertauhid YangBenar

Ust. Soleh 003 003

b) Bentuk INF (First Normal Form)Pada bentuk form jenis pertama ini atau yang disebut INF harus bersifat atomik. Atom yaituterkecil 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 RKl0l-K Belaiar Sendiri VB. 6 M. Bakr 001l0l-K Belaiar Sendiri VB. 6 M. Bakr 003103-c Kisah Cinta Sans Penvair Minolsta 001103-c Kisah Cinta Sane Penvair Minolsta 0031 10-S Belajar Cepat Berhitune Cokro S. o0lI l0-s Belaiar Ceoat Berhituns Cokro S. o02106-A Cara Cepat Belaiar Database Lina Marlina 003 37

Page 35: Mysql

MODULPRAI{TIKUM SISTEM BASIS DATA (MYSQL)

c) Bentuk 2NF (Second Normal Form)

Apabila bentuk normal pertama atau lNF terpenuhi, maka

kedua atau 2NF. Pada tahap ini tabel yang terdapat pada bentuk

dibagi menjadi 2bagian, yaitu :

dapat menuju ke bentuk norrn:

normal Der1.arna atau lNF aka:

t.

Tabel Rak BukuKobuk Kode RI(101-K 001101-K 003103-C 001103-c 003I 10-S 0011 10-S o02106-4' 003

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.

3. JENISRELASITABELTerdapat 3 jenis relasi tabel, yaitu one to one, one to Many, dan Many to Many.

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

tabel anak.

Tabel BukuKobuk Judul Pensarang101-K Belaiar Sendiri VB. 6 M. Bakri103-C Kisah Cinta Sang Penyar Minolsta1 10-S Belaiar Cenat Berhitung Cokro S.

106-A Cara Cepat Belaiar Database Lina Marlina

Tabel Buku:

Kobuk (foreign key)Kode RI(

Tabel Buku:

Kobuk (primary key)JudulPengarang

38

Page 36: Mysql

DATABASE REI,ATION

Contoh:

Tabel Wali I(elasTD WK Nama Wali I(elas

0l Suhendar02 Samsusi03 Zainab

Tabel KelasKo l(elas Kelas TD WK

A IA 0lB IB o2C 1C 03

. Relasi One to ManyRelasi one to many, yaitu suatu jenis relasi tabel yang memberikan hak untuk berrelasi

dengan lebih dari satu baris.

ContohTabel Hewan

I(dHwn Jenis Hewan01 Kamb ns02 Sap03 Kerbau

ID Pemilik Nama Pemilik Jumlah Jenis llewan

A001 H. Bajuri 2 Kambing

A003 ZainaI Sambri I Kambing

A002 Andi Solahudin I I(erbau

A003 Zatnal Sambri Sapi

A002 Andi Solahudin 2 Kambing

A004 Syamsudin J Kambing

A005 Diah Armintai 2 Kambing

A00l H. Bajuri I Sapi

A001 H. Bajuri 1 I(erbau

Contoh relasi di atas menunjukkan bahwa setiap pengqurban dapat berqurban dengan lebihdari satu jenis hewan yang berbeda. Contoh seperti H. Bajuri yang berqurban kambing, sapi, dankerbau.

. Relasi Many To ManyPembentukan 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 hanyamenggunakan dua table, melainkan harus memerlukan tabel perantara lain.

39

Page 37: Mysql

MODUL PRAI{TIKTIM SISTEM BASIS DATA (MySQL)

Contoh:Tabel Penerbit

ID Penerbit Nama Penerbit Kota01 CV. Pustaka Java Jakarta02 Setia Kawan Jakarta03 Alexander Bandunso4 Surya Kencana Padans

Tabel TokoNama Pengarans ID Toko Nama Penerbit

Ust. Yudo Kuncoro I CV. Pustaka JavaMohamad Suharto. S.H. 2 Setia KawanDede Sunarya 5 CV. Pustaka JavaUst. Yudo Kuncoro 4 Surya KencanaApriastuti Nur Komalasari 5 Setia KawanMohamad Suharto, S.H. 6 CV. Pustaka JavaRetno Yuniar 7 Surya KencanaDrs. Amelia Anssoro 8 Alexander

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

4. MASALAH YANG TIMBUL AKIBAT NORMALISASIWalaupun normalisasi telah membantu dalam menghilangkan anomali-anomali, bai.

anomali insert, update, ara.u delete. Ada hal yang ditimbulkan setelah proses normalisasi itu ber:;yaitu permasalahan tampilan tabel dan permasalahan integritas referensial.

Untuk memudahkan memahami kedua permasalahan tersebut, perhatikan tabel Buku dar !.,"Buku.

. Permasalahan Tampilan TabeIJika 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

Tabel PenqarangID Pensarans Nama Pengarans Alamat

A0l Dede Sunarya JakartaAI02 Drs. Amelia Anggoro JakartaA03 Mohamad Suharto, S.H. SubansA04 Ust. Yudo Kuncoro BandunsA05 M. Zaidan.\lwt MedanA06 Apriastuti Nur Komalasari JakartaAO7 Retno Yuniar Subans

Page 38: Mysql

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 dantabel Rak Buku. Pernyataan SQL untuk menampilkan record tidak sama dengan sebelumproses normalisasi. Perintah SQL-nya yaitu :

SELECT nama_tabel.nama_fie1d,... FROM nama tabel.nama field

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';

. Peirmasalahan Integritas ReferensialBerupa Maintenance Consistency of Reference antara 2 buah tabel relasi vans salins terkait.

Contoh:- Sebelum terjadinya proses normalisasi, setiap penambahan record dapat dilakukan pada tabel

Relasi. Setelah normalisaasi, untuk menambahkan rak buku harus melalui proses pengecekanterlebih dahulu, apakah buku yang akan ditampilkan pada suatu rak apakah sudah ada dalamtabel Buku atau belum. Jika belum terdapat kode buku tersebut pada tabel Buku, maka prosespenginputan record pada tabel Rak Buku tidak dapat dilakukan.

- Jika ingin melakukan penghapusan data pada tabel Buku harus berhati-hati, karena akanberpengaruh pada tabel Rak Buku. Jika Anda menghapus pada bagian tabel Rak Buku saja, makatidak akan berpengaruh pada tabel Buku. Karena sifat field Kobuk pada tabel Buku bersifatprimary key, sedangkan field I(obuk pada tabel Rak Buku sebagai penghubung saja.

***

it:ll

:

4t

Page 39: Mysql

: :.1rrr. r.r:,, rii'lti.l

RELASI AN. i,.". '

,,.iit,,t.i.,.....

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

Nasabah

Rekening

I(ode_cabangNama_cabangKota

ld nasabahNomor_rekeningSaldoKode cabang

Nasabah

ld_nasabahNama_nasabahAlamat nasabah

Id r-rasabah Nomor rekening Saldo Kode cabang

AAOOI 001000123 20.000.000 A123

ABOO2 0020001 23 5.000.000 Bt23CCOO3 003000123 75.000.000 ct23CDO04 004000123 20.000.000 Dr23DDOO5 005000 1 23 1.500.000 F.t23

id nasabah Narna nasabah Alamat nasabah

AAOOl Rudi Jl. Sepat

ABOO2 Yuni Jl. Baung

CCOO3 Hani Jl. Gurame

CDO04 Kiki Jl. Nila

DDOO5 Lala Jl. Mujair

Cabang

Kode cabang Nama cabang kotaA123 JKTOI Jakarta Pusat

Bl23 JKTO2 Jakarta Selatan

cl23 BDOOl Bandung

Dt23 SBYOl Surabaya

Et23 DPKOI

Buat database dengan nama bank, kemudian buat 3 tabel di atas" !

lsikan data sesuai tabel di atas..!+*J

Page 40: Mysql

jr-

I..

.

a

MODULPRAI<TIKUM SISTEM BASIS DATA (MYSQL)

l. Tampilkan id-nasabah, nama-nasabah, dan saldo.. !

- Tentukan tabel mana saja yang dibutuhkan.

Untuk menampilkan id-nasabah dan nama-

Sedangkan untuk menampilkan saldo kita

akan menggunakan 2 tabel tersebut.

- Perhatikan relasi dari tabel tersebut. Tabel

atribut id_nasabah.

- Buat query SQL.

nasabah kita membutuhkan tabel nasabah

membutuhkan tabel rekening' Jadi kita

nasabah dan rekening dihubungkan olei

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;

3. Tampilkan nama-nasabah, alamat-nasabah, dan nomor-rekening" !

4. Tampilkan nomor-rekening dan kota..!

Mahasiswa

npm nama kelas

200912300r Abisail 48

2009123002 Reddi 4C

2009123003 Reva 4A

2009123004 Chyntia 4E

2009123005 Steven 4B

npm no mk mid final

2009123001 I 1001 I 78 80

2009123002 12001 I 80 87

2009r23003 13001 I 69 75

2009123004 1 1001 I 80 60

2009t23005 14001 I 85 90

Page 41: Mysql

I l00l I

Algoritma

Buatlah database dengan nama

l. Tampilkan npm dan no

mhs dan tabel di atas kemudian kedakan latihan..l

mk..!

2.

J.

4.

5.

Tampilkan npm, nama, dan mid.. I

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

rF*{.

45

Page 42: Mysql

.ELASI AN

bandung.. !

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

atribut id-nasabah, sedangkan rekening dan cabang dihubungkan oleh atributkode_cabang).

c. 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. Tampilkannama nasabah, saldo, dankota..!3. Tampilkan id-nasabah dan nomor-rekening yang cabangnya berada di Surabaya.. !

4. Tampilkan tampilkan nama nasabahyang saldonya di atas 5.000.000 dan berada di cabaneJakarta Pusat.. !

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

Cunakan database mhs.. !

1. Tampilkan nama mahasiswa dan nama matakuliah yang nilai midnya antara 70 sampai g0.. !

SELECT mahasiswa.nama, matakuliah.nama mkFROM mahasiswa, matakuliahWHERE mid BETWEEN 70 AND 80;

2. Tampilkan nama mahasiswa yang mengambil mata kuliah komunikasi data..!3- Tampilkan nama mahasiswa, nilai final, dan nar''amatakuliahnya..!4- Tampilkan nama mahasiswa yang nilainya kurang dari 80 dan mengambil mata kuliah

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

l't:lli;]].:

*rt *

47

Page 43: Mysql

lir'l

':t.i,l.

l

RELASI

JolNadalahpenggabungandatayangberasaldaribeberapatabel.operatoryangbiasa

digunakan adalah sama dengan (:), maka sering disebut dengan equality join ataru equiioin'

Equijoindikelompokkankedalamduabagianyaituinnerequijoin(innerjoin)danouterequijoin(outerjoin).YangtermasukdalamouterJoinadalahLeftJoindanRightJoin.

Bentuk penggabungan data yang terakhir yang akan dibahas adalah perkalian cartesian

(Carlesian product) atau disebut juga dengan cross join atau full join'

1. JOIN / INNERJOINAkan menghasilkan baris-baris yang cocok antar kedua tabel paling tidak satu barts'

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

Akan menampilkan selumh baris dari tabel di sebelah kiri (tabel 1), walaupun tidak ada yang

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 JOIN

Akan menampilkan selurrrh baris dari tabel di sebelah kanan (tabel2), walaupun tidak ada

yang cocok dengan tabel di sebelah kiri (tabel 1)'

Sinlaks:SELECT column-name(s)

FROM table-namel

RIGHT JOIN table-nan,le2

ON table name 1'column-name : table-name2'column-name

I

49

Page 44: Mysql

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 I

1,-,,"-.-,,'-'---.*-.- * "l-*--^ "-**'.- ---*',*"-l*.-**-*-"---**l.r\7789si3t--***"---"--*-i-*-*--*--"--*""*"-i*---*^ ***-l2':44678i3il_*'-.*,'-*-,^***f****--.*-----*-'* j-*"---:

r31zz+seltrf-.-,.--,..,-..,",, -'...-''.-'-i- *.'.-"-..-- "--"*--^-----"-i-"''."----*-.'*.-- ..'l

:qiz+se211ri--i *- " t-.--

*-;;;;;o--- i"-- ;---l

1. JOIN/INNER JOIN

Menampilkan nama dan nomor order yang diurutkan berdasarkan nama'

Sintaks :

SELECT Pelanggan.nama' Order'NoOrder

FROM Pelanggan

INNER JOIN Order

ON Pelanggan.P-Id:Order.P-IdORDER BY Perlanggan.nama;

Hasilnya:

Hani i22456

': Z+S1Z

7X895

44678

Hani

Page 45: Mysql

RET ASI ANTAR TABEL 1OIN)

LEFT JOINMenampilkan nama dan nomor order yang di urutkan berdasarkan nama

SELECT Pelanggan.Nama, Order.NoOrderFROM Pelanggan

LEFT JOIN OrderON Pelanggan. p_Id:Order.p_Id

ORDER By pelanggan.Nama;

Hasilnya:

i-----

: Nama i Noorder--j.-

Hani-'t- - - -"- -- ---- -, Hani i Z+SAZ

Pipit , 77895

Pipit | ++en

3. RIGHT JOINMenampilkan nama dan nomor order yang di urutkan berdasarkan nama.

Sintaks :

SELECT pelanggan.Nama, Order.NoOrderFROM Pelanggan

RIGHT JOIN OrderON Pelanggan.p_Id:Order. p_IdORDER By pelanggan.Nama;

Hasilnya:

I rrplt | 44678 |:-"----*i--*--;Stefan , Null ,

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

1 Pipit i IISSSPipit 44678

Nqtl, i _ _3,4764

5t

Page 46: Mysql

MODULPRAKTIKUM SISTEM BASIS DATA @YSQL)

4. FULL JOIN/CROSS JOIN

Menampilkan nama dan nomor order yang di urutkan berdasarkan nama'

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

Hani

Piptt

Pipit

Stefan

Null

OrderNo22456

24562

1189s

44678

Null34'764

1g

.t

t!

i

,i

i1

i!

i{

t$

1t

l$

tg

iltlt;rl

ll

ll

llll

tl

il

I

Penggunaan cross join tanpa menggunakan ON dan USING

Contoh:SELECT Pelanggan'Nama, Order'NoOrder

FROM Pelanggan

CROSS JOIN Order;

Hasilnya :

nama no orderHan '/'7895

Han 44618Han 22456

Han 24562

Han 34164Steian 77895Stefan 44678Ste n 22456

Stefan 24562Stefan 341 64

Pioit 17895

Pipit 44678

Piptt 22456Pipit 24s62Pioit 5+ /O+

52

Page 47: Mysql

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 animal.......... .: ...... , . .......

I Cat

2 tDog

3 Cow

id

I

2

J

:f*{<

rFood

tMilk

Bone

Grass

53

Page 48: Mysql

UNION,

) . LINION berguna untuk menampilkanSintaks :

SELECT co.luaur-name (s) FROM:table- el .

LINIONSELECT column_name(s) FROM table_name2;

o INTERSECT berguna untuk menampilkan irisan dari dua tabel.Sintaks :

SELECT column_name (s) FROM table namelINTERSECTSELECT column_name (s) FROM table name2:

r EXCEPT berguna untuk menampilkan perkecualian dari dua tabel.Sintaks :

SELECT column*name (s) FROM table namelEXCEPTSELECT column_name (s) FROM table name2:

Buat database dengan nama union kemudian buat tabel-tabel berrkut

cabang a

pid p namaI Hani2 Pipit AJ Pipit BA Stefan

cabang_b

l' I

l

pid p namaI Lona2 Marni3 Pipit B4 Jon

55

Page 49: Mysql

MODUL PRAKTIKUM SISTEM BASIS DATA (MYSQL)

Contoh:

1. SELECT p-nama FROM cabang-a

IINIONSELECT p-nama FROM cabang-b;

Hasilnya:

p nama

Hani

Jon

Lona

Marni

Pipit APbit BStefan

SELECT p-nama FROM cabang-a

LTNION ALLSELECT p-nama FROM cabang-b;

Hasilnya:

D nama

Hani

Pipit APipit B

Stefan

Lona

Marni

Pipit B

Jon

SELECT p nama FROM cabang-a

INTERSECTSELECT p-nama FROM cabang-b;

2.

1!4

1!,ili

i

3.

56

Page 50: Mysql

UNION, INTERSECT EXCEPT

SELECT p_nama FROM cabans aEXCEPTSELECT p_nama FROM cabang_b;

Buat database angka..!

Buat tabel-tabel di bawah ini.. !

Tampilkan hasil dari LrNIoN, LTNION ALL, ExcEpr, INTERSECT..T

Angkal Angka2

4.

I

2aJ

4

5

J

4

5

6

7

57