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 (*)

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.

SELECT name
FROM 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*12
FROM 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+1000000
FROM 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

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_TAHUNAN
FROM 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

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 KOMISI
FROM 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 null
expr2: 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
    • NVL (kolom_angka,9)
  • DATE
    • NVL (kolom_tanggal,’01-JAN-99′)
  • CHAR dan VARCHAR2
    • 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 KOMISI
FROM 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.

SELECT name
FROM 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 name
FROM department;

Menampilkan kombinasi-kombinasi berbeda dari jabatan dan kode departemen.

SELECT DISTINCT title, dept_id
FROM 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 kolom
Null?: menunjukkan apakah suatu kolom harus berisi data
Type: tipe data dari kolom

2.7.1. Tipe Data

  • NUMBER(p,s)

Digit maksimum p dan s angka dibelakang koma

  • 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 A15
COLUMN salary JUSTIFY LEFT FORMAT $99,990.00
COLUMN 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

  • 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

  • .

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 ditampilkan
ASC: menampilkan data secara urut menaik (ascending). Ini merupakan default pengurutan data
DESC: 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.

SELECT last_name, dept_id, hire_date
FROM employee
ORDER 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_date
FROM employee
ORDER 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_date
FROM employee
ORDER 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*12
FROM employee
ORDER 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.

SELECT last_name, salary
FROM employee
ORDER BY dept_id, gaji DESC;

2.10. Latihan

Tampilkan seluruh tabel yang Anda miliki.

SELECT table_name
FROM 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_id
FROM employee;

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

SELECT last_name, salary*12, commission_pct
FROM 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+100
FROM 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.

SELECT last_name, salary, 12 * (salary + 100) AS ANNUAL_SALARY
FROM 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 COMM
FROM 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 COMM
FROM employee;

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

SELECT name
FROM department;

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

SELECT DISTINCT name
FROM department;

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

SELECT DISTINCT title, dept_id
FROM department;

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

SELECT last_name, salary, comments
FROM 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 A15
COLUMN salary FORMAT $99,999.00
COLUMN comments FORMAT A15 NULL ‘No comment’

SELECT last_name, salary, comments
FROM 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, comments
FROM employee;

About these ads

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s