30 Oktober 2008

Latihan Basic Select Statement di ORACLE

Pada latihan ini digunakan user HR. User HR sudah atomatis terbentuk jika ketika kita membuat database dengan tools Database Configuration Assistant option Schema Example di check

* membuka lock dan mengganti password user HR
SQL> CONNECT / AS SYSDBA
SQL> ALTER USER HR IDENTIFIED BY HR ACCOUNT UNLOCK

*Melihat tabel-tabel yang dimiliki user HR
SQL> DESC EMPLOYEES;
Name Null? Type
----------------------------------------- -------- ------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)

Syntax perintah SELECT:
SELECT nama_kolom, nama_kolom, nama_kolom…
FROM nama_tabel;

Misalkan mau menampilkan data kolom EMPLOYEE_ID, LAST_NAME dan SALARY dari tabel EMPLOYEES.
SQL> SET PAUSE ON;
SQL> SELECT employee_id,
2 last_name,
3 salary
4 FROM employees;

Menampilkan semua kolom yang ada di tabel EMPLOYEES
SQL> SELECT * FROM EMPLOYEES;
Jika anda menggunakan SQL*Plus hasilnya pasti berantakan, itu dikarenakan secara default lebar layar SQL*Plus adalah 80 karakter. Agar layar SQL*Plus bisa menampilkan lebar lebih dari 80 karakter, misalnya sampai 200 karakter lakukan setting LINESIZE seperti ini.
SQL> SET LINESIZE 200
Penanganan nilai NULL
Null TIDAK SAMA DENGAN 0. Nilai NULL adalah nilai yang belum jelas atau tidak terukur, sehingga jika nilai NULL itu dilibatkan dalam suatu ekspresi akan selalu menghasilkan NULL.
SQL> SELECT EMPLOYEE_ID,
2 LAST_NAME,
3 SALARY,
4 COMMISSION_PCT,
5 SALARY + (SALARY * COMMISSION_PCT)
6 FROM EMPLOYEES;
EMPLOYEE_ID LAST_NAME SALARY COMMISSION_PCT SALARY+(SALARY*COMMISSION_PCT)
----------- ------------------------- ---------- -------------- ------------------------------
137 Ladwig 7200
138 Stiles 6400
139 Seo 5400
140 Patel 5000
141 Rajs 7000
142 Davies 6200
143 Matos 5200
144 Vargas 5000
145 Russell 28000 ,4 39200
146 Partners 27000 ,3 35100
147 Errazuriz 24000 ,3 31200
148 Cambrault 22000 ,3 28600
149 Zlotkey 21000 ,2 25200
150 Tucker 20000 ,3 26000
151 Bernstein 19000 ,25 23750
Perhatikan kolom SALARY+(SALARY*COMMISSION_PCT), untuk employees yang tidak punya komisi (nilai COMMISSION_PCT=NULL) nilainya juga NULL (kosong). Untuk menangani kasus seperti ini, digunakan function NVL. Function ini berfungsi untuk memberi nilai alias pada kolom yang bernilai NULL dalam suatu ekspresi.
Misal diinginkan, dalam penghitungan total gaji dan komisi jika ada employee yang commission_pct bernilai NULL maka commission_pct diberikan nilai 0 sehingga totalnya adalah nilai SALARY saja.

SQL> SELECT EMPLOYEE_ID,
2 LAST_NAME,
3 SALARY,
4 COMMISSION_PCT,
5 SALARY + (SALARY * NVL(COMMISSION_PCT,0))
6 FROM EMPLOYEES;
EMPLOYEE_ID LAST_NAME SALARY COMMISSION_PCT SALARY+(SALARY*NVL(COMMISSION_PCT,0))
----------- --------------- ---------- -------------- -------------------------------------
137 Ladwig 7200 7200
138 Stiles 6400 6400
139 Seo 5400 5400
140 Patel 5000 5000
141 Rajs 7000 7000
142 Davies 6200 6200
143 Matos 5200 5200
144 Vargas 5000 5000
145 Russell 28000 ,4 39200
146 Partners 27000 ,3 35100
147 Errazuriz 24000 ,3 31200
148 Cambrault 22000 ,3 28600
149 Zlotkey 21000 ,2 25200
150 Tucker 20000 ,3 26000
151 Bernstein 19000 ,25 23750

Alias Untuk Judul Kolom
Kolom alias digunakan untuk menggantikan judul kolom
Biasa digunakan untuk kolom-kolom yang ada ekspresinya
Ditulis sesudah kolom yang akan diganti judul kolomnya, bisa juga digunakan keyword AS antara nama kolom dengan kolom alias
Jika kolom alias terdapat karakter space atau karakter khusus lainnya maka apit kolom alias dengan tanda kutip ganda
SQL> SELECT EMPLOYEE_ID,
2 LAST_NAME,
3 SALARY,
4 COMMISSION_PCT,
5 SALARY + (SALARY * NVL(COMMISSION_PCT,0)) AS Total_Salary
6 FROM EMPLOYEES;
SQL> SELECT EMPLOYEE_ID,
2 LAST_NAME,
3 SALARY,
4 COMMISSION_PCT,
5 SALARY + (SALARY * NVL(COMMISSION_PCT,0)) AS “Total Salary”
6 FROM EMPLOYEES;

CONCATINATION
untuk menyambung/menggabungkan dua kolom menjadi satu kolom tampilan.
dengan karakter string
CONTOH.
Kolom dengan kolom
SQL> SELECT LAST_NAME||FIRST_NAME AS "Employee"
2 FROM EMPLOYEES;
Employee
--------------------------------
KingSteven
KochharNeena
HunoldAlexander
SQL> SELECT LAST_NAME||' '||FIRST_NAME AS "Employee"
2 FROM EMPLOYEES;
-- Ada spasi antara Kolom
Employee
--------------------------------
King Steven
Kochhar Neena
Hunold Alexander

literal character string
-- Memberi keterangan/string antara kolom
SQL> SELECT LAST_NAME||'ada di Department'||department_id
2 AS "Pegawai dan Department"
3 FROM EMPLOYEES;
SQL> SELECT LAST_NAME||' '||'ada di Department'||' '||department_id
2 AS "Pegawai dan Department"
3 FROM EMPLOYEES;

Tidak ada komentar: