Senin, 04 November 2013

Tugas PBD2 Bu Titik Lusiani

1. The UPDATE_EMPLOYEE procedure contains an algorithm that calculates an employee's commission multiple times throughout the program. If a change is made to the algorithm, the change must be made multiple times. How can this procedure be modified to simplify the code and reduce duplicated code?

Jawab  : C. Add a local subprogram containing the algorithm.
Alasan : Menambahkan subprogram agar memudahkan dan tidak membuat ulang programnya.

2. For which reason might you create a subprogram within a procedure?

Jawab : D. to store a repeating block of code once without creating a separate construct
Alasan : Untuk membuat suatu program hanya sekali tanpa harus membuat ulang

3. When invoking a procedure, you can specify the arguments using the positional method by listing the values in the order of the argument list. Which method would you use to list values in an arbitrary order?

Jawab : D. Named
Alasan : Suatu method yang digunakan untuk mengisi nilai yang dapat dijadikan  perintah yang diubah-ubah

4. Which type of construct should you create to solely perform an action without returning a value?

Jawab : C. procedure
Alasan : Karena procedure tidak mengembalikan nilai

5. Examine this procedure:

CREATE OR REPLACE PROCEDURE find_seats_sold
(v_movie_id IN NUMBER DEFAULT 34, v_theater_id IN NUMBER) IS
v_seats_sold gross_receipt.seats_sold%TYPE;
BEGIN
SELECT seats_sold INTO v_seats_sold FROM gross_receipt
WHERE movie_id = v_movie_id AND theater_id = v_theater_id;
END;
Which command will successfully invoke this procedure in SQL*Plus?
Jawab : C. EXECUTE find_seats_sold (v_theater_id => 500, v_movie_id => 34);
Alasan : Untuk menjalankan digunakan perintah execute jawaban a tidak sesuai karena tidak ada parameter b syntax RUN bukan perintah menjalankan program dan d kurang sesuai karena berupa inputan jawaban c paling sesuai menurut syntax

6. Examine this procedure:
CREATE OR REPLACE PROCEDURE find_seats_sold
(v_movie_id IN NUMBER) IS
v_seats_sold gross_receipt.seats_sold%TYPE;
BEGIN
SELECT seats_sold INTO v_seats_sold
FROM gross_receipt
WHERE movie_id = v_movie_id;
END;
Which command will successfully invoke this procedure in SQL*Plus?

Jawab : C. EXECUTE find_seats_sold (34);
Alasan : Syntax yang paling sesuai dengan aturan sql * plus

7. A stored function can be invoked in many different ways. Which invocation example is NOT valid?

Jawab : D. executing the stored function within a CHECK constraint of a table
Alasan : Karena constraint check hanya berupa kondisi pengecekan

8. Examine this function:
CREATE OR REPLACE FUNCTION get_budget
(v_studio_id IN NUMBER) RETURN number IS
v_yearly_budget NUMBER;
BEGIN
SELECT yearly_budget INTO v_yearly_budget
FROM studio WHERE id = v_studio_id;
RETURN v_yearly_budget;
END;
Which set of statements will successfully invoke this function within SQL*Plus?

Jawab : C. VARIABLE g_yearly_budget NUMBER
EXECUTE :g_yearly_budget := GET_BUDGET(11);
Alasan : Jawaban C paling sesuai dengan variabel tanpa tanda :/input parameter

9. Examine this function:

CREATE OR REPLACE FUNCTION get_budget
(v_studio_id IN NUMBER, v_max_budget IN NUMBER) RETURN number IS
v_yearly_budget NUMBER;
BEGIN
SELECT yearly_budget INTO v_yearly_budget FROM studio
WHERE id = v_studio_id;
IF v_yearly_budget > v_max_budget THEN
RETURN v_max_budget;
ELSE
RETURN v_yearly_budget;
END IF;
END;

Which set of statements will successfully invoke this function within SQL*Plus?

Jawab : A. SELECT id, name, get_budget(id,200) FROM studio;
Alasan : perintah untuk menampilkan suatu function adalah dengan syntax select

10. For which purpose are formal parameters used when creating functions?

Jawab : B. passing values to the function
Alasan : Function dibuat ketika digunakan untuk mengisi suatu nilai

11. When creating a function in SQL*Plus, you receive an error message stating that the function created with compilation errors. What must you do to see the compilation errors?

Jawab : A. Issue the SHOW ERRORS command.
Alasan : Perintah show errors digunakan untuk menampilkan error

12. Examine this function:

CREATE OR REPLACE FUNCTION set_budget
(v_studio_id IN NUMBER, v_new_budget IN NUMBER) IS
BEGIN
UPDATE studio SET yearly_budget = v_new_budget
WHERE id = v_studio_id;
IF SQL%FOUND THEN RETURN TRUE;
ELSE RETURN FALSE;
END IF;
COMMIT;
END;

Which code must be added to successfully compile this function?

Jawab : D. Add "RETURN BOOLEAN" immediately before the IS keyword.
Alasan : untuk menambahkan function adalah dengan menuliskan add “RETURN BOOLEAN” sebelum IS

13. Procedures and functions can be created and stored in the database or in an Oracle Developer application. How is performance improved when storing procedures and functions in the database?

Jawab : C. Network traffic is decreased by bundling commands.
Alasan : untuk meningkatkan performance ketika penyimpanan prosedur dan function dalam database adalah dengan menurunkan lalulintas jaringan.

14. Examine this function:

CREATE OR REPLACE FUNCTION set_budget
(v_studio_id IN NUMBER, v_new_budget IN NUMBER)
RETURN BOOLEAN IS
BEGIN
UPDATE studio
SET yearly_budget = v_new_budget
WHERE id = v_studio_id;
IF SQL%FOUND THEN
RETURN TRUE;
ELSE RETURN FALSE;
END IF;
COMMIT;
END;

Which code will successfully invoke this function?
Jawab : D. DECLARE v_updated_flag BOOLEAN;
BEGIN
v_updated_flag := set_budget(11,500000000);
END;
Alasan : untuk menjalankan perintah function yang benar adalah dengan memberi deklarasi kemudian nama function type data true/false boolean, kemudian mengisi nama parameter dan function dengan 11,500000000.

15. Which two subprogram headers are correct? (Choose two.)

Jawab : B. CREATE OR REPLACE PROCEDURE get_sal (v_sal IN number) IS
CREATE OR REPLACE FUNCTION calc_comm RETURN number (p_amnt IN number)
D. CREATE OR REPLACE FUNCTION calc_comm (p_amnt IN number) RETURN number
Alasan : jawaban a salah karena salah penempatan is, c salah karena function akan mengembalikan type data bukan parameter, jawaban d seharusnya hanya ada parameter saja.

16. Procedures and functions are very similar. For which reason would you choose a function over a procedure?

Jawab : B. A function can be used in a SQL statement.
Alasan : karena function dapat digunakan dalam perintah SQL

17. The GET_BUDGET function is no longer needed and should be removed. Which command will successfully remove this function from the database?

Jawab : C. DROP FUNCTION get_budget;
Alasan : untuk menghapus function get_budget maka digunakan drop function

18. Which code successfully calculates commission returning it to the calling environment?

Jawab : D. CREATE OR REPLACE FUNCTION calc_comm (v_emp_id IN NUMBER) RETURN number IS
v_total NUMBER;
BEGIN
SELECT SUM(ord.total) INTO v_total
FROM ord,customer
WHERE ord.custid = customer.custid
AND customer.repid = v_emp_id;
RETURN (v_total * .20);
END;
Alasan : Jawaban A dan B salah karena tidak mengembalikan nilai sedangkan C syntax tidak lengkap

19. Examine this function:

CREATE OR REPLACE FUNCTION get_budget
(v_studio_id IN NUMBER, v_max_budget IN NUMBER) RETURN number IS
v_yearly_budget NUMBER;
BEGIN
SELECT yearly_budget INTO v_yearly_budget FROM studio
WHERE id = v_studio_id;
IF v_yearly_budget > v_max_budget THEN RETURN v_max_budget;
ELSE RETURN v_yearly_budget;
END IF;
END;

Which set of statements will successfully invoke this function within SQL*Plus?
Jawab : A. SELECT id, name, get_budget(id,200) FROM studio;
Alasan : untuk memanggil function digunakan select kemudian nama function

20. A stored function can be invoked in many different ways. Which invocation example is NOT valid?
Jawab : D. executing the stored function within the DEFAULT clause of the CREATE TABLE
Alasan : Karena function tidak dapat membuat tabel

21. You have just created a PL/SQL user-defined function called CALC_COMM. Which statement will successfully test it?
Jawab : D. SELECT * FROM ord GROUP BY ordid HAVING calc_comm(total) > 5000;
Alasan : Memanggil function dengan kondisi having....function

22. How do functions simplify maintainability?
Jawab : A. by limiting changes to logic to one location
Alasan : memperbaiki satu lokasi function untuk pemanggilan satu function

23. Which two statements are true? (Choose two.)

Jawab : A. function must return a value.
D. A function can be invoked from within a PL/SQL expression.
Alasan : karena pernyataan yang benar adalah function pasti mengembalikan nilai dan function dapat digunakan dalam PL/SQL

24. Examine this statement:

SELECT id, theater_pck.get_budget(id)
FROM studio;

What must be true about the GET_BUDGET function for this statement to be successful?
Jawab : B. It must not modify the database.
Alasan : tidak bisa memodifikasi database karena select untuk menampilkan






25. Examine this function:

CREATE OR REPLACE FUNCTION get_budget
RETURN number IS
v_yearly_budget NUMBER;
BEGIN
SELECT yearly_budget INTO v_yearly_budget
FROM studio WHERE id = v_studio_id;
RETURN v_yearly_budget;
END;

What additional code is needed to compile this function successfully?
Jawab : D. Add "(v_studio_id IN NUMBER)" right before the RETURN statement of the header.
Alasan : Karena yang dibutuhkan adalah Menambah variable sebelum return
26. Which subprogram type can be invoked from within a SQL statement?
Jawab : A. Function
Alasan : subprogram dapat digunakan dalam SQL dengan function

27. Examine this function:

CREATE OR REPLACE FUNCTION get_budget
(v_studio_id IN NUMBER) RETURN number IS
v_yearly_budget NUMBER;
BEGIN
SELECT yearly_budget INTO v_yearly_budget
FROM studio WHERE id = v_studio_id;
END;

To execute this function successfully, what additional code must be added to the executable section?
Jawab : D. RETURN v_yearly_budget;
Alasan : Untuk eksekusi function agar sukses ditambahkan return v_yearly_budget

28. While creating a package, you placed the function name in the specification and the body. Which type of construct have you created?
Jawab : A. Public
Alasan : agar function dapat dibaca seluruh package maka digunakan public






29. Examine this code:

CREATE OR REPLACE PACKAGE prod_pack IS
g_tax_rate NUMBER := .08;
END prod_pack;

Which statement about this code is true?

Jawab : A.This package specification can exist without a body.
Alasan : karena code ini dapat berjalan tanpa body

30. Examine this package specification:

CREATE OR REPLACE PACKAGE theater_package IS
PROCEDURE find_cpt
(v_movie_id IN NUMBER, v_cost_per_ticket IN OUT NUMBER);
PROCEDURE update_theater (v_name IN VARCHAR2);
PROCEDURE find_seats_sold
(v_movie_id IN NUMBER DEFAULT 34, v_theater_id IN NUMBER);
PROCEDURE add_theater;
END theater_package;

Which statement about the procedures in this specification is true?

Jawab : A. They are public procedures.
Alasan : Karena syntax diatas termasuk dalam public procedures

Tugas SQL 1 Bu Titik Lusiani

Pertemuan 1
1.1  Perintah SELECT
Perintah SELECT digunakan  untuk  menampilkan atau  mengambil  data dari database. Perintah SELECT memiliki 3 (tiga) macam kemampuan:
a. Projection: Perintah SELECT bisa  digunakan  untuk  memilih  kolom
                        apa saja dari tabel yang akan ditampilkan.
b. Selection: Perintah SELECT bisa digunakan untuk memilih baris data
                        mana saja yang akan ditampilkan.
c. Joining: Perintah SELECT bisa  digunakan untuk  menampilkan  data
                  atau informasi dari 2 atau lebih tal yang terhubung.


1.2  Concate Operators
operator CONCATE  digunakan  untuk  menggabungkan text,  nilai  kolom,  atau   karakter. Anda  bisa menghubungkan  sebuah  kolom  dengan  kolom  lain, ekspresi  aritmatik,  atau  nilai  konstan,  untuk  membuat  sebuah  ekspresi karakter  dengan  menggunakan  operator CONCATE  yang  disimbolkan dengan ‘||’.
Contoh:
Menampilkan nama lengkap dari mahasiswa
SELECT  'Nama saya'|| NAMA_DEPAN ||' '||
NAMA_BELAKANG FROM MAHASISWA;
1.3  Column Alias
Ketika menghasilkan hasil sebuah query, SQL akan menggunakan nama dari  kolom-kolom  yang  dipilih/ekspresi  pada  SELECT  statement sebagai  header  kolom.  Terkadang  nama  kolom  yang  muncul  sulit dimengerti.atau  kurang  bisa  menjelaskan  isi  dari  kolom.  Anda  bisa mengganti header dari kolom hasil query dengan menggunakan alias.  Tuliskan  alias  dari  sebuah  kolom  pada  klausa SELECT  dengan menggunakan  spasi  sebagai  pemisah
Jika  alias  dari  sebuah  kolom mengandung spasi atau karakter khusus, gunakan tanda petik 2 (“ “).
Contoh :
menampilkan NIM, KODE_MK dan “NILAI AKHIR’.
SELECT NIM, KODE_MK, (TUGAS*0.4) + (UTS*0.3) +
(UAS*03) AS "NILAI AKHIR" FROM NILAI;

1.4  Comparison Conditions

Operator
Note
=
Sama dengan
>
Lebih besar
>=
Lebih besar sama
dengan
<
Kurang dari
<=
Kurang dari sama dengan


<>. !=, ^=
Tidak sama dengan
BETWEEN … AND …
Diantara 2 nilai
IN (LIST OF VALUES)
Dicocokkan dengan salah
satu nilai pada kumpulan
nilai
LIKE
Mencocokkan dengan
pola karakter
IS NULL
Adalah nilai NULL


·         (BETWEEN … AND …) operator Anda  dapat  menampilkan  baris  data  berdasarkan  sebuah  jangkauan nilai dengan menggunakan operator BETWEEN. Jangkauan nilai yang disebutkan memiliki batas atas dan batas bawah. Nilai yang dituliskan dalam  kondisi  BETWEEN  bersifat  inklusif,  dan  anda  harus menentukan  nilai  terendah  terlebih  dahulu.  Anda  juga  bisa menggunakan kondisi BETWEEN untuk nilai karakter/huruf.

·         (IN) operator
Untuk mencoba nilai dalam sebuah kumpulan nilai, gunakan kondisi IN.
kondisi IN  dapat  digunakan  dengan  tipe  data  apapun. Jika  tipe  data
huruf  atau  tipe  data  DATE  digunakan  dalam  kumpulan  nilai,  tipe data
tersebut harus dituliskan dengan tanda petik (' ')

·         (LIKE) operator
Terkadang,  anda tidak mengerti nilai  apa  yang akan  dicari,  tetapi anda
dapat menampilkan baris data yang cocok dengan pola karakter dengan
menggunakan  kondisi LIKE.



pertemuan 2

Logical Conditions
Sebuah  kondisi  logis  menggabungkan  hasil  dari  2  komponen  kondisi untuk menghasilkan  sebuah  hasil  berdasarkan  2  kondisi  tersebut.  Atau membalikkan  hasil  dari  sebuah  kondisi.  Sebuah  baris  data  akanLabKom STIKOM Surabaya |Retrieve, Filter, and Sort  12 dikembalikan  jika  hasil  keseluruhan  dari  kondisi  adalah  TRUE. Ada  3 (tiga) operator logis yang ada di SQL:

Operator
Meaning
AND
mengembalikan TRUE jika kedua komponen
kondisi mengembalikan TRUE
OR
Mengembalikan TRUE jika salah satu
komponen kondisi mengembalikan TRUE
NOT
Mengembalikan TRUE jika komponen
kondisi mengembalikan FALSE

AND Operator
Operator  AND  membutuhkan  kedua  komponen  kondisi  untuk
bernilaiTRUE.
Contoh :
Mengambil data mahasiswa yang tinggal di kota Sidoarjo dan nama
depannya dimulai dengan huruf‘A’
SELECT * FROM MAHASISWA WHERE KOTA_TINGGAL =
'Sidoarjo' AND NAMA_DEPAN LIKE 'A%';

OR Operator
Operator OR  membutuhkan  salah  satu  dari  komponen  kondisi  untuk
bernilai  TRUE.
Contoh :
Mengambil  data  matakuliah  yang  jumlah sks-nya  3  atau  semester
diadakannya 1
SELECT * FROM MATAKULIAH WHERE SKS = 3 OR SEMESTER = 1;
NOT Operator
Operator NOT  membutuhkan  sekumpulan  nilai  yang  tidak  ingin
ditampilkan di hasil query.
Contoh :
Mengambil  nim,  kode_mk  dan  nilai  akhir  dari  mahasiswa  dengan
nilai  akhir  tidak  diantara  60  sampai  100,  dan  kode_mk-nya
mengandung angka 1.
SELECT NIM, KODE_MK, (TUGAS*0.4) + (UTS*0.3) +
(UAS*0.3) AS "FINAL SCORE" FROM NILAI
WHERE (TUGAS*0.4) + (UTS*0.3) + (UAS*0.3) NOT
BETWEEN 60 AND 100 AND KODE_MK LIKE '%1%';

Pertemuan 3
Single-Row Functions
Functions adalah  sebuah  fitur  yang  sangat  kuat dari  SQL.  Functions  bisa  digunakan  untuk melakukan hal - hal berikut:

·         Melakukan kalkulasi pada data.
·          Mengubah data individual
·         Mengubah output untuk sekumpulan baris data.
·         Membentuk tampilan tanggal dan angka.
·         Mengubah tipe data kolom

Single-Row Function digunakan untuk memanipulasi baris data. Single-row  function menerima  1  (satu)  atau  lebih input  parameter / argument dan mengembalikan 1 (satu) nilai untuk setiap baris yang dikembalikan oleh query.
Sebuah input parameter / argument dapat terdiri atas / diisi dengan:
·         Nilai konstan yang dimasukkan pengguna
·         Nilai variabel
·         Nama kolom
·         Ekspresi


Character Functions
Single-row  character  function  menerima  data karakter  sebagai  masukan  dan  dapat mengembalikan baik nilai karakter dan nilai angka.
Character function dapat dibagi menjadi 2:
·         Case-manipulation function
·         Character-manipulation function

Case-Manipulation Functions
Fungsi-fungsi  berikut  dapat  mengubah  case  dari  1  (satu)  atau sekumpulan karakter.
LOWER:  mengubah  karakter mixed-case  atau uppercase menjadi
lowercase.
UPPER:  mengubah  karakter  mixed-case  atau lowercase  menjadi
uppercase.
INITCAP:  mengubah  setiap  huruf  depan  dari  kata  menjadi uppercase dan      membiarkan huruf yang lain tetap lowercase.

Character-Manipulation Functions
·         CONCAT:  menggabungkan  2(dua)  nilai  menjadi  1  (satu). CONCAT hanya dapat menggabungkan 2 parameter / argument.
·         SUBSTR: mengambil karakter dari posisi karakter dan panjang yang disebutkan.
·         LENGTH: mengambil  panjang  sebuah string karakter menjadi nilai angka.
·         INSTR: mengambil posisi (dalam bentuk angka) dari karakter yang disebutkan.
·         LPAD: menambahkan karakter di bagian kiri string karakter
·         RPAD: menambahkan karakter di bagian kanan string karakter.
·         REPLACE:  menggantikan  karakter  yang  disebut  pada string karakter dengan karakter / string karakter lain.
·         TRIM: menghapus karakter yang disebutkan dari huruf paling awal atau  paling  akhir  (atau  keduanya)  dari string karakter. Dapat  juga digunakan untuk menghapus spasi.





Pertemuan 4
The Functions

MONTH_BETWEEN (DATE1, DATE2)
Mengembalikan  jumlah  bulan  antara date1  dan date2,  dan  dapat mengembalikan nilai negatif.
ADD_MONTHS(DATE,N)
Menambahkan bulan sejumlah N ke DATE. Nilai dari N harus angka dan bisa negative.
NEXT_DAY(DATE,’CHAR’)
Menemukan tanggal dari hari berikutnya dalam minggu (‘CHAR’), setelah DATE. Nilai (‘CHAR’) dapat berisi angka yang mewakilkan hari atau string karakter.
LAST_DAY(DATE)
Menemukan tanggal dari hari terakhir pada bulan yang menampung  DATE.
ROUND(DATE[,’FMT’])
Mengembalikan  tanggal  yang  dibulatkan  ke  atas  berdasarkan ‘FMT’.  Jika  ’FMT’ tidak  disebutkan,  maka  tanggal  akan dibulatkan ke hari yang terdekat.

Data Type Conversions
ü  TO_CHAR(NUMBER|DATE,[fmt], [nlsparams])
Mengubah  sebuah  nilai NUMBER  atau  DATE  menjadi  sebuah karakter string VARCHAR2 dengan format fmt.  Number  Conversion:  Parameter  nlsparams  menyebutkan
karakter-karakter  yang  akan  dikembalikan  oleh  elemen  format number. Jika nlsparams atau  parameter  lain  tidak  diisi,  maka fungsi akan menggunakan nilai parameter default. Date Conversion:  Parameter nlsparams menyebutkan  dalam bahasa  tanggal  apa  bulan,    nama  hari  hari,  serta  singkatan    akan dikembalikan.  Jika parameter nlsparams  ini  tidak  diisi,  maka fungsi akan menggunakan bahasa tanggal default.
ü  TO_NUMBER(CHAR,[fmt], [nlsparams])
Mengubah sebuah karakter string yang memuat angka menjadi tipe data NUMBER dengan format sesuai pada fmt.  Parameter [nlsparams] di  fungsi  ini  memiliki  kesamaan
dengan  parameter [nlsparams] pada function TO_CHAR untuk number conversion.


ü  TO_DATE(CHAR,[fmt], [nlsparams])
Mengubah  sebuah  karakter  string  yang  mewakili  tanggal  ke  nilai dengan  tipe  data DATE berdasarkan fmt  yang  disebutkan.  Jika fmt tidak diisi, maka format yang dikembalikan adalah DD-MON-YY (akan dijelaskan nanti).  Parameter [nlsparams] di  fungsi  ini  memiliki  kesamaan dengan  parameter [nlsparams] pada function TO_CHAR untuk date conversion.

General Functions
Fungsi-fungsi  berikut ini  dapat digunakan  dengan tipe  data apapun dan berhubungan dengan penggunaan nilai NULL:
Ø  NVL (expr1, expr2)
Mengubah sebuah nilai NULL menjadi nilai yang tertentu.
Ø  NVL2 (expr1, expr2, expr3)
Jika expr1 bernilai NULL, maka fungsi akan mengembalikan nilai pada expr3; sedangkan jika expr1 tidak bernilai null, maka fungsi akan mengembalikan nilai pada expr2
Ø  NULLIF (expr1, expr2)
Membandingkan 2 (dua) ekspresi dan mengembalikan NULL jika ekspresi tersebut sama. Jika kedua ekspresi tidak sama, maka fungsi akan mengembalikan expr1.
Ø  COALESCE (expr1, expr2, . . ., exprN)
Mengembalikan ekspresi non-NULL pertama dari daftar ekspresi.

Pertemuan 5
Group Functions / Aggregate Functions

Types Of Group Function Tidak  seperti  pada single-row  function,  Group
Function  atau Aggregate  Function  bekerja  pada sekumpulan baris data untuk mengembalikan 1 buah hasil  untuk  setiap groupnya.  Sekumpulan  baris  data
yang  dimaksud  bisa  melingkupi  1  (satu)  tabel,  atau sebuah tabel yang dibagi menjadi beberapa group. Tipe-Tipe dari Group Function adalah sebagai berikut:
Function  Description
Function  Description
AVG([DISTINCT|ALL] n)
mengembalikan rata-rata
nilai dari n dengan
mengabaikan nilai NULL.
COUNT({*|[DISTINCT|ALL]
expr})
mengembalikan jumlah dari
baris data. Expr akan
mengembalikan nilai yang
tidak NULL saja. (COUNT
ALL dengan menggunakan
* akan mengembalikan
semua data kembar dan
baris data dengan nilai
NULL)
MAX ([DISTINCT|ALL]
expr)
mengembalikan nilai
maksimum dari expr,
dengan mengabaikan nilai
NULL.
MIN ([DISTINCT|ALL]
expr)
mengembalikan nilai
minimum dari expr,
dengan mengabaikan nilai
NULL.
STDDEV([DISTINCT|ALL] n)
mengembalikan standar



Beberapa pedoman dalam menggunakan group function:
·         Keyword DISTINCT akan  membuat  function  membaca  nilai-nilai yang  tidak  kembar  saja. ALL akan  membuat  function  membaca semua  nilai,  termasuk  nilai  kembar. Default dari  sebuah  function adalah ALL.
·         Tipe  data  yang  dapat  digunakan  pada  function  dengan  parameter expr antara lain CHAR, VARCHAR2, NUMBER, atau DATE.
·         Semua  group  function  mengabaikan  nilai  NULL.  Untuk menggantikan nilai NULL dengan nilai lain, gunakan function NVL, NVL2,atau COALESCE. Anda dapat menggunakan AVG, SUM, MIN,  dan MAX Function pada kolom  yang  menyimpan  data  bertipe  angka.  Anda  juga  dapat.

Pada  waktu tertentu, anda harus membagi  sebuah tabel menjadi group-group yang  lebih  kecil.  Hal  ini  dapat dilakukan dengan menggunakan klausa GROUP BY. Anda  dapat  menggunakan  klausa GROUP  BY  untuk membagi baris data pada sebuah tabel ke dalam group-group, kemudian anda  dapat  menggunakan  Group  Function  untuk  mengembalikan
ringkasan informasi yang dibutuhkan untuk setiap group.
Pada Syntax ini Group_by_expression diisi  dengan  kolom  yang
nilainya dijadikan dasar dalam mengelompokkan baris data.

Panduan dalam menggunakan GROUP BY:
·         Jika  anda memasukkan  kolom  lain  selain group  function  pada klausa  SELECT,  maka  semua  kolom  lain  tersebut  harus dimasukkan ke dalam klausa GROUP BY.
·         Dengan  menggunakan  klausa WHERE,  anda  dapat  menyaring  baris data sebelum digroupkan.
·         anda tidak dapat menggunakan Column Alias (Stage 1) pada klausa GROUP BY.
·         Jika  klausa GROUP BY  diisi  dengan  lebih  dari  1  (satu)  kolom, maka pengelompokan akan dimulai dari kolom paling pertama yang disebutkan,  lalu  dilanjutkan  dengan  kolom  berikutnya  (dalam pengelompokan sebelumnya).
·         Anda  dapat  menggunakan  klausa GROUP BY tanpa  menggunakan Group Function.
Condition in Group Function Result
Sama seperti klausa WHERE yang digunakan untuk menyaring baris data yang  anda SELECT,  anda  juga  dapat  menyaring  hasil  dari  Group Function  dengan  menggunakan  klausa  HAVING.  Anda  dapat menggunakan klausa HAVING untuk menyaring group mana yang akan ditampilkan berdasarkan hasil group function.

Pertemuan 6
EQUIJOIN
Equijoin  memerlukan  kehadiran  Primary  Key  dan  Foreign  Key  pada tabel-tabel yang akan digabungkan. Equijoin juga biasa disebut sebagai simple  JOIN  atau inner  JOIN.  penulisan equijoin  dapat  dilakukan dengan menggunakan USING, ON, dan WHERE.

Menggunakan USING
Klausa  USING  dapat  digunakan  untuk menyebutkan  kolom  apa  saja yang dijadikan referensi JOIN ketika ada lebih dari 1 (satu) kolom yangcocok  antara  tabel-tabel  yang digabungkan.  Kolom-kolom  yang digunakan  pada  klausa USING tidak  boleh ditambahkan  dengan  nama tabel atau alias pada bagian lain dari query.
Contoh :
Menampilkan  nama  lengkap  mahasiswa  dan  nama  program  studi dari seluruh mahasiswa
SELECT MAHASISWA.NAMA_DEPAN ||' '|| MAHASISWA.NAMA_BELAKANG "NAMA LENGKAP", PROGRAM_STUDI.NAMA_PRODI
FROM MAHASISWA  JOIN PROGRAM_STUDI
USING (KODE_PRODI);
Menggunakan ON
Klausa ON dapat digunakan  untuk menuliskan kondisi  acak  atau  untuk menuliskan  kolom  yang digunakan  sebagai kondisi JOIN. pada  klausa ON,  kondisi JOIN  dipisahkan  dari  kondisi  pencarian  lain  yang dituliskan pada klausa WHERE.
Contoh :
Menampilkan  nama  lengkap  mahasiswa  dan  nama  program  studi dari seluruh mahasiswa
SELECT MAHASISWA.NAMA_DEPAN ||' '|| MAHASISWA.NAMA_BELAKANG "NAMA LENGKAP", PROGRAM_STUDI.NAMA_PRODI
FROM MAHASISWA  JOIN PROGRAM_STUDI
ON MAHASISWA.KODE_PRODI = PROGRAM_STUDI.KODE_PRODI;

Menggunakan WHERE
JOIN dapat  dilakukan  juga  dengan  menggunakan  klausa WHERE.  jika kondisi JOIN diletakkan  pada  klausa WHERE,  maka  kata  kunci JOIN dapat dihilangkan dari klausa FROM.
Contoh :
Menampilkan  nama  lengkap  mahasiswa  dan  nama  program  studi dari seluruh mahasiswa
SELECT MAHASISWA.NAMA_DEPAN ||' '|| MAHASISWA.NAMA_BELAKANG "NAMA LENGKAP", PROGRAM_STUDI.NAMA_PRODI
FROM MAHASISWA, PROGRAM_STUDI
WHERE MAHASISWA.KODE_PRODI = PROGRAM_STUDI.KODE_PRODI;

LEFT OUTER JOIN
LEFT OUTER JOIN  akan  menampilkan  semua  baris  data  dari  tabel sebelah kiri (dari kata kunci LEFT OUTER JOIN) meskipun ada baris data yang tidak memenuhi kondisi JOIN dengan tabel sebelah kanan
contoh :
Menampilkan  semua kode  mk  dan  nama  mk beserta  nilai  uas tertinggi  dari  mata  kuliah  tersebut beserta  matakuliah  yang  belum memiliki nilai uas.
SELECT MK.KODE_MK, MK.NAMA_MK, MAX(N.UAS)
FROM MATAKULIAH MK LEFT OUTER JOIN NILAI
ON MK.KODE_MK = N.KODE_MK
GROUP BY MK.KODE_MK, MK.NAMA_MK;

RIGHT OUTER JOIN
RIGHT OUTER JOIN akan  menampilkan  semua  baris  data  dari  tabel sebelah  kanan  (dari  kata  kunci RIGHT OUTER JOIN)  meskipun  ada baris  data  yang  tidak  memenuhi  kondisi JOIN  dengan  tabel  sebelah kanan.
Contoh :
Menampilkan  semua  kode  mk  dan  nama  mk  beserta  nilai  uas tertinggi  dari  mata  kuliah  tersebut  beserta  matakuliah  yang  belum memiliki nilai uas.
SELECT MK.KODE_MK, MK.NAMA_MK, MAX(N.UAS)
FROM NILAI N RIGHT OUTER JOIN MATAKULIAH
MK ON MK.KODE_MK = N.KODE_MK
GROUP BY MK.KODE_MK, MK.NAMA_MK;

FULL OUTER JOIN
FULL OUTER JOIN  akan  menampilkan  semua  baris  data  dari  tabel sebelah kanan  dan  kiri meskipun ada  baris  data  pada  kedua  tabel  yang tidak memenuhi kondisi JOIN antar tabel.
Contoh :
Menampilkan  semua  nid  dosen,  nama  dosen,  dan  plotting  yang  sudah dilakukan, beserta dosen-dosen yang belum melakukan plotting.
SELECT P.ID_PLOTTING, D.NID, D.NAMA_DOSEN, P.KODE_MK, P.HARI, P.JAM_MULAI, P.JAM_SELESAI
FROM PLOTTING_AJAR P FULL OUTER JOIN DOSEN D
ON D.NID = P.NID;

SELF JOIN
Self join adalah kondisi ketika anda melakukan JOIN pada 1 tabel yang sama.  Untuk  membedakan  antara  tabel  yang  satu  dengan  yang  lain, gunakan table  aliases.  Kondisi  yang  digunakan  pada self  join  tidak harus berupa kondisi equijoin.
Contoh :
Menampilkan  nim,  nama  belakang,  dan  kota_tinggal  dari  mahasiswa yang  tinggal  di  kota  yang  sama  dengan  mahasiswa  bernama  depan ‘Bambang’
SELECT M1.NIM, M1.NAMA_BELAKANG, M1.KOTA_TINGGAL
FROM MAHASISWA M1 JOIN MAHASISWA M2  ON M2. NAMA_DEPAN = 'Bambang'
WHERE M1.KOTA_TINGGAL = M2.KOTA_TINGGAL;



Pertemuan 7

SUBQUERY
Pada stage 1  sampai  4,  anda  dihadapkan  dengan  pencarian  data  yang kondisinya  masih  jelas  pada  tabel,  tetapi  tidak  menutup  kemungkinan bahwa akan muncul kebutuhan data yang kondisinya tidak jelas. Hal ini bisa  diselesaikan  dengan  menggunakan  penggabungan  2  (dua) query atau  lebih.  (memasukkan  query yang 1 (satu) ke query yang lain) Query yang  ada  di  bagian  dalam mengembalikan  sebuah  nilai  (atau kumpulan  nilai)  yang  digunakan
oleh query bagian luar.  Sebuah subquery adalah sebuah query SELECT yang ditancapkan pada sebuah  klausa  di query  SELECT  yang  lain.  anda  dapat meletakkan subquery pada beberapa klausa pada SQL query, meliputi:
·         Klausa WHERE
·         Klausa HAVING
·         Klausa FROM

contoh For Single-Row Subquery:
Menampilkan  nim,  nama  belakang,  dan  kota_tinggal  dari mahasiswa  yang  tinggal  di  kota  yang  sama  dengan  mahasiswa bernama depan ‘Bambang’
SELECT NIM, NAMA_BELAKANG, KOTA_TINGGAL FROM MAHASISWA WHERE
KOTA_TINGGAL =  (SELECT KOTA_TINGGAL FROM MAHASISWA
WHERE NAMA_DEPAN = 'Bambang');

contoh For Multiple-Row Subquery:
Menampilkan nim, nama lengkap, kode mk, nama mk, dan nilai uas
yang dari  mahasiswa  yang  mengambil  mata  kuliah yang diadakan
pada semester 4.
SELECT MHS.NIM, MHS.NAMA_DEPAN ||' '|| MHS.NAMA_BELAKANG "NAMA LENGKAP", N.KODE_MK, MK.NAMA_MK, N.UAS
FROM MAHASISWA MHS JOIN NILAI N
ON MHS.NIM = N.NIM JOIN MATAKULIAH MK
ON MK.KODE_MK = N.KODE_MK
WHERE N.KODE_MK IN (SELECT KODE_MK FROM MATAKULIAH WHERE SEMESTER = 4);
Set Operator
Set operator menggabungkan 2 (dua) atau lebih query menjadi 1 (satu) hasil. Semua set  operator memiliki  tingkatan  yang  sama,  jika  sebuah query memiliki banyak set operator, maka Oracle Server akan membaca query dari kiri (atau atas) ke kanan (bawah), jika tidak ada tanda kurung ( ) yang digunakan untuk mengurutkan.

Senin, 29 April 2013

Tugas 8

Pengertian DML (DATA MANIPULATION LANGUAGE).
DML (Data Manipulation Language) merupakan bahasa basis data yang berguna untuk melakukan proses modifikasi dan pengambilan data pada suatu basis data. Modifikasi yang dapat dilakukan adalah penambahan (insert), pembaharuan (update), penghapusan (delete).
o Insert Baris dalam Tabel
INSERT INTO (, … , )
VALUES (, … , );
INSERT INTO departments(department_id, department_name,
manager_id, location_id)
VALUES (70, ‘Public Relations’, 100, 1700);
o Insert Baris dengan Nilai NULL
INSERT INTO
VALUES (, … , , NULL);
INSERT INTO departments
VALUES (100, ‘Finance’, NULL, NULL);
o Insert Baris berdasarkan Tabel Lain
INSERT INTO (, … , )
[Syntax Query SQL];
INSERT INTO sales_reps(id, name, salary, commission_pct)
SELECT employee_id, last_name, salary, commission_pct
FROM employees WHERE job_id LIKE ‘%REP%’;
o Update Baris dalam Tabel
UPDATE
SET = [WHERE condition];
UPDATE employees
SET department_id = 70 WHERE employee_id = 113;
o Update 2 Kolom dengan Sub-Query
UPDATE
SET = ([Syntax Query SQL]);
UPDATE employees
SET job_id = (SELECT job_id FROM employees WHERE employee_id = 205);
o Delete Baris dalam Tabel
DELETE FROM
WHERE = ;
DELETE FROM departments
WHERE department_name = ‘Finance’;
o Delete Baris berdasarkan Tabel Lain
DELETE
WHERE = ([Syntax Query SQL]);
DELETE FROM employees
WHERE department_id = (SELECT department_id FROM departments WHERE department_name LIKE ‘%Public%’);
o Select Query
SELECT FROM
[WHERE ]
[GROUP BY ] [HAVING ]
[ORDER BY ]

Data Manipulation Language (DML) berisi pernyataan SQL yang digunakan untuk mencari/menampilkan, menyisipkan/memasukkan, memperbaharui dan menghapus data tabel. Saya membagi pernyataan DML menjadi dua bagian, yaitu Pernyataan dan Klausa.
1. Pernyataan
1.1. SELECT
Syntax:
SELECT [DISTINCT] * | column_list
FROM table_reference
[WHERE predicates]
[GROUP BY group_list]
[HAVING having_condition]
[ORDER BY order_list]
Digunakan untuk mencari/menampilkan record dari tabel. Pernyataan ini bisa menampilkan semua atau sebagian data tabel. Gunakan tanda bintang (“*”) untuk menampilkan nilai dari semua kolom. Kolom yang dideklarasikan dalam klausa SELECT dapat berasal dari satu tabel atau banyak tabel, juga dapat berupa kolom tabel, nilai lateral, dan nilai hasil perhitungan yang dipisahkan oleh tanda koma. Klausa FROM mengidentifikasikan tabel dimana datanya akan ditampilkan. Pernyataan berikut akan menampilkan data dari dua kolom (CustNo dan Company), plus sebuah nilai lateral (“Current”) dan nilai hasil perhitungan untuk semuarecord dari tabel Customer
SELECT
  CustNo,
  Company,
  "Current" AS CURRENT,
  CAST(LastInvoiceDate AS DATE)
FROM Customer
Gunakan kata kunci DISTINCT untuk membatasi data yang ditampilkan hanya sekali pada record yang berbeda, artinya data yang sama pada kolom tersebut hanya ditampilkan sekali saja. Kata kunci ini hanya dapat dipakai dengan kolom sederhana bertipe Char dan Integer, tidak dapat dipakai untuk kolom yang bertipe Blob dan Memo. Untuk mendapatkan record dengan suatu kriteria logika, tambahkan klausa WHERE dalam pernyataan tersebut dan untuk mengelompokkan data gunakan klausa GROUP BY. Klausa HAVING digunakan untuk membatasi record yang ditampilkan berdasarkan hasil dari fungsi aggregate, sedangkan untuk mengurutkan data gunakan klausa ORDER BY. Pernyataan SELECT juga dapat digunakan sebagai subquery dalam pernyataan INSERT, DELETE dan UPDATE.
1.2. DELETE
Syntax:
DELETE
FROM table_reference
[WHERE predicates]
Digunakan untuk menghapus satu record atau lebih dari suatu tabel. Klausa WHERE akan membatasi penghapusan tersebut berdasarkan kriteria logika yang dideklarasikan. Jika tidak mendeklarasikan klausa WHERE maka semua record dalam tabel tersebut akan terhapus. Pernyataan berikut akan menghapus semua data tabel Employee.
DELETE
FROM Employee
Dan pernyataan di bawah ini akan menghapus semua baris dalam tabel Employee jika nilai dari kolom Empno ditemukan dalam subquery pencarian data kolom Empno dari tabel Old_Employee.
DELETE
FROM Employee
WHERE (Empno IN (SELECT Empno FROM Old_Employee))
Pernyataan DELETE hanya mendukung subquery SELECT dalam klausa WHERE.
1.3. INSERT
Syntax:
INSERT INTO table_reference
[(columns_list)] 
VALUES (update_atoms)
Pernyataan INSERT berfungsi untuk menambahkan record data baru pada suatu tabel. Nama tabel yang dinyatakan dalam klausa INTO merupakan tabel yang akan menerima data. Daftar kolom yang dipisahkan oleh tanda koma dan berada dalam tanda kurung merupakan kolom-kolom dari tabel, sedang klausa VALUES merupakan nilai-nilai yang disisipkan yang dipisahkan oleh tanda koma dan berada dalam tanda kurung. Jika tidak ada kolom yang dideklarasikan, maka nilai yang diberikan disimpan dalam kolom secara berurutan dalam struktur tabel, sehingga nilai pertama dalam klausa VALUES akan dimasukkan dalam kolom pertama tabel, demikian seterusnya.
Jika daftar kolom dinyatakan secara jelas maka nilai yang diberikan akan disimpan sesuai dengan urutan daftar kolom tersebut. Kolom-kolom yang tidak dinyatakan dalam daftar kolom tidak mempunyai nilai (kosong bukan nol). Jumlah kolom yang dinyatakan harus sama dengan jumlah nilai dalam klausa VALUES. Pernyataan berikut hanya memasukkan suatu nilai dalam kolom CustNo dan Company dari tabel Employee, dan nilai kolom-kolom lain adalah kosong.
INSERT INTO Customer
(CustNo, Company)
VALUES (9842, "Inprise Corporation")
Untuk menambahkan record pada satu tabel yang berasal dari tabel lain, hilangkan klausa VALUES dan gunakan subquery sebagai sumber baris baru tersebut.
INSERT INTO Customer
(CustNo, Company)
SELECT CustNo, Company
FROM OldCustomer
Pernyataan INSERT juga hanya mendukung subquery SELECT dalam klausa VALUES.
1.4. UPDATE
Syntax:
UPDATE table_reference
SET column_ref = update_atom
[, column_ref = update_atom...]
[WHERE predicates]
Untuk memodifikasi satu record atau lebih yang telah ada dalam suatu tabel. Nama tabel dalam pernyataan UPDATE merupakan tabel yang akan menerima perubahan data. Setiap ungkapan dalam klausa SET terdiri atas nama kolom, operator penugasan (=), nilai update dari kolom tersebut. Nilai kondisi update_atom dalam pernyataan UPDATE bisa berupa nilai lateral, nilai tunggal (satu record) dari hasil subquery SELECT, atau nilai hasil perhitungan.
UPDATE SalesInfo
SET TaxRate = 0.0825
Jika nilai kondisi update_atom berasal dari suatu subquery SELECT, sebuah pernyataan SELECT harus dibuat untuk setiap kolom yang akan di-update dalam tabel yang dimaksud. Subquery SELECT tersebut harus berada dalam tanda kurung. Pernyataan berikut meng-update dua kolom OnHand dan InventoryDate dalam tabel Inventory, masing-masing dengan subquery SELECT terpisah.
UPDATE Inventory
SET OnHand = OnHand – (SELECT SUM(Orders.QtySold)
                       FROM Orders
                       WHERE (Orders.PartNo = Inventory.PartNo)
                             AND (Orders.OrderDate BETWEEN "10/01/1999"
                             AND "10/31/1999")),
InventoryDate = OnHand – (SELECT MAX(Orders.OrderDate)
                          FROM Orders
                          WHERE (Orders.PartNo = Inventory.PartNo)
                                AND (Orders.OrderDate BETWEEN "10/01/1999"
                                AND "10/31/1999"))
Klausa WHERE membatasi update record dalam tabel, jika tidak ada klausa WHERE yang dinyatakan maka semua baris tabel akan di-update dengan menggunakan ungkapan dalam klausa SET.
UPDATE SalesInfo
SET TaxRate = 0.0825
WHERE (State = "CA")
Pernyataan UPDATE hanya mendukung subquery SELECT dalam klausa WHERE.