3.10 Menerapkan penggunaan SQL untuk mengakses multi table
SQL adalah bahasa query baku untuk DBMS.SQL diambil sebagai bagian sejak tahun 1992 awalnya diterapkan pada DBMS besar seperti Oracle dan Informix.
Tabel-tabel yang dibuat pada studi kasus ini cukup sederhana saja untuk memudahkan pemahaman. Adapun tabel-tabel tersebut adalah:1.
mhs (
2.
nim varchar(3),
3.
namaMhs varchar(30),
4.
primary key(nim)
5.
)
1.
mk (
2.
kodeMK varchar(3),
3.
namaMK varchar(30),
4.
sks integer,
5.
primary key(kodeMK)
6.
)
1.
ambilMK (
2.
nim varchar(3),
3.
kodeMK varchar(3),
4.
nilai integer,
5.
primary key(nim, kodeMK)
6.
)
Dalam hal ini, field nim dan kodeMK pada tabel ambilMK merupakan foreign key. Apabila diperhatikan, tabel mhs dengan tabel ambilMK saling berelasi karena nim dalam tabel ambilMK berasal dari nim dalam tabel mhs (master tabel).Demikian pula antara tabel mk dengan ambilMK. Kedua tabel ini juga berelasi karena kodeMK dalam tabel ambilMK berasal dari kodeMK dalam tabel mk.
1.JOIN
Nama Catatan INNER JOIN Hnya menghasilkan baris kombinasi jika kondisi terpenuhi CROSS JOIN Sama dengan INNER JOIN (TRUE) LEFT OUTER JOIN Baris dari table kiri selalu disertakan, tidak berpengaruh kondisi terpenuhi atau tidak. RIGHT OUTER JOIN Baris dari table kanan selalu disertakan, tidak berpengaruh kondisi terpenuhi atau tidak. SELF JOIN Hanya istilah untuk JOIN yang menggunakan table yang sama di sisi kanan dan kiri.
a. INNER JOIN
Sintak:
select * from namatable1 inner join namatable2 on namatable1.namakolom= namatable2.namakolom;
Contoh:
Tampilkan data air_master kemudian Meal_Code dan Service_Code
b. CROSS JOIN
Sintak:
select * from namatable1 cross join namatable2 on namatable1.namakolom= namatable2.namakolom;
Contoh:
Tampilkan data air_master kemudian Meal_code dan Service_Code
contoh soal cross join dan penyelesaian
c. LEFT OUTER JOIN
Sintak:
select * from namatable1 left outer join namatable2 on namatable1.namakolom= namatable2.namakolom;
Contoh:
Tampilkan data service(Air_Code) dan Service_Name
contoh soal left join dan penyelesaian
d. RIGHT OUTER JOIN
Sintak:
select * from namatable1 right outer join namatable2 on namatable1.namakolom= namatable2.namakolom;
Contoh:
Tampilkan data airline_service (Air_Code) dan Service_Name
contoh soal right join dan penyelesaian
e. SELF JOIN
Sintak:
select * from namatable self join kolom;
2. Sub Select
Sub select adalah query SELECT yang ada didalam perintah SQL lain (SELECT/UPDATE/INSERT dan lain sebagainya).
Secara umum syntax subquery adalah :
SELECT * FROM tabel_a WHERE kolom_a = (SELECT kolom_b FROM tabel_b);
Contoh:
Tampilkan Air_Code dan Airlines_Name
contoh soal sub select dan penyelesaian
Tampilkan total Air_Code yang paling banyak datanya dan kolom yang ditampilkan adalah Air_Code
contoh soal sub select dan penyelesaian
Operator Exist
pada operator exist semua bentuk kondisi diletakkan didalam subquery, bukan pada query utama.
Secara umum syntax operator ini adalah :
select kolom_a,kolom_b, FROM nama_tabelWHERE EXIST (subselect);
3. UNION
Berfungsi untuk menggabungkan 2 tabel yang berbeda dengan syarat tabel itu harus sama jumlah kolomnya.
Sintak :
SELECT * FROM namatable WHERE <<kondisi>> UNION SELECT kolom1,kolom2 FROM namatabel;
Jika tabel tersebut mempunyai kolom yang berbeda, maka dapat ditambahkan null atau 1Penggunaan: ‘ UNION SELECT 1,kolom1,kolom2 FROM namatabel
Contoh:
Tampilkan data airline_meal dan meal berdasarkan Meal_Code yang diawali huruf V
contoh soal union dan penyelesaian
4. INTERSECT
INTERSECT merupakan operator yang digunakan untuk memperoleh data dari dua buah query dimana data yang ditampilkan adalah yang memenuhi kedua query tersebut dengan ketentuan jumlah, nama dan tipe kolom dari masing-masing tabel yang akan ditampilkan datanya harus sama.
Sintak :
SELECT * FROM namatabel1 INTERSECT SELECT * FROM namatabel2
Pada MySQL tidak terdapat operator INTERSECT namun sebagai gantinya dapat menggunakan operator IN seperti contoh 1 pada bagian Nested Queries.
1.
mhs (
2.
nim varchar(3),
3.
namaMhs varchar(30),
4.
primary key(nim)
5.
)
1.
mk (
2.
kodeMK varchar(3),
3.
namaMK varchar(30),
4.
sks integer,
5.
primary key(kodeMK)
6.
)
1.
ambilMK (
2.
nim varchar(3),
3.
kodeMK varchar(3),
4.
nilai integer,
5.
primary key(nim, kodeMK)
6.
)
1.JOIN
a. INNER JOIN
Contoh:
Nama | Catatan |
INNER JOIN | Hnya menghasilkan baris kombinasi jika kondisi terpenuhi |
CROSS JOIN | Sama dengan INNER JOIN (TRUE) |
LEFT OUTER JOIN | Baris dari table kiri selalu disertakan, tidak berpengaruh kondisi terpenuhi atau tidak. |
RIGHT OUTER JOIN | Baris dari table kanan selalu disertakan, tidak berpengaruh kondisi terpenuhi atau tidak. |
SELF JOIN | Hanya istilah untuk JOIN yang menggunakan table yang sama di sisi kanan dan kiri. |
a. INNER JOIN
Sintak:
select * from namatable1 inner join namatable2 on namatable1.namakolom= namatable2.namakolom;
Contoh:
Tampilkan data air_master kemudian Meal_Code dan Service_Code
b. CROSS JOIN
Sintak:
select * from namatable1 cross join namatable2 on namatable1.namakolom= namatable2.namakolom;
Contoh:
Tampilkan data air_master kemudian Meal_code dan Service_Code
contoh soal cross join dan penyelesaian
c. LEFT OUTER JOIN
Sintak:
select * from namatable1 left outer join namatable2 on namatable1.namakolom= namatable2.namakolom;
Contoh:
Tampilkan data service(Air_Code) dan Service_Name
contoh soal left join dan penyelesaian
d. RIGHT OUTER JOIN
Sintak:
select * from namatable1 right outer join namatable2 on namatable1.namakolom= namatable2.namakolom;
Contoh:
Tampilkan data airline_service (Air_Code) dan Service_Name
contoh soal right join dan penyelesaian
e. SELF JOIN
Sintak:
select * from namatable self join kolom;
2. Sub Select
Sub select adalah query SELECT yang ada didalam perintah SQL lain (SELECT/UPDATE/INSERT dan lain sebagainya).
Secara umum syntax subquery adalah :
SELECT * FROM tabel_a WHERE kolom_a = (SELECT kolom_b FROM tabel_b);
Contoh:
Tampilkan Air_Code dan Airlines_Name
contoh soal sub select dan penyelesaian
Tampilkan total Air_Code yang paling banyak datanya dan kolom yang ditampilkan adalah Air_Code
contoh soal sub select dan penyelesaian
Operator Exist
pada operator exist semua bentuk kondisi diletakkan didalam subquery, bukan pada query utama.
Secara umum syntax operator ini adalah :
select kolom_a,kolom_b, FROM nama_tabelWHERE EXIST (subselect);
3. UNION
Berfungsi untuk menggabungkan 2 tabel yang berbeda dengan syarat tabel itu harus sama jumlah kolomnya.
Sintak :
SELECT * FROM namatable WHERE <<kondisi>> UNION SELECT kolom1,kolom2 FROM namatabel;
Jika tabel tersebut mempunyai kolom yang berbeda, maka dapat ditambahkan null atau 1Penggunaan: ‘ UNION SELECT 1,kolom1,kolom2 FROM namatabel
Contoh:
Tampilkan data airline_meal dan meal berdasarkan Meal_Code yang diawali huruf V
contoh soal union dan penyelesaian
4. INTERSECT
INTERSECT merupakan operator yang digunakan untuk memperoleh data dari dua buah query dimana data yang ditampilkan adalah yang memenuhi kedua query tersebut dengan ketentuan jumlah, nama dan tipe kolom dari masing-masing tabel yang akan ditampilkan datanya harus sama.
Sintak :
SELECT * FROM namatabel1 INTERSECT SELECT * FROM namatabel2
Pada MySQL tidak terdapat operator INTERSECT namun sebagai gantinya dapat menggunakan operator IN seperti contoh 1 pada bagian Nested Queries.
Sintak:
select * from namatable1 cross join namatable2 on namatable1.namakolom= namatable2.namakolom;
Contoh:
Tampilkan data air_master kemudian Meal_code dan Service_Code
contoh soal cross join dan penyelesaian
c. LEFT OUTER JOIN
Sintak:
select * from namatable1 left outer join namatable2 on namatable1.namakolom= namatable2.namakolom;
Contoh:
Tampilkan data service(Air_Code) dan Service_Name
contoh soal left join dan penyelesaian
d. RIGHT OUTER JOIN
Sintak:
select * from namatable1 right outer join namatable2 on namatable1.namakolom= namatable2.namakolom;
Contoh:
Tampilkan data airline_service (Air_Code) dan Service_Name
contoh soal right join dan penyelesaian
e. SELF JOIN
Sintak:
select * from namatable self join kolom;
2. Sub Select
Sub select adalah query SELECT yang ada didalam perintah SQL lain (SELECT/UPDATE/INSERT dan lain sebagainya).
Secara umum syntax subquery adalah :
SELECT * FROM tabel_a WHERE kolom_a = (SELECT kolom_b FROM tabel_b);
Contoh:
Tampilkan Air_Code dan Airlines_Name
contoh soal sub select dan penyelesaian
Tampilkan total Air_Code yang paling banyak datanya dan kolom yang ditampilkan adalah Air_Code
contoh soal sub select dan penyelesaian
Operator Exist
pada operator exist semua bentuk kondisi diletakkan didalam subquery, bukan pada query utama.
Secara umum syntax operator ini adalah :
select kolom_a,kolom_b, FROM nama_tabelWHERE EXIST (subselect);
3. UNION
Berfungsi untuk menggabungkan 2 tabel yang berbeda dengan syarat tabel itu harus sama jumlah kolomnya.
Sintak :
SELECT * FROM namatable WHERE <<kondisi>> UNION SELECT kolom1,kolom2 FROM namatabel;
Jika tabel tersebut mempunyai kolom yang berbeda, maka dapat ditambahkan null atau 1Penggunaan: ‘ UNION SELECT 1,kolom1,kolom2 FROM namatabel
Contoh:
Tampilkan data airline_meal dan meal berdasarkan Meal_Code yang diawali huruf V
contoh soal union dan penyelesaian
4. INTERSECT
INTERSECT merupakan operator yang digunakan untuk memperoleh data dari dua buah query dimana data yang ditampilkan adalah yang memenuhi kedua query tersebut dengan ketentuan jumlah, nama dan tipe kolom dari masing-masing tabel yang akan ditampilkan datanya harus sama.
Sintak :
SELECT * FROM namatabel1 INTERSECT SELECT * FROM namatabel2
Pada MySQL tidak terdapat operator INTERSECT namun sebagai gantinya dapat menggunakan operator IN seperti contoh 1 pada bagian Nested Queries.
Komentar
Posting Komentar