mysql

67
Materi : 1. Konsep Dasar Basis Data 2. Basis Data Relasional 3.Tipe Data 4.Normalisasi 5.Transaksi 6. Diagram Relasi Entitas (ERD) 7. Structured Query Language - DDL 8. Structured Query Language - DML Pustaka Acuan : 1. Date, C J, An Introduction to Database Systems, Vol I. , New York:Addison Wesley, 1995 2. El Masri, Fundamentals of Database System Design , New York:Addison Wesley, 1994 3.Waljiyanto, Sistem Basis Data : Analisis dan Pemodelan Data , Yogyakarta:Graha Ilmu, 2003

Upload: pwnavian

Post on 11-Jun-2015

1.642 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: mySQL

Materi :

1. Konsep Dasar Basis Data2. Basis Data Relasional3. Tipe Data4. Normalisasi5. Transaksi6. Diagram Relasi Entitas (ERD)7. Structured Query Language - DDL8. Structured Query Language - DML

Pustaka Acuan :

1. Date, C J, An Introduction to Database Systems, Vol I., New York:Addison Wesley, 1995

2. El Masri, Fundamentals of Database System Design, New York:Addison Wesley, 1994

3. Waljiyanto, Sistem Basis Data : Analisis dan Pemodelan Data, Yogyakarta:Graha Ilmu, 2003

Page 2: mySQL

Konsep Dasar Basis Data Hal. 0

Konsep Dasar Basis Data

Page 3: mySQL

Konsep Dasar Basis Data Hal. 1

Konsep Basis Data

- Teknologi basis data (Database) mempunyai pengaruh yang kuat pada

perkembangan pemanfaatan SIBK (Sistem Informasi Berbasis

Komputer).

- Batasan : Basis data relasional.

- Faktor kunci dalam keberhasilan basis data relasional adalah

standarisasi

o spesification standard

o user interface standard.

Data

- Merupakan fakta-fakta yang dapat disimpan dan dapat mempunyai arti

tertentu.

- Bersifat data-dependent.

Basis Data

- Basis data merupakan kumpulan data-data yang saling berhubungan.

- Bersifat data-independent.

- Perbedaan mendasar antara basis data dengan data pada umumnya

adalah terletak pada "cara akses" dan "cara perekaman".

Sistem Manajemen Basis Data

- Sekumpulan program yang memungkinkan pemakai untuk menciptakan

dan memelihara suatu basis data.

- Berfungsi sebagai sistim perangkat lunak yang meliputi fasilitas proses

pendefinisian, konstruksi, dan manipulasi basis data untuk bermacam-

macam aplikasi.

- Pendefinisian basis data menyangkut penentuan type data dengan

deskripsi detailnya.

- Konstruksi basis data merupakan proses penyimpanan data itu sendiri

pada beberapa medium penyimpanan yang dikontrol oleh DBMS.

Page 4: mySQL

Konsep Dasar Basis Data Hal. 2

- Manipulasi basis data terdiri dari fungsi-fungsi seperti query basis data

untuk mencari data tertentu, pengubahan data dan pembuatan laporan

dari data.

Sistem Basis Data

- Terdiri dari basis data dan sistim manajemen basis datanya.

- Karakteristik basis data meliputi :

o Informasi dari basis data juga disimpan pada sistim basis data

o Program tidak tergantung pada struktur file data

o Mempunyai representasi konsepsual

o Basis data dapat dilihat dari sudut pandang yang berbeda

Hirarki Data :

Data : Field Record File Database

Hubungan antar Sistem Basis Data, DBMS, dan Basi Data :

Applications Programs/QueriesA

Software To AccessStored Data

Software To ProcessQuerries/Programs

User/Programmers

Stored Database Definition(META -DATA)

StoredDatabase

DATABASESYSTEM

DBMSSOFTWARE

Page 5: mySQL

Konsep Dasar Basis Data Hal. 3

Tujuan Basis Data

- Efisiensi ruang penyimpanan data dan waktu

- Accuracy

o Informasi yang disajikan memiliki ketepatan yang tinggi dan

selalu up-to-date

- Availability

o Data tersedia sesuai dengan kebutuhan setiap saat

Page 6: mySQL

Konsep Dasar Basis Data Hal. 4

- Data Consistency (Konsistensi data)

o Berhubungan dengan masalah duplikasi, dimana semakin besar

duplikasi akan semakin besar pula kemungkinan inkonsistensi

data, karena adanya kemungkinan kegagalan update.

- Evaluability

o Menyangkut kemampuan basis data untuk kemungkinan

pengembangan.

- Shareability

o Menyangkut penggunaan data secara bersamaan oleh beberapa

pemakai dalam waktu yang sama.

- Security (Keamanan Data)

o Menyangkut keamanan informasi yang disimpan dalam database,

meskipun sistim mengalami tubrukan (crash) atau akses diluar

otoritas.

- Data Integrity (Integritas data)

o Masalah integritas adalah masalah yang menjamin bahwa data

adalah akurat. Pengertian INTEGRITY adalah bahwa basis data

dapat dianggap sebagai suatu perpaduan beberapa data file yang

tidak sama dengan redudansi telah ditiadakan seluruh atau

sebagiannya.

- Data Independence

o Pemakai melihat data sesuai dengan kebutuhan tanpa harus

mengetahui bagaimana dan dimana data sebenarnya disimpan.

Pengguna Basis Data

o Naïve End User data entry operator

o Casual End User DBMS user, mis : pegawai administrasi

o Sophisticated End User membuat sistem basis data, mis : ilmuwan

o System analyst merancang sistem basis data

o Database programmer membuat aplikasi basis data

Page 7: mySQL

Conceptual

Physical

Konsep Dasar Basis Data Hal. 5

o System programmer membuat aplikasi penunjang basis data

o DBA (Database Administrator) mengelola basis data, user, dan

manajemen basis data (penjadwalan, pemeliharaan, dsb.)

Abstraksi Basis Data

User View sesuai kebutuhan user(external level)

Conceptual View skema relasi(conceptual level)

Physical View struktur file(internal level)

Bahasa Basis Data

o DDL (Data Definition Language) mengelola struktur file dan batasan/integritas file

o DML (Data Manipulation Language) mengelola data

o DCL (Data Control Language) mengelola otorisasi user

o SDL (Storage Data Language) mendefinisikan skema internal

1. Procedural DML (low level) embedded pd suatu bhs pemrograman. Mis : pernyataan SQL pada kode Visual Basic

2. Non procedural DML (high level) pada suatu DBMSMis : Microsoft Access, dBase

Conceptual/internal mapping

External/conceptual mapping

Page 8: mySQL

Basis Data Relasional Hal. 6

Basis Data Relasional

- Dikembangankan pertama kali pada antara tahun 60’ - 70’ oleh IBM.

- Idenya adalah basis data dengan struktur yang dinamik, fleksibel dan

mudah pakai.

- Struktur basis data relasional :

o Terdiri dari tabel.

o Struktur harus flat dalam arti bahwa isi tabel memungkinkan

pencarian dan perubahan.

o Definisi dan manipulasi harus independen terhadap struktur

penyimpanan secara fisik.

Relational Database Management System

Page 9: mySQL

Basis Data Relasional Hal. 7

- Relational Database Management System (RDBMS) merupakan

sistem kontrol basis data.

- Pencarian data dilakukan berdasarkan pada spesifikasi logik dari

basis data.

- Menentukan dan mengatur pemetaan (protocol) yang menjelaskan

hubungan antar :

o tabel

o kamus data

o penyimpan data secara fisik

o sistem operasi.

- RDBMS dapat memelihara hubungan antara basis data lojikal dan

fisikal yang pada prinsipnya harus bersifat independen antar

keduanya.

o Pemisahan aspek fisik dan logik berarti DBMS menangani

semua masalah keamanan (security), termasuk kesatuan

(integrity) dan konsistensi.

o Contoh : mengatur 2 orang ketika meng-update data yang

sama pada saat bersamaan.

- DBMS menterjemahkan pencarian, mencari path yang optimal via

tabel, dan berkomunikasi dengan prosedur pemetaan (mapping).

Page 10: mySQL

Basis Data Relasional Hal. 8

- Traditional RDBMS (low end)

o Tabel dan indeks pada file yang terpisah

o Fixed-length record

o Contoh :

dBASE Paradox Foxpro Btrieve

- Nontraditional RDBMS

o Semua tabel dan indeks berada pada satu file

o Contoh :

Access Oracle Sybase SQL Windows

Page 11: mySQL

Basis Data Relasional Hal. 9

- Traditional vs nontraditional RDBMS

Traditional Nontraditional

Mesin PC PC, Mini

Developer tools Terintegrasi Dapat terpisah

(Front end dan back-

end berbeda)

Definisi

Basis data

Merupakan kumpulan data yang disusun untuk tujuan tertentu, dan

data-data tersebut dikelompokkan dalam satu atau lebih tabel.

Misal: personnel management, customer services, payroll, dll.

Tabel

Merupakan array dari data yang terorganisir dalam baris dan kolom.

Relational database

Merupakan basis data yang muncul pada user sebagai kumpulan

tabel.

Data terlihat tersimpan secara fisik dalam struktur tabel, padahal

sebenarnya tersimpan bit per bit dalam media penyimpanan dan

bukan sebagai tabel.

Nama Umur

Sex

John SmithUrsula PetersMorton Berger

Page 12: mySQL

Basis Data Relasional Hal. 10

tabel 1.1.

Table 1 terdiri dari 3 kolom.

Kolom disebut sebagai field dan baris field disebut record.

Contoh Field : Nama , Umur, dan SexContoh Record : Nama = "John Smith"

Umur = "33" Sex = "M"

Aturan-aturan dalam membentuk struktur tabel relasional :

o Nama field harus unik.

o Urutan field tidak berpengaruh.

o Paling sedikit satu field atau kombinasinya harus dapat

mengidentifikasi record secara unik.

o Susunan record tidak berpengaruh.

o Semua field harus "atomic", tidak dibolehkan mengandung nilai

ganda dari tipe atau maksud yang sama.

33

M23

F44

MPeter Olson 1

2M

Nina Hagen 33

F

Page 13: mySQL

Tipe Data Hal. 11

Tipe Data

Tipe data numerik

o Termasuk integer dan bilangan real

Tipe data karakter dan string

o Fixed length string

o Variable length string

Tipe data boolean

o Bernilai True/False

Tipe data enumerasi

o Diidentifikasikan oleh sekumpulan nilai

Tipe data tanggal / waktu

Defenisi Tipe Data

o Tabel dikenali dari namanya dan himpunan elemen data.

o Tiap elemen mempunyai nama dan tipe spesifikasi.

Macam-macam tipe data :

o Number

Nilai numerik dengan ketepatan maksimum 38 digit.o Varchar2(n)

Untuk menyimpan data karakter maksimum sampai dengan 32767 karakter, dimana n merupakan jumlah maksimum karakter.

o Char

Page 14: mySQL

Tipe Data Hal. 12

Sama dengan Varchar2, tetapi nilai yang kosong tetap diisi.

o Boolean

untuk menyimpan nilai TRUE atau FALSEo Date

Untuk menyimpan data penanggalan, untuk sistem Oracle pengecekan penanggalan dilakukan dari tahun 4712 SM sampai dengan 4712 M.

Page 15: mySQL

Normalisasi Hal. 13

Normalisasi

Normalisasi basis data dapat dilihat sebagai suatu proses untuk

menguji suatu skema relasi

o Apakah termasuk pada salah satu bentuk normalisasi (normal

form) ?

o Jika tidak memenuhi bentuk normalisasi, maka akan

mendekomposisikannya menjadi bentuk normalisasi.

Bentuk normalisasi melengkapi perancang dengan:

o Kerangka kerja untuk menganalisa skema relasi berdasarkan

key dan functional dependence (FD) diantara atribut-

atributnya.

o Serangkaian test untuk menormalisasikan basis data sampai

pada derajat tertentu. Bila test ini gagal, maka relasi harus

didekomposisi. Masing-masing relasi hasil dekomposisi harus

memenuhi test normalisasi.

o Disamping itu, proses normalisasi melalui dekomposisi juga

hasus lostless atau nonadditive join, yang menjamin masalah

spurious tuple yang telah didiskusikan sebelumnya tidak

terjadi.

o Semua FD tetap tercermin pada relasi-relasi hasil dekomposisi

Bentuk-bentuk normalisasi yang dikenal :

o First Normal Form ( 1 NF )

o Second Normal Form ( 2 NF )

o Third Normal Form ( 3 NF )

o BC Normal Form (BCNF)

Page 16: mySQL

Normalisasi Hal. 14

o Fourth Normal form ( 4 NF)

o Fifth Normal Form (5 NF)

Pembentukan normalisasi :

o 1 NF, 2 NF, 3 NF serta BCNF dibentuk berdasarkan FD, 4 NF

dibentuk berdasarkan multi value, dan 5 NF berdasarkan join

dependence.

o Untuk performance, normalisasi tidak perlu dilakukan sampai

derajat maksimum. Dan oleh karena itu, disini hanya dibahas

bentuk normalisasi dari 1 NF sampai BCNF.

Terminologi

o Superkey : atribut-atribut yang unik dalam suatu relasi

o Key : minimal superkey

o Candidat key : atribut yang dapat menjadi key

o Primary key : key dari relasi (key yang dipilih dari candidat

key)

o Prime atribute : atribut yang merupakan anggotan candidat key

o Nonprime atribute : atribut yang bukan anggota candidat key

Page 17: mySQL

Normalisasi Hal. 15

First normal form (1 NF) : melarang multivalued attribute &

composite attribute & kombinasi keduanya.

Second normal form (2 NF) : (full functional dependency) setiap

atribut harus tergantung pada pk secara penuh, tidak hanya tergantung

dari sebagian pk.

Third normal form (3 NF) : (transitive dependency) setiap atribut

harus tergantung langsung dengan pk, tidak melalui atribut lain yang

tergantung dengan pk.

Page 18: mySQL

Transaksi Hal. 16

Transaksi

Transaksi ialah kegiatan yang melibatkan penyimpanan basis data.

Transaksi merupakan eksekusi dari suatu program yang melibatkan

aksi akses ke dalam basis data.

Sifat-sifat transaksi, adalah :

o atomik, yaitu transaksi merupakan suatu kesatuan yang tidak

dapat dipisah-pisahkan, atau dengan kata lain suatu transaksi

harus dikerjakan sampai selesai atau tidak sama sekali.

o konsisten, yaitu hasil dari suatu transaksi akan membawa basis

data dari suatu keadaan ke keadaan lainya.

o permanen, yaitu sekali suatu transaksi mengubah basis data dan

perubahan ini sudah diterima (commit), maka perubahan ini

tidak akan hilang meskipun setelah itu terjadi kerusakan basis

data.

o isolasi, yaitu perubahan pada basis data yang dilakukan suatu

transaksi dan belum mencapai keadaan commit, tidak boleh

dapat dilihat oleh transaksi lainnya.

o serializability, yaitu jalannya beberapa transaksi secara

bersamaan harus mempunyai hasil yang sama bilamana

transaksi-transaksi tersebut berjalan secara berurutan.

transaksi yang hanya melakukan aksi pembacaan basis data, disebut

dengan read-only transaction.

lebih mudah mengatur transaksi-transaksi yang berjalan pada

komputer single-user daripada transaksi-transaksi yang berjalan pada

komputer multi-user.

Page 19: mySQL

Transaksi Hal. 17

transaksi-transaksi yang berjalan pada komputer multi-user harus

selalu dikoordinasi oleh suatu proses koordinator.

proses koordinator diperuntukkan bila transaksi-transaksi tersebut

mengakses basis data tertentu pada saat yang bersamaan.

lost-update problem, merupakan contoh daripada keadaan bilamana

transaksi-transaksi ebrjalan secara bersamaan dan mengakses basis

data yang sama.

contoh lost-update problem :

masalah lost-update problem dapat diselesaikan dengan fasilitas lock.

fasilitas lock dapat menimbulkan masalah deadlock dan masalah

livelock.

livelock, yaitu suatu transaksi yang berjalan secara normal namun

tetap tidak mengalami kemajuan didalam prosesnya, karena tidak

selalu mendapat bagiannya.

T1 T2

read_item(x)x = x - n read_item(x) x = x + mwrite_item(x)read_item(y) write_item(x)y = y + nwrite_item(y)

Page 20: mySQL

Transaksi Hal. 18

deadlock, yaitu 2 transaksi atau lebih yang saling menunggu.

masalah livelock dapat diselesaikan dengan pembagian sumber daya

yang adil, misalnya menggunakan prinsip fifo.

masalah deadlock dapat diselesaikan dengan protokol deadlock

detection atau deadlock prevention.

2-phase-locking, yaitu protokol yang digunakan untuk mengatur

penggunaan lock.

2-phase-locking terdiri dari 2 fase, pertama fase growing yaitu fase

dimana diambilnya semua lock bagi item-item yang dibutuhkan.

Kemuadian fase shrinking, yaitu fase pelepasan lock.

jalannya suatu transaksi dapat mengalami gangguan, misalnya pada

saat terjadi crash pada komputer yang digunakan.

untuk menangani masalah ini perlu adanya pencatatan status-status

jalannya suatu transaksi, yang berupa log.

log digunakan pada saat proses perbaikan (recovery) dijalankan.

operasi-operasi yang perlu dicatat pada log, yaitu :

o awal transaksi.

o operasi baca dan operas tulis.

o akhir transaksi.

o hasil transaksi diterima (commit).

Page 21: mySQL

Transaksi Hal. 19

contoh isi log :

[start_transaction, T]

[write_item, T, X, old_value, new_value]

[read_item, T, X]

[commit, T]

[end_transaction, T]

dalam log terdapat istilah check point, yaitu batas dimana proses

perbaikan melakukan aksinya.

diagram jalannya transaksi :

selesai

awaltransaksi

akhirtransaksi

bacatulis

aktif paruhsukses

sukses

telahsukses

gagal selesai

Page 22: mySQL

Diagram ER Hal. 20

Diagram ER

Entitas : suatu object dengan keberadaan fisik, misalnya mobil atau

suatu object dengan keberadaan secara konsep, misalnya perusahan.

Setiap entitas digambarkan dengan sifat-sifatnya atau atribut-

atributnya.

Setiap entitas mempunyai nilai atau tidak mempunyai nilai untuk

setiap atributnya.

atribut-atribut dari suatu entitas menggambarkan sifat-sifat entitas

yang merupakan bagian dari data yang disimpan dalam basis data.

suatu entitas mempunyai instant-instant.

single value attribute, yaitu suatu atribut yang mempunyai suatu nilai.

multi value attribute, yaitu suatu atribut yang mempunyai beberapa

nilai.

derived attribute, yaitu suatu nilai atribut yang diturunkan dari nilai

suatu atribut lainnya.

null value, yaitu atribut yang tidak mempunyai nilai.

entity type, yaitu beberapa entitas yang mempunyai atribut-atribut

yang sama.

key attribute, yaitu atribut dengan nilai yang unik.

hubungan antara entitas satu dengan entitas lainnya berupa

keterhubungan entitas (entity relationship).

hubungan antara entitas satu dengan lainya dapat secara langsung,

maupun dapat secara tidak langsung, yang mana melalui entitas

lainnya.

terdapat 2 macam tingkat keterhubungan entitas, yaitu 2 hubungan

(binary) dan 3 hubungan (ternary).

Page 23: mySQL

Diagram ER Hal. 21

binary, yaitu hubungan antara 2 entitas dengan suatu sifat tertentu.

ternary, yaitu hubungan antara 3 entitas dengan sifat tertentu.

Hubungan rekursif, yaitu suatu entitas yang mempunyai suatu

hubungan tertentu dengan dirinya sendiri.

cardinality ratio, yaitu jumlah keterhubungan instant dari suatu entitas

yang dapat berpartisipasi.

cardinality ratio dilambangkan dengan x:x.

contoh 1:n -> berkerja pada, yaitu antara entitas departemen dengan

entitas karyawan. Artinya 1 departemen memiliki minilal 1 karyawan.

Page 24: mySQL

Diagram ER Hal. 22

weak entity type, yaitu entitas yang tidak mempunyai key atribut

yang unik.

partial key, yaitu key dari weak entity type.

Contoh perancangan basis data suatu perusahan :

o Entitas-entitas :

karyawan (tgllhr, nok, jnsklm, alamat, gaji, nama

(nama, nama keluarga))

departemen (nod, nama, beberapa lokasi, turunan

jumlah karyawan untuk setiap departemen)

proyek (nop, nama, lokasi)

tanggungan (nama, jnsklm, tgllhr, hubungan)

o Keterhubungan :

mengatur : hubungan antara entitas karyawan dengan

entitas departemen, semua departemen diatur oleh 1

karyawan, tidak semua karyawan mengatur

depertemen, terdapat tanggal mulai.

bekerja untuk : hubungan antara entitas karyawan

dengan entitas departemen, semua karyawan bekerja

pada suatu departemen, semua departemen

mempunyai karyawan minimum 4 karyawan.

bekerja pada : hubungan antara entitas karyawan

dengan entitas proyek, setiap karyawan pasti bekerja

pada proyek dan setiap proyek pasti mempunyai

karyawan, seorang karyawan dapat bekerja lebih dari

1 proyek dan demikian sebaliknya, terdapat lama jam

kerja untuk setiap karyawan.

Page 25: mySQL

Diagram ER Hal. 23

mengawasi : hubungan antara entitas karyawan

dengan entitas karyawan, 1 karyawan dapat

mengawasi lebih dari seorang karyawan lainnya.

mengontrol : hubungan antara entitas departemen

dengan entitas proyek, semua proyek pasti dikontrol

oleh suatu departemen, 1 departemen dapat

mengontrol lebih dari satu proyek.

ketergantungan : hubungan antara entitas karyawan

dengan entitas tanggungan, tidak semua karyawan

mempunyai tanggungan, seorang karyawan dapat

mempunyai tanggungan lebih dari seorang.

Pemetaan ER ke relasi

Diagram ER membutuhkan pemetaan menjadi relasi basis data

sebenarnya, yang berupa tabel-tabel relasi.

pemetaan ini membutuhkan cara-cara tersendiri, ynag terdiri dari 7

langkah.

pemetaan ini akan menyajikan entitas menjadi suatu tabel.

pemetaan ini juga dapat memetakan suatu keterhubungan tertentu

menjadi suatu tabel.

Langkah 1 :

Page 26: mySQL

Diagram ER Hal. 24

Petakan entitas biasa menjadi tabel dengan semua atributnya. Untuk

suatu atribut yang terdiri dari beberapa nilai (compsite value)

dimasukkan semua nilainya menjadi atribut tersendiri, kemudian

memilih suatu atribut tertentu atau lebih sebagai key (pk).

Langkah 2 :

Weak entity dibuat tabel yang mengandung semua atributnya.

Kemudian menambahkan pk dari relasi yang mempunyai weak entity

menjadi fk. Pk dari weak entity berupa gabungan dari pk relasi pemilik

dengan partial key dari weak entity.

Langkah 3 :

Untuk keterhubungan binari 1:1, diletakkan pk dari entitas yang tidak

berpartisipasi total pada entitas yang berpartisipasi total sebagai fk.

alternatif : menggabungkan kedua entitas menjadi 1 tabel, bila keduanya

berpartisipasi total & kedua entitas tidak berpartisipasi pada

keterhubungan lainnya.

Langkah 4 :

Untuk keterhubungan binari 1:N (non weak), letakkan pk dari entitas

sisi 1 pada entitas sisi N sebagai fk.

Langkah 5 :

Page 27: mySQL

Diagram ER Hal. 25

Untuk keterhubungan binari M:N, buat relasi baru dengan pk dari kedua

entitas sebagai fk untuk membentuk pk dari relasi yang baru.

nb : relasi 1:1 & 1:N dapat dibuat relasi baru bila instant dari entitas

hanya sedikit, hal ini untuk menghilangkan nilai null pada fk.

Langkah 6 :

Untuk multivalued attribute A, dibuat relasi baru yang mana

mengandung atribut A & pk dari entitas yang berhubungan. Pk dari

relasi baru ini berupa gabungan dari atribut A & pk dari entitas yang

berhubungan

Langkah 7 :

Untuk keterhubungan N-ary (N > 2), dibuat relasi baru yang mana pk

dari relasi baru terdiri dari pk dari entitas yang berhubungan.

Page 28: mySQL

SQL - DDL Hal. 26

Structured Query Language

(SQL)

SQL

SQL ( S t ruc tured Query language ) ada l ah bahasa

fo rma l t i ngka t t i ngg i un tuk bas i s da t a r e l a s iona l .

Pada tahun 1986, ANSI (the American National Standards

Institute) mempublikasikan Standard SQL.

Variasi dari SQL banyak diimplementasikan oleh banyak vendor

pada komersial DBMS (Sybase, Ingres, Oracle, Informix).

SQL t e rd i r i da r i :

o DDL (Data Definition Language)

o DML (Data Manipulation Language)

Data Definition Language (DDL)

Mendef in i s ikan s t ruk tu r bas i s da t a

Contoh :

o Create Table

o Create View

o Drop Table

o Drop View

Definisi Data

Tipe Da ta

o Tabel dikenali dari namanya dan himpunan elemen data.

Page 29: mySQL

SQL - DDL Hal. 27

o Tiap elemen mempunyai nama dan tipe spesifikasi.

Macam-macam t ipe da t a :

o Number

Nilai numerik dengan ketepatan maksimum 38 digit.

o Varchar2(n)

Untuk menyimpan data karakter maksimum sampai dengan

32767 karakter, dimana n merupakan jumlah maksimum

karakter.

o Char

Sama dengan Varchar2, tetapi nilai yang kosong tetap diisi.

o Boolean

untuk menyimpan nilai TRUE atau FALS

o Date

Untuk menyimpan data penanggalan, untuk sistem Oracle

pengecekan penanggalan dilakukan dari tahun 4712 SM

sampai dengan 4712 M.

Membuat Tabel

Menggunakan pe r in t ah CREATE

Membuat tabel dalam current database

Menentukan batasan-batasan pada masing-masing kolom ( field)

Sin taks :

CREATE [TEMP] TABLE nama_tabel

(nama-kolom type-kolom [NOT NULL]

[{,nama-kolom type-kolom [NOT

NULL] } } ...)

Page 30: mySQL

SQL - DDL Hal. 28

Nama tabel harus unik dalam satu basis data

Nama kolom harus unik dalam satu tabel.

Beberapa kolom ditentukan "NOT NULL", berarti kolom tersebut

tidak boleh kosong.

CREATE TEMP TABEL digunakan untuk membuat tabel

sementara yang hanya ada selama dalam program.

Con toh :

CREATE TABLE petani( id varchar2(10), nama varchar2(25), alamat varchar2(100), constraint petani_pk primary key (id))

Kegia tan:

Buatlah tabel petani seperti contoh diatas pada basis data anda

masing-masing !!

Membuat Index

Sintaks :

CREATE [UNIQUE|DISTINCT] [CLUSTER] INDEX

nama-index ON

Page 31: mySQL

SQL - DDL Hal. 29

nama-tabel (nama-kolom[ASC|DESC][,...] )

Contoh :

membuat index untuk tabe l cus tomer

CREATE INDEX id_ix ON petani (id)

Kegia tan:

Buatlah index seperti contoh diatas

Fasilitas Index

UNIQUE op t ion

Untuk menghindari duplikasi (termasuk nilai NULL) pada

kolom yang diindex.

DISTINCT sinonim dengan UNIQUE yang urut secara

ascending (default).

CLUSTER op t ion

Dipakai untuk mengurutkan tabel secara fisik menurut

design index.

CREATE CLUSTER INDEX gagal bila cluster index sudah

pernah ada.

ASC option

Mengurutkan dari kecil ke besar.

ASC merupakan nilai default.

DESC op t ion

Menguru tkan da r i besa r ke kec i l .

Contoh :

Page 32: mySQL

SQL - DDL Hal. 30

mengurutkan tabel secara fisik berdasarkan zipcode

CREATE CLUSTER INDEX p_clust_ix ON petani(id)

Kegia tan:

Buatlah indeks seperti contoh di atas

Kapan Index Digunakan

Pada t ab l e dengan l eb ih da r i 200 ba r i s

Pada ko lom d imana n i l a i un ik d ipe r lukan

Pada ko lom yang banyak d igunakan da l am k lausa

WHERE

Hinda r i penggunaan l eb ih da r i 3 i ndex da l am 1 t ab l e

View

View se rupa dengan t abe l yang be r i s i kumpulan ba r i s

dan ko lom yang d ip i l i h da r i SELECT STATEMENT

Type da t a ko lom v iew d i tu runkan da r i t abe l a sa lnya .

Membuat View

Menggunakan perintah CREATE :

Membuat VIEW dari tabel yang telah ada dan untuk melakukan

views ke dalam basis data

Sintaks :

Page 33: mySQL

SQL - DDL Hal. 31

CREATE VIEW nama-view [(list-kolom)] AS SELECT statement

Contoh :

CREATE VIEW

custview(id_petani, nama_petani)

AS select id,nama

FROM petani WHERE alamat = "Jakarta"

WITH CHECK OPTION;

Kegia tan:

Buatlah view seperti contoh di atas

Jika list-kolom tidak didefinisikan, view akan menurunkan nama

kolom dari tabel asal.

Contoh :

CREATE VIEW pview AS SELECT * FROM petani

WHERE alamat = “Jakarta”

Mengubah Tabe l

Menggunakan perintah ALTER

Sintaks :

ALTER TABLE nama_tabel

{ADD (namakolombaru tipe-data

Page 34: mySQL

SQL - DDL Hal. 32

[DROP (namakolomlama [,...]) |

MODIFY (namakolomlama tipe-data

[NOT NULL][,...])

} [,...]

Contoh :

Menambah kolom city dalam tabel customer

ALTER TABLE petani (ADD zipcode CHAR(20))ALTER TABLE items MODIFY (quantity CHAR(6))ALTER TABLE DROP (zipcode)

Tabel yang dapat diubah adalah tabel milik anda sendiri atau diberi

kuasa untuk mengubah tabel tertentu.

Mengubah tabel dimana view tergantung padanya dapat merusak

view.

Kegia tan:

Rubahlah tabel petani sehingga kolom-kolomnya menjadi sbb:

Nama Kolom Tipe Kolom Panjang Kolom

id varchar2 10

nama varchar2 25

alamat varchar2 100

Page 35: mySQL

SQL - DDL Hal. 33

zipcode varchar2 25

salary number

Mengubah Index

Menggunakan perintah ALTER

Digunakan untuk mengurutkan data dalam tabel dari index yang

telah ada atau melepas index .

Sintaks :

ALTER INDEX nama-index TO [NOT] CLUSTER

Contoh :

ALTER INDEX id_ix TO CLUSTER

Kegia tan:

Rubahlah index id_ix seperti contoh di atas

ALTER INDEX hanya bekerja pada index yang dibuat dengan

CREATE INDEX, tidak akan berpengaruh bila index dibuat dengan

CREATE TABLE.

TO CLUSTER menyebabkan pengurutan ulang baris secara fisik

pada tabel.

Seluruh tabel di tulis ulang

membutuhkan waktu dan ruang pada disk untuk mengelola 2

salinan tabel.

TO NOT CLUSTER menghapus cluster pada suatu index tanpa

mempengaruhi fisik tabel.

Karena hanya diijinkan satu index cluster per tabel, anda harus

menggunakan NOT untuk menghapus index sebelum cluster

digunakan pada index lain.

Page 36: mySQL

SQL - DDL Hal. 34

Menghapus View

Menggunakan perintah DROP

Sintaks:

DROP VIEW nama-view

Contoh :

DROP VIEW custview

Kegiatan:

Hapus view custview seperti contoh di atas

Menghapus Index

Menggunakan perintah DROP :

Sintaks:

DROP INDEX nama-index

Contoh :

DROP INDEX id_ix

Kegiatan:

Hapus index id_ix seperti contoh di atas

Menghapus Tabel

Menggunakan perintah DROP

Sintaks:

DROP TABEL nama-tabel

Contoh :

DROP TABLE petani

Kegiatan:

Hapus tabel petani seperti contoh di atas

Page 37: mySQL

SQL - DML Hal. 35

Data Manipulation Language

(DML)

Manipulasi Data

Memanipulasi data dengan query

SELECT : Mengakses data

INSERT : Menambah data

UPDATE : Merubah data

DELETE : Menghapus data

SELECT

Digunakan un tuk query ( akses ) ke bas i s da t a

Sintaks :

SELECT [DISTINCT|UNIQUE] select-list

FROM {table-name [table-alias]

[WHERE condition]

[GROUP BY column-list][HAVING condition]

[ORDERS BY column-list [ASC|DESC]][,...]

[INTO TEMP table-name ]

Bentuk sede rhana da r i pe rnya taan SELECT:

SELECT select-list FROM table-list

select-list adalah daftar nama kolom, ekspresi atau

agregat.

Page 38: mySQL

SQL - DML Hal. 36

Gunakan asterisk (*) untuk memilih

semua kolom

dari suatu tabel.

table-list adalah daftar dari nama tabel

Contoh:

SELECT * FROM petani;

SELECT COUNT(*) FROM petani

SELECT nama,alamat,jenis,jml_bunga,tgl_pasok

FROM petani,memasok

WHERE petani.id = memasok.id;

SELECT nama,alamat,jenis,jml_bunga,tgl_pasok

FROM petani p,memasok m

WHERE p.id = m.id;

DISTINCT/UNIQUE

Mengaba ikan dup l ika t ba r i s da r i has i l query .

Contoh:

SELECT DISTINCT nama, alamat

FROM petani

Kegia tan:

Bandingkan hasil dari dua pernyataan berikut:

SELECT DISTINCT nama, alamat

FROM petani

SELECT nama, alamat

Page 39: mySQL

SQL - DML Hal. 37

FROM petani

WHERE

Digunakan un tuk menen tukan spes i f ikas i penca r i an

Spes i f ikas i penca r i an b i sa be rupa pe rband ingan ,

kond i s i gabungan , a t au subquery

Contoh:

SELECT * FROM petani

WHERE alamat = ‘Jakarta’;SELECT * FROM petani

WHERE alamat = ‘Jakarta’AND NOT nama = ‘Dwipo’;

Kondi s i a t au pe rband ingan yang d ipaka i :

o Operator Relasional

BETWEEN

IN

IS NULL

LIKE atau MATCHES

Operator relasional

Bentuk sede rhana da r i pe rband ingan kond i s i :

expr rel-op expr

Page 40: mySQL

SQL - DML Hal. 38

expr (ekspresi) bisa berupa:

nama kolom atau konstanta atau kombinasi dari dua hal di atas menggunakan operator aritmatika +, -, * dan /.

rel-op (operator relasional) ada beberapa macam:

= sama dengan != atau<> tidak sama dengan > lebih dari >= lebih dari atau sama dengan < kurang dari <= kurang dari atau sama dengan

Contoh:

SELECT id FROM memasok

WHERE tgl_pasok > "6/04/94"

BETWEEN

Bentuk umum:

expr [NOT] BETWEEN expr AND expr

Contoh:

SELECT * FROM memasok

WHERE tgl_pasok BETWEEN "6/1/94" AND "9/1/94"

IN

Page 41: mySQL

SQL - DML Hal. 39

Bentuk umum:

expr [NOT] IN (value-list)

Contoh:

SELECT * FROM petani

WHERE city IN ("JAKARTA","BANDUNG")

IS NULL

Bentuk umum:

column-name IS [NOT] NULL

Contoh:

SELECT id, nama FROM petani

WHERE alamat IS NULL

LIKE

Bentuk umum:

column-name [NOT] LIKE “string”

Karak te r wi ldcard be r iku t dapa t d ipaka i :

% berpadanan dengan 0 (nol) atau lebih karakter.

_ berpadanan dengan satu karakter.

\ menghilangkan arti khusus dari karakter berikutnya

Contoh:

SELECT * FROM petani

WHERE nama LIKE "%po"SELECT * FROM petani

WHERE company LIKE "%wip%"

Page 42: mySQL

SQL - DML Hal. 40

MATCHES

Bentuk umum:

column-name [NOT] MATCHES “string”

Karak te r wi ldcard be r iku t dapa t d ipaka i :

* berpadanan dengan 0 (nol) atau lebih karakter.

? berpadanan dengan satu karakter.

[...] berpadanan dengan karakter yang ada dalam tanda

kurung, termasuk karakter dalam range seperti [a-

z].

Tanda caret (^) pada karakter pertama dalam kurung

merupakan negasi.

Contoh:

[^abc] berarti sembarang karakter yang bukan a,

b atau c.\ menghilangkan arti khusus dari karakter

berikutnya.

Contoh:

SELECT * FROM petani

WHERE last_name MATCHES "*MAT"

SELECT * FROM petani

WHERE company MATCHES "*SPORT*"

Subquery

Page 43: mySQL

SQL - DML Hal. 41

SELECT dapat juga digunakan dalam WHERE, hal ini disebut

subquery.

Kata kunci untuk Subquery:

o IN

o EXISTS

o ALL/ANY/SOME

IN Subquery

Dengan IN, subquery harus menghasilkan 1 (satu) kolom tapi boleh

beberapa baris.

Contoh:

SELECT DISTINCT nama FROM petani

WHERE id NOT IN (SELECT id FROM memasok WHERE jml_bunga = 1 )

EXIST Subquery

Dengan EXIST, subquery dapat menghasilkan satu atau lebih

kolom.

Contoh:

SELECT id, nama FROM petani

WHERE NOT EXIST (SELECT stock_num,manu_code FROM items WHERE stock.stock_num = items.stock_num AND stock.manu_code = items.manu_code)

ALL/ANY/SOME Subquery

ANY, ALL atau SOME dipakai dalam subquery bila hasil yang

dikembalikan lebih dari satu.

Page 44: mySQL

SQL - DML Hal. 42

Jika ANY, ALL atau SOME diabaikan dan subquery menghasilkan

lebih dari satu nilai, maka pesan kesalahan akan muncul.

Contoh 1:

Mencari nomor orders dari semua orders yang berisi item dengan

harga total lebih besar dari total harga dari setiap items dengan

nomor orders 1023.

SELECT DISTINCT orders_num FROM items WHERE total_price > ALL ( SELECT total_price FROM items WHERE orders_num = 1023)

Contoh 2:

Mengunakan fungsi agregat MAX (hasilnya sama dengan

contoh1).

SELECT DISTINCT orders_num FROM items WHERE total_price > SELECT MAX(total_price)FROM items WHERE orders_num = 1023)

Contoh 3:

Mencari nomor orders dari semua orders yang berisi item dengan

harga total lebih besar dari harga total paling sedikit satu item

dengan nomor orders 1023.

SELECT DISTINCT orders_num FROM items WHERE total_price > ANY ( SELECT total_price FROM items WHERE orders_num = 1023)

Contoh 4:

Page 45: mySQL

SQL - DML Hal. 43

Mengunakan fungsi agregat MIN (hasilnya sama dengan

contoh3).

SELECT DISTINCT orders_num FROM items WHERE total_price > SELECT MIN(total_price) FROM items WHERE orders_num = 1023 )

Contoh 2 dan contoh 4 diatas hanya mengembalikan satu nilai karena

menggunakan fungsi agregat.

GROUP BY

GROUP BY digunakan untuk membentuk group dari baris yang

mempunyai nilai yang sama untuk tiap-tiap kolom yang diminta.

Jika menggunakan GROUP BY, tiap kolom yang di tulis dalam

SELECT harus ada dalam GROUP BY list.

Jika fungsi agregat dipakai dan satu atau lebih ekspresi kolom dalam

SELECT, maka semua kolom yang tidak berupakan bagian fungsi

agregat atau ekspresi waktu dipakai dalam GROUP BY.

Contoh:

SELECT orders_num, COUNT(*), SUM(total_price)

FROM items

GROUP BY orders_num

Page 46: mySQL

SQL - DML Hal. 44

HAVING

HAVING digunakan untuk memberikan kondisi klasifikasi pada

group.

Contoh:

SELECT orders_num, AVG(total_price)

FROM items

GROUP BY orders_num

HAVING COUNT(*) > 2

Mencari harga rata-rata dari semua value dalam tabel, selama

ada lebih dari 10 baris dalam tabel.

SELECT AVG(total_price) FROM items

HAVING COUNT(*) > 10

Page 47: mySQL

SQL - DML Hal. 45

ORDER BY

ORDER BY digunakan untuk sorting hasil query menurut nilai yang

ada dalam satu atau lebih kolom.

Hasil query hanya dapat diurutkan oleh kolom atau ekspresi yang

berisi ekspresi kolom yang disebutkan dalam SELECT.

Fungsi agregat tidak dapat digunakan dalam ORDER BY.

Contoh:

Menampilkan tanggal pemesanan dan tanggal pengiriman dari

tabel orders dan menyusunnya berdasarkan tanggal pemesanan.

Default urutannya adalah dari kecil ke besar (ascending).

SELECT orders_date, ship_date FROM orders

orders BY orders_date

Lain-lain

ASC akan mengurutkan data dari kecil ke besar, DESC akan

mengurutkan data dari besar ke kecil.

Nilai NULL dianggap nilai terkecil daripada nilai non NULL.

Fungsi agregat tidak dapat digunakan dalam subquery.

INSERT

Tujuan :

Untuk menambah satu atau lebih baris ke tabel.

Page 48: mySQL

SQL - DML Hal. 46

Sintaks :

INSERT INTO table-name [(column-list)]

{VALUES (value-list) | SELECT-statement}

table-name dapat berupa tabel dan view.

Kata NULL berarti kolom berisi nilai NULL.

Pemakai dapat menambah baris data dari hasil perintah SELECT

tabel lain.

FROM clause dari SELECT tidak boleh tabel yang sama dengan

tabel yang akan disisipkan.

Contoh :

INSERT INTO petani

VALUES (0,"NADIA", "BROADAM", "SKY & STUFF", "89 CONISTON ROAD", NULL,"SHORTHILLS", "NJ", "07079", "201-457-4100")

INSERT INTO newitems

SELECT item_num,orders_num,quantity,stock_num, manu_code,total_price FROM items

Page 49: mySQL

SQL - DML Hal. 47

UPDATE

Tujuan :

Digunakan untuk mengubah isi kolom satu atau lebih baris dari

suatu tabel atau view

Sintaks :

UPDATE table-name SET column-name = expr[,...]

[ WHERE condition ]

UPDATE table-name {(column-list|* }= (expr-list)

[ WHERE condition

table-name dapat berupa tabel atau view

Jika WHERE clause diabaikan maka seluruh baris dari tabel akan

diubah.

Contoh :

UPDATE customer

SET address1 = "111 ALDER COURT", city = "PALO ALTO", WHERE customer_num = 103

UPDATE stock

SET unit_price = unit_price * 1.07

UPDATE customer

SET (fname,lname) = ("JOHN","DOE") WHERE cusomer_num = 101

DELETE

Page 50: mySQL

SQL - DML Hal. 48

Tujuan :

Untuk menghapus satu atau lebih baris dari tabel

Sintaks :

DELETE FROM table-name [ WHERE condition ]

Jika WHERE clause diabaikan, semua baris dalam tabel akan terhapus.

Kondisi pada WHERE sama dengan yang berlaku pada SELECT

Contoh :

DELETE FROM items WHERE orders_num < 1034

Metode Penggabungan Lain

UNION

Mengembalikan semua baris dari dua query berbeda, tanpa

duplikasi

Contoh:

SELECT job

FROM emp

WHERE deptno = 10

UNION

SELECT job

FROM emp

WHERE deptno = 30;

Metode ... (lanjutan)

INTERSECT

Mengembalikan baris yang memenuhi permintaan dari 2 query

Page 51: mySQL

SQL - DML Hal. 49

Contoh:

SELECT job

FROM emp

WHERE deptno = 10

INTERSECT

SELECT job

FROM emp

WHERE deptno = 30;

MINUS

Mengembalikan baris yang ada pada query pertama dan tidak

termasuk dalam query kedua

Contoh:

SELECT job

FROM emp

WHERE deptno = 10

MINUS

SELECT job

FROM emp

WHERE deptno = 30;