Anda di halaman 1dari 83

Modul Pelatihan

Oracle Medium

Oracle 10g

Tutor By Irmawati,MMSI

Daftar Isi BAB I 1.1 1.2 1.3 1.4 1.5 Pendahuluan Pengenalan Oracle 10g Install database oracle10g di Windows XP Step-step membuat database Oracle 10g Membuat Listener Membuat (mensetting) TNS Names Basic Administration

BAB II 2.1 2.2 2.3

Memulai Koneksi ke Database Startup dan shutdown instance Administrasi User

BAB III 3.1 3.2 3.3

SQL Basic

SQL Statement SQL*Plus SQL *Plus Vs SQL Statement

BAB IV 4.1. 4.2

SQL Function

Single Row Function Multiple Row Function

BAB V 5.1

JOIN, SUB-QUERY Kartesian Produk

Tutor By Irmawati,MMSI

BAB I Pendahuluan 1.1. Pengenalan Oracle 10g Oracle 10g, g adalah singkatan dari grid. Berikut ini pembahasan mengenai Grid yang di kutip dari Wikipedia.Komputasi Grid (grid computing) adalah penggunaan sumber daya yang melibatkan banyak komputer yang terdistribusi dan terpisah secara geografis untuk memecahkan persoalan komputasi dalam skala besar. Latar belakang grid Perkembangan kecepatan prosesor berkembang sesuai dengan Hukum Moore, meskipun demikian bandwidth jaringan komputer berkembang jauh lebih pesat. Semakin cepatnya jalur komunikasi ini membuka peluang untuk menggabungkan kekuatan komputasi dari sumber- sumber
Tutor By Irmawati,MMSI

komputasi

yang

terpisah.

Perkembangan

ini

memungkinkan

skala

komputasi terdistribusi ditingkatkan lebih jauh lagi secara geografis, melintasi batas-batas domain administrasi yang sudah ada. Pesatnya perkembangan teknologi komputer di negara-negara maju, membuat para penelitinya semakin haus akan tenaga komputasi yang dapat menjawab tantangan dan permasalahan yang mereka hadapi. Walaupun sudah memiliki supercomputer dengan kapasitas yang sangat tinggi , apa yang sudah ada ini pun dirasa tetap kurang, karena mereka berusaha memecahkan permasalahan yang lebih besar lagi. Setelah semua komputer yg dimiliki seorang peneliti haus tenaga komputasi dipergunakan habis-habisan untuk memecahkan masalahnya, setelah berbagai cara untuk memecahkan masalah dicoba, dan dipilih yang paling efisien, tapi tetap masalahnya belum bisa dipecahkan juga, apa yang harus dia lakukan? Komputasi grid adalah salah satu jawaban dari pertanyaan ini.

Definisi grid Menurut tulisan singkat oleh Ian Foster ada check-list yang dapat digunakan untuk mengidentifikasi bahwa suatu sistem melakukan komputasi grid yaitu : Sistem tersebut melakukan koordinasi terhadap sumberdaya

komputasi yang tidak berada dibawah suatu kendali terpusat. Seandainya sumber daya yang digunakan berada dalam satu cakupan domain administratif, maka komputasi tersebut belum dapat dikatakan komputasi grid. Sistem tersebut menggunakan standard dan protokol yang bersifat

terbuka (tidak terpaut pada suatu implementasi atau produk tertentu). Komputasi grid disusun dari kesepakatan-kesepakatan terhadap masalah yang fundamental, dibutuhkan untuk mewujudkan komputasi bersama dalam skala besar. Kesepakatan dan standar yang dibutuhkan adalah
Tutor By Irmawati,MMSI

dalam bidang autentikasi, otorisasi, pencarian sumberdaya, dan akses terhadap sumber daya. Sistem tersebut berusaha untuk mencapai kualitas layanan yang

canggih, (nontrivial quality of service) yang jauh diatas kualitas layanan komponen individu dari komputasi grid tersebut. Peluang grid Dalam buku The Grid:Blue Print for a new computing infrastructure dijelaskan bahwa yang dimaksud keras dan dengan komputasi lunak grid yang adalah dapat infrastruktur perangkat perangkat

menyediakan akses yang bisa diandalkan, konsisten, tahan lama dan tidak mahal terhadap kemampuan komputasi mutakhir yang tersedia. A computational grid is a hardware high-end computational capabilities. Seandainya kelak di kemudian hari teknologi yang dibutuhkan untuk mewujudkan visi paradigma komputasi grid ini sudah mapan, peluang akan semakin terbuka bagi kerjasama lintas organisasi, lintas benua dan lintas bangsa. Akan terbuka peluang bagi peneliti di Indonesia yang ingin melakukan komputasi yang sangat rumit, dengan menggunakan supercomputer tercepat di dunia, tanpa harus melakukan investasi besarbesaran dalam bidang teknologi informasi. Produk Grid dari Oracle Oracle telah membangun software infrastruktur komputasi grid yang mampu membagi dan menyeimbangkan semua beban (workload) di antara server-server yang berbeda, dan me- manage server-server yang berbeda itu sebagai satu kesatuan sistem. Kemampuan komputasi grid adalah setara dengan mainframe karena semua komponennya (grid) di-cluster. Namun tidak seperti mainframe dan server SMP (symmetric multiprocessing) yang besar, grid bersifat terbuka (open system technologies) yang bisa mencakup system kecilkecil dengan processor Intel dan OS Linux sehingga biaya jadi jauh lebih murah.
Tutor By Irmawati,MMSI

and software infrastructure

that

provides dependable,consistent, pervasive, and inexpensive access to

Adapun produk grid dari Oracle adalah: Storage Grid: Automatic Storage Management (ASM) Database Grid: Real Application Server (RAC) Application Grid: Oracle Streams Grid Control: Enterprise Manager Grid Control

Produk Database Server Oracle 10g dikeluarkan dalam 5 versi agar dapat dipergunakan sesuai kebutuhan user. Serta mendukung berbagai Platform Operating Server sehingga semua User dapat mengunakan Oracle dengan mudah tanpa harus berganti Platform yang sudah existing. Selain support Operating System Windows ( NT, Windows 2000 Pro / Server, Windows XP, Windows 2003 Server, Windows 2003 Server R2, Windows Vista ), Oracle juga Support untuk Linux, Unix, Solaris, HP-UX, dll. Hal ini sangat memudahkan User jika suatu hari nanti harus berganti Operating System sehingga proses Migrasi dapat dipastikan berjalan dengan mudah dan lancar karena dilakukan dari Database Server Oracle ke Oracle. Tentunya berbeda sekali dengan Migrasi dari suatu Database Server tertentu ke Database Server yang berbeda. Sehingga perlu teknik Migrasi khusus ataupun Tools tertentu dari Thirtparty agar dapat melakukan proses Migrasi Database dengan jaminan data hasil transfer migrasi ini benar - benar valid. Produk Oracle 10g Database Server ada 5 macam, yaitu : a. Oracle Database 10g Standart Edition One

Tutor By Irmawati,MMSI

i. Untuk Workgroup dan level departemen Small Office and Home Office (SOHO) ii. b. Max 2 processor, Single Server

Oracle Database 10g Standart Edition i. ii. Support High Availability dengan RAC Max 4 Processor, support Server berkapasitas tinggi

c.

Oracle Database 10g Enterprise Edition i. Secure Data Managemen, mampu memenuhi segala availability dan scalability ii. Unlimited Processor

d.

Oracle Database 10g Personal Edition Kemampuan sama seperti Oracle 10g Enterprise Edition, unlimited processor, hanya dengan limitasi single user saja.

e.

Oracle Database 10g Express Edition FREE!!! 4D (Download, Develop, Deploy dan Distribute) Max 1 GB memory, Max 4 GB Database Files.

1.2.

Install database oracle10g di Windows XP

Secara umum, guide ini berlaku untuk semua instalasi Oracle. Di semua OS, proses instalasi itu sama, hanya sedikit berbeda di pre-installation requisite-nya.Download software Database Oracle dulu. Free, alias gratis. Sebelumnya anda harus punya account di Oracle. Kalau belum punya, membuatnya gampang sekali, yang penting punya email. Ikuti saja proses sign up. Kalau diminta memasukkan pin OPN, dan anda tidak punya pin OPN karena company anda bukan partner-nya Oracle, kosongkan saja. Berikut ini panduan download Oracle Database 10g Release 2 (10.2.0.1.0): Buka link (page) untuk download di sini
http://www.oracle.com/technology/software/products/database/index.html

Pilih versi database dan tipe OS

Tutor By Irmawati,MMSI

Disini kita memilih Oracle Database 10g Release 2 (10.2.0.1.0) for Microsoft Windows Kemudian muncul pilihan berikut - Oracle Database 10g Release 2 (10.2.0.1.0) - Oracle Database 10g Companion CD Release 2 (10.2.0.1.0) - Oracle Database 10g Client Release 2 (10.2.0.1.0) - Oracle Clusterware Release 2 (10.2.0.1.0) - Oracle Gateways 10g Release 2 (10.2.0.1.0) (10.2.0.1.0) Pilihlah option pertama. Kalau hanya untuk sekedar belajar database, anda cukup milih option pertama saja. Spesifikasi yang digunakan dalam instalasi ini adalah: - Microsoft Windows XP Professional Version 2002 Service Pack 2 - CPU: intel 2 Ghz - Memory: 1G - Virtual (page) memory: 1,5G Dengan spesifikasi tersebut, PC tersebut (lebih dari cukup) memenuhi

syarat. Lebih detail tentang spesifikasi komputer yang bisa diinstall, lihat dokumentasi (installation guide) yang ada di paket software yang telah di download. Secara umum, berikut ini spesifikasinya: Hardware: - Physical memory (RAM) : 256 MB minimum, 512 MB recommended - Virtual memory: dua kali RAM - Disk space: kira-kira 5 G - Video (monitor) adapter: 256 colors - Processor : 550 MHz Operating system (OS) - Windows 2000 with service pack 1 or later. All editions, including Terminal Services and Microsoft Windows 2000 MultiLanguage Edition (MLE). - Windows Server 2003 - all editions
Tutor By Irmawati,MMSI

- Windows XP Professional - Windows NT is not supported. Berikut ini langkah-langkahnya: 1. Jalankan command setup.exe yang ada di paket software yang telah di download Kemudian muncul Install wizard (GUI).

- Pilih option Basic Installation - Masukkan directory Oracle Home Location - Pilih Installation Type - Jangan pilih Create Starter Database - Klik button Next 2. Oracle installer akan mengecek OS kita, apakah requirement-nya dipenuhi atau tidak.

Tutor By Irmawati,MMSI

Pastikan semua statusnya Succeeded. Kalau ada warning, atau statusnya bukan Succeed, bereskan dulu OS-nya. Kemudian klik button Next 3. Dalam proses instalasi, Oracle akan menjalankan program java. Bila firewall PC anda memblock java, dan muncul alert Windows Security Alert, kilk tombol Unblock.

4. Muncul summary komponen Oracle Database 10g yang siap kita install.

Tutor By Irmawati,MMSI

Kemudian klik tombol Install 5. Installation progress ditunjukkan oleh gambar ini.

Tutor By Irmawati,MMSI

6. Setelah itu akan dilakukan konfigurasi tambahan oleh Oracle Installer. Kita cukup perhatikan saja.

Setelah konfigurasi selesai, klik tombol Next. 7. Instalasi selesai.

Setelah itu klik tombol Exit

1.3. Step-step membuat database Oracle 10g Setelah meng-install software database (RDBMS) Oracle, sekarang saatnya membuat database. Baik di Windows maupun Unix (Linux, Sun Solaris, IBM
Tutor By Irmawati,MMSI

AIX, HP UX, dan lain- lain) caranya sama saja. Membuat database, bisa dengan mamakai SQL script (via SQLPlus) ataupun GUI (wizard) yang disediakan Oracle. Di versi 8i, tool GUI tersebut adalah dbassist; sementara versi 9i ke atas adalah dbca. Untuk Windows lokasi dbca ada directory %ORACLE_HOME%/bin , sementara untuk Unix di $ORACLE_HOME/bin. Secara struktur, lokasi file-file software Oracle baik di Windows maupun Unix adalah sama saja. Yang berbeda hanya penulisan parameter. Di Windows, parameter diapit oleh tanda % (contoh %ORACLE_HOME%) sedangkan di Unix parameter didahului oleh tanda $ (contoh $ORACLE_HOME) Berikut ini adalah langkah-langkah (step-step) untuk membuat database 10g: 1. Jalankan command dbca. Akan muncul form wellcome.

Selanjutnya klik tombol Next. 2. Berikutnya keluar form pilihan option.

Tutor By Irmawati,MMSI

Pilih Create a Database. Selanjutnya klik tombol Next 3. Berikutnya keluar form Database template.

Ada 3 pilihan template. Kalau tidak mau pakai templete, pilih Custom Database. Dalam contoh ini saya memilih template General Purpose. Selanjutnya klik tombol Next.

Tutor By Irmawati,MMSI

4. Berikutnya muncul form Database Identification.

Ini nama database. Terserah mau diberi nama apa. Di sini dinamai dataku. Selanjutnya klik tombol Next. 5. Berikutnya mucul form Management Option.

Pilih Configure the Database with Enterprise Manager. Selanjutnya klik tombol Next.

Tutor By Irmawati,MMSI

6. Berikutnya mucul form Database Credential.

Masukkan password. Untuk mempermudah biar tidak gampang lupa, saya memilih password yang sama untuk semua account. Selanjutnya klik tombol Next. 7. Berikutnya mucul form Storage Option.

Pilih File system. Selanjutnya klik tombol Next.


Tutor By Irmawati,MMSI

8. Berikutnya mucul form Database File Location.

Saya memilih C:\oracle\oradata. Selanjutnya klik tombol Next. 9. Berikutnya mucul form Recovery Configuration.

Pilih Flash Recovery Area,direktori default. Selanjutnya klik tombol Next.

Tutor By Irmawati,MMSI

10. Berikutnya mucul form Database Content.

Sample schema berisi schema-schema (berserta object: table, index, view, dll) contoh dari Oracle. Ini bermanfaat bagi yang sedang belajar. Selanjutnya klik tombol Next. 11. Berikutnya mucul form Initialization Parameter.

Tutor By Irmawati,MMSI

Untuk

memori,

pilih

custom,

dengan

shared

memory

management:

Automatic. Nilai SGA sesuaikan dengan memory komputer kita. Dengan memory PC 1G, masukkan SGA: 274M. Selainnya memakai value (nilai) default. Selanjutnya klik tombol Next. 12. Berikutnya mucul form Database storage.

Lokasi file-file adalah sesuai dengan directory yang telah kita pilih tadi. Melalui wizard ini kita bisa mengubah ke direktori lain. Selanjutnya klik tombol Next. 13. Berikutnya mucul form Creation Option.

Tutor By Irmawati,MMSI

Pilih Create Database karena kita akan membuat database. Pilih juga Generate database creation scripts. Bermanfaat bagi yang belajar, untuk memahai commandcommand apa yang dijalankan ketika membuat database. Selanjutnya klik tombol Finish 14. Berikutnya muncul form Confirmation.

Tutor By Irmawati,MMSI

Berisi tentang resume database yang akan kita buat. Selanjutnya klik tombol OK. 15. Berikutnya mucul Installation Progress. Kalau create di Windows mungkin muncul error, lihat gambarnya di sini.

Kalau menemui error ini, tambahkan parameter berikut di file %ORACLE_HOME%/network/admin/sqlnet.ora SQLNET.AUTHENTICATION_SERVICES = (NONE) Bila file tersebut belum ada, buatlah. Jika file sudah ada dan nilai parameter tersebut bukan NONE, ubah menjadi NONE. Selanjutnya klik Ignore, nanti akan kembali ke form Creation Option, ulangi (lanjutkan) ke step-step berikutnya. Bila berhasil, maka Creation progress akan menunjukkan proses pembuatan database yang sedang berjalan.

Tutor By Irmawati,MMSI

16. Akhirnya proses selesai.

Selanjutnya klik tombol Exit. Setelah selesai, bila di WIndows, ubah nilai SQLNET.AUTHENTICATION_SERVICES dari NONE menjadi NTSSQLNET.AUTHENTICATION_SERVICES = (NTS) Ini penting agar bisa mudah memanage database.

Tutor By Irmawati,MMSI

1.4.

Membuat Listener

Setelah install software Oracle dan membuat database Oracle, kini saatnya kita untuk mengakses database lewat jaringan. Dari sisi server (Oracle database) diperlukan listener, sementara dari sisi client diperlukan Local Net Service Name (TNS Names). Listener bisa dibuat dengan GUI (wizard) ataupun melalui command line. Di Oracle 8i ke atas, GUI (tool) tersebut adalah netca. Seperti tool-tool database Oracle yang lain, lokasinya ada di $ORACLE_HOME/bin. Berikut ini langkah-langkah membuat listener pakai netca. Sebagai contoh saya menggunakan Oracle 10g. Secara umum adalah sama untuk Oracle versi lainnya.

1. Jalankan command netca. Akan muncul form wellcome.

Pilih Listener Configuration. Selanjutnya klik tombol Next.

Tutor By Irmawati,MMSI

2. Berikutnya keluar form Listener Configuration.

Pilih Add. Selanjutnya klik tombol Next. 3. Berikutnya keluar form Listener Name.

Masukkan nama listener. Kita bisa menamakan apa saja. Di sini saya biarkan pakai nama default, yaitu LISTENER. Selanjutnya klik tombol Next.

Tutor By Irmawati,MMSI

4. Berikutnya keluar form Select Protocol.

Pilih TCP. Selanjutnya klik tombol Next. 5. Kalau milih TCP, berikutnya akan keluar form TCP/IP Protocol

Kemudian pilih port yang akan digunakan. Gunakan port default, 1521. Selanjutnya klik tombol Next. 6. Berikutnya akan keluar form More Listener.

Tutor By Irmawati,MMSI

Apakah kita ingin membuat listener yang lain lagi?. Saya pilih tidak (No). Selanjutnya klik tombol Next. 7. Akhirnya selesai.

Kalau ingin melakukan perkerjaan lainnya, klik tombol Next. Jika cukup membuat listener ini saja, klik tombol Cancel. Pada dasarnya secara intrinsik, Oracle melakukan 2 hal berikut ini (membuat listener pakai command line dengan cara berikut ini): 1. Membuat file konfigurasi untuk listener di $ORACLE_HOME/network/admin/listener.ora. Adapun isi file tersebut adalah: SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = C:\oracle\product\10.2.0\db_1) (PROGRAM = extproc) ) )LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.21.108.70)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) )
Tutor By Irmawati,MMSI

2. Menjalankan (menaikkan) proses listener lsnrctl start LISTENER Selanjutnya, masukkan database yang telah kita buat tadi ke dalam konfigurasi listener agar database bisa dilayani listener. Sebenarnya kalau listener dibuat (dan dinaikkan) dulu sebelum membuat database, konfigurasi ini dilakukan secara otomatis oleh dbca (bila kita membuat database menggunaka dbca). Di Oracle 9i keatas, untuk melakukannya kita bisa menggunakan tool netmgr yang ada di $ORACLE_HOME/bin. Di Windows sepertinya netmgr tidak dibuatkan exe-nya di %ORACLE_HOME%/bin, tapi dibuatkan sort cut-nya di menu program. Berikut ini step-step menggunakan netmgr: 1. Jalankan command netmgr. Kemudian muncul Wizard-nya.

Di tab, pilih Database Services. Selanjutnya klik tombol Add Database. 2. Kemudian masukkan ORACLE_HOME dan nama instance (SID) yang akan di- manage.

Tutor By Irmawati,MMSI

3. Setelah itu simpan konfigurasi tersebut.

Selesai. 4. Agar konfigurasi bisa update, restart listener lsnrctl stop LISTENER lsnrctl start LISTENER
Tutor By Irmawati,MMSI

Secara intrinsik, netmgr menambahkan definisi konfigurasi di file $ORACLE_HOME/network/admin/listener.ora(di mana kita bisa melakukannya secara manual tanpa netmgr): SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = C:\oracle\product\10.2.0\db_1) (PROGRAM = extproc) ) (SID_DESC = (ORACLE_HOME = C:\oracle\product\10.2.0\db_1) (SID_NAME = dataku) ) )

1.5.

Membuat (mensetting) TNS Names

Software Oracle sudah di-install, database sudah dibuat, dan listener juga sudah dibuat. Untuk bisa mengakses database di mesin server, suatu client (misalnya PC) harus di-install software Oracle Client. Setelah itu, kita perlu mensetting TNS Names di client tersebut. Tool GUI (wizard) di Oracle versi 8i ke atas adalah netca. Ketika install software database (RDBMS) Oracle, secara otomatis di-install juga Oracle client. Jadi, di PC yang telah di install RDBMS Oracle itu juga automatically sudah terinstall Oracle client. Jadi untuk belajar (lagipula karena keterbatasan jumlah komputer) kita bisa memakai satu PC sebagai server dan client sekaligus.

Tutor By Irmawati,MMSI

Berikut ini langkah-langkah (step-step) nya: 1. Jalankan command netca. Kemudian muncul form Welcome.

Pilih Local Net Service Name configuration. Selanjutnya klik tombol Next.

2. Berikutnya muncul form Net Service Name Configuration.

Pilih Add. Selanjutnya klik tombol Next.

Tutor By Irmawati,MMSI

3. Berikutnya masukkan Service Name.

Gampangnya saja, service name adalah sama dengan nama instance (SID). Di sini nama instance adalah dataku. Selanjutnya klik tombol Next. 4. Berikutnya pilih protocol.

Protokol adalah sama dengan protokol yang dipakai listener. Saya pakai TCP. Selanjutnya klik tombol Next.

Tutor By Irmawati,MMSI

5. Berikutnya masukkan host name (alamat) database server.

Bisa pakai IP dan bisa pakai nama komputer. Di sini memakai IP. Selanjutnya klik tombol Next. 6. Berikutnya muncul pertanyaan, apakah akan kita lakukan test?.

Sebaiknya pilih Yes. Selanjutnya klik tombol Next. 7. Test koneksi memakai user system dengan password manager (default). Karena password system adalah oracle, maka connection error.

Tutor By Irmawati,MMSI

Selanjutnya klik tombol Change Login. 8. Masukkan user system dan password-nya yang benar.

Selanjutnya klik tombol OK. 9. Kini koneksi success.

Tutor by IRMAWATI,MMSI

Selanjutnya klik tombol Next. 10. Berikutnya masukkan nama TNS yang kita kehendaki.

Namanya terserah kita, bebas. Di sini (by default) namanya sama dengan nama service (SID) yang tadi kita masukkan. Selanjutnya klik tombol Next. 11. Apakah akan meng-configure TNS yang lainnya?.

Tutor by IRMAWATI,MMSI

Pilih No dan klik tombol Next. 12. Selanjutnya, berhasil.

Kalau ingin mensetting yang lainnya pakai netca, klik Next. Kalau cukup sekian klik Cancel.

Tutor by IRMAWATI,MMSI

BAB II Basic Administration 2.1. Memulai Koneksi ke Database Setelah menginstall Oracle dan membuat database, untuk langkah awal

administrasi adalah mulai melakukan koneksi ke database. Administrasi dilakukan oleh user yang meng-install dan membuat database. Tool native dari Oracle untuk administrasi database adalah sqlplus, lokasi ada di $ORACLE_HOME/bin. Di Oracle versi 8 ke bawah, tool administrasi tersebut adalah svrmgrl. Sebelum melakukan koneksi, ada OS parameter yang perlu disetting. Di Windows, parameter tersebut otomatis sudah dimasukkan ke dalam registry ketika meng-install dan membuat database pakai dbca. Di Unix, setting manual parameter berikut di user profile: ORACLE_HOME, ORACLE_SID, dan PATH. Misalkan kita pakai shell sh atau ksh. Edit file .profile, tambahkan parameter berikut: ORACLE_HOME=/data1/oracle/product/10.2.0; ORACLE_SID=ts; export ORACLE_SID PATH=$ORACLE_HOME/bin:$PATH; export PATH Setelah mengedit file .profile, jangan lupa untuk relogin atau mengeksekusi file tersebut agar parameter yang disetting terbaca oleh current session. Berikut ini cara mengeksekusi file .profile. . ./.profile export ORACLE_HOME

Tutor by IRMAWATI,MMSI

Koneksi pakai SQLPLus di Mesin server Sekarang, mari kita mulai koneksi ke database. Misalkan saya akan connect pakai user system. Sqlplus Nanti akan diminta memasukkan username dan password. Kalau belum dirubah, password system adalah seperti yang ditunjukkan ketika membuat database. Bisa juga username langsung dimasukkan ke argument-nya SQLPlus, nanti kita cuma diminta memasukkan password saja. sqlplus system

Bisa juga langsung memasukkan username dan password. Misalkan password user system adalah oracle: sqlplus system/oracle Koneksi dengan langsung memasukkan username dan password sekaligus ini tidak direkomendasikan, karena password akan tampak ketika di ps -ef. Contoh: ps -ef|grep sql oracle 5742 25612 11:09:49 pts/1 0:00 sqlplus system/oracle

Cara lain juga, kita bisa masuk ke SQLPlus prompt tanpa login, kemudian jalankan perintah connect atau conn di SQL prompt.

Tutor by IRMAWATI,MMSI

Contoh: sqlplus /nolog SQL> conn Sama seperti ketika menjalankan sqlplus dari OS prompt, username dan password bisa disebutkan langsung atau tidak; kalau tidak disebutkan nanti akan ditanyakan. SQL> conn system/oracle SQL> conn system Koneksi pakai user sys User sys adalah merupakan super user, dikenal juga sebagai sysdba. Untuk koneksi pakai user sys, harus ditambahkan argument as sysdba. Contoh: SQL> conn sys/oracle as sysdba Bisa juga tanpa menyebutkan user sys, yaitu dengan memakai argument /. Contoh: SQL> conn / as sysdba Kalau tidak sebutkan argument as sysdba, akan muncul error berikut: SQL> conn sys/oracle ERROR: ORA-28009: connection as SYS should be as SYSDBA or SYSOPER Warning: You are no longer connected to ORACLE. Bisa juga langsung login ketika menjalankan SQLPLUS. Contoh: sqlplus "sys/oracle as sysdba" sqlplus "/ as sysdba"

Tutor by IRMAWATI,MMSI

Koneksi dari client ke server

Untuk bisa melakukan koneksi client-server, pastikan kita sudah mensetting dan menjalakan listener di server database, dan mensetting TNSNames di client. Kalau belum punya instalasi Oracle client di mesin/komputer/PC lain, kita bisa memanfaatkan database server sebagai client sekaligus. Ketika kita install software database Oracle, by default juga diinstall Oracle client; sehingga nantinya kita bisa melakukan koneksi client-server di mesin server database kita. Pada koneksi client-server , tambahkan argument @namatns. Contoh: sqlplus system@tsprimary sqlplus system/oracle@tsprimary sqlplus "sys@tsprimary as sysdba" sqlplus "sys/oracle@tsprimary as sysdba" SQL> conn system@tsprimary SQL> conn system/oracle@tsprimary SQL> conn sys@tsprimary as sysdba SQL> conn sys/oracle@tsprimary as sysdba

2.2. Startup dan shutdown instance Administrasi (aktivitas) yang bisa kita lakukan pada instance adalah startup, shutdown, dan alter. Secara umum proses startup adalah sebagai berikut: 1. Database mati (shutdown) Background process belum naik. Memori belum dialokasikan

Tutor by IRMAWATI,MMSI

2. nomount Backgroung process dinaikkan. Memory dialokasikan 3. mount Instance membaca control file. Control file berisi konfigurasi database. Instance belum membaca data file. 4. open Instance sudah membaca data file (header). Database siap diakses

Command (perintah) startup : startup startup open startup nomount startup mount startup force Command startup saja tanpa argument, by default adalah startup open Command startup force adalah sama saja dengan shutdown abort

Tutor by IRMAWATI,MMSI

Kemudian startup Command shutdown : shutdown normal shutdown transactional shutdown immediate shutdown abort

2.3.

Administrasi User

Waktu kita membuat database, secara otomatis Oracle membuat user sys dan system. User sys bisa melakukan apa saja, oleh karenanya disebut sebagai super user. User system digunakan untuk administrasi database sehari-hari, misalnya membuat user, tablespace, dan lain-lain. Kalau user sys bisa melakukan semuanya, kenapa mesti ada user system? Ya tentu saja, pertimbangannya adalah masalah security. Mari kita mulai membahas administrasi user di database Oracle. Create (membuat) user Berikut ini format perintah SQL untuk membuat user

Tutor by IRMAWATI,MMSI

Perintah membuat user yang paling sederhana adalah (contoh, saya akan membuat user dengan nama IRMA dan passwordnya THEA99): SQL> conn system SQL> create user IRMA identified by THEA99; Karena tidak di-specify, maka atribut-atribut yang lainnya memakai nilai default. Untuk melihatnya lihat di view dba_users SQL> select * from dba_users where username='IRMA'; Ini hasilnya: USERNAME: IRMA ACCOUNT_STATUS : OPEN EXPIRY_DATE : DEFAULT_TABLESPACE : USERS TEMPORARY_TABLESPACE : TEMP PROFILE : DEFAULT INITIAL_RSRC_CONSUMER_GROUP : DEFAULT_CONSUMER_GROUP
Tutor by IRMAWATI,MMSI

Untuk melihat default tablespace dan default temporary tablespace dari suatu database, silahkan lihat di Administrasi Tablespace. Berikut ini contoh membuat user dengan men-specify default tablespace, quota pemakaian di tablespace, dan temporary tablespace (ini contoh yang paling sering digunakan):
SQL> CREATE USER IRMA IDENTIFIED BY THEA99 DEFAULT TABLESPACE users QUOTA unlimited ON users QUOTA 500K ON data_ts TEMPOR ARY TABLESPACE temp;

Alter (mengubah) user Semua atribut user bisa diubah (alter) kecuali username itu sendiri. Secara umum perintah alter sama dengan create, hanya mengganti kata create menjadi alter. Contoh: SQL> alter user THEA identified by THEA991;

Grant User Setelah user dibuat, user tersebut tidak bisa melakukan koneksi sebelum diberi grant (hak) untuk connect ke database. SQL> conn IRMA/THEA991 ERROR: ORA-01045: user IRMA lacks CREATE SESSION privilege; logon denied Berikut ini perintah untuk memberi grant ke user agar bisa connect ke database

Tutor by IRMAWATI,MMSI

SQL> conn system; SQL> grant connect to IRMA; Setelah itu, dengan user IRMA tersebut, mari kita coba membuat table SQL> conn IRMA/THEA991 SQL> create table tab_test (no number); ERROR at line 1: ORA-01031: insufficient privileges ternyata user IRMA belum punya priviledges untuk membuat table. Coba beri privilege ke user IRMA agar bisa membuat tabel SQL> conn system; SQL> grant create table to IRMA;

Sekarang buat table SQL> conn IRMA/THEA991 SQL> create table tab_test (no number); ERROR at line 1: ORA-01950: no privileges on tablespace 'USERS' ternyata error. Walaupun default tablespace untuk user IRMA adalah tablespace USERS, ternyata IRMA masih belum bisa membuat table (menulis) di tablespace USERS. Beri quota ke user IRMA, bisa unlimited ataupun di-specify besarannya. Contoh, beri quota unlimited: SQL> conn system; SQL> alter user IRMA quota unlimited on USERS; Coba lagi, dan berhasil

Tutor by IRMAWATI,MMSI

SQL> conn IRMA/THEA991 SQL> create table tab_test (no number); Table created. Agar bisa membuat index, user IRMA harus diberi grant. Demikian juga untuk bisa membuat view. Dapat anda bayangkan, berapa banyak privilege yang mesti kita beri (grant)? Untuk mengatasi itu, Oracle membuat role. Role berisi beberapa (banyak) privilege. Contoh, role RESOURCE berisi grant untuk membuat table, membuat index, quota unlimited di default tablespace, dan lain-lain. Berikut ini perintah untuk memberi hak (grant) role RESOURCE ke user IRMA SQL> conn system SQL> grant RESOURCE to IRMA; Umumnya, cukup dengan memberi grant CONNECT dan RESOURCE ke user yang baru dibuat, user tersebut sudah bisa melakukan banyak pekerjaan. SQL> create user IRMA identified by THEA99; SQL> grant connect to IRMA; SQL> grant RESOURCE to IRMA; Menghapus User SQL> drop user IRMA; Kalau user tersebut mempunyai object (misalnya tabel), maka akan muncul error berikut ORA-01922: CASCADE must be specified to drop 'IRMA' Kalau begitu, tambahkan parameter CASCADE untuk sekaligus menghapus semua object yang dimiliki user tersebut SQL> drop user THEA CASCADE;

Tutor by IRMAWATI,MMSI

BAB III SQL Basic 3.1. SQL Statement Untuk menampilkan data dari database, kita menggunakan perintah SQL select. Dengan menggunakan SELECT statement kita dapat melakukan hal2 berikut : 1. Selection : Kita dapat menggunakan SELECT statement untuk memilih row/data pada query. 2. Projection : dengan projection kita dapat menampilkan kolom yang kita inginkan dari table dengan query. 3. Join : Dengan join kita dapat menampilkan data dari beberapa table yang berhubungan dengan membuat link antar table tersebut. Syntak Select Statement dasar : SELECT FROM [DISTINCT] table; {*, column [alias], . . . } table sesuai yang kita inginkan dengan

Keterangan : SELECT DISTINCT * column alias FROM table List satu atau beberapa kolom Menampilkan hanya satu data jika ada duplikasi Menampilkan Semua kolom Menampilkan kolom dengan nama column Memberikan nama berbeda untuk kolom Nama table yang di query

Menampilkan semua kolom dari tabel department SQL> SELECT * 2 FROM dept;

Tutor by IRMAWATI,MMSI

DEPTNO DNAME ---------- -------------10 ACCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS

LOC ------------NEW YORK DALLAS CHICAGO BOSTON

untuk menampilkan semua kolom kita bisa menggunakan asterik (*) atau select semua kolom dari table yang di query. Untuk kasus table department ada tiga kolom yaitu DEPTNO,DNAME dan LOC, maka ketika kolom tersebut akan kita gunakan dalam Select statement. SQL> SELECT deptno, dname, loc 2 FROM dept; DEPTNO DNAME ---------- -------------10 ACCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS Arithmetic Expression Jika pada suatu saat kita ingin melakukan modifikasi data hasil query, seperti melakukan penambahan,pengurangan dll, arithmetik untuk melakukannya SQL> SELECT ename, sal, sal+200 2 FROM emp; ENAME SAL SAL+200 ---------1800 1450 3175 1450 kita bisa menggunakan operator LOC ------------NEW YORK DALLAS CHICAGO BOSTON

---------- ---------ALLEN 1600 WARD 1250 JONES 2975 MARTIN 1250

Tutor by IRMAWATI,MMSI

Urutan eksekusi operator adalah * / + SQL> SELECT ename, sal, 12*sal+10 2 FROM emp; ENAME SAL 12*SAL+10 ---------- ---------- ---------ALLEN 1921 16000 WARD 1250 15010 JONES 2975 35710 MARTIN 1250 15010 Mendefinisikan kolom ALias Untuk memberikan nama kolom yang berbeda pada tampilan kita menggunakan alias, contoh: SQL> SELECT ename as "NAMA", sal "GAJI" 2 FROM emp; NAMA ALLEN WARD JONES MARTIN Selain GAJI 1600 1250 2975 1250 tanda petik (), kita juga bisa menggunakan

menggunakan

keyword AS. Tapi jika alias yang diberikan terdiri dari dua kata kita harus menggunakan tanda petik. Keyword as dan tanda petik bisa digunakan bersama-sama. Operator Penggabungan (concatenation) Digunakan untuk menggabungkan kolom, karakter atau string dengan kolom yang lain. Digambarkan dengan dua garis tegak (||).

Tutor by IRMAWATI,MMSI

Sebagai contoh kita ingin menampilkan data karyawan x adalah seorang y. SQL> SELECT ename || KARYAWAN" 2 FROM emp; ' Adalah Seorang ' || job as "DETAIL

DETAIL KARYAWAN ----------------------------------ALLEN Adalah Seorang SALESMAN WARD Adalah Seorang SALESMAN JONES Adalah Seorang MANAGER MARTIN Adalah Seorang SALESMAN Duplicate Row Secara default hasil query menampilkan semua data tanpa mengeliminasi data yang duplikat. Untuk menangani itu kita gunakan keyword DISTINCT. SQL> SELECT deptno 2 FROM emp; DEPTNO ---------10 20 10 30 30 SQL> SELECT DISTINCT deptno 2 FROM emp; DEPTNO ---------10 20 30

Tutor by IRMAWATI,MMSI

3.2.

SQL*Plus environment yang padanya kita dapat melakukan

SQL*Plus adalah suatu

eksekusi perintah SQL, Format, print hasil query untuk keperluan report, membuat script SQL yang bisa digunakan untuk waktu berikutnya. Loggin ke SQL *Plus Untuk windows environment

User Name Password Host String Untuk command line CMD> sqlplus

: User database : Password user database : Database Connection String

[ username[/password[@database]]] username dengan

Untuk keamanan pada sqlplus masukkan hanya database, untuk password diisi dari prompt password. Menampilkan Struktur Table

Dalam SQL*Plus untuk menampilkan struktur table digunakan perintah DESC atau DESCRIBE

Tutor by IRMAWATI,MMSI

SQL> DESCRIBE dept; Name Null? Type ----------------------------------------- -------- -----------DEPTNO NOT NULL NUMBER(2) DNAME VARCHAR2(14) LOC VARCHAR2(13) Null? Type Mengindikasikan isi dari kolom, NOT NULL berarti kolom harus berisi data. Informasi tipe data dari kolom.

SQL *Plus Command Edit Command A[PPEND] text C[HANGE] /old /new C[HANGE] /text / CL[EAR] BUFF[ER] DEL I[NPUT] I[NPUT] text L[IST] L[IST] n L[IST] m n n n text Deskripsi Menambahkan text ke akhir dari baris Mengganti text old dengan new Menghapus text dari baris Menghapus buffer Menghapus baris Menambahkan sejumlah baris Menambahkan satu baris berisi text Menampilkan semua SQL di buffer Menampilkan baris ke n dari SQL Buffer Menampilkan baris antara m dan n dari SQL Buffer Membuat baris ke n menjadi baris sekarang Replace baris ke n dengan text

SQL *Plus File Command Command SAV[E] filename[.ext] [REP]LACE[APP[END]] GET filename[.ext] STA[RT] filename[.ext] ED[IT] SPO[OL] filename[.ext] EXIT Deskripsi Menyimpan SQL Buffer kedalam filename Menuliskan isi filename ke SQL Buffer Menjalankan filename Memanggil editor untuk edit SQL Buffer Meyimpan hasi query ke filename Keluar dari SQL *Plus

Tutor by IRMAWATI,MMSI

3.3. SQL

SQL *Plus Vs SQL Statement adalah bahasa yang digunakan untuk berkomunikasi dengan

database Oracle server dari sebuah tool atau aplikasi. Oracle SQL terdiri dari beberapa bagian, ketika kita menjalankan perintah SQL, sql akan disimpan dalam suatu memory yang disebut SQL Buffer dan akan tetap berada dalam memory sampai ada statemen baru. SQL *Plus adalah tool oracle yang mengenali dan menjalankan perintah SQL ke Oracle Server. Berikut dalah tabel perbedaan antara SQL dan SQL *Plus

SQL Bahasa untuk komunikasi ANSI Standard Manipulasi Data di database Di simpan di SQL Buffer Keyword tidak dapat disingkat Menggunakan fungsi untuk Format data

SQL *Plus Suatu Environment Khusus untuk Oracle Tidak bisa memanipulasi data Tidak ada SQL Buffer Keyword bisa disingkat Menggunakan command untuk format data

Tutor by IRMAWATI,MMSI

WHERE Clause Untuk menampilkan data dari database dengan kondisi yang kita

inginkan misalnya hanya menampilkan employee yang mempunyai gaji lebih dari 1000 kita menggunakan WHERE clause. SELECT FROM [WHERE WHERE condition(s) [DISTINCT] {* | table condition(s) ] column [alias] , . . . }

Membatasi data hasil query yang sesuai dengan kondisi yang diberikan. merupakan gabungan dari kolom, ekspresi, atau operator perbandingan.

SQL> SELECT ename, job, deptno 2 FROM emp 3 WHERE job='CLERK'; ENAME ---------SMITH ADAMS JAMES MILLER Pada contoh JOB DEPTNO --------- ---------CLERK CLERK CLERK CLERK diatas kita ingin

20 20 30 10 menampilkan semua employee yang

mempunyai pekerjaan sebagai CLERK. Pada kondisi diatas CLERK ditulis huruf besar karena String dalam data di oracle case sensitive.

Tutor by IRMAWATI,MMSI

Catatan : - Nilai Character string dan date ditempatkan diantara tanda petik 1 - Nilai Character string adalah case sensitive dan nilai Date format sensitive. - Default datae format adalah DD-MON-YY

Operator = > >= < <= <> BETWEEN x1 AND x2 IN (list) LIKE IS NULL Syntax .. WHERE contoh : WHERE WHERE WHERE expr operator

Arti Sama Dengan Lebih Dari Lebih Dari Sama Dengan Kurang Dari Kurang Dari Sama Dengan Tidak Sama Dengan Antara x1 dan x2 Yang sesuai dengan nilai list Sesuai dengan pola karakter Nilai Null

value

hiredate = 01-JAN-95 sal >= 1500 ename = SMITH

query untuk menampilkan employee yang mempunyai gaji lebih kecil atau sama dengan komisi.

Tutor by IRMAWATI,MMSI

SQL> SELECT ename, sal,comm 2 FROM emp 3 WHERE sal < = comm; ENAME ---------MARTIN SAL COMM ---------- ---------1250 1400

menampilkan semua employee yang mempunyai gaji antara 1000 dan 1500 dolar. SQL> SELECT ename, sal 2 FROM emp 3 WHERE sal BETWEEN 1000 AND 1500; ENAME ---------WARD MARTIN TURNER ADAMS MILLER SAL ---------1250 1250 1500 1100 1300

Tutor by IRMAWATI,MMSI

Menggunakan operator LIKE SQL> SELECT ename 2 FROM emp 3 WHERE ename LIKE '_A%'; ENAME ---------WARD MARTI N JAMES Symbol % _ Deskripsi Merupakan gabungan beberapa karakter atau bias juga null Bersesuaian dengan satu karakter

Rule of precedence Order 1 2 3 4 Operator Semua operator Perbandingan NOT AND OR

ORDER BY Clause Dengan order by kita dapat mengurutkan data hasil query ascending atau descending. Order By harus diletakkan di statement paling belakang. Syntak: SELECT FROM [WHERE [ORDER BY expr table condition(s)] {column, expr} [ASC | DESC ]]

default urutan adalah ascending yaitu dari kecil ke besar. Untuk mengurutkan dari besar ke kecil anda harus menggunakan kata kunci DESC.

Tutor by IRMAWATI,MMSI

Latihan SQL Basic :

1. Tuliskan perintah SQL untuk menampilkan struktur table DEPATMENTS dan menampilkan semua data. 2. Buat sebuah query untuk menampilkan nama,job dan hiredate dan nomor karyawan dari table employee, dan simpan SQL tersebut dengan nama b1q2.sql. 3. Jalankan file sql b1q2.sql yang sudah anda simpan. 4. Buat query untuk menampilkan jenis pekerjaan dari table EMP (unik). 5. Load file b1q2.sql ke SQL Buffer, ganti tampilan kolom dengan Emp #, Employee, Job dan Hire Date. Jalankan query! 6. Tampilkan semua data EMP, pisahkan untuk setiap kolom dengan koma (,), dan beri nama kolom DAFTAR KARYAWAN. 7. Tampilkan nama dan gaji karyawan yang gajinya lebih dari 2850. Simpan SQL dengan nama b1q7.sql. 8. Edit file b1q7.sql untuk menampilkan nama dan gaji keryawan dimana gaji tidak termasuk dalam range anatara 1500 dan 2850.Simpan ulang dengan nama b1q8.sql. 9. Tampilkan nama dan deptno yanng deptno 10 dan 30 urutkan hasil berdasarkan nama. 10.Tampilkan nama dari karyawan dimana huruf ke tiga adalah A. 11.Tampilkan nama karyawan yang mempunyai dua huruf L dan lokasi kerja di dept 30 atau managernya 7782. 12.Tampilkan nama, job, salary untuk semua karyawan dimana pekerjaannya Clerk tau Analyst dan gaji tidak sama dengan 1000, 3000 , atau 5000. 13.Tampilkan Nama, gaji, dan komisi dari semua karyawan dimana komisi lebih besar dari gaji yang sudah dinaikkan 10%.

BAB IV SQL FUNCTION Tujuan : - Mengetahui type dan fungsi dalam SQL - Menggunakan Fungsi Char, Number, dan Date dalam SELECT

Tutor by IRMAWATI,MMSI

4.1.

statement Menjelaskan penggunaan Fungsi Konversi. Single Row Function

Dalam kelompok ini inputnya adalah satu row dan menghasilkan satu hasil per-row. Untuk single row function dapat dikategorikan sebagai berikut : Character Number Date Conversion

Single row function digunakan untuk memanipulasi data. Menerima input satu atau lebih argumen dan mengembalikan sebuah nilai untuk setiap row yang dihasilkan query. Inputan dapat berupa konstanta, variable, nama kolom atau ekspresi. Character Function

Function LOWER (column | expression) UPPER (column | expression) INITCAP (column | expression) CONCAT(column1| expression1,column2| expression2)

Purpose Merubah karakter menjadi lowercase Merubah karakter menjadi uppercase Mengubah Huruf pertama dari setiap kata menjadi uppercase Menggabungkan expression1 dan expression2. (ekuivalen dengan ||)

Tutor by IRMAWATI,MMSI

SUBSTR(column| expression,m[n])

LENGTH(column|expression) INSTR(column|expression,m) LPAD(column| expression,n,string) TRIM(expression)

Mengembalikan karakter dari input mulai dari karakter pada posisi m. n adalah panjang karangter yang diambil. Jika m negative proses pengambilan dari belakang. Jika n tidak disisi maka semua karakter dari posisi m ke akhir akan diambil Mengembalikan jumlah karakter dari input Mengembalikan posisi dari m karakter Membuat rata kanan dengan menambahkan string jika input kurang dari n Menghilangkan spasi pada string input.

Tutor by IRMAWATI,MMSI

Case Conversion Function Function LOWER(SQL Fundamental) UPPER(SQL Fundamental) INITCAP(SQL Fundamental) Contoh penggunaan character function SQL> SELECT empno, ename, deptno 2 FROM emp 3 WHERE ename='blake'; no rows selected SQL> SELECT empno, ename, deptno 2 FROM emp 3 WHERE ename=UPPER('blake'); EMPNO ENAME DEPTNO ---------- ---------- ---------7698 BLAKE 30 Result sql fundamental SQL FUNDAMENTAL Sql Fundamental

Tutor by IRMAWATI,MMSI

Character Manipulation Function

Tutor by IRMAWATI,MMSI

Function CONCAT(SQL,Basic) SUBSTR(String,1,3) LENGTH(String) INSTR(String, r) LPAD(sal,10,*) TRIM(X FROM XXDATAX) Contoh Penggunaan SQL>SELECT 2 3

Result SQL Basic Str 6 3 ******5000 DATA

ename, CONCAT(ename,job), LENGTH(ename), INSTR(ename,'A')

FROM emp WHERE SUBSTR(job,1,5) = 'SALES';

ENAME CONCAT(ENAME,JOB) LENGTH(ENAME) INSTR(ENAME,'A') ---------- ------------------- ------------- ---------------ALLEN ALLENSALESMAN 5 1 WARD WARDSALESMAN 4 2 MARTIN MARTINSALESMAN 6 2 TURNER TURNERSALESMAN 6 0 Number Function Number Function menerima input numeric dan mengembalikan nilai numeric: Function Purpose ROUND(column|expression,n) Membulatkan kolom atau ekspresi menjadi n dibelakan koma. Jika n null tidak ada nilai dibelakang koma, jika n negative nilai decimal sebelum koma diset nol SQL> SELECT ROUND(45.923,2), ROUND(45.923,0), 2 ROUND(45.923,-1) 3 FROM DUAL; ROUND(45.923,2) ROUND(45.923,0) ROUND(45.923,-1) --------------- --------------- ---------------45.92 46 50

Tutor by IRMAWATI,MMSI

SQL> SELECT TRUNC(45.923,2), TRUNC(45.923), 2 TRUNC(45.923,-1) 3 FROM DUAL; TRUNC(45.923,2) TRUNC(45.923) TRUNC(45.923,-1) --------------- ------------- ---------------45.92 45 40 SQL> SELECT ename, sal, comm, MOD(sal, comm) 2 FROM emp 3 WHERE job='SALESMAN'; ENAME SAL COMM MOD(SAL,COMM)

---------- ---------- ---------- ------------ALLEN 1600 300 100 WARD 1250 500 250 MARTIN 1250 1400 1250 TURNER 1500 0 1500

Date Function Oracle menyimpan data dalam numeric format yang merepresentasikan

abad, tahun, bulan, hari, jam, menit dan detik. Tampilan default adalah DD-MON-YY, nilai valid dalam oracle adalah antara 1 januari 4712 BC dan 31 Desember 9999. SYSDATE Sysdate adalah fungsi yang mengembalikan tanggal hari ini. Anda dapat Menggunakan sysdate seperti menggunakan kolom lain, table dummy yang disebut DUAL. DUAL Dual adalah dummy table yang dimiliki oleh SYS dan dapat diakses oleh semua user. Dual berisi satu kolom dan satu row yang berisi nilai x. sebagai contoh anda dapat menampilkan tanggal sekarang dengan memilih sysdate dari

Tutor by IRMAWATI,MMSI

SQL>SELECT SYSDATE 2 FROM DUAL;

Aritmatika dalam Date Karena tipe date disimpan oleh oracle berupa numeric data, maka anda bisa melakukan Operasi aritmatika padanya seperti penjumlahan dan pengurangan. Operasi yang bisa dilakukan adalah sebagai berikut: Operasi Date + number Date number Date-date Date+number/24 Hasil Date Date Day Date Keterangan Menambahkan sejumlan hari ke date Mengurangi date dengan sejumlah hari Mengurai date dengan date Menambahkan jam ke date

Fungsi fungsi dalam tipe data Date Fungsi MONTHS_BETWEEN ADD_MONTHS NEXT_DAY LAST_DAY ROUND TRUNC Keterangan Jumlah bulan antara dua tanggal Menambahkan bulan ke tanggal Hari berikutnya dari tanggal disebutkan. Hari terakhir dari bulan Round tanggal Truncate tanggal

yang

Tutor by IRMAWATI,MMSI

Keterangan : MONTHS_BETWEEN(date1, date2):mencari jumlah bulan antara date1 dan date2. hasil bisa positif atau negatif. ADD_MONTHS(date,n) : menambahkan n bulan ke date. NEXT_DAY(date,char):mencari tanggal yang diberikan. berikutnya sesuai dengan hari

LAST_DAY(date) :Mencari tanggal terakhir dari bulan dalam date. ROUD(date[,fmt]) : mengembalikan tanggal yang diround berdasarkan format yang diberikan. Jika format tidak diberikan maka tanggal akan di round ke tanggal terdekat. TRUNC(date[,fmt]) waktu. Contoh : MONTHS_BETWEEN(01-SEP-95,11-JAN-94) = ADD_MONTHS(11-JAN-94,6) = NEXT_DAY(01-SEP-95,FRIDAY) = LAST_DAY(01-SEP-95) = ROUND(25-JUL-95,MONTH) = ROUND(25-JUL-95,YEAR) = TRUNC(25-JUL-95,MONTH) = TRUNC(25-JUL-95,YEAR) = SQL> SELECT empno, hiredate, 2 ROUND(hiredate,'MONTH'),TRUNC(hiredate,'MONTH') 3 FROM emp; EMPNO HIREDATE ROUND(HIR TRUNC(HIR --------01-SEP-81 01-JUN-81 01-NOV-81 01-DEC-81 01-JAN-82 19.6774194 11-JUL-94 08-SEP-95 30-SEP-95 01-AUG-95 01-JAN-96 01-JUL-95 01-JAN-95 : truncate tanggal dan menghilangkan format

---------- --------- --------7654 28-SEP-81 01-OCT-81 7782 09-JUN-81 01-JUN-81 7839 17-NOV-81 01-DEC-81 7902 03-DEC-81 01-DEC-81 7934 23-JAN-82 01-FEB-82

Tutor by IRMAWATI,MMSI

Conversion Function Fungsi konversi di oracle terbagi menjadi dua yaitu: Implicit Datatype Conversion Expicit Datatype Conversion. Secara Sebagai umum catatan oracle CHAR server ke menggunakan NUMBER hanya rule ekspresi, jika ketika karakter

konversi tipe data diperlukan. berhasil adalah valid number, dan CHAR ke DATE berhasil jika format dari char adalah DD-MON-YY. Explicit Datatype Conversion adalah konversi tipe data menggunakan fungsi yang telah disediakan oleh oracle. Oracle meyediakan tiga fungsi utama untuk melakukan konversi tipe data : FUNCTION TO_CHAR(number/date,[fmt], [nlsparams]) KEGUNAAN Mengkonversi number atau Date ke tipe data VARCHAR2 dengan format fmt. Number Conversion : nlsparams dapat berupa : - decimal character - Group separator - Local currency - International currency Date Conversion : nlsparams merupakan 15

TO_CHAR(number/date,[fmt], [nlsparams])

Tutor by IRMAWATI,MMSI

format dari tanggal, bulan dan tahun. TO_NUMBER(char,[fmt],[nlsparams]) TO_DATE(char,[fmt],[nlsparams])

hari,

Mnegkonversi charater uang berisi digit ke number. Mengkonversi character yang bersesuaian dengan tanggal ke tipe data date.

Format Element tanggal yang valid di oracle. Element SCC atau CC YYYY atau SYYYY YYY , YY, Y MM MON MONTH DDD, DD, D DAY DY J WW, W HH, HH12, HH24 MI SS TH AM, PM Keterangan Abad : S adalah prefix BC Year : S prefix BC Tahun 3, 2 atau 1 angka terakhir Bulan, dua digit Nama bulan, tiga kata Nama bulan lengkap Hari dari tahun, bulan atau minggu Nama hari Nama hari disingkat 3 huruf. Julian date Minggu dari tahun atau bulan. Jam dari hari, jam (1-12), jam (0-23) Menit (0-59) Detik (0-59) Ordinal number (contoh DDTH hasilnya 4th) Meridian indicator.

SQL> SELECT ename, TO_CHAR(hiredate,'fmDD Month YYYY') hiredate 2 FROM emp; ENAME HIREDATE ---------- ----------------ALLEN 20 February 1981 WARD 22 February 1981 JONES 2 April 1981 MARTIN 28 September 1981 TO_CHAR untuk konversi Number
Tutor by IRMAWATI,MMSI

Element 9 0 $ L . ,

Deskripsi Merepresentasikan number Menuliskan angka 0 Menempatkan tanda dolar Menggunakan local currency simbol Nilai desimal Nilai ribuan

SQL> SELECT ename, TO_CHAR(sal,'$99,999') salary 2 FROM emp; ENAME SALARY ---------- -------ALLEN $1,600 WARD $1,250 JONES $2,975

Tutor by IRMAWATI,MMSI

NVL Function NVL Function berfungsi untuk mengkonversi nilai null ke nilai yang sebernarnya Sebagai contoh : NVL(comm,0) NVL(hiredate,01-JAN-81) NVL(job,Job Not Yet)

SQL> SELECT ename, sal, comm, (sal*10)+NVL(comm,0) total 2 FROM emp; ENAME ---------- ---------ALLEN WARD JONES MARTIN SAL COMM ---------- ---------1600 300 1250 500 2975 1250 1400 TOTAL 16300 13000 29750 13900

DECODE FUNCTION Fungsi decode mirip dengan kondisi if then else yang dipakai pada SQL statement. DECODE(col/expression,search1,result1 [,search2, result2, . . . ] [,default]) contoh penggunaan : kita ingin memberikan perubahan gaji pada karyawan sesuai kondisi dibawah ini if job = ANALYST then sal = sal * 1.1 if job = CLERK then sal = sal * 1.15 if job = MANAGER then sal = sal * 1.20 else sal = sal;

Tutor by IRMAWATI,MMSI

SQL> SELECT job, sal, 2 DECODE(job,'ANALYST',sal*1.1, 3 'CLERK',sal*1.15, 4 'MANAGER',sal*1.20, 5 sal) NEW_SAL 6 FROM emp;

JOB SAL NEW_SAL --------------------------MANAGER 2975 3570 SALESMAN 1250 1250 MANAGER 2850 3420 ANALYST 3000 3300 PRESIDEN 5000 5000 T SALESMAN 1500 1500 CLERK 1100 1265 CLERK 950 1092.5

Tutor by IRMAWATI,MMSI

4.2.

Multiple Row Function

Pada multiple Row function fungsi menerima input lebih dari satu dan menghasilkan satu output. Contoh dari multiple row function adalah : - AVG - SUM - COUNT - MAX - MIN - STDDEV Untuk penjelasan dari fungsi diatas akan ada pada bab selanjutnya.

Latihan SQL :

1. Buatlah

query untuk menampilkan tanggal hari ini dan beri

nama kolom Tanggal Sekarang. 2. Tampilkan nomor karyawan, nama, gaji dan gaji yang sudah ditambah 15% dan simpan dengan nama b2p2.sql. 3. Load file b2p2.sql script dan b2p2.sql edit nama kolom tambahkan kolom untuk gaji yang isinya yang nilai ditambahkan dengan Gaji Baru. 4. Modifikasi penambahan gaji dan beri label penambahan. 5. Tampilkan nama karyawan, tanggal masuk kerja dan tanggal gaji pertama. Gaji pertama didapat setelah bekerja 6 bulan minggu pertama, beri nama kolom review date. Format review date Sunday, the seventh of September, 1985. 6. Tampilkan bulan. Beri nama label karyaan kolom dan lama mereka bekerja dalam urutkan dengan MONTHS_WORKED,

berdasarkan lama bekerja

Tutor by IRMAWATI,MMSI

BAB V JOIN, SUB-QUERY Terkadang anda pasti ingin menampilkan data dari beberapa table, sebagai contoh anda ingin menampilkan nama, nomor departemen dan lokasi kantor. Untuk mendapatkan itu anda harus menggabungkan table EMP Dan DEPT untuk menampilkan data tersebut. Syntak: SELECT FROM WHERE

table1.column, table2.column table1, table2 table1.column1 = table2.column2

Ketika data dari lebih satu table dalam database maka kondisi join diperlukan untuk menampilkannya. Row dari satu table dapat dijoin dengan row pada table lain berdasarkan kolom tertentu yang berhubungan, biasanya primary key dan foreign key. Untuk menampilkan data dari dua tabel atau lebih digunakan kondisi join pada WHERE clause. Jika ada n table yang dijoin minimal ada n-1 kondisi join. 5.1. Kartesian Produk Kartesian produk terjadi ketika: kondisi join tidak diberikan. Kondisi join tidak valid. Semua row pada table pertama dijoin dengan semua row pada tabel kedua. Ketika kondisi join tidak valid atau tidak diberikan dengan benar maka akan dihasilkan cartesian product, dimana semua kombinasi row akan Kartesian produk akan mengenerate jumlah record yang ditampilkan.

Tutor by IRMAWATI,MMSI

banyak, dan hasilnya tidak terlalu perlu, kecuali memang anda ingin menampilkan semua kombinasi yang mungkin dari dua table yang dijoin. Tipe Join Ada dua tipe utama dalam join yaitu : - Equijoin - Non-Equijoin Selain tipe join diatas ada beberapa tipe join yang lain yaitu outer join, Self join dan Set Operator. Equijoin

Untuk menunnjukkan data employee dan nama departemen anda harus membandingkan nilai pada kolom DEPTNO pada table EMP dengan DEPT kolom DEPTNO pada table DEPT. hubungan antara table EMP dan

disebut equijoins. Biasanya tipe join ini menggunakan primary key dan foreign key untuk proses joinnya. Equijoin lebih dikenal sebgai inner join atau simple join. SQL> SELECT emp.empno, emp.ename, emp.deptno, 2 dept.deptno, dept.dname 3 FROM emp, dept 4 WHERE emp.deptno = dept.deptno; EMPNO ENAME DEPTNO DEPTNO DNAME ---------- ---------- ---------- ---------- -------------7934 MILLER 10 10 ACCOUNTING 7782 CLARK 10 10 ACCOUNTING 7788 SCOTT 20 20 RESEARCH 7369 SMITH 20 20 RESEARCH

Tutor by IRMAWATI,MMSI

Pada contoh diatas perintah SELECT menampilkan empno, ename dari table EMP, dan deptno, dname dari table DEPT. Klausa FROM menunjukkan ada dua table yang diakses untuk menampilkan data

tersebut. Dan kondisi WHERE bagaimana kedua table harus dijoin. Pada kondisi diatas kedua table akan dijoin berdasarkan kolom DEPTNO. Anda harus menggunakan nama table disertai kolom untuk

menghindari ambiguitas. Menggunakan table Alias Menggunakan nama table untuk mengambil kolom akan

membutuhkan waktu penulisan jika nama table sangat panjang. Untuk memudahkan oracle menyediakan table. SQL> SELECT a.empno, a.ename, a.deptno, 2 b.deptno, b.dname 3 FROM emp a, 4 dept b 5 WHERE a.deptno = b.deptno; EMPNO ENAME DEPTNO DEPTNO DNAME ---------- ---------- ---------- ---------- -------------7934 MILLER 10 10 ACCOUNTING 7782 CLARK 10 10 ACCOUNTING 7788 SCOTT 20 20 RESEARCH 7369 SMITH 20 20 RESEARCH table alias untuk menggantikan nama

Tutor by IRMAWATI,MMSI

Non-Equijoin Kita lihat table EMP dan SALGRADE, kedua table tersebut adalah nonequijoins, karena tidak ada hubungan secara langsung antara table EMP dengan Table SALGRADE. Hubungan antara kedua table tersebut adalah pada nilai kolom SAL pada table EMP adalah antara kolom LOSAL dan HISAL pada table SALGRADE. Relasi pada tipe ini adalah relasi yang menggunakan tanda selain sama dengan (=). SQL> SELECT a.ename, a.sal, b.grade 2 FROM emp a, 3 salgrade b 4 WHERE a.sal BETWEEN b.losal AND b.hisal; ENAME SAL GRADE ---------- ---------- ---------KING 5000 5 SCOTT 3000 4 CLARK 2450 4 MILLER 1300 2 Outer Join Jika ada suatu row tidak memenuhi kondisi join maka row itu tidak akan dimunculkan. Sebagai contoh jika kita menambah satu departemen pada table DEPT misal OPERATIONS, maka departemen OPERATIONS tidak akan muncul dengan query join diatas karena tidak ada pegawai yang kerja didepartemen itu. Departemen OPERATIONS dapat dimunculkan dengan menggunakan outer join. Anda dapat melakukan outer join dengan operator (+). Self Join Kadang kita perlu melakukan join dengan table itu sendiri, sebagai contoh untuk mencari manajer dari setiap pegawai anda membutuhkan join table

Tutor by IRMAWATI,MMSI

EMP dengan dirinya sendiri. Pada kasus ini kondisi join adalah kolom MGR dan kolom EMPNO.

Group Function Sebuah group function menerima input sekumpulan nilai dan

menghasilkan satu nilai hasil setiap group. Beberapa contoh Group Function yang sering diapakai adalah:

Function AVG([DISTINCT|ALL],n) COUNT({*|[DISTINCT|ALL]expr}) MAX([DISTINCT|ALL]expr) MIN([DISTINCT|ALL]expr) STDDEV([DISTINCT|ALL]x) SUM([DISTINCT|ALL]n) VARIANCE([DISTINCT|ALL]x)

Deskripsi Nilai rata-rata dari n Jumlah dari row, atau expr Nilai maksimum dari expr Nilai minimun dari expr Standar deviasi dari n Jumlah dari n Nilai vaiance dari n

Tutor by IRMAWATI,MMSI

Keterangan: Option DISTINCT membuat fungsi hanya menggunakan nilai yang tidak duplikat,sedangkan option ALL akan menggunakan semua Semua fungsi kecuali COUNT(*) mengabaikan nilai NULL, untuk nilai.Default nilainya adalah ALL. memperhitukan nilai NULL digunakan fungsi NVL. Secara implisit oracle akan mengurutkan hasil secara ascending ketika menggunakan klausa GROUP BY. Tipe data dari argumen dapat berupa CHAR,VARCHAR2, NUMBER atau DATE. Menggunakan klausa GROUP BY Ketika menggunakan GROUP BY pada SELECT statemen anda harus menyakinkan bahwa semua kolom yang tidak termasuk dalam fungsi group, harus disertakan dalam klausa GROUP BY. Sebagai contoh SELECT deptno, AVG(sal) FROM emp GROUP BY deptno Pada perintah SELECT diatas, kita ingin menampilkan rata-rata gaji dari tiap departemen. Klausa GROUP BY pada banyak Kolom Pada suatu saat kita terkadang memerlukan menampilkan data hasil group dari proses grouping. Sebagai contoh kita ingin menampilkan jumlah gaji Yang harus dibayar untuk tiap pekerjaan dari tiap depertemen. Langkah yang harus dilakukan adalah: Table EMP pertama digroup berdasarkan departemen, kemudian hasil ini digroup berdasarkan pekerjaan.

Tutor by IRMAWATI,MMSI

SELECT

deptno, job, SUM(sal) FROM emp

GROUP BY deptno, job Kesalahan-kesalahan yang sering terjadi : Kolom yang tidak termasuk dalam fungsi group dan tidak ditempatkan pada klausa GROUP BY.

Yang berikutnya adalah menggunakan fungsi group dalam klausa WHERE. Membatasi hasil GROUP By dengan klausa HAVING Kita menggunakan klausa HAVING untuk membatasi record mana yang akan dimunculkan. Syntak: SELECT FROM [WHERE [GROUP BY [HAVING [ORDER BY column, group_function table conditions ] group_by_expression ] group_condition ] column ]

contoh kita ingin menampilkan gaji rata-rata dari tiap departemen dimana maksimum gaji dari tiap departemen lebih dari 2900. SELECT deptno, AVG(sal) FROM emp GROUP BY deptno HAVING MAX(sal) > 2900

Tutor by IRMAWATI,MMSI

Sub-Queries Jika anda ditanya siapa yang mempunyai gaji lebih besar dari Jones? Untuk menyelesaikan permasalahan ini kita memerlukan dua query. Pertama kita mencari berapa gaji Jones, yang kedua kita menjari gaji karyawan yang gajinya lebih besar dari gaji Jones. Kita bisa menggabungkan dua query diatas menjadi satu query dengan cara menempatkan query pertama didalam query kedua. SELECT select_list FROM table WHERE expr operator

(SELECT select list FROM table)

contoh penggunaan sub-queries SELECT e FROM WHERE

enam emp sal > (SELECT sal FROM emp WHERE empno=7566)

Tipe Sub-Queries - Single-row subqueries - Multiple-row subqueries - Multiple column subqueries

Tutor by IRMAWATI,MMSI

Single-Row subqueries Adalah query yanng menghasilkan hanya satu baris dari inner SELECT, dan menggunakan operator perbandingan satu baris (=, > , <, <>,<=,=>). SQL> SELECT ename, job 2 FROM emp 3 WHERE job = 4 ( SELECT job 5 FROM emp 6 WHERE empno = 7369) 7 AND sal > 8 (SELECT sal 9 FROM emp 10 WHERE empno = 7369); ENAME JOB ---------- --------ADAMS CLERK JAMES CLERK MILLER CLERK Pada query diatas, ada tiga blok query. Inner query dijalankan

terlebih dahulu dan menghasilkan job=CLERK dan sal=1100, hasil ini digunakan oleh outer query untuk mencari data sesua dengan yang diinginkan. Dalam sub-queries bisa juga menggunakan group function dan klausa having. Sub-queries yang salah SQL> SELECT empno, ename 2 FROM emp 3 WHERE sal = ( SELECT MIN(sal) 4 FROM emp 5 GROUP BY deptno); WHERE sal = ( SELECT MIN(sal)

Tutor by IRMAWATI,MMSI

* ERROR at line 3: ORA-01427: single-row subquery returns more than one row Multiple Row Sub-Queries Adalah sub-queries yang menghasilkan data lebih dari satu baris, dan menggunakan operator perbandingan multiple-row (IN, ANY, ALL). Sebagai contoh kita ingin menampilkan pegawai yang mempunyai gaji terrendah untuk masing-masing departemen. SQL> SELECT empno, ename 2 FROM emp 3 WHERE sal IN (SELECT MIN(sal) 4 FROM emp 5 GROUP BY deptno); EMPNO ENAME ---------- ---------7934 MILLER 7369 SMITH 7900 JAMES

Tutor by IRMAWATI,MMSI

multiple-column subqueries jika kita ingin membandingkan lebih dari satu kolom pada query kita bisa menggunakan multiple column subqueries. Sintaks : SELECT column, column, FROM table WHERE (column, column, )

IN

(SELECT column, column, FROM table WHERE condition);

Tutor by IRMAWATI,MMSI

DAFTAR PUSTAKA
1. http://www.oracle-base.com 2. http://rohmad.net 3. http://www.orafaq.com 4. http://asktom.oracle.com 5. Oracle9i Database Performance Tuning Guide and Reference 6. http://download.oracle.com/docs/cd/B10501_01/server.920/a96533/sq ltrace.htm

Tutor by IRMAWATI,MMSI