Materi : 1. 2. 3. 4. 5. 6. 7. 8.

Konsep Dasar Basis Data Basis Data Relasional Tipe Data Normalisasi Transaksi Diagram Relasi Entitas (ERD) Structured Query Language - DDL 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 Komputer). - Batasan : Basis data relasional. - Faktor kunci dalam keberhasilan basis data relasional adalah standarisasi o spesification standard
o user interface standard.

pemanfaatan

SIBK

(Sistem

Informasi

Berbasis

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. adalah terletak pada "cara akses" dan "cara perekaman".

- Perbedaan mendasar antara basis data dengan data pada umumnya

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 bermacammacam 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 (META -DATA)

Stored Database

Konsep Dasar Basis Data

Hal. 5

Tujuan Basis Data
-

Efisiensi ruang penyimpanan data dan waktu o Informasi yang disajikan memiliki ketepatan yang tinggi dan selalu up-to-date

- Accuracy

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

kemampuan

basis

data

untuk

kemungkinan

pengembangan.

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)
Conceptual Conceptual/internal mapping Physical

External/conceptual mapping

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 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 Mesin PC Developer tools Terintegrasi end berbeda) Nontraditional PC, Mini Dapat terpisah

(Front end dan back-

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 John Smith Ursula Peters Morton Berger

Umur

Sex

Basis Data Relasional

Peter Olson Nina Hagen tabel 1.1.

33 23 44 12 33

M F M M F

Hal. 12

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 atributatributnya. 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 read_item(x) x=x-n

T2

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 transaksi aktif

akhir transaksi paruh sukses

telah 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 atributatributnya. − 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 id nama alamat varchar2

Panjang Kolom 10 varchar2 varchar2 25 100

SQL - DDL

Hal. 36

zipcode salary

varchar2

25 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 − INSERT − UPDATE − DELETE : Mengakses data : Menambah data : Merubah data : 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 [az]. 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, orders BY orders_date Lain-lain ship_date FROM orders

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 WHERE UNION SELECT job FROM WHERE emp deptno = 30; emp deptno = 10

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 WHERE emp deptno = 30;

MINUS Mengembalikan baris yang ada pada query pertama dan tidak termasuk dalam query kedua Contoh: SELECT job FROM WHERE MINUS SELECT job FROM WHERE emp deptno = 30; emp deptno = 10

Sign up to vote on this title
UsefulNot useful