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)
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 nama”mahasiswa”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.
0 komentar:
Posting Komentar