Oracle sql

15
Oracle SQL & PL/SQL – 2. Menampilkan Data Kali ini kita akan mempelajari bagaimana menampilkan data dengan menggunakan perintah-perintah SQL. Seperti telah kita pelajari pada pembahasan sebelumnya yaitu Oracle SQL & PL/SQL – 1. Pendahuluan , perintah yang digunakan untuk menampilkan data adalah SELECT. 2.1. Sintaks Dasar Perintah SELECT pada Oracle SQL minimal harus terdiri dari SELECT dan FROM. SELECT [DISTINCT] {*, column [alias], …} FROM table; SELECT : Menampilkan paling tidak satu kolom DISTINCT : Menghilangkan nilai duplikat * : Menampilkan semua kolom column: Menampilkan kolom tertentu alias: Memberikan judul lain kolom FROM table: Menunjukkan nama tabel asal Penulisan Perintah SQL Perintah-perintah SQL dapat ditulis dalam satu baris atau lebih, namun untuk kemudahan sebaiknya setiap klausa ditulis dalam baris yang berbeda Perintah-perintah SQL tidak case-sensitive Gunakan perintah ED untuk mengedit perintah-perintah SQL SQL> ED; 2.1.1. Menampilkan Seluruh Kolom dan Baris Menampilkan seluruh kolom dari suatu tabel dapat dilakukan dengan dua cara, yaitu: Menyebutkan seluruh nama kolom SELECT id, name, region_id FROM department; Menggunakan tanda bintang (*)

Transcript of Oracle sql

Page 1: Oracle sql

Oracle SQL & PL/SQL – 2. Menampilkan Data

Kali ini kita akan mempelajari bagaimana menampilkan data dengan menggunakan perintah-perintah SQL. Seperti telah kita pelajari pada pembahasan sebelumnya yaitu Oracle SQL & PL/SQL – 1. Pendahuluan, perintah yang digunakan untuk menampilkan data adalah SELECT.

2.1. Sintaks Dasar

Perintah SELECT pada Oracle SQL minimal harus terdiri dari SELECT dan FROM.

SELECT [DISTINCT] {*, column [alias], …}FROM table;

SELECT : Menampilkan paling tidak satu kolomDISTINCT : Menghilangkan nilai duplikat* : Menampilkan semua kolomcolumn: Menampilkan kolom tertentualias: Memberikan judul lain kolomFROM table: Menunjukkan nama tabel asal

Penulisan Perintah SQL

Perintah-perintah SQL dapat ditulis dalam satu baris atau lebih, namun untuk kemudahan sebaiknya setiap klausa ditulis dalam baris yang berbeda

Perintah-perintah SQL tidak case-sensitive Gunakan perintah ED untuk mengedit perintah-perintah SQL

SQL> ED;

2.1.1. Menampilkan Seluruh Kolom dan Baris

Menampilkan seluruh kolom dari suatu tabel dapat dilakukan dengan dua cara, yaitu:

Menyebutkan seluruh nama kolom

SELECT id, name, region_idFROM department;

Menggunakan tanda bintang (*)

SELECT *FROM department;

2.1.2. Menampilkan Kolom Tertentu

Menampilkan kolom tertentu dapat dilakukan dengan cara menyebutkan nama kolom yang ingin ditampilkan datanya. Contoh berikut ini menunjukkan bagaimana cara menampilkan kolom tertentu dari tabel Department.

Page 2: Oracle sql

SELECT nameFROM department;

2.2. Operasi Aritmatika

Perhitungan dapat dilakukan pada perintah SQL dengan menggunakan ekspresi aritmatika, yang dapat mengandung nama-nama kolom, nilai-nilai numerik yang teta, dan operator-operator aritmatika.

+ : Penjumlahan– : Penguranan* : Perkalian/ : Pembagian

Operator perkalian dan pembagian memiliki prioritas di atas penjumlahan dan pengurangan

Operator dengan prioritas yang sama di evaluasi dari kiri ke kanan Tanda kurung dapat digunakan untuk memaksa prioritas evaluasi dan memperjelas

perintah

Contoh:

Menampilkan nama belakang dan menghitung gaji tahunan karyawan

SELECT last_name, salary*12FROM employee;

Menampilkan nama belakang, gaji bulanan, dan gaji tahunan karyawan. Gaji tahunan merupakan gaji bulanan di kali dengan 12, ditambah dengan bonus 1.000.000

SELECT last_name, salary, salary*12+1000000FROM salary;

Menampilkan nama belakang, gaji bulanan, dan gaji tahunan karyawan. Gaji tahunan merupakan gaji bulanan ditambah dengan bonus 1.000.000, di kali dengan 12

SELECT last_name, salary, 12*(salary+1000000)FROM employee;

2.3. Alias Kolom

SQL*Plus menggunakan nama kolom sebagai judul dalam menampilkan hasil query. Padahal terkadang nama kolom sulit di mengerti atau bahkan tidak memiliki arti. Kita dapat mengubah tampilan judul kolom menggunakan alias (nama lain).

Contoh

Page 3: Oracle sql

Menampilkan nama belakang, gaji bulanan, dan gaji tahunan karyawan. Gaji tahunan merupakan gaji bulanan di tambah dengan bonus 1.000.000, di kali dengan 12 dan di tampilkan dengan judul GAJI_TAHUNAN.

SELECT last_name, salary, 12*(salary+1000000) AS GAJI_TAHUNANFROM employee;

Kita boleh menggunakan AS sebelum alias kolom untuk memenuhi standar ANSI SQL 92.

2.3.1. Alias Kolom dengan Tanda Petik Dua

Jika alias kolom mengandung spasi, karakter khusus seperti # atau $, atau case-sensitive (membedakan huruf besar dan kecil), gunakan tanda petik dua pada alias kolom tersebut.

Contoh

Memodifikasi query sebelumnya, gaji tahunan ditampilkan dengan judul Gaji Tahunan.

SELECT last_name, salary, 12*(salary+1000000) AS “Gaji Tahunan”FROM employee;

2.4. Operator Penggabungan

Kita dapat menggabungkan satu kolom dengan lainnya, ekspresi aritmatika, atau nilai tetap untuk menciptakan ekspresi karakter menggunakan operator penggabungan (||). Kolom-kolom pada setiap sisi dari operator di kombinasikan untuk menghasilkan satu output kolom tunggal.

Contoh:

Menampilkan nama lengkap karyawan dengan judul Karyawan.

SELECT first_name||last_name AS “Karyawan”FROM employee;

Menampilkan nama lengkap dan jabatan karyawan dengan judul Karyawan. Dalam contoh ini antara nama depan dan nama belakang di pisahkan spasi, dan antara nama lengkap dan jabatan di pisahkan koma.

SELECT first_name||’ ‘||last_name||’, ‘||title AS “Karyawan”FROM employee;

2.5. Manajemen Nilai Null

Null adalah nilai yang tidak tersedia, tidak diberikan, tidak diketahui, atau tidak dapat digunakan. Null tidak sama dengan nol atau spasi. Nol adalah angka, dan spasi adalah karakter. Kolom dapat mengandung nilai null, kecuali kolom yang telah didefinisikan sebagai NOT NULL atau PRIMARY KEY ketika tabel diciptakan.

2.5.1. Nilai Null dalam Ekspresi Aritmatika

Page 4: Oracle sql

Jika nilai kolom dalam sebuah ekspresi adalah null, maka hasilnya juga null. Sebagai contoh, jika kita berusaha melakukan pembagian terhadap nol, maka akan terjadi kesalahan. Namun jika kita membagi terhadap null, maka hasilnya adalah null.

Contoh

Menampilkan nama belakang, gaji, jabatan, dan hasil perhitungan komisi.

SELECT last_name, title, salary, salary*commission_pct/100 KOMISIFROM employee;

2.5.2. Fungsi NVL

Fungsi NVL digunakan untuk mengkonversi nilai null menjadi nilai yang kita kehendaki. Sintaks fungsi NVL adalah sebagai berikut:

NVL (expr1, expr2)

expr1: nilai sumber atau ekspresi yang mungkin bernilai nullexpr2: nilai target hasil konversi null

Kita dapat menggunakan fungsi NVL untuk mengkonversi tipe data apapun, namun hasilnya akan selalu sama dengan tipe data dari expr1.

Tipe data dan contoh konversi:

NUMBER o NVL (kolom_angka,9)

DATE o NVL (kolom_tanggal,’01-JAN-99′)

CHAR dan VARCHAR2 o NVL (kolom_karakter,’Tidak tersedia’)

Contoh:

Berikut ini adalah modifikasi dari query sebelumnya, namun nilai null yang mungkin dihasilkan oleh prosentase komisi dalam hasil perhitungan komisi dikonversi menjadi nol.

SELECT last_name, title, salary, salary*NVL(commission_pct,0)/100 KOMISIFROM employee;

2.6. Mencegah Tampilnya Nilai Duplikat

Tampilan default dari query adalah seluruh baris termasuk baris-baris duplikat (dobel).

Contoh:

Menampilkan seluruh nama departemen dari tabel DEPARTMENT.

Page 5: Oracle sql

SELECT nameFROM department;

2.6.1. Penggunaan Keyword DISTINCT

Baris-baris duplikat hasil query dapat dikurangi dengan menggunakan keyword DISTINCT dan SELECT.

Contoh:

Menampilkan nama departemen secara unik (tidak ada nilai duplikat).

SELECT DISTINCT nameFROM department;

Menampilkan kombinasi-kombinasi berbeda dari jabatan dan kode departemen.

SELECT DISTINCT title, dept_idFROM employee;

2.7. Menampilkan Struktur Tabel

Dalam SQL*Plus kita dapat menampilkan struktur dari suatu tabel dengan menggunakan perintah DESCRIBE. Perintah ini menghasilkan nama kolom, tipe data, dan kolom mana yang harus berisi data (NOT NULL).

DESC[RIBE] tablename

tablename: nama dari tabel, view atau synonym yang boleh diakses user

Contoh:

Menampilkan struktur tabel DEPARTMENT.

DESCRIBE department;

atau

DESC department;

Name: nama kolomNull?: menunjukkan apakah suatu kolom harus berisi dataType: tipe data dari kolom

2.7.1. Tipe Data

NUMBER(p,s)

Digit maksimum p dan s angka dibelakang koma

Page 6: Oracle sql

VARCHAR2(s)

Tipe data karakter dengan panjang bervariasi (maksimum 2000)

CHAR(s)

Tipe data karakter dengan panjang tetap

DATE

Tipe data tanggal antara 1 Januari 4217 BC dan 4712 AD

2.8. Menciptakan Laporan

Kita dapat mengontrol format tampilan dari laporan menggunakan perintah COLUMN. Kita dapat mengubah judul, lebar, dan format kolom.

COL [ UMN ] [{ column | alias } [ option . . . ]]

2.8.1. Pilihan-pilihan Perintah COLUMN

CLE[AR] FOR[MAT] format HEA[DING] text JUS[TIFY] {align} NUL[L] text PRI[NT] TRU[NCATED] WRA[PPED] WOR[D_WRAPPED]

2.8.2. Menciptakan judul-judul kolom

COLUMN last_name HEADING ‘Nama|Karyawan’ FORMAT A15COLUMN salary JUSTIFY LEFT FORMAT $99,990.00COLUMN hire_date FORMAT A9 NULL ‘Tidak digaji’

Menampilkan setting terbaru kolom LAST_NAME

COLUMN last_name

Membersihkan setting kolom LAST_NAME

COLUMN last_name CLEAR

2.8.3. Menampilkan atau Membersihkan Setting

COL[UMN] column

Menampilkan setting terkini dari kolom tertentu

Page 7: Oracle sql

COL[UMN]

Menampilkan setting terkini dari seluruh kolom

COL[UMN] column CLE[AR]

Membersihkan setting dari kolom tertentu

CLE[AR] COL[UMN]

Membersihkan setting dari seluruh kolom

2.8.4. Model-model Format COLUMN

An

Mengatur lebar tampilan dari kolom-kolom karakter atau tanggal

9

Posisi numerik (jumlah angka 9 menunjukkan maksimal panjang data yang dapat ditampilkan)

Contoh: 999999

Hasil: 1234

0

Menambahkan awalan 0

Contoh: 099999

Hasil: 01234

$

Menambahkan awalan $

Contoh: $9999

Hasil: $1234

L

Menambahkan simbol local currency

Contoh: L9999

Hasil: L1234

Page 8: Oracle sql

.

Menambahkan posisi decimal point

Contoh: 9999.99

Hasil: 1234.00

,

Menambahkan pemisah ribuan

Contoh: 9,999

Hasil: 1,234

2.9. Mengurutkan Data

Kita dapat menampilkan data secara urut berdasarkan satu atau beberapa kolom dengan menambahkan klausa ORDER BY pada perintah SELECT yang telah kita pelajari sebelumnya.

SELECT [DISTINCT] {*, column [alias], . . .}FROM table[ORDER BY {column, expr} [ASC|DESC]];

ORDER BY: menentukan dasar urutan data yang akan ditampilkanASC: menampilkan data secara urut menaik (ascending). Ini merupakan default pengurutan dataDESC: menampilkan data secara urut menurun (descending)

2.9.1. Default Pengurutan Data

Apabila kita tidak menuliskan klausa ASC atau DESC dalam klausa ORDER BY, maka proses pengurutan dilakukan secara ascending (default). Berikut ini hal-hal yang perlu diketahui mengenai pengurutan data.

Nilai-nilai numerik ditampilkan dengan nilai terkecil terlebih dahulu, contoh 1-999 Nilai-nilai tanggal ditampilkan dengan nilai paling awal terlebih dahulu, contoh 01-

JAN-92 sebelum 01-JAN-95 Nilai-nilai karakter ditampilkan secara alphabet, contoh A pertama dan Z terakhir Nilai-nilai null ditampilkan terakhir dalam urutan ascending dan pertama dalam

urutan descending

Contoh:

Menampilkan data karyawan urut berdasarkan nama belakang.

Page 9: Oracle sql

SELECT last_name, dept_id, hire_dateFROM employeeORDER BY last_name;

Contoh diatas dapat dimodifikasi sehingga urut berdasarkan nama belakang secara menurun (descending) dengan menambahkan klausa DESC.

SELECT last_name, dept_id, hire_dateFROM employeeORDER BY last_name DESC;

2.9.2. Mengurutkan Data Menggunakan Alias Kolom

Kita dapat menggunakan alias kolom dalam klausa ORDER BY. Fitur ini tersedia sejak Oracle 7 Release 7.0.16.

Contoh

Menampilkan data karyawan urut berdasarkan nama belakang.

SELECT last_name EMPLOYEE, hire_dateFROM employeeORDER BY EMPLOYEE DESC;

2.9.3. Mengurutkan Data Berdasarkan Posisi Kolom

Metode lain untuk mengurutkan data adalah berdasarkan posisi kolom. Hal ini khususnya berguna jika mengurutkan berdasarkan ekspresi yang panjang. Daripada harus mengetikkan ekspresi yang panjang, kita dapat menentukan posisi kolom dalam SELECT.

Contoh:

Menampilkan data karyawan urut berdasarkan gaji tahunan.

SELECT last_name, salary*12FROM employeeORDER BY 2;

2.9.4. Mengurutkan Data Berdasarkan Beberapa Kolom

Kita dapat mengurutkan hasil query berdasarkan beberapa kolom. Batasannya adalah jumlah kolom dalam tabel.

Contoh

Menampilkan data karyawan urut secara menaik (ascending) berdasarkan kode departemen, kemudian urut secara menurun (descending) berdasarkan gaji.

Page 10: Oracle sql

SELECT last_name, salaryFROM employeeORDER BY dept_id, gaji DESC;

2.10. Latihan

Tampilkan seluruh tabel yang Anda miliki.

SELECT table_nameFROM user_tables;

Tampilkan struktur tabel DEPARTMENT.

DESCRIBE department;

Tampilkan semua data tabel DEPARTMENT.

SELECT *FROM department;

Tampilkan nama belakang pegawai, kode departemen dimana pegawai tersebut bekerja, dan kode atasan pegawai tersebut.

SELECT last_name, dept_id, manager_idFROM employee;

Tampilkan nama belakang, gaji tahunan dan prosentase komisi yang diterima oleh masing-masing pegawai.

SELECT last_name, salary*12, commission_pctFROM employee;

Tampilkan nama belakang, gaji bulanan dan kompensasi tahunan pegawai. Hitunglah kompensasi tahunan dengan mengalikan gaji bulanan dengan 12, ditambah dengan bonus sebesar $100.

SELECT last_name, salary, 12*salary+100FROM employee;

Tampilkan nama belakang, gaji bulanan dan kompensasi tahunan pegawai. Hitunglah kompensasi tahunan dengan menambahkan gaji bulanan dengan $100, kemudian dikalikan dengan 12.

SELECT last_name, salary, 12*(salary+100)FROM employee;

Tampilkan kembali perintah diatas, namun khusus untuk kompensasi tahunan pegawai, ganti judul kolom dengan ANNUAL_SALARY.

Page 11: Oracle sql

SELECT last_name, salary, 12 * (salary + 100) AS ANNUAL_SALARYFROM employee;

Tampilkan sekali lagi perintah diatas, namun khusus untuk kompensasi tahunan pegawai, ganti judul kolom dengan Annual Salary.

SELECT last_name, salary, 12 * (salary + 100) AS “Annual Salary”FROM employee;

Tampilkan nama lengkap pegawai dengan judul Employees.

SELECT first_name | | last_name AS “Employees”FROM employee;

Tampilkan nama lengkap dan jabatan pegawai dengan judul Employees. Diantara nama depan dan nama belakang pisahkan dengan spasi, dan diantara nama belakang dengan jabatan pisahkan dengan koma.

SELECT first_name | | ‘ ‘ | | last_name | | ‘, ‘ | | title “Employees”FROM employee;

Tampilkan nama belakang, jabatan dan komisi bulanan pegawai. Hitung komisi pegawai dengan mengalikan gaji bulanan dengan prosentase komisi, kemudian beri judul COMM.

SELECT last_name, title, salary * commission_pct / 100 COMMFROM employee;

Tampilkan kembali soal diatas, dengan ketentuan bahwa data komisi bulanan pegawai yang tadinya kosong (tidak ada nilainya) dirubah menjadi angka 0.

SELECT last_name, title, salary * NVL(commission_pct,0) / 100 COMMFROM employee;

Tampilkan nama departemen dari tabel S_DEPT. Perhatikan bahwa terdapat beberapa data yang memiliki nilai sama.

SELECT nameFROM department;

Tampilkan kembali soal diatas dengan ketentuan data yang memiliki nilai sama cukup ditampilkan cukup satu kali saja.

SELECT DISTINCT nameFROM department;

Tampilkan kombinasi yang berbeda antara jabatan pegawai dan kode departemen dimana pegawai tersebut bekerja.

SELECT DISTINCT title, dept_idFROM department;

Page 12: Oracle sql

Tampilkan nama belakang, gaji bulanan dan keterangan pegawai. Perhatikan bentuk tampilannya.

SELECT last_name, salary, commentsFROM employee;

Tampilkan kembali nama belakang , gaji bulanan dan keterangan pegawai. Judul untuk nama belakang adalah Employee Name, dengan ketentuan bahwa judul tersebut terdiri dari dua baris, baris pertama Employee dan baris kedua Name dengan panjang data maksimal 15 karakter. Sedangkan gaji bulanan pegawai memiliki format $99,999.00. Untuk keterangan yang kosong diganti dengan ‘No comment’ dengan panjang data maksimal 15 karakter.

COLUMN last_name HEADING ‘Employee|Name’ FORMAT A15COLUMN salary FORMAT $99,999.00COLUMN comments FORMAT A15 NULL ‘No comment’

SELECT last_name, salary, commentsFROM employee;

Tampilkan kembali soal diatas, dengan ketentuan data ditampilkan dengan format asli seperti sebelum diberikan perintah format column.

COLUMN last_name CLEAR;COLUMN salary CLEAR;COLUMN comments CLEAR;

SELECT last_name, salary, commentsFROM employee;