Nim: 12390100028
Nama: Laili Rosyida
Tugas Rangkuman ke 1 Mata Kuliah : SQL 1
Alamat Blog mahasiswa : http://lailistikom.blogspot.com/
Structured Query Language adalah sebuah bahasa yang digunakan untuk mengakses data dalam basis data relasional.
ERD merupakan suatu model untuk menjelaskan hubungan antar data dalam basis
data berdasarkan objek-objek dasar data yang mempunyai hubungan antar relasi.
Secara umum, SQL terdiri dari
dua bahasa, yaitu Data Definition Language (DDL) dan Data Manipulation Language (DML). Implementasi DDL dan DML
berbeda untuk tiap sistem manajemen basis data (SMBD), namun secara umum implementasi tiap bahasa ini
memiliki bentuk standar yang ditetapkan ANSI. Artikel
ini akan menggunakan bentuk paling umum yang dapat digunakan pada kebanyakan
SMBD.
Data Definition
Language
DDL digunakan untuk
mendefinisikan, mengubah, serta menghapus basis data dan objek-objek yang diperlukan dalam
basis data, misalnya tabel, view, user, dan
sebagainya. Secara umum, DDL yang digunakan adalah CREATE
untuk membuat objek baru, USE
untuk menggunakan objek, ALTER
untuk mengubah objek yang sudah ada,
dan DROP
untuk menghapus objek. DDL biasanya
digunakan oleh administrator basis data dalam pembuatan sebuah aplikasi basis data.
CREATE
CREATE
digunakan untuk membuat basis data
maupun objek-objek basis data. SQL yang umum digunakan adalah:
CREATE DATABASE nama_basis_data
CREATE
DATABASE
membuat
sebuah basis data baru.
CREATE TABLE nama_tabel
CREATE
TABLE
membuat
tabel baru pada basis data yang sedang aktif. Secara umum, perintah ini
memiliki bentuk
CREATE TABLE [''nama_tabel'']
(
nama_field1 tipe_data [constraints][,
nama_field2 tipe_data,
...]
)
atau
CREATE TABLE [''nama_tabel'']
(
nama_field1 tipe_data [ nama_field2 tipe_data,...]
[CONSTRAINT nama_field constraints]
);
dengan:
nama_field adalah nama kolom (field)
yang akan dibuat. Beberapa sistem manajemen basis data mengizinkan penggunaan
spasi dan karakter nonhuruf pada nama kolom.
tipe_data tergantung implementasi sistem
manajemen basis data. Misalnya, pada MySQL, tipe data dapat berupa VARCHAR
, TEXT
, BLOB
, ENUM
, dan sebagainya.
Constraints adalah
batasan-batasan yang diberikan untuk tiap kolom. Ini juga tergantung
implementasi sistem manajemen basis data, misalnya NOT NULL
, UNIQUE
, dan sebagainya. Ini dapat digunakan
untuk mendefinisikan kunci primer (primary key) dan kunci asing (foreign key).
Satu tabel boleh tidak
memiliki kunci primer sama sekali, namun sangat disarankan mendefinisikan
paling tidak satu kolom sebagai kunci primer.
Contoh:
CREATE TABLE user
(username VARCHAR(30) CONSTRAINT PRIMARY KEY,
passwd VARCHAR(20) NOT NULL,
tanggal_lahir DATETIME);
Pertemuan 1
1.1 Perintah
SELECT
Perintah
SELECT digunakan untuk menampilkan atau mengambil
data dari database. Perintah SELECT memiliki 3 (tiga) macam kemampuan:
a.
Projection: Perintah SELECT bisa
digunakan untuk memilih
kolom
apa saja dari tabel
yang akan ditampilkan.
b.
Selection: Perintah SELECT bisa digunakan untuk memilih baris data
mana saja yang akan
ditampilkan.
c. Joining:
Perintah SELECT bisa digunakan
untuk menampilkan data
atau informasi dari 2 atau
lebih tal yang terhubung.
1.2 Concate
Operators
operator
CONCATE digunakan untuk
menggabungkan text, nilai kolom,
atau karakter. Anda bisa menghubungkan sebuah
kolom dengan kolom
lain, ekspresi aritmatik, atau
nilai konstan, untuk
membuat sebuah ekspresi karakter dengan
menggunakan operator CONCATE yang
disimbolkan dengan ‘||’.
Contoh:
Menampilkan
nama lengkap dari mahasiswa
SELECT 'Nama
saya'|| NAMA_DEPAN ||' '||
NAMA_BELAKANG FROM MAHASISWA;
1.3
Column Alias
Ketika
menghasilkan hasil sebuah query, SQL akan menggunakan nama dari kolom-kolom
yang dipilih/ekspresi pada
SELECT statement sebagai header
kolom. Terkadang nama
kolom yang muncul
sulit dimengerti.atau kurang bisa
menjelaskan isi dari
kolom. Anda bisa mengganti header dari kolom hasil query
dengan menggunakan alias. Tuliskan alias
dari sebuah kolom
pada klausa SELECT dengan menggunakan spasi
sebagai pemisah
Jika alias
dari sebuah kolom mengandung spasi atau karakter khusus,
gunakan tanda petik 2 (“ “).
Contoh :
menampilkan
NIM, KODE_MK dan “NILAI AKHIR’.
SELECT NIM, KODE_MK, (TUGAS*0.4) + (UTS*0.3) +
(UAS*03) AS "NILAI AKHIR" FROM NILAI;
1.4
Comparison Conditions
Operator
|
Note
|
=
|
Sama dengan
|
>
|
Lebih besar
|
>=
|
Lebih besar sama
dengan
|
<
|
Kurang dari
|
<=
|
Kurang dari sama dengan
|
|
|
<>. !=, ^=
|
Tidak sama dengan
|
BETWEEN … AND …
|
Diantara 2 nilai
|
IN (LIST OF VALUES)
|
Dicocokkan dengan salah
satu nilai pada kumpulan
nilai
|
LIKE
|
Mencocokkan dengan
pola karakter
|
IS NULL
|
Adalah nilai NULL
|
·
(BETWEEN …
AND …) operator Anda dapat menampilkan
baris data berdasarkan
sebuah jangkauan nilai dengan
menggunakan operator BETWEEN. Jangkauan nilai yang disebutkan memiliki batas
atas dan batas bawah. Nilai yang dituliskan dalam kondisi
BETWEEN bersifat inklusif,
dan anda harus menentukan nilai
terendah terlebih dahulu.
Anda juga bisa menggunakan kondisi BETWEEN untuk nilai
karakter/huruf.
·
(IN)
operator
Untuk
mencoba nilai dalam sebuah kumpulan nilai, gunakan kondisi IN.
kondisi
IN dapat
digunakan dengan tipe
data apapun. Jika tipe
data
huruf atau
tipe data DATE
digunakan dalam kumpulan
nilai, tipe data
tersebut
harus dituliskan dengan tanda petik (' ')
·
(LIKE)
operator
Terkadang, anda tidak mengerti nilai apa
yang akan dicari, tetapi anda
dapat
menampilkan baris data yang cocok dengan pola karakter dengan
menggunakan kondisi LIKE.
Pertemuan 2
Logical Conditions
Sebuah kondisi
logis menggabungkan hasil
dari 2 komponen
kondisi untuk menghasilkan
sebuah hasil berdasarkan
2 kondisi tersebut.
Atau membalikkan hasil dari
sebuah kondisi. Sebuah
baris data akanLabKom STIKOM Surabaya |Retrieve, Filter,
and Sort 12 dikembalikan jika
hasil keseluruhan dari
kondisi adalah TRUE. Ada
3 (tiga) operator logis yang ada di SQL:
Operator
|
Meaning
|
AND
|
mengembalikan TRUE jika kedua komponen
kondisi mengembalikan TRUE
|
OR
|
Mengembalikan TRUE jika salah satu
komponen kondisi mengembalikan TRUE
|
NOT
|
Mengembalikan TRUE jika komponen
kondisi mengembalikan FALSE
|
AND Operator
Operator AND
membutuhkan kedua komponen
kondisi untuk
bernilaiTRUE.
Contoh :
Mengambil
data mahasiswa yang tinggal di kota Sidoarjo dan nama
depannya
dimulai dengan huruf‘A’
SELECT * FROM MAHASISWA WHERE KOTA_TINGGAL =
'Sidoarjo' AND NAMA_DEPAN LIKE 'A%';
OR Operator
Operator
OR membutuhkan salah
satu dari komponen
kondisi untuk
bernilai TRUE.
Contoh :
Mengambil data matakuliah
yang jumlah sks-nya 3
atau semester
diadakannya
1
SELECT * FROM MATAKULIAH WHERE SKS = 3 OR SEMESTER =
1;
NOT Operator
Operator
NOT membutuhkan sekumpulan
nilai yang tidak
ingin
ditampilkan
di hasil query.
Contoh :
Mengambil nim,
kode_mk dan nilai
akhir dari mahasiswa
dengan
nilai akhir
tidak diantara 60
sampai 100, dan
kode_mk-nya
mengandung
angka 1.
SELECT NIM, KODE_MK, (TUGAS*0.4) + (UTS*0.3) +
(UAS*0.3) AS "FINAL SCORE" FROM NILAI
WHERE (TUGAS*0.4) + (UTS*0.3) + (UAS*0.3) NOT
BETWEEN 60 AND 100 AND KODE_MK LIKE '%1%';
Pertemuan 3
Single-Row Functions
Functions
adalah sebuah fitur
yang sangat kuat dari
SQL. Functions bisa
digunakan untuk melakukan hal -
hal berikut:
·
Melakukan
kalkulasi pada data.
·
Mengubah data individual
·
Mengubah
output untuk sekumpulan baris data.
·
Membentuk
tampilan tanggal dan angka.
·
Mengubah
tipe data kolom
Single-Row Function digunakan untuk memanipulasi baris
data. Single-row function menerima 1
(satu) atau lebih input
parameter / argument dan mengembalikan 1 (satu) nilai untuk setiap baris
yang dikembalikan oleh query.
Sebuah input parameter / argument dapat terdiri atas /
diisi dengan:
·
Nilai
konstan yang dimasukkan pengguna
·
Nilai
variabel
·
Nama kolom
·
Ekspresi
Character
Functions
Single-row
character function menerima
data karakter sebagai masukan
dan dapat mengembalikan baik
nilai karakter dan nilai angka.
Character function dapat dibagi menjadi 2:
·
Case-manipulation
function
·
Character-manipulation
function
Case-Manipulation
Functions
Fungsi-fungsi
berikut dapat mengubah
case dari 1
(satu) atau sekumpulan karakter.
LOWER:
mengubah karakter mixed-case atau uppercase menjadi
lowercase.
UPPER:
mengubah karakter mixed-case
atau lowercase menjadi
uppercase.
INITCAP: mengubah
setiap huruf depan
dari kata menjadi uppercase dan membiarkan huruf yang lain tetap
lowercase.
Character-Manipulation Functions
·
CONCAT: menggabungkan
2(dua) nilai menjadi
1 (satu). CONCAT hanya dapat
menggabungkan 2 parameter / argument.
·
SUBSTR:
mengambil karakter dari posisi karakter dan panjang yang disebutkan.
·
LENGTH:
mengambil panjang sebuah string karakter menjadi nilai angka.
·
INSTR:
mengambil posisi (dalam bentuk angka) dari karakter yang disebutkan.
·
LPAD:
menambahkan karakter di bagian kiri string karakter
·
RPAD:
menambahkan karakter di bagian kanan string karakter.
·
REPLACE: menggantikan
karakter yang disebut
pada string karakter dengan karakter / string karakter lain.
·
TRIM:
menghapus karakter yang disebutkan dari huruf paling awal atau paling
akhir (atau keduanya)
dari string karakter. Dapat juga
digunakan untuk menghapus spasi.
Pertemuan 4
The Functions
MONTH_BETWEEN (DATE1, DATE2)
Mengembalikan jumlah
bulan antara date1 dan date2,
dan dapat mengembalikan nilai
negatif.
ADD_MONTHS(DATE,N)
Menambahkan
bulan sejumlah N ke DATE. Nilai dari N harus angka dan bisa negative.
NEXT_DAY(DATE,’CHAR’)
Menemukan
tanggal dari hari berikutnya dalam minggu (‘CHAR’), setelah DATE. Nilai
(‘CHAR’) dapat berisi angka yang mewakilkan hari atau string karakter.
LAST_DAY(DATE)
Menemukan
tanggal dari hari terakhir pada bulan yang menampung DATE.
ROUND(DATE[,’FMT’])
Mengembalikan tanggal
yang dibulatkan ke
atas berdasarkan ‘FMT’. Jika
’FMT’ tidak disebutkan, maka
tanggal akan dibulatkan ke hari yang
terdekat.
Data Type Conversions
ü TO_CHAR(NUMBER|DATE,[fmt],
[nlsparams])
Mengubah sebuah
nilai NUMBER atau DATE
menjadi sebuah karakter string
VARCHAR2 dengan format fmt. Number Conversion:
Parameter nlsparams menyebutkan
karakter-karakter yang
akan dikembalikan oleh
elemen format number. Jika
nlsparams atau parameter lain
tidak diisi, maka fungsi akan menggunakan nilai parameter
default. Date Conversion: Parameter
nlsparams menyebutkan dalam bahasa tanggal
apa bulan, nama
hari hari, serta
singkatan akan
dikembalikan. Jika parameter
nlsparams ini tidak
diisi, maka fungsi akan
menggunakan bahasa tanggal default.
ü TO_NUMBER(CHAR,[fmt],
[nlsparams])
Mengubah
sebuah karakter string yang memuat angka menjadi tipe data NUMBER dengan format
sesuai pada fmt. Parameter [nlsparams]
di fungsi ini
memiliki kesamaan
dengan parameter [nlsparams] pada function TO_CHAR
untuk number conversion.
ü TO_DATE(CHAR,[fmt],
[nlsparams])
Mengubah sebuah
karakter string yang
mewakili tanggal ke
nilai dengan tipe data DATE berdasarkan fmt yang
disebutkan. Jika fmt tidak diisi,
maka format yang dikembalikan adalah DD-MON-YY (akan dijelaskan nanti). Parameter [nlsparams] di fungsi
ini memiliki kesamaan dengan parameter [nlsparams] pada function TO_CHAR
untuk date conversion.
General Functions
Fungsi-fungsi berikut ini
dapat digunakan dengan tipe data apapun dan berhubungan dengan penggunaan
nilai NULL:
Ø NVL (expr1,
expr2)
Mengubah
sebuah nilai NULL menjadi nilai yang tertentu.
Ø NVL2 (expr1,
expr2, expr3)
Jika expr1
bernilai NULL, maka fungsi akan mengembalikan nilai pada expr3; sedangkan jika
expr1 tidak bernilai null, maka fungsi akan mengembalikan nilai pada expr2
Ø NULLIF
(expr1, expr2)
Membandingkan
2 (dua) ekspresi dan mengembalikan NULL jika ekspresi tersebut sama. Jika kedua
ekspresi tidak sama, maka fungsi akan mengembalikan expr1.
Ø COALESCE
(expr1, expr2, . . ., exprN)
Mengembalikan
ekspresi non-NULL pertama dari daftar ekspresi.
Pertemuan 5
Group Functions / Aggregate
Functions
Types Of
Group Function Tidak seperti pada single-row function,
Group
Function atau Aggregate Function
bekerja pada sekumpulan baris
data untuk mengembalikan 1 buah hasil
untuk setiap groupnya. Sekumpulan
baris data
yang dimaksud
bisa melingkupi 1
(satu) tabel, atau sebuah tabel yang dibagi menjadi
beberapa group. Tipe-Tipe dari Group Function adalah sebagai berikut:
Function
Description
|
Function
Description
|
AVG([DISTINCT|ALL] n)
|
mengembalikan rata-rata
nilai dari n dengan
mengabaikan nilai NULL.
|
COUNT({*|[DISTINCT|ALL]
expr})
|
mengembalikan jumlah dari
baris data. Expr akan
mengembalikan nilai yang
tidak NULL saja. (COUNT
ALL dengan menggunakan
* akan mengembalikan
semua data kembar dan
baris data dengan nilai
NULL)
|
MAX ([DISTINCT|ALL]
expr)
|
mengembalikan nilai
maksimum dari expr,
dengan mengabaikan nilai
NULL.
|
MIN ([DISTINCT|ALL]
expr)
|
mengembalikan nilai
minimum dari expr,
dengan mengabaikan nilai
NULL.
|
STDDEV([DISTINCT|ALL] n)
|
mengembalikan standar
|
Beberapa pedoman dalam menggunakan
group function:
·
Keyword
DISTINCT akan membuat function
membaca nilai-nilai yang tidak
kembar saja. ALL akan membuat
function membaca semua nilai,
termasuk nilai kembar. Default dari sebuah
function adalah ALL.
·
Tipe data
yang dapat digunakan pada
function dengan parameter expr antara lain CHAR, VARCHAR2,
NUMBER, atau DATE.
·
Semua group
function mengabaikan nilai
NULL. Untuk menggantikan nilai
NULL dengan nilai lain, gunakan function NVL, NVL2,atau COALESCE. Anda dapat
menggunakan AVG, SUM, MIN, dan MAX
Function pada kolom yang menyimpan
data bertipe angka.
Anda juga dapat.
Pada waktu
tertentu, anda harus membagi sebuah
tabel menjadi group-group yang
lebih kecil. Hal
ini dapat dilakukan dengan
menggunakan klausa GROUP BY. Anda
dapat menggunakan klausa GROUP
BY untuk membagi baris data pada
sebuah tabel ke dalam group-group, kemudian anda dapat
menggunakan Group Function
untuk mengembalikan
ringkasan informasi yang dibutuhkan untuk setiap
group.
Pada Syntax ini Group_by_expression diisi dengan
kolom yang
nilainya dijadikan dasar dalam mengelompokkan baris
data.
Panduan
dalam menggunakan GROUP BY:
·
Jika anda memasukkan kolom
lain selain group function
pada klausa SELECT, maka
semua kolom lain
tersebut harus dimasukkan ke
dalam klausa GROUP BY.
·
Dengan menggunakan
klausa WHERE, anda dapat
menyaring baris data sebelum digroupkan.
·
anda tidak
dapat menggunakan Column Alias (Stage 1) pada klausa GROUP BY.
·
Jika klausa GROUP BY diisi
dengan lebih dari
1 (satu) kolom, maka pengelompokan akan dimulai dari
kolom paling pertama yang disebutkan,
lalu dilanjutkan dengan
kolom berikutnya (dalam pengelompokan sebelumnya).
·
Anda dapat
menggunakan klausa GROUP BY
tanpa menggunakan Group Function.
Condition in Group Function Result
Sama seperti
klausa WHERE yang digunakan untuk menyaring baris data yang anda SELECT,
anda juga dapat
menyaring hasil dari
Group Function dengan menggunakan
klausa HAVING. Anda
dapat menggunakan klausa HAVING untuk menyaring group mana yang akan
ditampilkan berdasarkan hasil group function.
EQUIJOIN
Equijoin memerlukan
kehadiran Primary Key
dan Foreign Key
pada tabel-tabel yang akan digabungkan. Equijoin juga biasa disebut
sebagai simple JOIN atau inner
JOIN. penulisan equijoin dapat
dilakukan dengan menggunakan USING, ON, dan WHERE.
Menggunakan USING
Klausa USING
dapat digunakan untuk menyebutkan kolom
apa saja yang dijadikan referensi
JOIN ketika ada lebih dari 1 (satu) kolom yangcocok antara
tabel-tabel yang digabungkan. Kolom-kolom
yang digunakan pada klausa USING tidak boleh ditambahkan dengan
nama tabel atau alias pada bagian lain dari query.
Contoh :
Menampilkan nama
lengkap mahasiswa dan
nama program studi dari seluruh mahasiswa
SELECT MAHASISWA.NAMA_DEPAN ||' '||
MAHASISWA.NAMA_BELAKANG "NAMA LENGKAP", PROGRAM_STUDI.NAMA_PRODI
FROM MAHASISWA
JOIN PROGRAM_STUDI
USING (KODE_PRODI);
Menggunakan ON
Klausa ON
dapat digunakan untuk menuliskan
kondisi acak atau
untuk menuliskan kolom yang digunakan sebagai kondisi JOIN. pada klausa ON,
kondisi JOIN dipisahkan dari
kondisi pencarian lain
yang dituliskan pada klausa WHERE.
Contoh :
Menampilkan nama
lengkap mahasiswa dan
nama program studi dari seluruh mahasiswa
SELECT MAHASISWA.NAMA_DEPAN ||' '||
MAHASISWA.NAMA_BELAKANG "NAMA LENGKAP", PROGRAM_STUDI.NAMA_PRODI
FROM MAHASISWA
JOIN PROGRAM_STUDI
ON MAHASISWA.KODE_PRODI = PROGRAM_STUDI.KODE_PRODI;
Menggunakan WHERE
JOIN
dapat dilakukan juga
dengan menggunakan klausa WHERE.
jika kondisi JOIN diletakkan
pada klausa WHERE, maka kata kunci JOIN dapat dihilangkan dari klausa
FROM.
Contoh :
Menampilkan nama
lengkap mahasiswa dan
nama program studi dari seluruh mahasiswa
SELECT MAHASISWA.NAMA_DEPAN ||' '|| MAHASISWA.NAMA_BELAKANG
"NAMA LENGKAP", PROGRAM_STUDI.NAMA_PRODI
FROM MAHASISWA, PROGRAM_STUDI
WHERE MAHASISWA.KODE_PRODI = PROGRAM_STUDI.KODE_PRODI;
LEFT OUTER JOIN
LEFT OUTER
JOIN akan menampilkan
semua baris data
dari tabel sebelah kiri (dari kata
kunci LEFT OUTER JOIN) meskipun ada baris data yang tidak memenuhi kondisi JOIN
dengan tabel sebelah kanan
contoh :
Menampilkan semua kode
mk dan nama
mk beserta nilai uas tertinggi
dari mata kuliah
tersebut beserta matakuliah yang
belum memiliki nilai uas.
SELECT MK.KODE_MK, MK.NAMA_MK, MAX(N.UAS)
FROM MATAKULIAH MK LEFT OUTER JOIN NILAI
ON MK.KODE_MK = N.KODE_MK
GROUP BY MK.KODE_MK, MK.NAMA_MK;
RIGHT OUTER JOIN
RIGHT OUTER
JOIN akan menampilkan semua
baris data dari
tabel sebelah kanan (dari
kata kunci RIGHT OUTER JOIN) meskipun
ada baris data
yang tidak memenuhi
kondisi JOIN dengan tabel
sebelah kanan.
Contoh :
Menampilkan semua
kode mk dan
nama mk beserta
nilai uas tertinggi dari
mata kuliah tersebut
beserta matakuliah yang
belum memiliki nilai uas.
SELECT MK.KODE_MK, MK.NAMA_MK, MAX(N.UAS)
FROM NILAI N RIGHT OUTER JOIN MATAKULIAH
MK ON MK.KODE_MK = N.KODE_MK
GROUP BY MK.KODE_MK, MK.NAMA_MK;
FULL OUTER JOIN
FULL OUTER
JOIN akan menampilkan
semua baris data
dari tabel sebelah kanan dan
kiri meskipun ada baris data
pada kedua tabel
yang tidak memenuhi kondisi JOIN antar tabel.
Contoh :
Menampilkan semua
nid dosen, nama
dosen, dan plotting
yang sudah dilakukan, beserta
dosen-dosen yang belum melakukan plotting.
SELECT P.ID_PLOTTING, D.NID, D.NAMA_DOSEN, P.KODE_MK,
P.HARI, P.JAM_MULAI, P.JAM_SELESAI
FROM PLOTTING_AJAR P FULL OUTER JOIN DOSEN D
ON D.NID = P.NID;
SELF JOIN
Self join
adalah kondisi ketika anda melakukan JOIN pada 1 tabel yang sama. Untuk
membedakan antara tabel
yang satu dengan
yang lain, gunakan table aliases.
Kondisi yang digunakan
pada self join tidak harus berupa kondisi equijoin.
Contoh :
Menampilkan nim,
nama belakang, dan
kota_tinggal dari mahasiswa yang tinggal
di kota yang
sama dengan mahasiswa
bernama depan ‘Bambang’
SELECT M1.NIM, M1.NAMA_BELAKANG, M1.KOTA_TINGGAL
FROM MAHASISWA M1 JOIN MAHASISWA M2 ON M2. NAMA_DEPAN = 'Bambang'
WHERE M1.KOTA_TINGGAL = M2.KOTA_TINGGAL;
Pertemuan 6
SUBQUERY
Pada stage
1 sampai
4, anda dihadapkan
dengan pencarian data
yang kondisinya masih jelas
pada tabel, tetapi
tidak menutup kemungkinan bahwa akan muncul kebutuhan data
yang kondisinya tidak jelas. Hal ini bisa
diselesaikan dengan menggunakan
penggabungan 2 (dua) query atau lebih.
(memasukkan query yang 1 (satu)
ke query yang lain) Query yang ada di
bagian dalam mengembalikan sebuah
nilai (atau kumpulan nilai)
yang digunakan
oleh query
bagian luar. Sebuah subquery adalah
sebuah query SELECT yang ditancapkan pada sebuah klausa
di query SELECT yang
lain. anda dapat meletakkan subquery pada beberapa
klausa pada SQL query, meliputi:
·
Klausa
WHERE
·
Klausa
HAVING
·
Klausa FROM
contoh For Single-Row Subquery:
Menampilkan
nim, nama belakang,
dan kota_tinggal dari mahasiswa yang
tinggal di kota
yang sama dengan
mahasiswa bernama depan ‘Bambang’
SELECT NIM, NAMA_BELAKANG, KOTA_TINGGAL FROM MAHASISWA
WHERE
KOTA_TINGGAL =
(SELECT KOTA_TINGGAL FROM MAHASISWA
WHERE NAMA_DEPAN
= 'Bambang');
contoh For
Multiple-Row Subquery:
Menampilkan
nim, nama lengkap, kode mk, nama mk, dan nilai uas
yang
dari mahasiswa yang
mengambil mata kuliah yang diadakan
pada semester 4.
SELECT MHS.NIM, MHS.NAMA_DEPAN ||' '||
MHS.NAMA_BELAKANG "NAMA LENGKAP", N.KODE_MK, MK.NAMA_MK, N.UAS
FROM MAHASISWA MHS JOIN NILAI N
ON MHS.NIM = N.NIM JOIN MATAKULIAH MK
ON MK.KODE_MK = N.KODE_MK
WHERE N.KODE_MK IN (SELECT KODE_MK FROM MATAKULIAH
WHERE SEMESTER = 4);
Set Operator
Set operator menggabungkan 2 (dua) atau lebih query
menjadi 1 (satu) hasil. Semua set
operator memiliki tingkatan yang
sama, jika sebuah query memiliki banyak set operator,
maka Oracle Server akan membaca query dari kiri (atau atas) ke kanan (bawah),
jika tidak ada tanda kurung ( ) yang digunakan untuk mengurutkan.
TUGAS SQL
TABEL MHS
NIM
|
Nama
|
Alamat
|
HP
|
Jurusan
|
IPK
|
1390100004
|
Niken
|
Kendalsari
|
085678909
|
Mi
|
3,10
|
12390100028
|
Laili
|
Manyar
Indah
|
089076554
|
Mi
|
3,05
|
TABEL Dosen_Wali
Kode_Dosen
|
Nim_Mhs
|
2345656
|
12390100004
|
2356890
|
12390100028
|
TABEL DOSEN
Kode_Dosen
|
Nama_Dosen
|
2345656
|
Pak
Bambang
|
2356890
|
Bu
Shinta
|
Perintah SQL
SELECT NIM, Nama
FROM MHS
WHERE IPK >
(SELECT
IPK
FROM MHS
WHERE NIM, Nama = ‘12390100004’, ‘Niken’
ANY
SELECT NIM, Nama
FROM MHS
WHERE IPK < ANY
(SELECT
IPK
FROM MHS
WHERE NIM, Nama = ‘12390100004’, ‘Niken’)
AND NIM, Nama < > ‘12390100004’, ‘Niken’ ;