Rabu, 19 Desember 2012

TUGAS PERTEMUAN-6 SPBD


mencari first_name, last_name,salary :
select first_name,last_name,salary,employees.department_id,department_name
from employees,departments
where departments.department_id=employees.department_id;

menampilkan first_name,last_name, department_name, salary, job_title:
select first_name,last_name,salary,department_name,job_title
from employees,departments,jobs
where employees.department_id=departments.department_id
and employees.job_id=jobs.job_id;

menampilkan region_name, country_name, street_addres, city:
select region_name,country_name,street_adress,city
from regions,countries,locations
where regions.region_id=countries.region_id and
locations.co=countries.co;

Rabu, 12 Desember 2012

TUGAS PERTEMUAN-5 SPBD

Klausul SQL bergabung menggabungkan catatan dari dua atau lebih tabel dalam database. Ini menciptakan satu set yang dapat disimpan sebagai meja atau digunakan sebagaimana mestinya. BERGABUNG adalah sarana untuk menggabungkan field dari dua tabel dengan menggunakan nilai-nilai bersama untuk masing-masing. Standar ANSI SQL menetapkan empat jenis BERGABUNG: INNER, OUTER, KIRI, dan KANAN. Sebagai kasus khusus, meja (dasar meja, pandangan, atau meja bergabung) dapat BERGABUNG untuk dirinya sendiri dalam diri bergabung.

Seorang pemrogram menulis predikat BERGABUNG untuk mengidentifikasi catatan untuk bergabung. Jika predikat dievaluasi adalah benar, catatan gabungan ini kemudian diproduksi dalam format yang diharapkan, dengan rekor atau tabel sementara.

1. INNER JOIN
Sebuah inner join adalah operasi bergabung paling umum digunakan dalam aplikasi dan dapat dianggap sebagai default bergabung-jenis. Inner join membuat tabel hasil baru dengan menggabungkan nilai kolom dari dua tabel (A dan B) berdasarkan predikat join-. Permintaan membandingkan setiap baris A dengan setiap baris dari B untuk menemukan semua pasang baris yang memenuhi join-predikat. Ketika join-predikat puas, nilai kolom untuk setiap pasangan yang cocok dari baris A dan B digabungkan menjadi satu baris hasil. Hasil dari join dapat didefinisikan sebagai hasil pertama mengambil produk Cartesian (atau Cross join) dari semua catatan dalam tabel (menggabungkan setiap record dalam tabel A dengan setiap record dalam tabel B)-kemudian kembali semua catatan yang memenuhi bergabung predikat. Aktual SQL implementasi biasanya menggunakan pendekatan lain seperti hash bergabung atau semacam-menggabungkan bergabung mana mungkin, karena menghitung produk Cartesian sangat tidak efisien.

SQL menetapkan dua cara yang berbeda untuk mengekspresikan sintaksis bergabung: "eksplisit bergabung notasi" dan "implisit bergabung notasi".

The "eksplisit bergabung notasi" menggunakan BERGABUNG kata kunci untuk menentukan tabel untuk bergabung, dan kata kunci ON untuk menentukan predikat untuk bergabung, seperti dalam contoh berikut:
 
SELECT *
FROM employee
INNER JOIN department ON employee.DepartmentID = department.DepartmentID;
   
FROM employee, department
WHERE employee.DepartmentID = department.DepartmentID;
 
2.EQUI-JOIN
Sebuah equi-join adalah jenis tertentu dari komparator berbasis join, yang hanya 
menggunakan perbandingan kesetaraan dalam predikat join-. Menggunakan operator 
perbandingan lainnya (seperti <) mendiskualifikasi bergabung sebagai equi-join. 
Permintaan yang ditampilkan di atas telah  
memberikan contoh dari equi-join: 

SELECT *
FROM employee
JOIN department ON employee.DepartmentID = department.DepartmentID;
 
SELECT * FROM employee, department WHERE employee.DepartmentID = 
department.DepartmentID; 

3.NATURAL JOIN
Sebuah join alami adalah jenis equi-join mana predikat bergabung timbul implisit  
dengan membandingkan semua kolom di kedua tabel yang memiliki kolom yang sama-nama 
dalam tabel bergabung. Tabel bergabung dihasilkan hanya berisi satu kolom untuk 
setiap pasangan kolom sama bernama.Kebanyakan ahli setuju bahwa ALAM bergabung  
berbahaya dan karenanya sangat tidak menyarankan penggunaan. Bahayanya berasal 
dari sengaja menambahkan kolom baru, bernama sama dengan kolom lain dalam tabel 
lainnya. Sebuah bergabung alam yang ada maka mungkin "alami" menggunakan kolom 
baru untuk perbandingan, membuat perbandingan / pertandingan menggunakan kriteria 
yang berbeda (dari kolom yang berbeda) dari sebelumnya. Jadi query yang ada dapat 
menghasilkan hasil yang berbeda, meskipun data dalam tabel belum berubah, tapi 
hanya ditambah.Permintaan contoh di atas untuk bergabung dalam dapat dinyatakan 
sebagai alami bergabung dengan cara berikut:
 
SELECT *
FROM employee
NATURAL JOIN department;
 
4.CROSS JOIN
CROSS JOIN mengembalikan produk Cartesian dari baris dari tabel dalam bergabung. Dengan kata lain, hal itu akan menghasilkan baris yang menggabungkan setiap baris dari tabel pertama dengan setiap baris dari tabel kedua. [4]

Contoh eksplisit bergabung: 
 
SELECT *
FROM employee
CROSS JOIN department;
 
5.LEFT OUTER JOIN
Hasil dari kiri luar bergabung (atau hanya kiri bergabung) untuk tabel A dan B selalu berisi semua catatan dari tabel "kiri" (A), bahkan jika bergabung-kondisi tidak menemukan catatan yang cocok dalam tabel "benar" (B). Ini berarti bahwa jika klausa ON cocok 0 (nol) catatan dalam B (untuk record diberikan dalam A), bergabung masih akan kembali baris dalam hasil (untuk catatan itu)-tetapi dengan NULL di setiap kolom dari B. outer join kiri mengembalikan semua nilai dari inner join ditambah semua nilai dalam tabel kiri yang tidak cocok dengan tabel kanan. Dari Oracle 9i seterusnya statement JOIN KIRI Outer dapat digunakan serta lama sintaks Oracle (+) .

Sebagai contoh, ini memungkinkan kita untuk menemukan departemen karyawan, namun masih menunjukkan karyawan (s) bahkan ketika mereka belum ditugaskan ke departemen (bertentangan dengan contoh inner-join di atas, di mana karyawan ditugaskan dikeluarkan dari hasil).

Contoh kiri luar bergabung, dengan baris hasil tambahan (dibandingkan dengan inner join) dicetak miring:

SELECT *
FROM employee
LEFT OUTER JOIN department ON employee.DepartmentID = department.DepartmentID;
 
6.RIGHT OUTER JOIN
Sebuah luar hak bergabung (atau kanan bergabung) mirip kiri luar bergabung, kecuali dengan 
perlakuan terhadap tabel terbalik. Setiap baris dari tabel "benar" (B) akan muncul dalam 
tabel bergabung setidaknya sekali. Jika tidak ada baris yang cocok dari tabel "kiri" (A) ada, 
NULL akan muncul dalam kolom dari A bagi mereka yang tidak memiliki catatan pertandingan di B.

Sebuah outer join yang tepat mengembalikan semua nilai dari tabel kanan dan nilai-nilai 
cocok dari tabel kiri (NULL dalam kasus tidak ada predikat bergabung pencocokan). Sebagai 
contoh, ini memungkinkan kita untuk menemukan setiap karyawan dan departemen nya, namun 
masih menunjukkan departemen yang tidak memiliki karyawan.

Di bawah ini adalah contoh dari outer join yang tepat, dengan baris hasil tambahan dicetak
miring: 
 
SELECT *
FROM employee
RIGHT OUTER JOIN department ON employee.DepartmentID = department.DepartmentID;
 
7.FULL OUTER JOIN
Secara konseptual, sebuah outer join penuh menggabungkan efek dari penerapan luar baik kiri dan kanan bergabung. Dimana
 catatan dalam tabel LENGKAP bergabung OUTER tidak cocok, set hasil akan
 memiliki nilai NULL untuk setiap kolom tabel yang tidak memiliki baris 
yang cocok. Bagi
 mereka yang melakukan catatan pertandingan, satu baris akan diproduksi 
dalam hasil set (berisi field diisi dari kedua tabel).
Sebagai
 contoh, ini memungkinkan kita untuk melihat setiap karyawan yang berada
 dalam departemen dan masing-masing departemen yang memiliki karyawan, 
tetapi juga melihat masing-masing karyawan yang bukan merupakan bagian 
dari departemen dan masing-masing departemen yang tidak memiliki 
karyawan.
Contoh penuh outer join:
 
SELECT *
FROM employee
FULL OUTER JOIN department ON employee.DepartmentID = department.DepartmentID;