Minggu, 16 Desember 2012

CONSTRAINT


Constraint adalah batasan atau aturan yang ada pada table. Constraint mencegah penghapusan data dari suatu table yang mempunyai keterkaitan dengan table yang lain. Misal terdapat keterkaitan antara table department dengan table pegawai. Dimana pada table pegawai menyimpan informasi kolom nomer department yang juga terdapat pada table department. Jika baris dengan nomer department ‘10’ akan dihapus dari table department, sedangkan terdapat data pegawai yang bekerja pada department tersebut, maka dengan adanya constraint antara dua table, penghapusan tersebut tidak bisa dilakukan.
Oracle menyediakan beberapa tipe constraint berikut :
NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK

1

Diatas adalah query untuk membuat table dengan kriteria field (person_code varchar(3),first_name varchar(15),last_name varchar(20),hire_date date) setelah tercipta table person kemudian dilakukan perubahan terhadap table person yaitu menjadikan field first_name dan last_name menjadi not null sehingga jika diisi dengan data yang mengandung null maka data tidak akan bisa diinputkan.

Pada dasarnya diatas adalah sebuah constraint atau batasan dimana data yang sudah diberi batasan tidak dapat diisi atau diubah melampaui batas.Seperti contoh diatas constraint not null menandakan pada field tersebut tidak boleh kosong.

2
Query diatas adalah menciptakan table myTable dengan kriteria (a number unique,b number), setelah tercipta myTable kemudian diinputkan data  (4,5 ),(2,1) (9,8),(6,9),(null,9), (null,9)

kenapa null bisa dimasukan?karena pada wuery tersebut constraint yang digunakan adalah unique sehingga selama data tidak ada yang sama maka dianggap lolos atau boleh dimasukan.

3
Diatas adalah query untuk membuat table dengan kriteria (a number check (a between 0 and 100),b number), type data number dengan constraint check yaitu sebagai pembatas atas data yang akan diinputkan yatiu pada field a rentang data yang dapat dimasukan adalah dari 0 sampai 100 sehingga diluar itu tidak akan dimasukan.
Kemudian dilakukan alter terhadap field b dimana ditambhakan constraint check dengan rentang lebih dari 50, diluar itu tidak akan dimasukan.Setelah dilakukan alter terhadap myTable selanjutnya dilakukan insert data berupa (1,30) ,(2000,300), (2,300) dari ketiga data diatas data yang akan masuka hanya data (2,300) karena 2 berada diantara 0-100 sedangkan 300 berada pada rentang angka lebih dari 50 sedangkan data yang lain tidak memenuhi salah satu ketentuan misal (1,30), 30 <50 maka tidak terpenuhi kemudian (2000,300) 2000 berada diluar rentang angka yang diperbolehkan yaitu 0-100.

Untuk lebih jelasnya silahkan download disini!


Jumat, 14 Desember 2012

SUBQUERY

Subquery adalah sebuah perintah atau query dalam query, lebih jelasnya perintah SELECT didalam perintah SELECT, lihat analogi disamping kiri



diamana query satu adalah sebuah query yang datanya akan bernilai sama dengan yang ada pada subquery.Sehingga bisa dikatakan query1 akan ditampilkan datanya diamana data tersebut merupakan hasil seleksi pada subquery.Adapun beberapa klausa yang digunakan dalam subquery ini adalah :
  • WHERE 
  • HAVING 
  • FROM 
adapun type-type dari sub query adalah :


  • Single row yaitu return valuenya hanya satu misal : DIKDIK
Single row subquery memberikan hasil hanya satu baris pada bagian subquery.Untuk single row subquery ini yang digunakan adalah operator pembandingan : = , > , >= , < , <= , atau <>.Contoh :


select last_name, job_id from employees where job_id = (select job_id from employees where employee_id = 141);




Multiple row yaitu return valuenya lebih dari satu misal : DIKDIK, PRASTYO


  • Multiple Row Subquery adalah subquery yang menghasilkan lebih dari satu baris. Untuk multiple row subquery ini yang digunakan adalah operator pembandingan : IN, ANY atau ALL.Adapun penjelasan penggunaan dari klausa untuk multiple row adalah :
    •  IN adalah klausa yang menyatakan bahwa query1 akan menghasilkan nilai yang sama dengan subquery.
select last_name, salary, department_id from employees where salary in(select min(salary) from employees group by department_id);


Query diatas akan menampilkan data last_name,salary,department_id from employees dengan salary berada pada gaji terkecil dari employees dengan pengelompokan data berdasar department_id maka yang akan ditampilkan adalah data yang memiliki salary terkecil dengan pengelompokan data berdasar department_id jika tidak dikelompokan maka hanya 1 data yang ditampilkan namun query tersebut error.dan permintaannya adalah harus memakai pengelompokan data.

Pada penggunaan ANY, sembarang operator relasional (seperti =, <>, dan >) bisa digunakan.
Contoh kondisi dalam WHERE pada pemakaian ANY
gaji > ANY(S)
Dalam hal ini operator relasional yang digunakan berupa “lebih dari” dan S adalah subquery. Andaikan subquery S menghasilkan G1, G2, . . . , Gn maka kondisi di atas identik dengan:
(gaji > G1) OR
(gaji > G2) OR
 . . OR
(gaji > Gn)

Kondisi dengan ALL menghasilkan nilai benar jika pembandingan menghasilkan nilai benar untuk setiap nilai dalam subquery.
Contoh penggunaan ALL yaitu untuk memperoleh semua pegawai yang gajinya lebih rendah daripada semua pegawai di departemen Akunting.

LATIHAN

1


Diatas adalah query untuk menampilkan last_name dari tabel employees dengan salary lebih besar dari query yang menampilkan salary dari employees dengan last_name = ‘Abel’ sehingga yang akan tampil adalah last_name yang salarynya lebih besar dari salary Abel

2




Diatas merupakan query yang berfungsi untuk menampilkan last_name, job_id dari employees dengan kriteria job_id sama dengan query yang akan menampilkan job_id dari employees dengan employee_id = 141, maka data yang akan tampil adalah last_name dan job_id yang job_idnya sama dengan employee_idnya 141 yakni employee id 141 berada pada job_id ST_CLERK sehingga semua yang memiliki field job_id sama dengan ST_CLERK akan ditampilkan

3




Diatas terdapat query dimana pada query 1 terdapat subquery sebut saja query 2 dan query 3 dimana dilakukan perbandingan AND yaitu jika semua terpenuhi maka akan ditampilkan, maka analoginya adalah


Maka data yang akan ditampilkan adalah last_name,job_id,salary dari tabel employees dengan job_id = job_id yang employee_id nya 141 AND salary lebih besar dari pegawai dengan employee_id 143, karena semua subquery terpenuhi maka akan ditampilkan data queri 1 yang memenuhi subquery2 dan subquery3.

untuk lebih lengkapnya silahkan download disini!