You are on page 1of 55

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
Konsep Dasar Basis Data Hal. 2

Konsep Dasar Basis Data


Konsep Dasar Basis Data Hal. 3

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.
Konsep Dasar Basis Data Hal. 4

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


User/Programmers

DATABASE
SYSTEM
Applications Programs/Queries
A

DBMS
SOFTWARE
Software To Process
Querries/Programs

Software To Access
Stored Data

Stored Database
Definition Stored
(META -DATA) Database
Konsep Dasar Basis Data Hal. 5

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
- 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.
Konsep Dasar Basis Data Hal. 6

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

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)
External/conceptual mapping

Conceptual Conceptual View  skema relasi


(conceptual level)
Conceptual/internal mapping

Physical 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 DBMS
Mis : Microsoft Access, dBase
Konsep Dasar Basis Data Hal. 7
Basis Data Relasional Hal. 8

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


Basis Data Relasional Hal. 9

- 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).
Basis Data Relasional Hal. 10

- 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
Basis Data Relasional Hal. 11

- 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 Smith
Ursula Peters
Morton Berger
Basis Data Relasional Hal. 12
33 M
23 F
44 M
Peter Olson 12 M
Nina Hagen 33 F
tabel 1.1.
Table 1 terdiri dari 3 kolom.

Kolom disebut sebagai field dan baris field disebut record.


Contoh Field : Nama , Umur, dan Sex
Contoh 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.


Tipe Data Hal. 13

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
Tipe Data Hal. 14

 Sama dengan Varchar2, tetapi nilai yang kosong tetap


diisi.
o Boolean
 untuk menyimpan nilai TRUE atau FALSE
o Date
 Untuk menyimpan data penanggalan, untuk sistem
Oracle pengecekan penanggalan dilakukan dari tahun
4712 SM sampai dengan 4712 M.
Normalisasi Hal. 15

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)


Normalisasi Hal. 16

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


Normalisasi Hal. 17

− 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.
Transaksi Hal. 18

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.
Transaksi Hal. 19

− 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 :

T1 T2

read_item(x)
x=x-n
read_item(x)
x=x+m
write_item(x)
read_item(y)
write_item(x)
y=y+n
write_item(y)

− 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.
Transaksi Hal. 20

− 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).
Transaksi Hal. 21

− 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 :

baca
tulis

awal
akhir
transaksi telah
transaksi
sukses
aktif paruh sukses
sukses

gagal selesai selesai


Diagram ER Hal. 22

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.
Diagram ER Hal. 23

− terdapat 2 macam tingkat keterhubungan entitas, yaitu 2 hubungan


(binary) dan 3 hubungan (ternary).
− 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.
Diagram ER Hal. 24

− 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.
Diagram ER Hal. 25

 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 :
Diagram ER Hal. 26

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 :
Diagram ER Hal. 27

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.
SQL - DDL Hal. 28

Structured Query Language


(SQL)
SQL
− S Q L ( S t r u c t u re d Q u e r y l a n g u a g e ) a d a l a h b a h a s a
formal tingkat tinggi untuk basis data relasional.
− 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 terdiri dari :

o DDL (Data Definition Language)

o DML (Data Manipulation Language)

Data Definition Language (DDL)


− Mendefinisikan struktur basis data
− Contoh :

o Create Table
o Create View
o Drop Table
o Drop View

Definisi Data
− Ti p e D a t a
SQL - DDL Hal. 29

o Tabel dikenali dari namanya dan himpunan elemen data.


SQL - DDL Hal. 30

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

M e m b u a t Ta b e l
− M e n g g u n a k a n p e r i n t a h C R E AT E

− Membuat tabel dalam current database

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

− Sintaks :
CREATE [TEMP] TABLE nama_tabel
(nama-kolom type-kolom [NOT NULL]
[{,nama-kolom type-kolom [NOT NULL] } }
...)
SQL - DDL Hal. 31

− 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.
Contoh :
CREATE TABLE petani(
id varchar2(10),
nama varchar2(25),
alamat varchar2(100),
constraint petani_pk primary key (id)
)

Kegiatan:
Buatlah tabel petani seperti contoh diatas pada basis data anda
masing-masing !!

M e m b u a t In d e x
Sintaks :
CREATE [UNIQUE|DISTINCT] [CLUSTER] INDEX
nama-index ON
SQL - DDL Hal. 32

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

Contoh :
membuat index untuk tabel customer
CREATE INDEX id_ix ON petani (id)

Kegiatan:
Buatlah index seperti contoh diatas

Fa s i l i t a s I n d e x
− UNIQUE option

Untuk menghindari duplikasi (termasuk nilai NULL) pada


kolom yang diindex.
− DISTINCT sinonim dengan UNIQUE yang urut secara
ascending (default).
− CLUSTER option

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 option
Mengurutkan dari besar ke kecil.
Contoh :
SQL - DDL Hal. 33

mengurutkan tabel secara fisik berdasarkan zipcode


CREATE CLUSTER INDEX p_clust_ix ON petani(id)

Kegiatan:
Buatlah indeks seperti contoh di atas

K a p a n In d e x D i gu n a ka n
− Pada table dengan lebih dari 200 baris
− Pada kolom dimana nilai unik diperlukan
− Pada kolom yang banyak digunakan dalam klausa
WHERE
− Hindari penggunaan lebih dari 3 index dalam 1 table

Vi e w
− Vi e w s e r u p a d e n g a n t a b e l y a n g b e r i s i k u m p u l a n b a r i s
d a n k o l o m y a n g d i p i l i h d a r i S E L E C T S TAT E M E N T
− Ty p e d a t a k o l o m v i e w d i t u r u n k a n d a r i t a b e l a s a l n y a .

M e m b u a t Vi e w
− Menggunakan perintah CREATE :

− Membuat VIEW dari tabel yang telah ada dan untuk melakukan
views ke dalam basis data
SQL - DDL Hal. 34

Sintaks:
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;

Kegiatan:
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”

M e n g u b a h Ta b e l
− Menggunakan perintah ALTER
Sintaks :
ALTER TABLE nama_tabel
{ADD (namakolombaru tipe-data
SQL - DDL Hal. 35

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

Kegiatan:
Rubahlah tabel petani sehingga kolom-kolomnya menjadi sbb:

Nama Kolom Tipe Kolom Panjang Kolom


id varchar2 10
nama varchar2 25
alamat varchar2 100
SQL - DDL Hal. 36

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
Kegiatan:
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.
SQL - DDL Hal. 37

− Karena hanya diijinkan satu index cluster per tabel, anda harus
menggunakan NOT untuk menghapus index sebelum cluster
digunakan pada index lain.
M e n g h a p u s Vi e w
− 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 :
SQL - DDL Hal. 38

DROP TABLE petani


Kegiatan:
Hapus tabel petani seperti contoh di atas
SQL - DML Hal. 39

Data Manipulation Language


(DML)

Ma n i pu l a s i D a t a
Memanipulasi data dengan query
− SELECT : Mengakses data

− INSERT : Menambah data

− UPDATE : Merubah data

− DELETE : Menghapus data

SELECT
− Digunakan untuk query (akses) ke basis data
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 sederhana dari pernyataan SELECT:


SQL - DML Hal. 40

SELECT select-list FROM table-list


− select-list adalah daftar nama kolom, ekspresi atau
agregat.
• 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
− Mengabaikan duplikat baris dari hasil query.

Contoh:
SQL - DML Hal. 41

SELECT DISTINCT nama, alamat


FROM petani
Kegiatan:
Bandingkan hasil dari dua pernyataan berikut:
SELECT DISTINCT nama, alamat
FROM petani
SELECT nama, alamat
FROM petani

WHERE
− Digunakan untuk menentukan spesifikasi pencarian
− Spesifikasi pencarian bisa berupa perbandingan,
kondisi gabungan, atau subquery

Contoh:
SELECT * FROM petani
WHERE alamat = ‘Jakarta’;
SELECT * FROM petani
WHERE alamat = ‘Jakarta’
AND NOT nama = ‘Dwipo’;
SQL - DML Hal. 42

− Kondisi atau perbandingan yang dipakai:

o Operator Relasional

 BETWEEN

 IN

 IS NULL

 LIKE atau MATCHES

O p e ra t or r e l a s i on a l

− Bentuk sederhana dari perbandingan kondisi:

expr rel-op expr

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
SQL - DML Hal. 43

< 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
Bentuk umum:
expr [NOT] IN (value-list)
SQL - DML Hal. 44

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”
K a r a k t e r w i l d c a rd b e r i k u t d a p a t d i p a k a i :
% berpadanan dengan 0 (nol) atau lebih karakter.
_ berpadanan dengan satu karakter.
\ menghilangkan arti khusus dari karakter berikutnya
Contoh:
SQL - DML Hal. 45

SELECT * FROM petani


WHERE nama LIKE "%po"
SELECT * FROM petani
WHERE company LIKE "%wip%"

MATCHES
Bentuk umum:
column-name [NOT] MATCHES “string”
K a r a k t e r w i l d c a rd b e r i k u t d a p a t d i p a k a 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
SQL - DML Hal. 46

WHERE last_name MATCHES "*MAT"

SELECT * FROM petani


WHERE company MATCHES "*SPORT*"
Subquery

− 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
SQL - DML Hal. 47

− 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.
− 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:
SQL - DML Hal. 48

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:
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 )
SQL - DML Hal. 49

− 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

HAVING
− HAVING digunakan untuk memberikan kondisi klasifikasi pada
group.

Contoh:
SQL - DML Hal. 50

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

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
SQL - DML Hal. 51

− 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.
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",
SQL - DML Hal. 52

"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
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",
SQL - DML Hal. 53

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

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
SQL - DML Hal. 54

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
Contoh:
SELECT job
FROM emp
SQL - DML Hal. 55

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;

You might also like