SUBQUERY

Subquery
Subquery berarti query yang ada di dalam query. Dengan menggunakan subqury, hasil dari query akan menjadi bagian dari query di atasnya. Subquery terletak di dalam klausa WHERE atau HAVING. Pada klausa WHERE, subquery digunakan untuk memilih baris-baris tertentu yang kemudian digunakan oleh query. Beberapa kegunaan dari subquery adalah :
1.      Subquery digunakan untuk menyelesaikan persoalan dimana terdapat suatu nilai yang tidak diketahui (unknown values).
2.      Meng-copy data dari satu table ke table lain
3.      Menerima data dari inline view
4.      Mengambil data dari table lain untuk kemudian diupdate ke table yang dituju
5.      Menghapus baris data dari suatu table berdasarkan baris lain table lain
Bentuk umum dari subquery adalah sebagai berikut :
Sintaks formal subquery bisa ditulis sebagai berikut :
SELECT A1, A2, . . .An
FROM  r1, r2, r3, . . .rm
WHERE P
(SELECT A1, A2, . . ., An
FROM r1, r2, r3, . . .rm
WHERE P)
Contoh : perintah untuk menampilkan data pada table jenis_film yang mana data pada kolom jenisnya tercantum pada table film menggunakan IN.
SELECT *FROM JENIS_FILM WHERE JENIS IN (SELECT JENIS FRM FILM):
Atau menggunakan EXISTS
SELECT  *FROM JENIS_FILM WHERE EXISTS (SELECT *FROM FILM WHERE HARGA > 2000);
Pada contoh diatas : SELECT JENIS FROM FILM disebut subquery, sedangkan : SELECT *FROM JENIS_FILM berkedudukan sebagai query. Perhatikan, terdapat data jenis dan harga pada table jenis_film yang tidak ditampilkan.
            Subquery dapat diklasifikan kedalam tiga jenis : scalar, multiple-row, dan multiple-column.
a)      Scalar SubQuery
SubQuery baris tunggal (scalar) hanya mengembalikan hasil satu baris data. Bentuk subquery ini diperlihatkan seperti gambar sebagai berikut :

Subquery baris tunggal dapat menggunakan operator baris tunggal =,>,>=,<, <=, atau < >.
b)     Multiple-Row Subquery
Subquery baris ganda (multiple-row) mngembalikan lebih dari satu baris data. Bentuk subquery ini diperlihatkan seperti gambar sebagai berikut :
Subquery baris ganda dapat menggunakan operator komparasi IN, ANY/ SOME, atau ALL.
c)      Multiple-Column SubQuery
Subquery kolom ganda (multiple-column) mengembalikan lebih dari satu baris dan satu kolom data.
Bentuk subquery ini diperlihatkan seperti gambar sebagai berikut :
1.2 Fungsi Where
Where digunakan untuk memfilter data pada perintah Select Syntax dasar:
SELECT column name(s)
FROM table_name
WHERE column_name operator value
Berikut pernyataan SQL memilih semua mata kuliah “Tabel Mata Kuliah”, dalam “nama_matkul” table.
SELECT *FROM Tabel Mata_Kuliah
WHERE Nama_matkul=’Basis Data’;
SQL membutuhkan tanda kutip tunggal di sekitar nilai-nilai teks (sebagian besar sistem database juga akan memungkinkan tanda kutip ganda).
Namun, bidang numeric tidak boleh tertutup dalam tanda kutip:
Contoh :
            SELECT *FROM Customer
            WHERE Kode_MK=202;
1.3 Fungsi Like
Operator LIKE digunakan untuk mencari pola yang telah ditentukan dalam kolom SQL LIKE Syntax
            SELECT nama_kolom(s)
            FROM nama_tabel
            WHERE nama_kolom LIKE pattern;
Berikut pernyataan SQL memilih semua pelanggan dengan mata kuliah yang diawali dengan huruf “b”:
SELECT *FROM Tabel Mata_Kuliah
WHERE Nama_Matkul LIKE ‘b%’;
Catatan : Tanda modulus “%” tanda digunakan untuk mendefinisikan huruf, angka, maupun kalimat baik sebelum dan sesudah.
Berikut pernyataan SQL memilih semua mata kuliah dengan nama mata kuliah yang berisi pola “data”:
Contoh :
            SELECT *FROM Tabel Mata_Kuliah
            WHERE Nama_Matkul NOT_Like ‘%data%’;
PERCOBAAN 1
1.   Buat database baru dengan nama Pertemuan1
2.  Buat Table baru dengan namamahasiswa
create table mahasiswa (NIM int constratint NIM primary key not null, Nama varchar (25), Jenis_Kelamin varchar (10), Alamat varchar (25))
3.  Masukkan data sesuai kebutuhan
insert into mahasiswa values (101, ‘Arif’, ‘L’, ‘Jl. Kenangan’)
insert into mahasiswa values (102, ‘Budi’, ‘L’, ‘Jl. Jombang’)
insert into mahasiswa values (103, ‘Wati, ‘P’, ‘Jl. Surabaya’)
insert into mahasiswa values (104, ‘Ika’, ‘P’, ‘Jl. Jombang’)
insert into mahasiswa values (105, ‘Tono, ‘L’, ‘Jl. Jakarta’)
insert into mahasiswa values (106, ‘Iwan’, ‘L’, ‘Jl. Bandung’)
insert into mahasiswa values (107, ‘Sari’, ‘P’, ‘Jl. Malang)
insert into mahasiswa values (111, ‘Dwi’, ‘P’, ‘Jl. Demak Barat’)
insert into mahasiswa values (123, ‘Yoga’, ‘L’, ‘Jl. Manukan Yoso’)
4. Tampilkan tabel mahasiswa
Select * from mahasiswa

5. Buat tabel Ambil_MK
create table Ambil_MK (NIM int references mahasiswa (NIM), Kode_MK varchar (10).
6.  Buat datanya sesuai kebutuhan
insert into Ambil_MK values (101, ‘PTI447’)
insert into Ambil_MK values (103, ‘TIK333’)
insert into Ambil_MK values (104, ‘PTI333’)
insert into Ambil_MK values (104, ‘PTI777’)
insert into Ambil_MK values (111, ‘PTI123’)
insert into Ambil_MK values (123, ‘PTI999’)
7. Tampilkan table Ambil_MK
select * from Ambil_MK

8. Buat table baru dengan nama”Dosen
create table Dosen (Kode_Dos int constraint Kode_Dos primary key not null, Nama_Dos vacrhar (10), Alamat_Dos varchar (20)
9. Buat datanya sesuai kebutuhan
insert into Dosen values (10, ‘Suharto’, ‘Jl. Jombang’)
insert into Dosen values (11, ‘Martono’, ‘Jl. Kalpataru’)
insert into Dosen values (12, ‘Rahmawati, ‘Jl. Jakarta’)
insert into Dosen values (13, ‘Bambang’, ‘Jl. Bandung’)
insert into Dosen values (14, ‘Nurul’, ‘Jl. Raya Tidar’)
insert into Dosen values (23, ‘Nanik’, ‘Ambengan’)
insert into Dosen values (33, ‘Karyanto’, ‘Jl. Diponegoro’)
insert into Dosen values (99, ‘Maria’, ‘Jl. Dupak’)
10. Tampilkan table Dosen
select * from Dosen









11. Buat table baru dengan nama ”MataKuliah
create table MataKuliah (Kode_MK varchar (20), Nama_MK varchar (30), SKS varchar (1), Semester varchar (1), Kode_Dos int references Dosen)
12.  Buat datanya sesuai kebutuhan
insert into MataKuliah values (‘PTI447’, ‘Praktikum Basis Data’, ‘1’, ‘3’, 11)
insert into MataKuliah values (‘TIK342’, ‘Praktikum Basis Data’, ‘1’, ‘3’, 11)
insert into MataKuliah values (‘PTI333’, ‘Basis Data Terdistribusi’, ‘3’, ‘5’, 10)
insert into MataKuliah values (‘TIK123’, ‘Jaringan Komputer, ‘2’, ‘5’, 33)
insert into MataKuliah values (‘TIK333’, ‘Sistem Operasi, ‘3’, ‘5’, 10)
insert into MataKuliah values (‘PTI123, ‘Grafika Multimedia, ‘3’, ‘5’, 12)
insert into MataKuliah values (‘PTI777’, ‘Sistem Informasi’, ‘2’, ‘3’, 99)
13. Tampilkan table MataKuliah
select * from MataKuliah
14. Buat table Jurusan
create table Jurusan (Kode_Jur varchar (5), Nama_Jur varchar (30), Kode_Dos int references Dosen (Kode_Dos))
15.  Buat datanya sesuai kebutuhan
insert into Dose values (‘TE’, ‘Teknik Elektro’, 10)
insert into Dose values (‘TM’, ‘Teknik Mesin’, 13)
insert into Dose values (‘TE’, ‘Teknik Sipil’, 23)  
16. Tampilkan table Jurusan
select * from Jurusan





TUGAS LABORATORIUM
1. Gunakan Subquery untuk menampilkan data sebagai berikut :
a) Tampilkan dengan menggunakan Scalar Subquery
nim
nama
Jenis_kelamin
alamat
103
Wati
P
Jl. Surabaya
104
Ika
P
Jl. Jombang
107
Sari
P
Jl. Malang

select * from mahasiswa where Jenis_Kelamin = (select jenis_kelamin from mahasiswa where nama= ‘dwi’);
Data yang ditampilkan
b) Tampilkan dengan menggunakan Multiple Row Subquery dengan operator IN
Kode_dos
Nama_dos
10
Suharto
11
Martini
12
Rahmawati
select * from kode_dos, nama_dos from doseen where kode_dos  IN (select kode_dos from matakuliah where kode_dos <13));
Data yang ditampilkan
c) Tampilkan dengan menggunakan Multiple Row Subquery dengan operator Any
Kode_mk
Nama_mk
sks
Semester
Kode_dos
PTI333
Basis Data Terdistribusi
3
5
10
TIK123
Jaringan Komputer
2
5
33
TIK333
Sistem Operasi
3
5
10
PTI123
Grafika Multimedia
3
5
12
PTI777
Sistem Informasi
2
3
99

select * from matakuliah where kode_mk = ANY (select kode_mk  from matakuliah where SKS > 1) order by Semester desc;
Data yang ditampilkan
d) Bagaimana untuk mendapatkan data seperti berikut :
Kode_mk
Nama_mk
sks
Semester
Kode_dos
PTI333
Basis Data Terdistribusi
3
5
10
TIK333
Sistem Operasi
3
5
10
PTI123
Grafika Multimedia
3
5
12

select * from MataKuliah where Kode_MK = ANY (select Kode_MK from MataKuliah where SKS = 3)order by Semester desc;
Data yang ditampilkan
e) Bagaimana untuk mendapatkan data dengan ketentuan
Kode_mk
Nama_mk
sks
Semester
Kode_dos
PTI447
Praktikum Basis Data
1
3
11

select * from MataKuliah where Kode_MK = ANY (select Kode_MK from MataKuliah where Kode_MK = ‘PTI447’) order by semester desc;
Data yang ditampilkan
2. Dari table yang sama seperti nomor 1
a) Tampilkan mahasiswa yang mengambil mata kuliah dengan kode depan mata kuliah adalah PTI
select mahasiswa.NIM, mahasiswa.NAMA, mahasiswa.Jenis_Kelamin, mahasiswa.Alamat, Ambil_MK.Kode.MK from Mahasiswa, ambil.MK where mahasiswa.NIM = ambil_mk.NIM AND ambil_mk.Kode_MK like ‘%PTI%’
Data yang ditampilkan
b) Tampilkan dosen yang alamatnya bukan dari Jakarta dan mengajar praktikum
select dosen.kode_dos, dosen.nama_dos, dosen.alamat_dos, matakuliah.kode_mk, matakuliah.nama_mk from dosen, matakuliah where dosen.kode_dos = matakuliah.kode_dos AND dosen.alamat_dos not like ‘%Jakarta%’ AND matakuliah.nama_mk like ‘%Praktikum%’
Data yang ditampilkan

KESIMPULAN

Dari hasil percobaan praktikum 1 ini kami telah banyak menggunakan fungsi LIKE dan WHERE untuk mengerjakan percobaan ini pada SQL Server. Sehingga dengan adanya fungsi-fungsi tersebut ini maka kami semua dapat lebih mudah untuk menyelesaikannya.











Penulis : Unknown ~ Sebuah blog yang menyediakan berbagai macam informasi

Artikel SUBQUERY ini dipublish oleh Unknown pada hari Kamis, 17 Juli 2014. Semoga artikel ini dapat bermanfaat.Terimakasih atas kunjungan Anda silahkan tinggalkan komentar.sudah ada 0 komentar: di postingan SUBQUERY
 

0 komentar:

Posting Komentar

Contact Us

Nama

Email *

Pesan *