1
3
Arsitektur Client/ServerArsitektur Client/Server Menggunakan LAN Menggunakan LAN
untuk mendukung untuk mendukung jaringan PCjaringan PC
Masing-masing PC Masing-masing PC memiliki memiliki penyimpan penyimpan tersendiri tersendiri
Berbagi hardware Berbagi hardware atau softwareatau software
Server
Printer
Client Jaringan
Basis Data
Client
4
Arsitektur File ServerArsitektur File Server Model pertama Client/ServerModel pertama Client/Server Semua pemrosesan dilakukan pada sisi Semua pemrosesan dilakukan pada sisi
workstationworkstation Satu atau beberapa server Satu atau beberapa server
terhubungkan dalam jaringanterhubungkan dalam jaringan Server bertindak sebagai file serverServer bertindak sebagai file server File server bertindak sebagai File server bertindak sebagai
pengelola file dan memungkinkan pengelola file dan memungkinkan klien mengakses file tersebutklien mengakses file tersebut
5
Arsitektur File Server Arsitektur File Server (Lanjutan…)(Lanjutan…)
Setiap klien Setiap klien dilengkapi DBMS dilengkapi DBMS tersendiritersendiri
DBMS berinteraksi DBMS berinteraksi dengan data yang dengan data yang tersimpan dalam bentuk tersimpan dalam bentuk file pada serverfile pada server
Aktivitas pada klien:Aktivitas pada klien: Meminta dataMeminta data Meminta penguncian dataMeminta penguncian data
Tanggapan dari klienTanggapan dari klien Memberikan dataMemberikan data Mengunci data dan Mengunci data dan
memberikan statusnyamemberikan statusnya
LAN
Permintaan dataPermintaan penguncian data
• Permintaan data
• Status penguncian
Klien Klien Klien
File Server
6
Batasan File ServerBatasan File Server Beban jaringan tinggi karena tabel yang Beban jaringan tinggi karena tabel yang
diminta akan diserahkan oleh file diminta akan diserahkan oleh file server ke klien melalui jaringanserver ke klien melalui jaringan
Setiap klien harus memasang DBMS Setiap klien harus memasang DBMS sehingga mengurangi memorisehingga mengurangi memori
Klien harus mempunyai kemampuan proses Klien harus mempunyai kemampuan proses tinggi untuk mendapatkan tinggi untuk mendapatkan response timeresponse time yang bagusyang bagus
Salinan DBMS pada setiap klien harus Salinan DBMS pada setiap klien harus menjaga integritas databasse yang menjaga integritas databasse yang dipakai secara bersama-sama dipakai secara bersama-sama tanggung tanggung jawab diserahkan kepada jawab diserahkan kepada programmerprogrammer
7
Arsitektur Database Arsitektur Database ServerServer
Klien bertanggung jawab dalam Klien bertanggung jawab dalam mengelola antar muka pemakai mengelola antar muka pemakai (mencakup logika penyajian (mencakup logika penyajian data, logika pemrosesan data, data, logika pemrosesan data, logika aturan bisnis)logika aturan bisnis)
Database serverDatabase server bertanggung jawab bertanggung jawab pada penyimpana, pengaksesan, pada penyimpana, pengaksesan, dan pemrosesan databasedan pemrosesan database
8
Arsitektur Database Server Arsitektur Database Server (Lanjutan…)(Lanjutan…)
Data yang diminta saja
Database serverlah Database serverlah yang dituntut memiliki yang dituntut memiliki kemampuan pemrosesan kemampuan pemrosesan yang tinggiyang tinggi
Beban jaringan menjadi Beban jaringan menjadi berkurangberkurang
Otentikasi pemakai, Otentikasi pemakai, pemeriksaan integrasi, pemeriksaan integrasi, pemeliharaan data pemeliharaan data dictionary dilakukan dictionary dilakukan pada database serverpada database server
Database server Database server merupakan implementasi merupakan implementasi dari dari two-tier architecturetwo-tier architecture
LAN
Permintaan data
Klien Klien Klien
Database Server
9
Application Application ArchitecturesArchitectures
Two-tier architecture: Contoh - program klien menggunakan ODBC/JDBC untuk berkomunikasi dengan database
Three-tier architecture: Contoh aplikasi berbasis Web
10
Contoh Two-Tier Contoh Two-Tier ArchitectureArchitecture
ProgramVisual BASIC
DatabaseServerMySQL
MyODBC
11
Contoh Three-tier Contoh Three-tier ArchitectureArchitecture
Klien
Server
M iddleware
(ASP, JSP, PHP, dsb)
Database (Access, Oracle, dsb)
W eb Server
(Apache, IIS, Xitam i, dsb)
Internet
Browser (Internet Explorer,
Netscape,dsb)
Perm intaan Tanggapan
12
Three-Tier ArchitectureThree-Tier Architecture Melibatkan Melibatkan
lapisan lapisan server yang server yang lain selain lain selain lapisan lapisan database database serverserver
LAN
Lapisan Klien
Database Server
Lapisan Bisnis
Lapisan Database
Application Server
13
Beberapa Keuntungan Beberapa Keuntungan Arsitektur Three-TierArsitektur Three-Tier
Keluwesan teknologiKeluwesan teknologi Mudah untuk mengubah Mudah untuk mengubah DBMS engineDBMS engine Memungkinkan pula Memungkinkan pula middle tiermiddle tier ke platform yang ke platform yang
berbedaberbeda Biaya jangka panjang yang rendahBiaya jangka panjang yang rendah
Perubahan-perubahan cukup dilakukan pada Perubahan-perubahan cukup dilakukan pada middle tiermiddle tier daripada pada aplikasi keseluruhan daripada pada aplikasi keseluruhan
Keunggulan kompetitifKeunggulan kompetitif Kekampuan untuk bereaksi thd perubahan Kekampuan untuk bereaksi thd perubahan
bisnis dengan cepat, dengan cara mengubah bisnis dengan cepat, dengan cara mengubah modul kode daripada mengubah keseluruhan modul kode daripada mengubah keseluruhan aplikasiaplikasi
14
MiddlewareMiddleware S/W yang memungkinkan aplikasi S/W yang memungkinkan aplikasi
berhubungan dengan S/W lain berhubungan dengan S/W lain tanpa memerlukan pengetahuan tanpa memerlukan pengetahuan pemakai terhadap kode yang pemakai terhadap kode yang diperlukan agar diperlukan agar interoperatibiltas tercapaiinteroperatibiltas tercapai
Implementasinya bisa berupa API Implementasinya bisa berupa API ((Application Program InterfaceApplication Program Interface))
15
ODBCODBC ODBC (ODBC (open database connectivityopen database connectivity) )
adalah suatu adalah suatu middlewaremiddleware berbasis berbasis Windows yang digunakan untuk Windows yang digunakan untuk berinteraksi denga berbagai berinteraksi denga berbagai databasedatabase
16
Contoh Menguji ODBCContoh Menguji ODBC Klik tombol Start Klik tombol Start
().(). Klik pada Control Klik pada Control
Panel.Panel. Klik pada Klik pada
Administrative Administrative Tools.Tools.
Klik ganda pada Klik ganda pada Data Source Data Source (ODBC).(ODBC).
17
Klik pada Klik pada System DSN.System DSN.
Klik pada Klik pada Add...Add.....
Pilih pada Pilih pada MySQL ODBC MySQL ODBC 3.5.13.5.1
Contoh Menguji ODBC Contoh Menguji ODBC (Lanjutan…)(Lanjutan…)
18
Klik tombol Klik tombol Finish.Finish.
Contoh Menguji ODBC Contoh Menguji ODBC (Lanjutan…)(Lanjutan…)
19
Ketikkan MySQL pada Ketikkan MySQL pada Data Source Name.Data Source Name.
Ketikkan 127.0.0.1 Ketikkan 127.0.0.1 pada Server.pada Server.
Ketikkan root pada Ketikkan root pada User.User.
Ketikkan rahasia Ketikkan rahasia pada Password.pada Password.
Pilih pegawai pada Pilih pegawai pada Database.Database.
Klik tombol Test.Klik tombol Test.
Contoh Menguji ODBC Contoh Menguji ODBC (Lanjutan…)(Lanjutan…)
20
Pemanfaatan ODBC pada Pemanfaatan ODBC pada VB6VB6
Function KoneksiMySQL(Conn As ADODB.Connection, _Function KoneksiMySQL(Conn As ADODB.Connection, _ Server As String, _Server As String, _ Database As String, _Database As String, _ User As String, Password As String) As User As String, Password As String) As
BooleanBoolean 'Koneksi ke database MySQL'Koneksi ke database MySQL Conn.ConnectionString = "DRIVER={MySQL ODBC 3.52 Driver};" & _Conn.ConnectionString = "DRIVER={MySQL ODBC 3.52 Driver};" & _ "SERVER=" & Server & ";" & _"SERVER=" & Server & ";" & _ "DATABASE=" & Database & ";" & _"DATABASE=" & Database & ";" & _ "UID=" & User & "; PWD=" & _"UID=" & User & "; PWD=" & _ PasswordPassword On Error Resume NextOn Error Resume Next Conn.OpenConn.Open On Error GoTo 0On Error GoTo 0 KoneksiMySQL = (Err.Number = 0)KoneksiMySQL = (Err.Number = 0) End FunctionEnd Function
21
JDBCJDBC JDBC (Java Database JDBC (Java Database
Connectivity) memungkinkan Connectivity) memungkinkan applet mengakses databaseapplet mengakses database
Bisa digunakan pada JSPBisa digunakan pada JSP
22
Query-By-Example (QBE)Query-By-Example (QBE) Suatu tool yang Suatu tool yang
memungkinkan memungkinkan pengaksesan pengaksesan database secara database secara lansung lansung menggunakan menggunakan pendekatan pendekatan grafisgrafis
23
InternetInternet Internet merupakan contoh Internet merupakan contoh jaringan jaringan
terbesarterbesar yang menghubungkan jutaan yang menghubungkan jutaan komputer yang tersebar di seluruh komputer yang tersebar di seluruh penjuru dunia dan tak terikat pada satu penjuru dunia dan tak terikat pada satu organisasipunorganisasipun
Siapa saja dapat bergabung pada Siapa saja dapat bergabung pada InternetInternet
Dengan menggunakan jaringan ini, sebuah Dengan menggunakan jaringan ini, sebuah organisasi dapat melakukan organisasi dapat melakukan pertukaran pertukaran informasiinformasi secara internal ataupun secara internal ataupun melakukan pertukaran informasi secara melakukan pertukaran informasi secara eksternal dengan organisasi-organisasi eksternal dengan organisasi-organisasi yang lainyang lain
24
InternetInternet Jaringan Jaringan
tersusun tersusun atas atas berbagai berbagai jenis jenis komputer komputer dan sistem dan sistem operasioperasi
25
World Wide WebWorld Wide Web Sistem pengaksesan informasi dalam Sistem pengaksesan informasi dalam
Internet yang paling terkenal dan biasa Internet yang paling terkenal dan biasa dikenal dengan istilah dikenal dengan istilah WebWeb
Web menggunakan protokol yang disebut Web menggunakan protokol yang disebut HTTPHTTP ( (HyperText Transfer ProtocolHyperText Transfer Protocol))
Dokumen Web ditulis dalam format Dokumen Web ditulis dalam format HTMLHTML ((HyperText Markup LanguageHyperText Markup Language))
Dokumen ini diletakkan dalam Web server Dokumen ini diletakkan dalam Web server dan diakses oleh klien (Pengakses dan diakses oleh klien (Pengakses informasi) melalui perangkat lunak yang informasi) melalui perangkat lunak yang disebut disebut Web browserWeb browser atau sering disebut atau sering disebut browserbrowser saja saja
26
e-Businesse-Business Penggunaan teknologi Internet Penggunaan teknologi Internet
untuk menghubungkan dan untuk menghubungkan dan memperkuat proses-proses bisnis, memperkuat proses-proses bisnis, perdagangan elektronis (perdagangan elektronis (electronic electronic commercecommerce atau e-commerce), dan atau e-commerce), dan komunikasi serta kolaborasi antar komunikasi serta kolaborasi antar sebuah perusahaan dengan para sebuah perusahaan dengan para pelanggan, pemasok, dan mitra pelanggan, pemasok, dan mitra kerja bisnis elektronis lainnyakerja bisnis elektronis lainnya (O’Brien)(O’Brien)
28
Aplikasi Komunikasi dan Aplikasi Komunikasi dan Kolaborasi PerusahaanKolaborasi Perusahaan
Digunakan untuk mendukung komunikasi, Digunakan untuk mendukung komunikasi, koordinasi, dan kolaborasi para koordinasi, dan kolaborasi para anggota tim bisnis dalam perusahaananggota tim bisnis dalam perusahaan
Contoh, para pegawai dan konsultan Contoh, para pegawai dan konsultan yang terlibat dalam sebuah proyek yang terlibat dalam sebuah proyek bisa menggunakan jaringan Internet, bisa menggunakan jaringan Internet, Intranet, atau bahkan Extranet untuk Intranet, atau bahkan Extranet untuk saling berkomunikasisaling berkomunikasi
Komponen pendukung: e-mail, v-mail, Komponen pendukung: e-mail, v-mail, forum diskusi, sistem chat, forum diskusi, sistem chat, konferensi suara dan video, sistem konferensi suara dan video, sistem pertemuan elektronispertemuan elektronis
29
Aplikasi Bisnis InternalAplikasi Bisnis Internal Digunakan untuk mendukung Digunakan untuk mendukung
kegiatan, proses, dan operasi kegiatan, proses, dan operasi bisnis yang bersifat internal bisnis yang bersifat internal bagi perusahaanbagi perusahaan
Contoh:Contoh: Pemrosesan transaksi internalPemrosesan transaksi internal Enterprise information portalEnterprise information portal Sistem pendukung manajemenSistem pendukung manajemen
30
E-CommerceE-Commerce Aplikasi perdagangan elektronis Aplikasi perdagangan elektronis
digunakan untuk mendukung kegiatan digunakan untuk mendukung kegiatan pembelian dan penjualan, pemasaran pembelian dan penjualan, pemasaran produk, jasa, dan informasi melalui produk, jasa, dan informasi melalui InternetInternet
Contoh penerapan:Contoh penerapan: Electronic Funds TransferElectronic Funds Transfer (EFT) (EFT) Lelang onlineLelang online
31
E-CommerceE-Commerce E-E-
commerce commerce dibagi dibagi menjadi menjadi dua dua jenis: jenis: B2B danB2B dan B2CB2C
32
B2B (B2B (Business-to-BusinessBusiness-to-Business)) Menyatakan penjualan produk atau Menyatakan penjualan produk atau
jasa yang melibatkan jasa yang melibatkan antarperusahaan dan dilakukan antarperusahaan dan dilakukan dengan sistem otomasidengan sistem otomasi
Umumnya perusahaan yang terlibat Umumnya perusahaan yang terlibat adalah pemasok, distributor, adalah pemasok, distributor, pabrik, tokok, dan lain-lainpabrik, tokok, dan lain-lain
Kebanyakan transaksi berlangsung Kebanyakan transaksi berlangsung secara langsung antara dua sistemsecara langsung antara dua sistem
33
Keuntungan B2B, jika dikerjakan Keuntungan B2B, jika dikerjakan dengan benar, dapat menghemat dengan benar, dapat menghemat biaya, meningkatkan pendapatan, biaya, meningkatkan pendapatan, memberikan pengiriman yang memberikan pengiriman yang lebih cepat, mengurangi biaya lebih cepat, mengurangi biaya administrasi, dan meningkatkan administrasi, dan meningkatkan layanan kepada pelanggan layanan kepada pelanggan (Karper dan Ellis)(Karper dan Ellis)
B2B (B2B (Business-to-BusinessBusiness-to-Business) ) (Lanjutan)(Lanjutan)
34
B2C (B2C (Business-to-ConsumerBusiness-to-Consumer)) Melibatkan interaksi dan Melibatkan interaksi dan
transaksi antara sebuah transaksi antara sebuah perusahaan dengan para pelangganperusahaan dengan para pelanggan
Keunggulan B2C dibandingkan Keunggulan B2C dibandingkan dengan penjualan konvensional dengan penjualan konvensional melalui toko fisik adalah melalui toko fisik adalah memungkinkan layanan selama 24 memungkinkan layanan selama 24 jamjam
35
Aplikasi WebAplikasi Web Aplikasi Web dapat dibagi Aplikasi Web dapat dibagi
menjadi 2 macam:menjadi 2 macam:1.1. Web Statis danWeb Statis dan2.2. Web DinamisWeb Dinamis
36
Web StatisWeb Statis Web statis dibentuk dengan Web statis dibentuk dengan
menggunakan HTML sajamenggunakan HTML saja Kekurangan Web statis terletak Kekurangan Web statis terletak
pada keharusan untuk memelihara pada keharusan untuk memelihara halaman Web secara terus-halaman Web secara terus-menerus setiap ada perubahan menerus setiap ada perubahan informasiinformasi
37
Web DinamisWeb Dinamis Isi halaman bersifat dinamis, dapat mengikuti Isi halaman bersifat dinamis, dapat mengikuti
perubahan isi perubahan isi databasedatabase Pengertian Web dinamis terkadang diartikan Pengertian Web dinamis terkadang diartikan
sebagai halaman Web yang dilengkapi dengan sebagai halaman Web yang dilengkapi dengan gambar-gambar bergerakgambar-gambar bergerak
Web dinamis dapat digunakan untuk membentuk Web dinamis dapat digunakan untuk membentuk aplikasi interaktif, yang memungkinkan pemakai aplikasi interaktif, yang memungkinkan pemakai tak hanya memperoleh informasi terkini tetapi tak hanya memperoleh informasi terkini tetapi juga dapat melakukan perubahan data. Misalnya:juga dapat melakukan perubahan data. Misalnya: Untuk pengisian KRSUntuk pengisian KRS Perubahan data pribadiPerubahan data pribadi Pengisian berita baruPengisian berita baru dlldll
Web dinamis dibentuk dengan menambahkan perangkat Web dinamis dibentuk dengan menambahkan perangkat lunak tambahan, seperti ASP atau PHPlunak tambahan, seperti ASP atau PHP
38
Prinsip Kerja Web Berbasis Prinsip Kerja Web Berbasis HTMLHTML1.1. Browser meminta sebuah halaman ke Browser meminta sebuah halaman ke
suatu situssuatu situs2.2. Permintaan diterima oleh Web server Permintaan diterima oleh Web server
(server yang bertanggung jawab (server yang bertanggung jawab melayani permintaan browser)melayani permintaan browser)
3.3. Web server segera mengirimkan Web server segera mengirimkan halaman HTML yang diminta ke klien)halaman HTML yang diminta ke klien)
4.4. Browser pada klien segera Browser pada klien segera menampilkan dokumen HTML menampilkan dokumen HTML berdasarkan kode-kode yang terdapat berdasarkan kode-kode yang terdapat pada HTMLpada HTML
39
Prinsip Kerja Web Berbasis Prinsip Kerja Web Berbasis HTMLHTML
Klien
W eb server
Browser
Permintaan HTTP (sesuatu.html)
Kode HTM L
Tanggapan HTTP
40
Prinsip Kerja Web DinamisPrinsip Kerja Web Dinamis(Contoh dengan PHP)(Contoh dengan PHP)
Klien
W eb server
Browser
Perm intaan HTTP (sesuatu.php)
Kode HTM L
Tanggapan HTTP
Skrip PHP
M esin PHP
41
Teknologi WebTeknologi Web Teknologi untuk membentuk Teknologi untuk membentuk
aplikasi Web yang dinamis :aplikasi Web yang dinamis :1.1. Teknologi pada sisi klien (Teknologi pada sisi klien (client-client-
side technologyside technology))2.2. Teknologi pada sisi server (Teknologi pada sisi server (server-server-
side technologyside technology))
42
Teknologi pada Sisi Teknologi pada Sisi KlienKlien
1.1. Kontrol Active XKontrol Active X2.2. Java appletJava applet3.3. Client-side script (JavaScript Client-side script (JavaScript
dan VBScript)dan VBScript)4.4. DHTML (CSS / DHTML (CSS / Cascading Style Cascading Style
SheetsSheets))
43
Teknologi pada Sisi Teknologi pada Sisi ServerServer
CGICGI FastCGIFastCGI Proprietary Web Server API (ISAPI dan Proprietary Web Server API (ISAPI dan
NSAPI)NSAPI) Active Server Pages (ASP)Active Server Pages (ASP) Java Server Pages (JSP) dan Java Java Server Pages (JSP) dan Java
ServletsServlets Server-side JavaScriptServer-side JavaScript PHPPHP
45
DEFINISI ARSITEKTURDEFINISI ARSITEKTUR Arsitektur:
Struktur, artinya komponen-komponen apa yang ada dalam suatu sistem dan fungsi masing-masing komponen tersebut, serta bagaimana inter-relasi dan interaksi antar komponen dalam sistem tersebut.
Arsitektur Sistem Software: Spesifikasi dari arsitektur sistem software,
menyebutkan bermacam-macam modul beserta interface dan inter-relasi antar data dan alur kontrol dalam suatu sistem: Programming-in-the-small: Pengembangan individual modul Programming-in-the-large: Pengintegrasian modul-modul
menjadi suatu sistem yang komplit. Jadi, Distributed DBMS adalah Large Scale
Software System.
46
Reference Architecture:
Struktur “Ideal” (Standard): Segala bentuk sistem mengacu atau merupakan turunan dari Reference Architecture ini.
Untuk menciptakan Reference Architecture ini diperlukan STANDARDISASI.
Contoh: ISO/OSI Model yang merupakan reference architecture dari Wide Area Computer Networks
47
STANDARDISASI DBMSSTANDARDISASI DBMS Reference Model (Arsitektur Sistem) dapat
dinyatakan berdasarkan 3 pendekatan yang berbeda: Berdasarkan Komponen:
Inter-relasi antar komponen yang masing-masing mempunyai fungsi yang berbeda-beda.
Berdasarkan Fungsi: Penyediaan fungsi-fungsi/fasilitas-fasilitas yang dapat
memenuhi kebutuhan user yang berbeda-beda. Strukturnya kebanyakan berbentuk hirarkhi, sesuai klasifikasi user, contohnya ISO/OSI model.
Berdasarkan Data: Karena data merupakan sumber daya utama yang di-manage oleh
DBMS, maka pendekatan ini menjadi pilihan yang tepat untuk melangkah lebih jauh ke proses standardisasi. Penyediaan beberapa tipe data dan arsitektur sistem ditekankan pada penyediaan fungsi berdasarkan klasifikasinya yang dapat menggunakan tipe-tipe data pada masing-masing klasifikasi.
48
ANSI/SPARC ArchitectureANSI/SPARC Architecture Akhir tahun 72, the Computer and
Information Processing Committee (X3) of the American National Standards Institute (ANSI) membuat Study Group DBMS dibawah bantuan Standards Planning and Requirements Committee (SPARC).
Misinya adalah studi tentang kelayakan/feasibility membuat suatu standard di DBMS dan aspek apa yang memungkinkan untuk distandardisasikan.
50
Arsitektur ANSI/SPARC:
Arsitektur sistem yang berbasis organisasi data. Three Views of Data:
External View Struktur data yang terlihat oleh user.
Internal View Struktur data dalam sistem atau mesin. Berhubungan erat dengan organisasi data secara
fisik. Lokasi dan mekanisme akses ke data
Conceptual View : Yang menjembatani, definisi abstrak dari
database. Representasi data dan relasi antar data tanpa memperhatikan kebutuhan setiap aplikasi atau keterbatasan media penyimpanan.
Perlu Schema pada masing2DanMapping
51
Conceptual SchemaRELATION EMP [
KEY = {ENO}ATTRIBUTES = {
ENO : CHARACTER(9)ENAME : CHARACTER(15)TITLE : CHARACTER(10)}
]
RELATION PAY [KEY = {TITLE}ATTRIBUTES = {
TITLE : CHARACTER(10)SAL : NUMERIC(6)
}]
RELATION PROJ [KEY = {PNO}ATTRIBUTES = {
PNO : CHARACTER(7)PNAME : CHARACTER(20)BUDGET : NUMERIC(7)
}]
RELATION ASG [KEY = {ENO,PNO}ATTRIBUTES = {
ENO : CHARACTER(9)PNO : CHARACTER(7)RESP : CHARACTER(10)DUR : NUMERIC(3)
}]
52
Internal Schema:INTERNAL_REL EMPL [
INDEX ON E# CALL EMINXFIELD = {
HEADER : BYTE(1)E# : BYTE(9)ENAME : BYTE(15)TIT : BYTE(10)
}]
53
External Schema: Contoh 1 (Create a BUDGET view from the PROJ
relation):CREATE VIEW BUDGET(PNAME, BUD)
AS SELECT PNAME, BUDGETFROM PROJ
Contoh 2 (Create a Payroll view from relations EMP and TITLE_SALARY):
CREATE VIEW PAYROLL (ENO, ENAME, SAL)AS SELECT EMP.ENO,EMP.ENAME,PAY.SAL
FROM EMP, PAYWHERE EMP.TITLE = PAY.TITLE
54
MODEL ARSITEKTUR UNTUK DISTRIBUTED DBMSMODEL ARSITEKTUR UNTUK DISTRIBUTED DBMS
Klasifikasi Distributed DBMS (3 Dimensi Permasalahan):
1. Distribusi: Lokasi komponen sistem di satu tempat atau tidak.
2. Heterogenitas: Bermacam-macam level (H/W, Komunikasi, OS) Yang terpenting (Data model, Query language, Transaction
Management Algorithms)3. Otonomi:
Versi Design Autonomy: Masing-masing DBMS bebas menggunakan model data dan manajemen transaksi yang disukai.
Versi Communication Autonomy: Masing-masing DBMS menentukan apa dan bagaimana cara berkomunikasi dengan DBMS lain.
Versi Execution Autonomy: Masing-masing DBMS mengeksekusi operasi-operasi lokal dengan berbagai cara yang disukai.
56
Distributed Database Reference Architecture (Data Organizational View):
LIS (Local Internal Schema): Physical Data Organization pada setiap site mungkin berbeda, untuk itu pada masing-masing site dibutuhkan individual internal schema.LCS (Local Conceptual Schema): Karena data pada Distributed Database biasanya terfragmentasi atau terduplikasi, maka organisasi data secara logispun dibutuhkan di setiap site.GCS (Global Conceptual Schema): Struktur logis data yang ada pada semua site.Mendukung Data Independensi (Ekstensi ANSI/SPARC Arc.), Transparansi Replikasi data, Transparansi Network..Local Database Management diintegrasikan dalam Global DBMS.
58
Komponen-komponen Distributed DBMS (Peer-to-Peer):
USER PROCESSOR:USER PROCESSOR: User Interface Handler: Menerjemahkan perintah user dan
menampilkan data ke user. Semantic Data Controller: Chek terhadap user query, dapat
diproses atau tidak? Global Query Optimizer and Decomposer: Strategi eksekusi dengan
cost yang minimal, penerjemahan global query ke local query. Distributed Execution/Transaction Monitor: Koordinasi Eksekusi
yang terdistribusi.Physical Data Organization pada setiap site mungkin berbeda, untuk itu pada masing-masing site dibutuhkan individual internal schema.
DATA PROCESSOR:DATA PROCESSOR: Local Query Optimizer: Bertugas sebagai Access Path
Selector (indexing attribute2) Local Recovery Manager: Menjaga konsistensi database
lokal ketika terjadi kegagalan. Run-time Support Processor: Interface ke OS dan terdapat
database buffer (cache) manager yang memaintain main memory buffer dan akses data.
60
FAKULTASKode_FNm_Fakultas
MATAKULIAHKode_mtkNama_MtkSks Kode_f
MAHASISWANobpNamaKode_fPin
NILAINPMKode_MtkNILAi_KuisNilai_PrNilai_UTSNilai_UAS
61
Create Table Tfakultas( Kode_f Char(16) NOT NULL PRIMARY Key, Nama_f Varchar2(100), Nama_PS char(20), Status char(45), NoSK char(35));
Create Table Tmhs( Nobp Char(16) NOT NULL PRIMARY Key, Nama Varchar2(100), Kelas char(15), Kode_f char(3) References Tfakultas(Kode_f));
62
Create Table Tmtk( Kode_MK Char(10) NOT NULL PRIMARY Key, Nama_MK Varchar2(100), Sks number(2), Prasyarat1 char(10), Prasyarat2 char(10), Prasyarat3 char(10));
Create Table tNilai( Kode_MK Char(10) References tmtk(kode_mk), Nobp Char(16) References tmhs(nobp), Nilai_KUIS number(5,2), Nilai_PR number(5,2), Nilai_UTS number(5,2), Nilai_UAS number(5,2), constraint pk_nilai PRIMARY KEY (kode_mk, Nobp));
63
Insert into Tmtk values ('KKKI53001','Apl. DBServer',2,NULL,NULL,NULL);Insert into Tmtk values ('KKKI52002','Perbankan',2,NULL,NULL,NULL);Insert into Tmtk values ('KKKI53011','Multiuser',2,NULL,NULL,NULL);Insert into Tmtk values ('KKKI53012','Mnj. Sains',2,NULL,NULL,NULL);Insert into Tmtk values ('KKKI52005','Peng. Sistem Informasi',2,NULL,NULL,NULL);Insert into Tmtk values ('KKKI52006','Prak. Sistem Operasi Jaringan',2,NULL,NULL,NULL);Insert into Tmtk values ('KKKI53007','Teknik Kompilasi',2,NULL,NULL,NULL);
Insert into tfakultas values ('261','Ilmu Komputer','Sistem Informasi','Terakreditasi','001/BAN-PT/S1/SK/2009');Insert into tfakultas values ('262','Ilmu Komputer','Sistem Komputer','Terakreditasi','056/BAN-PT/S1/SK/2006');Insert into tfakultas values ('260','Ilmu Komputer','Mnj. Informatika','Terakreditasi','089/BAN-PT/D3/SK/2006');Insert into tfakultas values ('263','Ilmu Komputer','Teknik Informatika','Terdaftar','-');Insert into tfakultas values ('511','Ekonomi','S1-Akuntansi', 'Terakreditasi','056/BAN-PT/S1/SK/2006');Insert into tfakultas values ('531','Ekonomi','S1-Manajemen‘ ,'Terakreditasi','089/BAN-PT/D3/SK/2006');Insert into tfakultas values ('751','Psikologi','Psikologi' ,'Terakreditasi','089/BAN-PT/S1/SK/2009');Insert into tfakultas values ('425','Teknologi Industri','Teknik Industri' ,'Terdaftar','-');Insert into tfakultas values ('433','Sipil Dan Perencanaan','Teknik Sipil,'Terdaftar','-');Insert into tfakultas values ('911','Desain Komunikasi Visual','Desain Komunikasi Visual' ,'Terdaftar','-');Insert into tfakultas values ('811','Pascasarjana','S2-Magister Manajemen' ,'Terakreditasi','089/BAN-PT/S2/SK/2008');Insert into tfakultas values ('812','Pascasarjana','S2-Magister Komputer' ,'Terakreditasi','089/BAN-PT/S2/SK/2008');
64
Insert into tmhs values ('07101152610254','Widya','4SI-6','261');Insert into tmhs values ('07101152610255','Atika','4SI-6','261');Insert into tmhs values ('07101152610256','Danny','4SI-6','261');Insert into tmhs values ('07101152610257','Debie','4SI-6','261');Insert into tmhs values ('07101152610258','Thia','4SI-6','261');Insert into tmhs values ('07101152610259','Susy','4SI-6','261');Insert into tmhs values ('07101152610260','Egil','4SI-6','261');
65
Insert into tnilai values ('KKKI53001','07101152610260',80,75,60,60);Insert into tnilai values ('KKKI52002','07101152610260',80,85,65,75);Insert into tnilai values ('KKKI53011','07101152610260',70,55,70,80);Insert into tnilai values ('KKKI53012','07101152610260',80,65,80,90);Insert into tnilai values ('KKKI52005','07101152610260',90,75,90,60);Insert into tnilai values ('KKKI52006','07101152610260',60,65,80,70);Insert into tnilai values ('KKKI53001','07101152610254',80,75,60,60);Insert into tnilai values ('KKKI52002','07101152610254',80,85,65,75);Insert into tnilai values ('KKKI53011','07101152610254',70,55,70,80);Insert into tnilai values ('KKKI53012','07101152610254',80,65,80,90);Insert into tnilai values ('KKKI52005','07101152610254',90,75,90,60);Insert into tnilai values ('KKKI52006','07101152610254',60,65,80,70);Insert into tnilai values ('KKKI53007','07101152610254',70,55,90,80);Insert into tnilai values ('KKKI53001','07101152610255',80,75,60,60);Insert into tnilai values ('KKKI52002','07101152610255',80,85,65,75);Insert into tnilai values ('KKKI53011','07101152610255',70,55,70,80);Insert into tnilai values ('KKKI53012','07101152610255',80,65,80,90);Insert into tnilai values ('KKKI52005','07101152610255',90,75,90,60);Insert into tnilai values ('KKKI52006','07101152610255',60,65,80,70);Insert into tnilai values ('KKKI53007','07101152610255',70,55,90,80);Insert into tnilai values ('KKKI53001','07101152610256',80,75,60,60);
66
Insert into tnilai values ('KKKI52002','07101152610256',80,85,65,75);Insert into tnilai values ('KKKI53011','07101152610256',70,55,70,80);Insert into tnilai values ('KKKI53012','07101152610256',80,65,80,90);Insert into tnilai values ('KKKI52005','07101152610256',90,75,90,60);Insert into tnilai values ('KKKI52006','07101152610256',60,65,80,70);Insert into tnilai values ('KKKI53007','07101152610256',70,55,90,80);Insert into tnilai values ('KKKI53001','07101152610257',80,75,60,60);Insert into tnilai values ('KKKI52002','07101152610257',80,85,65,75);Insert into tnilai values ('KKKI53011','07101152610257',70,55,70,80);Insert into tnilai values ('KKKI53012','07101152610257',80,65,80,90);Insert into tnilai values ('KKKI52005','07101152610257',90,75,90,60);Insert into tnilai values ('KKKI52006','07101152610257',60,65,80,70);Insert into tnilai values ('KKKI53007','07101152610257',70,55,90,80);Insert into tnilai values ('KKKI53001','07101152610258',80,75,60,60);Insert into tnilai values ('KKKI52002','07101152610258',80,85,65,75);Insert into tnilai values ('KKKI53011','07101152610258',70,55,70,80);Insert into tnilai values ('KKKI53012','07101152610258',80,65,80,90);Insert into tnilai values ('KKKI52005','07101152610258',90,75,90,60);Insert into tnilai values ('KKKI52006','07101152610258',60,65,80,70);Insert into tnilai values ('KKKI53007','07101152610258',70,55,90,80);commit;
3. 3. Kalau Orang Tua Dapat Uang selalu memikirkan Anak, tetapi kalau anak dapat uang siapa yang diingat ?.
2. 2. Siapa yang besar Allah atau Sombongmu, Angkuhmu, pujian dari makluknya ?.
1.1. Siapa yang besar Allah atau Harta, Siapa yang besar Allah atau Harta, Jabatan, keluarga, materi, Ilmu, Jabatan, keluarga, materi, Ilmu, Kecantikan, Kegagahan ?Kecantikan, Kegagahan ?
4. 4. Kalau anak sakit, orang tua selalu memikirkan Anaknya bagaimana supaya sembuh dengan bergai cara, tetapi kalau orang tua sakit bagaimana anak ?.
RENUNGKAN DAN BAGAIMANA KONDISI INI ?.
6767
68
Limiting the Rows Selected Restrict the rows returned by using the WHERE clause.
The where clause follows the FROM clause.
SELECT * | {[DISTINCT] column | expression [alias], …}FROM table[WHERE condition(s)];
69
Using the WHERE ClauseSELECT Kode_f, Nama_f, Nama_PS, substr(Kode_f,1,2) as Kode_FakFROM tfakultasWHERE substr(Kode_f,1,2)=26;
70
Character Strings and Dates Character strings and date values are enclosed in single quotation marks.
Character values are case sensitive, and date values are format sensitive.
The default date format is DD-MON-RR.
SELECT Kode_f, Nama_f, Nama_PS, substr(Kode_f,1,2) as Kode_FakultasFROM tfakultasWHERE Nama_F = 'Ekonomi';
71
Comparison ConditionsOperator Meaning
= Equal to> Greater than>= Greater than or equal
to< Less than<= Less than or equal to<> Not equal to
SELECT *FROM tnilaiwhere nilai_UAS >=90
72
Other Comparison Conditions
Operator Meaning
BETWEEN … AND …
Between two values (inclusive)
IN Match any of a list of values
LIKE Match a character pattern
IS [NOT] NULL Is a null value
Concatenation operator (||)
73
Using the BETWEEN Condition
SELECT *FROM tnilaiwhere nilai_UAS between 80 and 90
Use the BETWEEN condition to display rows based on a range of values.
Lower limit
Upper limit
74
Using the IN Condition
SELECT *FROM tnilaiwhere nilai_UAS in(70,90)
Use the IN membership condition to test for values in a list.
75
Using the LIKE Condition
SELECT Nama_PSFROM tfakultasWHERE Nama_Ps LIKE 'S%';
• Use the LIKE condition to perform wildcard searches of valid search string values.• Search conditions can contain either literal characters or numbers.
- % denotes zero or many characters.- _ (underscore) denotes one
character.
76
Using the LIKE Condition
SELECT Nama_PSFROM tfakultasWHERE Nama_Ps LIKE 'S%';
• You can combine pattern-matching characters.
• You can use the ESCAPE identifier to search for the actual % and _ symbols.SELECT Nama_F, Nama_PSFROM tfakultasWHERE Nama_Ps LIKE 'S%' ESCAPE '\';
78
Using the NULL Condition
SELECT *FROM tmhsWHERE Kelas is NULL
Test for nulls with the IS NULL operator.
79
Logical ConditionsOperator Meaning
AND Returns TRUE if both component conditions are true
OR Returns TRUE if either component condition is true
NOT Returns TRUE if the following condition is false
AND TRUE FALSE NULLTRUE TRUE FLASE NULLFALSE FALSE FALSE FALSENULL NULL FLASE NULL
AND Truth Table
OR TRUE FALSE NULLTRUE TRUE TRUE TRUEFALSE TRUE FALSE NULLNULL TRUE NULL NULL
OR Truth Table
80
Using the AND Operator
SELECT Nama_F, Nama_PSFROM tfakultasWHERE Nama_Ps LIKE 'S%' and substr(kode_f,1,2)=26
AND requires both conditions to be true.
81
Using the OR OperatorSELECT *FROM tnilaiwhere nilai_UAS >=80 and Kode_MK like '%12%'
OR requires either condition to be true.
8 rows selected
82
Using the NOT OperatorSELECT *FROM tnilaiwhere nilai_UAS >=80and Kode_MK not in ('KKKI52012','KKKI53012');
83
Rules of PrecedenceOrder Evaluated Operator
1 Arithmetic Operators2 Concatenation Operator3 Comparisons conditions4 IS [NOT] NULL, LIKE, [NOT] IN5 [NOT] BETWEEN6 NOT logical condition7 AND logical condition8 OR logical condition
Override rules of precedence by using parentheses.
84
The CREATE TABLE Statement
CREATE TABLE table(column datatype [DEFAULT expr], …);
Example:CREATE TABLE dept
(dept_no number(3), dept_name varchar2(15), location varchar2(10));
Table created.
You must have:- CREATE TABLE privilege- A storage area
85
Data TypesData Types Description
VARCHAR2(size) Variable-length character dataCHAR(size) Fixed-length character dataNUMBER(p,s) Variable length numeric dataDATE Date and time valuesLONG Variable-length character data up to 2
gigabytesCLOB Character data up to 4 gigabytesRAW and LONG RAW Raw binary dataBLOB Binary data up to 4 gigabytesBFILE Binary data stored in an external file; up
to 4 gigabytesROWID A 64 base number system representing the
unique address of a row in its table
86
The ALTER TABLE Statement
Use the ALTER TABLE statement to:• Add a new column• Modify an existing column• Define a default value for the new column• Drop a column
87
The ALTER TABLE Statement
ALTER TABLE tableADD (column datatype [DEFAULT expr], …);
Example:ALTER TABLE deptADD (dept_id number(3));Table altered.
88
The ALTER TABLE Statement
ALTER TABLE tableMODIFY (column datatype [DEFAULT expr], …);
Example:ALTER TABLE deptMODIFY (dept_id number(3));Table altered.
ALTER TABLE tableDROP (column);
Example:ALTER TABLE deptDROP (dept_id);Table altered.
89
Dropping a TABLE
DROP TABLE dept;Table dropped.
• All data and structure in the table is deleted.• Any pending transactions are committed.• All indexes are dropped• You cannot roll back the DROP TABLE statement.
90
Data Manipulation Language
• A DML statement is executed when you:- Add new rows to a table- Modify existing rows in a table- Remove existing rows from a table
• A transaction consists of a collection of DML statements that form a logical unit of work
91
The INSERT StatementINSERT INTO table [(column_1, column_2, …)]VALUES (value1, value2, …);
• Add new rows to a table by using the INSERT statement.
• Only one row is inserted at a time with this syntax.Example:
INSERT INTO dept (dept_no, dept_name, location)VALUES (001, ‘Marketing’, ‘Padang’);
92
The INSERT Statement• Insert from another table:
INSERT INTO dept (dept_no, dept_name, location)SELECT department_id, department_name, areaFROM departmentWHERE department_id = ‘101’;
• Do not use VALUES clause• Match the number of columns in the INSERT clause to those in the subquery.
93
The UPDATE Statement
UPDATE table SET column = value [, column = value, …][WHERE condition];
• Modify existing rows in a table by using the UPDATE statement.
• Update more than one row at a time, if required.Example:UPDATE dept SET dept_name = ‘Production’WHERE dept_name = ‘Marketing’;
94
The DELETE Statement
DELETE [FROM] table [WHERE condition];
• Remove existing rows from a table by using the DELETE statement.
• Specific rows are deleted if you specify the WHERE clause.Example:DELETE FROM dept WHERE dept_name = ‘Marketing’;
• All rows are deleted if you omit the WHERE clause.Example:
DELETE FROM dept;
95
The DATE Data Type
TO_CHAR(date, ‘format_model’);Example:SELECT employee_id, TO_CHAR(hire_date, ‘MM/YY’) Month_HiredFROM employeesWHERE last_name = ‘Higgins’;
• Use TO_CHAR function to display dates.
EMPLOYEE_ID MONTH_HIRED205 06/94
96
Elements of the DATE Format Model
YY Two-digit value for yearYYYY Full year in numbersYEAR Year spelled outMM Two-digit value for monthMONTH Full name for the monthMON Three-letter abbreviation of the
monthDY Three-letter abbreviation of the day
of the weekDAY Full name of the day of the weekDD Numeric day of the week
97
The DATE Data Type
TO_DATE(char, ‘format_model’);Example:INSERT INTO employees (hire_date)VALUES (TO_DATE(’16/05/2005’, ‘DD/MM/YY’));
• Use TO_DATE function to convert a character string to a date format.
98
Joining Tables
SELECT table1.column, table2.columnFROM table1, table2WHERE table1.column1 = table2.column2;
• Use a join to query data from more than one table.
• Write the join condition in the WHERE clause.• Prefix the column name with the table name when the same column name appears in more than one table.
99
Retrieving Records with Equijoins
SELECT employees.employee_id, employees.last_name, employees.department_id, departments.department_id,departments.location_id
FROM employees, departmentsWHERE employees.department_id = departments.department_id;
EMPLOYEE_ID LAST_NAME DEPARTMENT_ID DEPARTMENT_ID LOCATION_ID200 Whalen 10 10 1700201 Hartstein 20 20 1800202 Fay 20 20 1800
…..
100
Additional Search Conditions
SELECT employees.last_name, employees.department_id, department_nameFROM employees, departmentsWHERE employees.department_id = departments.department_idAND last_name = ‘Matos’;
LAST_NAME DEPARTMENT_ID DEPARTMENT_NAMEMatos 50 Shipping
101
Join with AliasesSELECT e.last_name, e.department_id, d.department_nameFROM employees e, departments dWHERE e.department_id = d.department_idAND e.last_name = ‘Matos’;
LAST_NAME DEPARTMENT_ID DEPARTMENT_NAMEMatos 50 Shipping
102
Creating a Table using a Subquery
CREATE TABLE dept80 AS
SELECT employee_id, last_name, salary*12 ann_sal, hire_date
FROM employeesWHERE department_id = 80;
Table created.Name Null? Type
EMPLOYEE_ID NUMBER(6)LAST_NAME NOT NULL VARCHAR2(25)ANN_SAL NUMBERHIRE_DATE NOT NULL DATE
103
ConstraintsConstraints enforce rules at the table level.Constraints prevent the deletion of a table if there are dependencies.The following constraint types are valid:
- NOT NULL – a column cannot contain a null value
- UNIQUE – values must be unique for all rows
- PRIMARY KEY – uniquely identifies each row
- FOREIGN KEY – establishes a foreign key in relation
- CHECK – a condition must be true
104
Defining Constraintscolumn [CONSTRAINT constraint_name] constraint_type;
• Column constraint level
• Table constraint levelColumn, …
[CONSTRAINT constraint_name] constraint_type(column, …),
105
The NOT NULL ConstraintsCREATE TABLE employees (
employee_id NUMBER(6),last_name VARCHAR2(25) NOT NULL,salary NUMBER(8,2),commission_pct NUMBER(2,2),hire_date DATE
CONSTRAINT emp_hire_date_nnNOT NULL,
…
• Defined at the column level:
106
The UNIQUE ConstraintsCREATE TABLE employees (
employee_id NUMBER(6),last_name VARCHAR2(25) NOT NULL,salary NUMBER(8,2),commission_pct NUMBER(2,2),hire_date DATE NOT NULL,
…CONSTRAINT emp_email_uk UNIQUE(email));
• Defined at either the table level or the column level:
107
The PRIMARY KEY Constraints
CREATE TABLE departments (department_id NUMBER(4),department_name VARCHAR2(30)
CONSTRAINT dept_name_nn NOT NULL,manager_id NUMBER(6),location_id NUMBER(4),
CONSTRAINT dept_id_pk PRIMARY KEY (department_id));
• Defined at either the table level or the column level:
108
The FOREIGN KEY Constraints
CREATE TABLE employees (employee_id NUMBER(6),last_name VARCHAR2(25) NOT NULL,salary NUMBER(8,2),commission_pct NUMBER(2,2),hire_date DATE NOT NULL,
…department_id NUMBER(4),CONSTRAINT emp_dept_fk FOREIGN KEY (department_id) REFERENCES departments(department_id),CONSTRAINT emp_email_uk UNIQUE(email));
• Defined at either the table level or the column level:
109
FAKULTASKode_FNm_Fakultas
MATAKULIAHKode_mtkNama_MtkSks Kode_f
MAHASISWANobpNamaKode_fPin
NILAINPMKode_MtkNILAi_KuisNilai_PrNilai_UTSNilai_UAS
110
select t1.nobp, nama, t2.kode_mk,nama_mk,sks,nilai_kuis, nilai_pr, nilai_uts, nilai_uas, (nilai_kuis+nilai_pr+nilai_uts+nilai_uas)/4 as Ratarata from tmhs t1, tmtk t2, tnilai t3 where t1.nobp=t3.nobp and t2.kode_mk=t3.kode_mk and t1.nobp in ('07101152610254','07101152610260');
1. Tampilkan nobp, nama, kode_mk,nama_mk,sks,nilai_kuis, nilai_pr, nilai_uts, nilai_uas, dan rata-rata =nilai_kuis+nilai_pr+nilai_uts+nilai_uas)/4 Ratarata dari tabel tmhs t1, tmtk t2, tnilai t3 untuk Nonp 07101152610254 dan 07101152610260
111
Create view contohvw as select t1.nobp, nama, t2.kode_mk,nama_mk,sks,nilai_kuis, nilai_pr, nilai_uts, nilai_uas, (0.10*nilai_kuis)+(0.20*nilai_pr)+(0.30*nilai_uts)+(0.40*nilai_uas) as Ratarata from tmhs t1, tmtk t2, tnilai t3 where t1.nobp=t3.nobp and t2.kode_mk=t3.kode_mk and t1.nobp in ('07101152610254','07101152610260');
2. Tampilkan nobp, nama, t2.kode_mk,nama_mk,sks,nilai_kuis, nilai_pr, nilai_uts, nilai_uas, ratarata= (10%*nilai_kuis) + (20%*nilai_pr) + (30%*nilai_uts) + (40%*nilai_uas) dari table tmhs, tmtk dan tnilai untuk Nobp 07101152610254 dan 07101152610260
112
Create view contohvw select t1.nobp, nama, t2.kode_mk,nama_mk,sks,nilai_kuis, nilai_pr, nilai_uts, nilai_uas, (0.10*nilai_kuis)+(0.20*nilai_pr)+(0.30*nilai_uts)+(0.40*nilai_uas) as Ratarata from tmhs t1, tmtk t2, tnilai t3 where t1.nobp=t3.nobp and t2.kode_mk=t3.kode_mk and t2.nama_mk like '%an%'
3. Tampilkan nobp, nama, t2.kode_mk,nama_mk,sks,nilai_kuis, nilai_pr, nilai_uts, nilai_uas, ratarata= (10%*nilai_kuis) + (20%*nilai_pr) + (30%*nilai_uts) + (40%*nilai_uas) dari table tmhs, tmtk dan tnilai Untuk nama_mk yang mengandung karakter ‘an’
114
Create view contohvw select t2.kd_cust,nama, t1.kd_brg, nama_brg,tglj,t1.harga,jml, t1.harga*jml as TotalHarga, (0.05*t1.harga*jml) as Discount, (t1.harga*jml)-(0.05*t1.harga*jml) as TotalBersih from barang t1, customer t2, transaksi t3 where t1.kd_brg=t3.kd_brg and t2.kd_cust=t3.kd_cust;
1. Tampilkan kd_k,nama, kd_m, jenis,tglj, jml, harga, TotalHarga= jml*t1.harga, discount=10%*jml*harga, TotalBersih=TotalHarga-Discount dari table Mobil, konsumen, dan Jual
115
Create view contohvw select t2.kd_cust,nama, t1.kd_brg, nama_brg,tglj,t1.harga,jml, t1.harga*jml as TotalHarga, (0.05*t1.harga*jml) as Discount, (t1.harga*jml)-(0.05*t1.harga*jml) as TotalBersih from barang t1, customer t2, transaksi t3 where t1.kd_brg=t3.kd_brg and t2.kd_cust=t3.kd_cust and t2.kd_cust in ('K0002','K0005');
2. Tampilkan kd_k,nama, kd_m, jenis,tglj, jml, harga, TotalHarga= jml*t1.harga, discount=10%*jml*harga, TotalBersih=TotalHarga-Discount dari table Mobil, konsumen, dan Jual untuk Konsumen 'K0001‘ dan 'K0005'
116
Create view contohvw select t2.kd_cust,nama, t1.kd_brg, nama_brg,tglj,t1.harga,jml, t1.harga*jml as TotalHarga, (0.05*t1.harga*jml) as Discount, (t1.harga*jml)-(0.05*t1.harga*jml) as TotalBersih from barang t1, customer t2, transaksi t3 where t1.kd_brg=t3.kd_brg and t2.kd_cust=t3.kd_cust and tglj between '02-mar-05' and '05-dec-05' order by tglj;
3. Tampilkan kd_k,nama, kd_m, jenis,tglj, jml, harga, TotalHarga= jml*t1.harga, discount=10%*jml*harga, TotalBersih=TotalHarga-Discount dari table Mobil, konsumen, dan Jual untuk transaksi penjualan tanggal '02-mar-05' sampai dengan '05-dec-05' dan urutkan berdasarkan tanggal jual
118
select t2.kd_k,nama, t1.kd_m, jenis,tglj, jml, t1.harga, jml*t1.harga as TotalHarga, (0.10*jml*t1.harga) as Discount, (jml*t1.harga)-(0.10*jml*t1.harga) as TotalBersihfrom Mobil t1, konsumen t2, Jual t3 where t1.kd_m=t3.kd_m and t2.kd_k=t3.kd_k;
1. Tampilkan kd_k,nama, kd_m, jenis,tglj, jml, harga, TotalHarga= jml*t1.harga, discount=10%*jml*harga, TotalBersih=TotalHarga-Discount dari table Mobil, konsumen, dan Jual
119
select t2.kd_k,nama, t1.kd_m, jenis,tglj, jml, t1.harga, jml*t1.harga as TotalHarga, (0.10*jml*t1.harga) as Discount, (jml*t1.harga)-(0.10*jml*t1.harga) as TotalBersihfrom Mobil t1, konsumen t2, Jual t3 where t1.kd_m=t3.kd_m and t2.kd_k=t3.kd_k and t3.kd_k in ('K0001','K0005');
2. Tampilkan kd_k,nama, kd_m, jenis,tglj, jml, harga, TotalHarga= jml*t1.harga, discount=10%*jml*harga, TotalBersih=TotalHarga-Discount dari table Mobil, konsumen, dan Jual untuk Konsumen 'K0001‘ dan 'K0005'
120
select t2.kd_k,nama, t1.kd_m, jenis,tglj, jml, t1.harga, jml*t1.harga as TotalHarga, (0.10*jml*t1.harga) as Discount, (jml*t1.harga)-(0.10*jml*t1.harga) as TotalBersihfrom Mobil t1, konsumen t2, Jual t3 where t1.kd_m=t3.kd_m and t2.kd_k=t3.kd_k and tglj between '02-mar-05' and '05-dec-05' order by tglj;
3. Tampilkan kd_k,nama, kd_m, jenis,tglj, jml, harga, TotalHarga= jml*t1.harga, discount=10%*jml*harga, TotalBersih=TotalHarga-Discount dari table Mobil, konsumen, dan Jual untuk transaksi penjualan tanggal '02-mar-05' sampai dengan '05-dec-05' dan urutkan berdasarkan tanggal jual
122
select t2.kodevcd, judul,t1.kodepenyewa, nama, hargasewa, tglsewa, tglkembali from penyewa t1, vcd t2, peminjaman t3 where t1.kodepenyewa=t3.kodepenyewa and t2.kodevcd=t3.kodevcd and t1.kodepenyewa in ('P-001','P-005') order by t2.kodevcd;
1. Tampilkan kodevcd, judul,t1.kodepenyewa, nama, hargasewa, tglsewa, tglkembali dari table penyewa , vcd , dan peminjaman untuk kdpenyewa 'P-001‘ dan 'P-005') urutkan berdasarkan kodevcd;
123
select t2.kodevcd, judul,t1.kodepenyewa, nama, hargasewa, tglsewa from penyewa t1, vcd t2, peminjaman t3 where t1.kodepenyewa=t3.kodepenyewa and t2.kodevcd=t3.kodevcd and tglsewa between '01-Mar-2006' and '01-dec-2006' order by t2.kodevcd;
2. Tampilkan kodevcd, judul,t1.kodepenyewa, nama, hargasewa, tglsewa, tglkembali dari table penyewa , vcd , dan peminjaman untuk tanggal sewa mulai '01-Mar-2006' sampai dengan '01-dec-2006' diurutkan berdasarkan kodevcd;
124
select t1.kodepenyewa, nama, sum(hargasewa) as TotalBayar from penyewa t1, vcd t2, peminjaman t3 where t1.kodepenyewa = t3.kodepenyewa and t2.kodevcd=t3.kodevcd and tglsewa between '01-jan-2006' and '01-dec-2006' group by t1.kodepenyewa, nama
3. Tampilkan kodepenyewa, nama, sum(hargasewa) dari table penyewa , vcd , dan peminjaman yang disewa tanggal sewa mulai '01-jan-2006' sampai dengan '01-dec-2006'
126
Select b.npm, b.nama_mhs, a.kd_b, c.judul, a.tgl_p, a.tgl_k, a.tgl_hrs_k, (a.tgl_k)-(a.tgl_hrs_k) as Lewat, TO_NUMBER((a.tgl_k)-(a.tgl_hrs_k))*1000 as DendaFrom peminjaman1 a, mahasiswa1 b, buku c Where a.nobp = b.npm AND a.kd_b=c.kd_b and b.npm between '07101152610003' and '07101152610005' order by b.npm
1. Tampilkan npm, b.nama_mhs, a.kd_b, c.judul, a.tgl_p, a.tgl_k, a.tgl_hrs_k, lewat=(a.tgl_k)-(a.tgl_hrs_k), denda setiap hari Rp.1000,- dari tabel peminjaman1, mahasiswa1, dan buku Untuk Npm mulai '07101152610003' sampai dengan '07101152610005' dan urutkan berdasarkan npm
127
Select b.npm, b.nama_mhs, a.kd_b, c.judul, a.tgl_p, a.tgl_k, a.tgl_hrs_k, (a.tgl_k)-(a.tgl_hrs_k) as Lewat, TO_NUMBER((a.tgl_k)-(a.tgl_hrs_k))*1000 as Denda From peminjaman1 a, mahasiswa1 b, buku c Where a.nobp = b.npm AND a.kd_b=c.kd_b and tgl_p between '11-may-09' and '13-may-09' and (a.tgl_k)-(a.tgl_hrs_k)>0 order by b.npm
2. Tampilkan npm, b.nama_mhs, a.kd_b, c.judul, a.tgl_p, a.tgl_k, a.tgl_hrs_k, lewat=(a.tgl_k)-(a.tgl_hrs_k), denda setiap hari Rp.1000,- dari tabel peminjaman1, mahasiswa1, dan buku Untuk Tanggal peminjaman mulai '11-may-09' and '13-may-09' sampai dengan yang terlambat mengembalikan buku dan urutkan berdasarkan npm
128
Select b.npm, b.nama_mhs, a.kd_b, c.judul, a.tgl_p, a.tgl_k, a.tgl_hrs_k, (a.tgl_k)-(a.tgl_hrs_k) as Lewat, TO_NUMBER((a.tgl_k)-(a.tgl_hrs_k))*1000 as DendaFrom peminjaman1 a, mahasiswa1 b, buku c Where a.nobp = b.npm AND a.kd_b=c.kd_b and tgl_p between '14-may-09' and '17-may-09' and (a.tgl_k)-(a.tgl_hrs_k)>=0 order by b.npm
3. Tampilkan npm, b.nama_mhs, a.kd_b, c.judul, a.tgl_p, a.tgl_k, a.tgl_hrs_k, lewat=(a.tgl_k)-(a.tgl_hrs_k), denda setiap hari Rp.1000,- dari tabel peminjaman1, mahasiswa1, dan buku Untuk Tanggal peminjaman mulai '14-may-09' and '17-may-09' sampai dengan yang terlambat mengembalikan buku dan urutkan berdasarkan npm
130
select rute.kd_rute, rute, pesawat.kd_pesawat, pelanggan.kd_plg, nm_plg, hargafrom rute, pesawat, pelanggan, tiket where pelanggan.kd_plg = tiket.kd_plg and rute.kd_rute=tiket.kd_rute and pesawat.kd_rute=rute.kd_rute and rute.kd_rute between '02' and '03' order by pesawat.kd_pesawat
1. Tampilkan kd_rute, rute, kd_pesawat, kd_plg, nm_plg, harga dari tabel rute, pesawat,pelanggan, dan tiket untuk kd_rute '02' dan '03' urutkan berdasarkan kd_pesawat
131
select rute.kd_rute, rute, pesawat.kd_pesawat, pelanggan.kd_plg, nm_plg, hargafrom rute, pesawat, pelanggan, tiket where pelanggan.kd_plg = tiket.kd_plg and rute.kd_rute=tiket.kd_rute and pesawat.kd_rute=rute.kd_rute and pesawat.kd_pesawat='M-3' order by pesawat.kd_pesawat
2. Tampilkan kd_rute, rute, kd_pesawat, kd_plg, nm_plg, harga dari tabel rute, pesawat,pelanggan, dan tiket untuk kd_Pesawat ='M-3' urutkan berdasarkan kd_pesawat
132
select rute.kd_rute, rute, pesawat.kd_pesawat, sum(harga) as TotalBiayafrom rute, pesawat, pelanggan, tiket where pelanggan.kd_plg = tiket.kd_plg and rute.kd_rute=tiket.kd_rute and pesawat.kd_rute=rute.kd_rute group by rute.kd_rute, rute, pesawat.kd_pesawat
3. Tampilkan kd_rute, rute, kd_pesawat, sum(harga) dari tabel rute, pesawat, pelanggan, dan tiket urutkan berdasarkan kd_pesawat
134
select kabupaten.kd_Kab, Nm_Kab, pangan.Kd_Pangan, Nm_Pangan, satuan, klmpk_pangan, stock, bulan, produksi, jumlah_sedia, kebutuhan, jumlah_minta, (stock+produksi)-(kebutuhan+jumlah_minta) as Sisa from pangan, kabupaten, ketersediaan where pangan.kd_pangan=ketersediaan.kd_pangan and kabupaten.kd_kab=ketersediaan.kd_kab and kabupaten.kd_Kab in ('K001','K004','K002') order by kabupaten.kd_Kab
1. Tampilkan kd_Kab, Nm_Kab,Kd_Pangan, Nm_Pangan, satuan, klmpk_pangan, stock, bulan, produksi, jumlah_sedia, kebutuhan, jumlah_minta, dan sisa (stock+produksi)-(kebutuhan+jumlah_minta) dari tabel pangan, kabupaten, dan ketersediaan untuk kd_Kab 'K001','K004', dan 'K002‘ urutkan berdasarkan kd_Kab
135
select kabupaten.kd_Kab, Nm_Kab, pangan.Kd_Pangan, Nm_Pangan, satuan, klmpk_pangan, stock, bulan, produksi, jumlah_sedia, kebutuhan, jumlah_minta, (stock+produksi)-(kebutuhan+jumlah_minta) as Sisa from pangan, kabupaten, ketersediaan where pangan.kd_pangan=ketersediaan.kd_pangan and kabupaten.kd_kab=ketersediaan.kd_kab and bulan between '01-feb-09' and '01-aug-09' order by kabupaten.kd_Kab
2. Tampilkan kd_Kab, Nm_Kab,Kd_Pangan, Nm_Pangan, satuan, klmpk_pangan, stock, bulan, produksi, jumlah_sedia, kebutuhan, jumlah_minta, dan sisa (stock+produksi)-(kebutuhan+jumlah_minta) dari tabel pangan, kabupaten, dan ketersediaan untuk bulan Februari s/d agustus 2009
136
select kabupaten.kd_Kab, Nm_Kab, sum(stock), sum(produksi), sum(jumlah_sedia), sum(kebutuhan), sum(jumlah_minta), sum((stock+produksi)-(kebutuhan+jumlah_minta)) as Sisa from pangan, kabupaten, ketersediaanwhere pangan.kd_pangan=ketersediaan.kd_pangan and kabupaten.kd_kab = ketersediaan.kd_kab group by kabupaten.kd_Kab, Nm_Kab order by kabupaten.kd_Kab
3. Tampilkan kabupaten.kd_Kab, Nm_Kab, sum(stock), sum(produksi), sum(jumlah_sedia), sum(kebutuhan), sum(jumlah_minta), sum((stock+produksi)-(kebutuhan+jumlah_minta)) dari tabel pangan, kabupaten, dan ketersediaan urutkan berdasarkan kd_kab
138
select tamu.No_Id, Nama, Alamat, kamar.No_Kamar, type, jenis, tarif, No_Faktur, Tgl_Masuk as cekin, Tgl_Keluar as cekout from tamu, kamar, transaksi1 where tamu.No_Id=transaksi1.No_Id and kamar.No_Kamar=transaksi1.No_Kamar
1. Tampilkan No_Id, Nama, Alamat, No_Kamar, type, jenis, tarif, No_Faktur, Tgl_Masuk, Tgl_Keluar, lama=(Tgl_Keluar-Tgl_Masuk), Biaya_Adm, TotalBiaya=((Tgl_Keluar-Tgl_Masuk))*tarif)+Biaya_Adm dari tabel tamu, kamar, transaksi1 urut berdasarkan NO_Id
139
select tamu.No_Id, Nama, Alamat, kamar.No_Kamar, type, jenis, tarif, No_Faktur, Tgl_Masuk as cekin, Tgl_Keluar as cekout, (Tgl_Keluar-Tgl_Masuk) as Lama, Biaya_Adm as Adm, (to_Number((Tgl_Keluar-Tgl_Masuk))*tarif)+Biaya_Adm as TotBiaya from tamu, kamar, transaksi1 where tamu.No_Id=transaksi1.No_Id and kamar.No_Kamar=transaksi1.No_Kamar and alamat in ('Aceh','Padang','Palembang','Medan')
2. Tampilkan No_Id, Nama, Alamat, No_Kamar, type, jenis, tarif, No_Faktur, Tgl_Masuk, Tgl_Keluar, lama=(Tgl_Keluar-Tgl_Masuk), Biaya_Adm, TotalBiaya=((Tgl_Keluar-Tgl_Masuk))*tarif)+Biaya_Adm dari tabel tamu, kamar, transaksi1 urut berdasarkan NO_Id untuk wilayah pulau sumatera
140
select tamu.No_Id, Nama, Alamat, kamar.No_Kamar, type, jenis, tarif, No_Faktur, Tgl_Masuk as cekin, Tgl_Keluar as cekout, (Tgl_Keluar-Tgl_Masuk) as Lama, Biaya_Adm as Adm, (to_Number((Tgl_Keluar-Tgl_Masuk))*tarif)+Biaya_Adm as TotBiaya from tamu, kamar, transaksi1 where tamu.No_Id=transaksi1.No_Id and kamar.No_Kamar=transaksi1.No_Kamar and tgl_keluar between '12-may-09' and '18-may-09';
3. Tampilkan No_Id, Nama, Alamat, No_Kamar, type, jenis, tarif, No_Faktur, Tgl_Masuk, Tgl_Keluar, lama=(Tgl_Keluar-Tgl_Masuk), Biaya_Adm, TotalBiaya=((Tgl_Keluar-Tgl_Masuk))*tarif)+Biaya_Adm dari tabel tamu, kamar, transaksi1 urut berdasarkan NO_Id yang telah check-in pada tanggal '12-may-09' sampai dengan '18-may-09';
141
AFTER MID SEMESTERAFTER MID SEMESTER PL/SQL (procedural Language/Structured
Query Language) untuk oracle Meningkatkan performance oracle database Tersedia type data, variable, constants,
aritmatik, Logical, if-conditions, loops conditions, procedure, function, dan trigger
Termasuk struktur program dalam PL/SQL Studi kasus Sistem Penilaian pada
Perguruan Tinggi
145
System Global Area (SGA) of RDBMS Instance
Shared Pool
Large Pool
Reserved Pool
show_empscalc_totals upd_salaries
Select * from emp
Shared SQLPre-parsed
Update emp Set sal=...
Library cache
Session 1 memory (PGA/UGA)
emp_rec emp%rowtype;tot_tab tottabtype;
Session 2 memory (PGA/UGA)
emp_rec emp%rowtype;tot_tab tottabtype;
User 1 User 2mysess.pkg
Sess2.sql
146
Oracle server
PL/SQL Runtime Engine SQL EnginePL/SQL block Procedura
l statement executor SQL
statement executor
FORALL aDept IN deptlist.FIRST.. deptlist.LAST DELETE emp WHERE deptno = deptlist(aDept);
Much less overhead for Much less overhead for context switchingcontext switching
Enter the “Bulk Bind”
147
Oracle server
PL/SQL Runtime Engine SQL EnginePL/SQL block Procedura
l statement executor SQL
statement executor
FOR aDept IN deptlist.FIRST.. deptlist.LASTLOOP DELETE emp WHERE deptno = deptlist(aDept);END LOOP;
Performance penalty Performance penalty for many “context for many “context switches”switches”
Enter the “Bulk Bind”
148
Pendahuluan PL/SQL (Procedural Language/Structure Query Language) Adalah suatu blok yang berisi skrip-
skrip bahasa prosedural. PL/SQL merupakan bahasa pemrograman prosedural
PL/SQL dapat meningkatkan kinerja database
149
DeclareDeclarex integer; alamat varchar2(100);Nobp char(16);
BeginBeginx := 10;
Alamt := ‘Komp. Palm Griya Indah Padang’;
Nobp := ‘07101152610762’; end;end;
Variable, Type data, dan Variable, Type data, dan ConstantsConstants
150
DECLAREDECLARE variable type_data;variable type_data; variable konstanta Constant type_data:=nilai;variable konstanta Constant type_data:=nilai; mendeklarasikan konstanta;mendeklarasikan konstanta;BEGINBEGIN statement-1;statement-1; statement-2;statement-2; … …....EXCEPTIONEXCEPTIONWHENWHEN nama_eksepsi nama_eksepsi THENTHEN statement_untuk_mengatasi_error;statement_untuk_mengatasi_error; …… ……..END;END;
Struktur PL/SQLStruktur PL/SQL
151
Contoh ProgramContoh Programset serveroutput ondeclare x constant integer:=100;begin dbms_output.put_line(to_number(x));exception when value_error then dbms_output.put_line('Kesalahan Pada Pengisian Nilai'); end;
152
Tipe DataTipe Data dasar : Numerik
NUMBER, BINARY_INTEGER, DEC, DOUBLE PRECISION, INTEGER, INT, NUMERIC, REAL, SMALLINT
Karakter VARCHAR2, CHAR, LONG
DATE BOOLEAN ROWID
Tipe Data tambahan : RECORD ARRAY
154
Contoh VariabelDECLARE
X integer;Alamat varchar2(40);No_induk char(8);
.....BEGIN
X := 12;Alamat := ‘Gelatik Dalam 391, Bandung’;No_induk := ‘DOG29549’;
END;
155
Konstanta Digunakan untuk menyimpan sebuah nilai di memori komputer.
Nilai yang disimpan bersifat tetap (konstan)
Contoh :DECLAREpi CONSTANT real := 3.14;lebar CONSTANT integer := 100;
156
Komentar Digunakan untuk memudahkan proses
maintenance Jenis komentar :
/* ... */ : untuk beberapa baris komentar
-- ... : untuk satu bari komentar
Contoh :/* Ini adalah komentar Oracle */-- Ini juga komentar Oracle
157
Struktur Blok PL/SQL
Terdapat tiga bagian : Bagian pendeklarasian tipe data
(opsional) Bagian penulisan perintah Bagian eksepsi (opsional)
158
Bentuk Umum Stuktur Umum PL/SQLDECLARE
variabel tipe_data;konstanta CONSTANT tipe_data := nilai;...
BEGINstatement_1;statement_2;...
EXCEPTIONWHEN nama_eksepsi THEN statement_untuk_mengatasi_error;...
END;
159
Contoh Paling Sederhana
BEGINDBMS_OUTPUT.PUT_LINE(‘Belajar Oracle’);
END;
Catatan:Untuk melihat hasil, setting terlebih
dahulu variabel sistem SERVEROUTPUT dengan menuliskan :
SET SERVEROUTPUT ON
160
Contoh LainSET SERVEROUTPUT ONDECLAREteks VARCHAR2 (20);
BEGINteks := ‘Belajar Oracle’;DBMS_OUTPUT.PUT_LINE(teks);
END;/
161
Contoh dengan eksepsiSET SERVEROUTPUT ON
DECLAREX Integer;
BEGINX := ‘Belajar Oracle’;DBMS_OUTPUT.PUT_LINE( TO_CHAR(X) );
EXCEPTIONWHEN VALUE_ERROR THENDBMS_OUTPUT.PUT_LINE (‘Kesalahan pada pengisisan nilai’);
END;/
162
set serveroutput on /* untuk keluaran */begin dbms_output.put_line('Ocale Database');end;
Contoh Penggunaan set Contoh Penggunaan set serveroutput onserveroutput on
163
set serveroutput ondeclare teks varchar2(45);begin teks:='Ocale Database'; dbms_output.put_line(teks);end;
Contoh Penggunaan Declare VarContoh Penggunaan Declare Var
164
set serveroutput ondeclare x constant integer:=100;begin dbms_output.put_line(to_number(x));exception when value_error then dbms_output.put_line('Kesalahan Pada Pengisian Nilai'); end;
Contoh Penggunaan Exception Contoh Penggunaan Exception ErrorseErrorse
165
Pendahuluan Terminologi
Z := 3 + 6Maka :
Z disebut variabel:= disebut operator assigment3 dan 6disebut operand3 + 6 disebut ekspresi+ disebut operator aritmatikaZ:=3+6 disebut statemen aritmatika
166
Jenis Operator Operator Logika
Operator NOT , AND , OR Operator Aritmatika
Operator + , - , * , / , MOD Operator Relasional
Operator < , <= , > , >= Operator Persamaan
Operator = , <> Operator Penggabungan
Operator ||
167
Contoh Penggunaan Operator +
SET SERVEROUPUT ONDECLARE
X INTEGER;Y NUMBER;
BEGINX := 2 + 3;Y := 2.45 + 3.14;DBMS_OUTPUT.PUT_LINE( TO_CHAR(X) );DBMS_OUTPUT.PUT_LINe( TO_CHAR(X) );
END;/
168
Contoh Penggunaan Operator -
SET SERVEROUPUT ONDECLARE
X INTEGER;Y NUMBER;
BEGINX := 5 - 3;Y := 6.88 – 2.73;DBMS_OUTPUT.PUT_LINE( TO_CHAR(X) );DBMS_OUTPUT.PUT_LINe( TO_CHAR(X) );
END;/
169
Contoh Penggunaan Operator *
SET SERVEROUPUT ONDECLARE
X INTEGER;Y NUMBER;
BEGINX := 5 * 2;Y := 6.13 – 2;DBMS_OUTPUT.PUT_LINE( TO_CHAR(X) );DBMS_OUTPUT.PUT_LINe( TO_CHAR(X) );
END;/
170
Contoh Penggunaan Operator /
SET SERVEROUPUT ONDECLAREX NUMBER;
BEGINX := 10 / 3;DBMS_OUTPUT.PUT_LINE( TO_CHAR(X) );
END;/
171
Contoh Penggunaan Operator MODSET SERVEROUPUT ONDECLAREX INTEGER;
BEGINX := 10 MOD 3;DBMS_OUTPUT.PUT_LINE( TO_CHAR(X) );
END;/
172
Contoh Penggunaan Operator RelasionalSET SERVEROUTPUT ONDECLARE
X INTEGER;BEGIN
X := 10;IF (X <= 5) THEN
DBMS_OUTPUT.PUT_LINE(‘TRUE’);ELSE
DBMS_OUTPUT.PUT_LINE(‘FALSE’);END IF;
END;/
173
Contoh Penggunaan Operator PersamaanSET SERVEROUTPUT ONDECLARE
X INTEGER;BEGIN
X := 10;IF (X = 10) THEN
DBMS_OUTPUT.PUT_LINE(‘Sepuluh’);ELSE
DBMS_OUTPUT.PUT_LINE(‘Bukan Sepuluh’);END IF;
END;/
174
Contoh Penggunaan Operator PenggabunganSET SERVEROUTPUT ONDECLARE
X NUMBER;S VARCHAR2 (25);
BEGINX := 15.2 + 4.63;S := ‘Nilai X sama dengan ‘;DBMS_OUTPUT.PUT_LINE(S || TO_CHAR(X) );
END;/
175
set serveroutput ondeclare x integer; y number;begin x := 2 + 3; y := 2.45 + 3.14 ; dbms_output.put_line(to_char(x)); dbms_output.put_line(to_char(y));end;
Contoh Penggunaan Operator Contoh Penggunaan Operator AritmatikaAritmatika
176
Contoh Penggunaan Operator Contoh Penggunaan Operator AritmatikaAritmatika
set serveroutput ondeclare x integer; y number;begin x := 5 - 3; y := 6.88 - 2.73 ; dbms_output.put_line(to_char(x)); dbms_output.put_line(to_char(y));end;
177
set serveroutput ondeclare x number; s varchar2(45);begin x := 15.2 + 4.63; s := 'Nilai x sama dengan :'; dbms_output.put_line(s || to_char(x));end;
Contoh Penggunaan Operator Contoh Penggunaan Operator AritmatikaAritmatika
178
Pendahuluan Blok Eksepsi (exception block) adalah blok yang digunakan untuk menjebak error yang mungkin terdjadi di dalam blok PL/SQL
Eksepsi (exception) merupakan jenis-jenis error yang menyebabkan terhentinya program secara tidak normal
179
Tujuan dan Jenis Tujuan Blok Eksepsi adalah menangani error-error yang telah didefinisikan menjadi sebuah eksepsi sehingga meskipun terdapat error, error tersebut tidak akan ditampilkan melainkan dilempar ke bagian eksepsi
Jenis Eksepsi : Pre-defined exception User-defined exception
180
Bentuk Umum EksepsiEXCEPTION
WHEN eksepsi_pertama THENstatemen_utk_mengatasi_eksepsi_pertama;WHEN eksepsi_kedua THENstatemen_utk_mengatasi_eksepsi_kedua;...WHEN OTHERS THENstatemen_utk_mengatasi_eksepsi_lainnya;
END;
181
Pre-defined Exception Adalah sebuah eksepsi yang telah didefinisikan atau sudah tersedia dalam Oracle, sehingga dapat langsung menggunakan tanpa harus membuatnya terlebih dahulu
182
Contoh 1, Tanpa blok eksepsiSET SERVEROUTPUT ONDECLARE
X INTEGER;Y NUMBER;
BEGINX := 0;Y := 1 / X;DBMS_OUTPUT.PUT_LINE(‘Nilai Y = ‘ || TO_CHAR(Y));
END;/
Hasil yang muncul dilayar:ORA-01476 : divisior is equal to zero
183
Contoh 1, Dengan blok eksepsiSET SERVEROUTPUT ONDECLARE
X INTEGER;Y NUMBER;
BEGINX := 0;Y := 1 / X;DBMS_OUTPUT.PUT_LINE(‘Nilai Y = ‘ || TO_CHAR(Y));
EXCEPTIONWHEN ZERO_DEVIDE THENDBMS_OUTPUT.PUT_LINE(‘Terjadi kesalahan karena terdapat ‘ || ‘pembagian dengan 0 (NOL) ‘);
END;/
184
Contoh 2, Tanpa blok eksepsiSET SERVEROUTPUT ONDECLARE
X NUMBER;BEGIN
X := ‘Budi Raharjo’;DBMS_OUTPUT.PUT_LINE(‘Nilai X = ‘ || TO_CHAR(X) );
END;/
Hasil yang muncul dilayar :ORA-06502: PL/SQL: numeric or value error
185
Contoh 2, Dengan blok eksepsiSET SERVEROUTPUT ONDECLARE
X NUMBER;BEGIN
X := ‘Budi Raharjo’;DBMS_OUTPUT.PUT_LINE(‘Nilai X = ‘ || TO_CHAR(X) );
EXCEPTIONWHEN VALUE_ERROR THENDBMS_OUTPUT.PUT_LINE(‘Pengisian nilai tidak sesuai dengan ‘ || ‘tipe variabel’);
END;/
186
Nama Eksepsi Kode Error
Keterangan
CURSOR_ALREADY_OPEN ORA-6511 Cursor masih dalam keadaan terbukaDUP_VALUE_ON_INDEX ORA-0001 Duplikasi constraintINVALID_CURSOR ORA-1001 Membuka cursor yang salahINVALID_NUMBER ORA-1722 Melakukan operasi numerik pada tipe non-numerikLOGIN_DENIED ORA-1017 Username/password salahNO_DATA_FOUND ORA-1403 Tidak terdapat data pada queryNOT_LOGGED_ON ORA-1012 Melakukan operasi database ketika tidak
terhubung (connect)PROGRAM_ERROR ORA-6501 Kesalahan internalROWTYPE_MISMATCH ORA-6504 Host variabel dan cursor mempunyai tipe yang
tidak samaSTORAGE_ERROR ORA-6500 Kesalahan internalTYMEOUT_ON_RESOURCE ORA-0051 Terjadi timeoutTOO_MANY_ROWS ORA-1422 Statemen SELECT INTO yang mengembalikan lebih
dari satu barisTRANSACTION_BACKED_OUT ORA-006 Rollback transaksi untuk didealokasikanVALUE_ERROR ORA-6502 Konversi atau truncation salahZERO_DIVIDE ORA-1476 Pembagian dengan nol
187
User-defined Exception
Untuk membuat sebuah eksepsi, diperlukan : Variabel bertipe EXCEPTION Dihubungkan dengan tipe PRAGMA
EXCEPTION_INIT Kode error harus negatif (-) Bentuk Umum :DECLARE
nama_eksepsi EXCEPTION;PRAGMA EXCEPTION_INIT (nama_eksepsi, kode_error);
188
Contoh tanpa eksepsiSET SERVEROUTPUT ONDECLARE
X ROWID;BEGIN
SELECT ROWID INTO X FROM ALL_VIEWS;END;/
Hasil yang tampil dilayar :ORA-01445: Cannot select ROWID from view
of more than one table
189
Contoh dengan eksepsiSET SERVEROUTPUT ONDECLARE
eksepsiku EXCEPTION;PRAGMA EXCEPTION_INIT(eksepsiku, -10445);X ROWID;
BEGINSELECT ROWID INTO X FROM ALL_VIEWS;
EXCEPTIONWHEN eksepsiku THENDBMS_OUTPUT.PUT_LINE(‘KESALAHAN : Tidak dapat ‘ ||‘menampilkan ROWID dari beberapa tabel atau view’);
END;/
190
PendahuluanPercabangan dalam PL/SQL Oracle : Struktur satu kondisi Struktur dua kondisi Struktur tiga atau lebih kondisi
191
Struktur satu kondisi Jika kondisi tidak terpenuhi atau bernilai FALSE, badan percabangan tidak akan pernah dimasuki
Bentuk umum :IF kondisi THENstatemen_1;...
END IF;
192
Contoh Struktur satu kondisiSET SERVEROUTPUT ONDECLARE
BIL INTEGER := 80;BEGIN
IF MOD(BIL, 2) = 0 THENDBMS_OUTPUT.PUT_LINE( TO_CHAR(BIL) || ‘ ADALAH BILANGAN GENAP’);END IF;
END;/
194
Contoh stuktur dua kondisiSET SERVEROUTPUT ONDECLARE
BIL INTEGER := 3;BEGIN
IF MOD(BIL, 2) = 0 THENDBMS_OUTPUT.PUT_LINE( TO_CHAR(BIL) || ‘ ADALAH BILANGAN GENAP’);ELSEDBMS_OUTPUT.PUT_LINE( TO_CHAR(BIL) || ‘ ADALAH BILANGAN GANJIL’);END IF;
END;/
195
Contoh Penggunaan if-then Contoh Penggunaan if-then StatementStatement
set serveroutput ondeclare bil integer := 55;begin if mod(bil, 2) = 0 then dbms_output.put_line(to_char(bil) || ' Adalah Bilangan Genap'); else dbms_output.put_line(to_char(bil) || ' Adalah Bilangan Ganjil'); end if;end;
196
set serveroutput ondeclare nilai integer := 75; Huruf varchar2(45); predikat varchar2(45); begin if nilai >=80 then huruf:='A'; predikat:='Excellent'; elsif nilai >=65 then huruf:='B'; predikat:='Good';
elsif nilai >=55 then huruf:='C'; predikat:='Foor'; elsif nilai >=35 then huruf:='D'; predikat:='With Honor'; elsif nilai >=1 then huruf:='E'; predikat:='Bad'; end if; dbms_output.put_line(‘Nilai : ’,to_char(nilai) || ‘ Huruf : ’ || huruf || ‘Keterangan : ’ || predikat);end;
Contoh Penggunaan if-then-elsif Contoh Penggunaan if-then-elsif StatementStatement
197
Struktur tiga kondisi atau lebih Bentuk umum :
IF kondisi_1 THENstatemen_1;...
ELSIF kondisi_2 THENstatemen_2;...
ELSEstatemen_3;...
END IF;
198
Contoh struktur tiga kondisi atau lebihSET SERVEROUTPUT ONDECLARE
BIL INTEGER;BEGIN
BIL := -25;IF BIL > 0 THENDBMS_OUTPUT.PUT_LINE( TO_CHAR(BIL) || ‘ adalah bilangan positif’);ELSIF BIL = 0 THENDBMS_OUTPUT.PUT_LINE( TO_CHAR(BIL) || ‘ adalah bilangan negatif’);END IF;
END;/
199
PENDAHULUAN Tiga macam struktur pengulangan : Struktur simple LOOP Struktur WHILE-LOOP Struktur FOR-LOOP
201
Contoh struktur simple loopSET SERVEROUTPUT ONDECLARE
J INTEGERBEGIN
J := 0;LOOPJ := J + 1;DBMS_OUTPUT.PUT_LINE(‘Saya belajar PL/SQL’);EXIT WHEN J = 10;END LOOP;
END;/
203
Contoh struktur WHILE-LOOPSET SERVEROUTPUT ONDECLARE
J INTEGERBEGIN
J := 1;WHILE (J <= 10) LOOPDBMS_OUTPUT.PUT_LINE(‘Saya belajar PL/SQL’);J := J + 1;END LOOP;
END;/
204
Struktur FOR-LOOP Bentuk umum :
FOR variabel IN batas_minimal .. batas_maksimal LOOP
statemen_1;...
END LOOP;
205
Contoh Stuktur FOR-LOOPSET SERVEROUTPUT ONDECLARE
I INTEGER;BEGIN
FOR I IN 1..10 LOOPDBMS_OUTPUT.PUT_LINE( TO_CHAR(I));END LOOP;
END;/
206
Contoh Stuktur FOR-LOOP (2)SET SERVEROUTPUT ONDECLARE
I INTEGER;BEGIN
FOR I IN REVERSE 1..10 LOOPDBMS_OUTPUT.PUT_LINE( TO_CHAR(I));END LOOP;
END;/
207
set serveroutput ondeclare j integer;begin j := 0; loop j := J + 1; dbms_output.put_line(to_char(j) || ' Loop'); exit when j = 10; end loop;end;
Penggunaan Loop-when StatementPenggunaan Loop-when Statement
208
Penggunaan while-Loop StatementPenggunaan while-Loop Statement
set serveroutput ondeclare j integer;begin j := 0; while (j<=10) loop j := J + 1; dbms_output.put_line(to_char(j) || ' Loop'); end loop;end;
209
Penggunaan for-loop StatementPenggunaan for-loop Statement
set serveroutput ondeclare j integer;begin for j in 1..10 loop dbms_output.put_line(to_char(j) || ' Loop'); end loop;end;
210
Pendahuluan Definisi
Tipe data bentukan yang dapat menyimpan sekumpulan nilai dari tipe data yang sama dan dikemas dalam bentuk larik.
Nilai dari elemen-elemen array dapat diacu atau diakses melalui indeksnya, perlu diperhatikan bahwa indeks array harus dari tipe data yang mempunyai keterurutan, seperti halnya tipe integer.
211
Membuat Tipe Array Bentuk Umum :
TYPE nama_tipe ISTABLE OF tipe_dataINDEX BY BINARY_INTEGER;
Contoh :
DECLARETYPE array_ku IS
TABLE OF CHAR(5)INDEX BY BINARY_INTEGER;
X array_ku;
212
Mengisikan Nilai pada Elemen Array Contoh 1 :
BEGINX(1) := ‘A’;X(2) := ‘B’;
END;
Contoh 2 :
BEGINX(1) := 10;X(2) := 20;
END;
213
Contoh 1SET SERVEROUTPUT ONDECLARE
TYPE LARIK ISTABLE OF NUMBERINDEX BY BINARY_INTEGER;
A LARIK;I INTEGER;
BEGINFOR I IN 1..5 LOOP
A(I) := I * 10;END LOOP;FOR I IN 1..5 LOOP
DBMS_OUTPUT.PUT_LINE(‘Nilai elemen larik ke-’ || TO_CHAR(I) || ‘ = ‘ || TO_CHAR(A(I)));END LOOP;
END;/
214
Contoh 2SET SERVEROUTPUT ONDECLARE
TYPE SISWA ISTABLE OF VARCHAR2(25)INDEX BY BINARY_INTEGER;
NAMA SISWA;I INTEGER;
BEGINNAMA(1) := ‘Arista Destriana’;NAMA(2) := ‘Yandri Gunawan’;NAMA(3) := ‘Herry Wahyudinata’;NAMA(4) := ‘Budi Raharjo’;NAMA(5) := ‘Noni Sutrisna’;FOR I IN 1..5 LOOPDBMS_OUTPUT.PUT_LINE(‘Nama siswa ke-’ || TO_CHAR(I) || ‘ : ‘ || NAMA(I));END LOOP;
END;/
215
Pendahuluan Adalah sebuah blok PL/SQL yang dapat berdiri sendiri serta dikompilasi untuk selanjutnya masuk ke dalam skema database.
Nama procedure yang dibuat kemudian menjadi objek dengan tipe procedure. Procedure akan dieksekusi pada saat pemanggilan setelah sebelumnya dibuat terlebih dahulu
216
Membuat Procedure Bentuk umum : CREATE OR REPLACE PROCEDURE
nama_procedure(parameter_1 tipe_data, … ) ASvariabel_1 tipe_data;…BEGINstatemen_1;…END;
217
Membuat Procedure (2) CREATE digunakan untuk membuat
procedure baru REPLACE digunakan untuk mengganti isi
procedure yang telah dibuat sebelumnya Parameter dan variable/konstanta
bersifat opsional Bentuk umum perintah untuk
mengeksekusi sebuah procedure :EXECUTE nm_procedure(paremeter_1,…);
218
Contoh Procedure Tanpa Parameter
SET SERVEROUTPUT ONCREATE OR REPLACE PROCEDURE hitung_luas_segitiga AS
alas NUMBER(5);tinggi NUMBER(5);luas NUMBER(10);
BEGINalas := 3;tinggi := 6;luas := (alas * tinggi) / 2;DBMS_OUTPUT.PUT_LINE(‘LUAS = ‘ || luas);
END;/…………………………………EXECUTE hitung_luas_segitiga;
219
Contoh Procedure dengan Parameter
Dengan Parameter Masukan
CREATE OR REPLACE PROCEDURE tambah_dua ( a IN INTEGER) AShasil INTEGER(5);
BEGINhasil := a + 2;DBMS_OUTPUT.PUT_LINE (‘Hasil akhir = ‘ || hasil);
END;/………………………………EXECUTE tambah_dua(4);
220
Contoh Procedure dengan Parameter (2) Dengan Parameter Keluaran
CREATE OR REPLACE PROCEDURE tambah_10 ( bil IN INTEGER, X OUT INTEGER) AS
BEGINX := bil + 10;
END;/
221
Contoh Procedure dengan Parameter (2)
Dengan Parameter Keluaran
SET SERVEROUTPUT ONDECLARE
hasil INTEGER;BEGIN
tambah_10(5, hasil);DBMS_OUTPUT.PUT_LINE(‘Hasilnya = ‘ || TO_CHAR(hasil));
END;/
222
Contoh Procedure dengan Parameter (3)
Dengan Parameter Masukan/Keluaran
CREATE OR REPLACE PROCEDURE tambah_10 ( X IN OUT INTEGER) AS
BEGINX := X + 10;
END;/
223
Contoh Procedure dengan Parameter (3)
Dengan Parameter Masukan/Keluaran
SET SERVEROUTPUT ONDECLARE
Y INTEGER;BEGIN
Y := 15;tambah_10(Y);DBMS_OUTPUT.PUT_LINE(‘Hasilnya = ‘ || TO_CHAR(Y));
END;/
224
Contoh Procedure Di Dalam Procedure
CREATE OR REPLACE PROCEDURE cetak_angka(X IN INTEGER) ASJ INTEGER;
BEGINFOR J IN 1..X LOOPDBMS_OUTPUT.PUT_LINE( TO_CHAR(J));END LOOP;
END;/
225
Contoh Procedure Di Dalam Procedure (2)
CREATE OR REPLACE PROCEDURE panggil_proc AS
BEGINcetak_angka(10);
END;/----------------------------SET SERVEROUTPUT ONEXECUTE panggil_proc
226
Pendahuluan Function adalah suatu blok PL/SQL yang memiliki konsep sama dengan procedure, hanya saja pada function terdapat pengembalian nilai (return value)
Karena function dapat mengembalikan sebuah nilai, function dapat diakses seperti layaknya sebuah variabel biasa
227
Membuat Function Bentuk Umum :
CREATE OR REPLACE FUNCTION nama_function (parameter_1, …)
RETURN tipe_data ASvariabel_1 tipe_data;…
BEGINstatemen_1;…RETURN nilai_yang_dikembalikan;
END;
228
Membuat Function (2)
Statemen RETURN tipe_data diatas menunjukkan bahwa function akan mengembalikan nilai dengan tipe data tertentu
Statemen RETURN nilai_yang_dikembalikan berfungsi untuk mengembalikan nilai yang telah diproses dalam function
229
Contoh Function Tanpa Parameter
CREATE OR REPLACE FUNCTION tulis_teks RETURN VARCHAR2 ASS VARCHAR2(20)
BEGINS := ‘HALLO SEMUA’;RETURN S;
END;/
230
Contoh Function Tanpa Parameter (2)
SET SERVEROUTPUT ONDECLAREX VARCHAR2(20);
BEGINX := tulis_teks;DBMS_OUTPUT.PUT_LINE(X);
END;/
231
Contoh Function Dengan Parameter
CREATE OR REPLACE FUNCTION pangkat (bil INTEGER, n INTEGER)
RETURN INTEGER ASHASIL INTEGER(10);I INTEGER;
BEGINHASIL := 1;FOR I IN 1..n LOOPHASIL := HASIL * bil;END LOOP;RETURN HASIL;
END;/
232
Contoh Function Dengan Parameter (2)SET SERVEROUTPUT ONDECLARE
H INTEGER;BEGIN
H := pangkat(2, 3);DBMS_OUTPUT.PUT_LINE(‘Hasil = ‘ || TO_CHAR(H));
END;/
233
Contoh Function Dalam Function
CREATE OR REPLACE FUNCTION kuadrat (X NUMBER)
RETURN NUMBER ASHASIL NUMBER(10);
BEGINHASIL := X * X;RETURN HASIL;
END;/
234
Contoh Function Dalam Function (2)
CREATE OR REPLACE FUNCTION determinan(a NUMBER, b NUMBER, c NUMBER)RETURN NUMBER AS
D NUMBER(10);BEGIN
D := kuadrat(b) – (4 * a * c);RETURN D;
END;/
235
Contoh Function Dalam Function (3)
SET SERVEROUTPUT ONDECLARE
D NUMBER(10);BEGIN
D := determinan(1, 1, -6);DBMS_OUTPUT.PUT_LINE(‘Nilai determinan = ‘ || TO_CHAR(D));
END;/
236
create or replace trigger TR_Nilai_mhs before insert on tnilaifor each rowbegin dbms_output.put_line('Trigger Before Insert Dilaksanakan');end;==================================================================create or replace trigger TR_Nilai_mhs after update on tnilaifor each rowbegin dbms_output.put_line('Trigger After Update Dilaksanakan');end;==================================================================create or replace trigger TR_Nilai_mhs after Delete on tnilaifor each rowbegin dbms_output.put_line('Trigger After Delete Dilaksanakan');end;
Penggunaan Create or Replace Penggunaan Create or Replace TRIGGER Statement TRIGGER Statement
237
Penggunaan Create or Replace Penggunaan Create or Replace Procedure Statement Procedure Statement
create or replace procedure Pangkat (bil in integer, pemangkat in integer,hasil out integer) as j integer;begin hasil := 1; for j in 1..pemangkat loop hasil := hasil * bil; end loop;end;
238
set serveroutput ondeclare h integer;begin pangkat(2,5,h); dbms_output.put_line(to_char(h) || ' Hasil Pemangkatan');end;
Penggunaan Create or Replace Penggunaan Create or Replace Procedure Statement Procedure Statement
239
Penggunaan Create or Replace Penggunaan Create or Replace function Statement function Statement
create or replace function cek_prima1 ( bil in integer) return boolean as prima boolean := true; j integer;begin if bil <= 1 then prima := false; end if; for j in 2..(bil / 2) loop if mod(bil,j) = 0 then prima := false; exit; end if; end loop; return prima;end;
240
set serveroutput ondeclare x integer;begin for x in 0..40 loop if cek_prima1(x) then dbms_output.put_line('Prima ' || to_char(x)); end if; end loop; end;
Penggunaan Create or Replace Penggunaan Create or Replace function Statement function Statement
241
set serveroutput ondeclarecursor c_IPK is select * from tmhs; vrec c_IPK%ROWTYPE;begin open c_IPK; loop fetch c_IPK into vrec; exit when c_IPK%NOTFOUND; dbms_Output.put_line(vrec.Nobp || vrec.Nama); end loop; close c_IPK;end;
242
set serveroutput ondeclarecursor c_IPK is select m.Nobp, m.Nama, k.Nama_MK, k.Kode_MK, k.sks, N.Nilai_PR, N.Nilai_KUIS, N.Nilai_UTS, N.Nilai_UAS from tmtk k, tnilai N, tmhs m where k.Kode_MK=N.Kode_MK and m.nobp=n.nobp and (m.nobp='07101152610260' or m.nobp='07101152610254'); vrec c_IPK%ROWTYPE;begin open c_IPK; loop fetch c_IPK into vrec; exit when c_IPK%NOTFOUND; dbms_Output.put_line(vrec.nobp ||' ' || vrec.Nama || ' ' || vrec.Kode_MK || ' ' || vrec.Nama_MK ); end loop; close c_IPK;end;
243
FAKULTASKode_FNm_Fakultas
MATAKULIAHKode_mtkNama_MtkSks Kode_f
MAHASISWANobpNamaKode_fPin
NILAINPMKode_MtkNILAi_KuisNilai_PrNilai_UTSNilai_UAS
244
Pembuatan Function Nilai Pembuatan Function Nilai AkhirAkhir
create or replace function Nilai_Akhir (PR number, KUIS number, UTS number,UAS number) return number as hasil number;begin hasil := (0.10 * PR) + (0.10 * KUIS) + (0.30 * UTS) + (0.50 * UAS); return hasil;end;
245
Pembuatan Function Konversi Nilai Pembuatan Function Konversi Nilai Angka ke Huruf Angka ke Huruf
create or replace function Cari_Index ( nilai in integer) return varchar2 as Indeks varchar2(2);begin if nilai >=80 then Indeks:='A'; elsif nilai >=65 then Indeks:='B'; elsif nilai >=55 then Indeks:='C'; elsif nilai >=35 then Indeks:='D'; elsif nilai >=1 then Indeks:='E'; end if; return Indeks;end;
246
Pembuatan Function Konversi Nilai Pembuatan Function Konversi Nilai Angka ke Huruf Angka ke Huruf
create or replace function Cari_huruf ( nilai in integer) return varchar2 as Indeks varchar2(2);begin if nilai >=80 then Indeks:='A'; elsif nilai >=65 then Indeks:='B'; elsif nilai >=55 then Indeks:='C'; elsif nilai >=35 then Indeks:='D'; elsif nilai >=1 then Indeks:='E'; end if; return Indeks;end;
247
create or replace function Kali ( x number, IDX char) return number is nilai number; hasil number;begin if (IDX ='A') then Nilai:=4; elsif (IDX='B') then Nilai:=3; elsif (IDX='C') then Nilai:=2; elsif (IDX='D') then Nilai:=1; elsif (IDX='E') then Nilai:=0; end if; hasil := x * nilai; return hasil;end;
Pembuatan Function Cari Bobot dan Pembuatan Function Cari Bobot dan Bobot x SksBobot x Sks
248
create or replace function Bobot (IDX char) return integer is nilai integer;begin if (IDX ='A') then Nilai:=4; elsif (IDX='B') then Nilai:=3; elsif (IDX='C') then Nilai:=2; elsif (IDX='D') then Nilai:=1; elsif (IDX='E') then Nilai:=0; end if; return nilai;end;
Pembuatan Function Cari Pembuatan Function Cari BobotBobot
249
select t1.nobp, nama, t2.kode_mk,nama_mk,sks,nilai_kuis, nilai_pr, nilai_uts, nilai_uas, Nilai_Akhir(nilai_kuis,nilai_pr,nilai_uts,nilai_uas) as Ratarata, Cari_huruf(Nilai_Akhir(nilai_kuis,nilai_pr,nilai_uts,nilai_uas)) as Indek from tmhs t1, tmtk t2, tnilai t3 where t1.nobp=t3.nobp and t2.kode_mk=t3.kode_mk and t1.nobp between 07101152610254 and 07101152610255
Memanggil Fungsi Nilai Memanggil Fungsi Nilai Akhir dan IndexAkhir dan Index
250
select t1.nobp, nama, t2.kode_mk,nama_mk,sks,nilai_kuis, nilai_pr, nilai_uts, nilai_uas, Nilai_Akhir(nilai_kuis,nilai_pr,nilai_uts,nilai_uas) as Ratarata, Cari_huruf(Nilai_Akhir(nilai_kuis,nilai_pr,nilai_uts,nilai_uas)) as Indek,bobot(Cari_huruf(Nilai_Akhir(nilai_kuis,nilai_pr,nilai_uts,nilai_uas))) as BB from tmhs t1, tmtk t2, tnilai t3 where t1.nobp=t3.nobp and t2.kode_mk=t3.kode_mk and t1.nobp between 07101152610254 and 07101152610255
Memanggil Fungsi Nilai Memanggil Fungsi Nilai Akhir, Index, dan BobotAkhir, Index, dan Bobot
251
select t1.nobp, nama, t2.kode_mk,nama_mk,sks,nilai_kuis, nilai_pr, nilai_uts, nilai_uas, Nilai_Akhir (nilai_kuis, nilai_pr, nilai_uts, nilai_uas) as Ratarata, Cari_huruf (Nilai_Akhir(nilai_kuis,nilai_pr, nilai_uts,nilai_uas)) as Indek, bobot (Cari_huruf(Nilai_Akhir (nilai_kuis, nilai_pr,nilai_uts, nilai_uas))) as BB,Kali (t2.sks, Cari_huruf(Nilai_Akhir( nilai_kuis,nilai_pr, nilai_uts,nilai_uas))) as Tbb from tmhs t1, tmtk t2, tnilai t3 where t1.nobp = t3.nobp and t2.kode_mk=t3.kode_mk and t1.nobp between 07101152610254 and 07101152610255
Memanggil Fungsi Nilai Memanggil Fungsi Nilai Akhir, Index, Bobot, Akhir, Index, Bobot,
Total BobotTotal Bobot
252
select t1.nobp, nama, sum(t2.sks) as TotSks, sum(Kali (t2.sks, Cari_huruf(Nilai_Akhir( nilai_kuis,nilai_pr, nilai_uts,nilai_uas)))) as Totalbb, round((sum(Kali (t2.sks, Cari_huruf(Nilai_Akhir( nilai_kuis,nilai_pr, nilai_uts,nilai_uas)))) / sum(t2.sks)),2) as IPK from tmhs t1, tmtk t2, tnilai t3 where t1.nobp=t3.nobp and t2.kode_mk=t3.kode_mk group by t1.nobp, nama
Mencari TotalSks, Mencari TotalSks, TotalBobot dan Index TotalBobot dan Index Prestasi KumulatifPrestasi Kumulatif