ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
BAHASA QUERY
ï‚žBahasa Query yang paling populer tentu saja
adalah SQL (Structured Query Language),
karena bahasa ini diakomodasi oleh hampir
semua DBMS. Namun disamping itu ada pula
bahasa query yang secara khusus diterapkan
oleh DBMS tertentu, seperti misalnya QUEL
yang digunakan oleh DBMS Ingres ataupun
bahasa dBase yang diterapkan oleh DBMS
sederhana seperti dBase dan FoxBase. Dalam
materi ini hanya akan membahas SQL.
STRUKTUR DATA
Sebuah ekspresi SQL dasar sebenarnya hanya terdiri atas 3
klausa, yaitu : select, from dan where
ï‚ž Klausa select digunakan untuk menetapkan daftar atribut
(field) yang diinginkan sebagai hasil query.
ï‚ž klausa from digunakan untuk menetapkan relasi atau tabel
(atau gabungan tabel) yang akan ditelusuri selama query
data dilakukan
ï‚ž Klausa where yang sifatnya opsional, digunakan sebagai
predikat (kriteria) yang harus dipenuhi dalam memperoleh
hasil query. Klausa ini mengacu pada operasi seleksi dalam
bahasa query formal.
ï‚ž Sintaks format penulisan dari ekspresi SQL dasar dengan 3
klausa tersebut adalah :
Select A1 ( , A2, ...., An) From t1 ( , t2, ..., tm)
( where P )
KLAUSA SELECT
ï‚ž Jika kita ingin menampilkan NIM dan nama
mahasiswa yang ada di tabel Mahasiswa, maka
kita dapat menggunakan perintah SQL berikut :
Select nim, nama_mhs
From mahasiswa
ï‚ž Sementara perintah berikut akan Menampilkan
semua data nama mahasiswa yang ada.
Select nama_mhs From mahasiswa
KLAUSA WHERE
ï‚ž Klausa ini berguna untuk menetapkan predikat
atau kriteria yang harus dipenuhi dalam
memperoleh hasil query, yang berasosiasi dengan
operaksi seleksi dalam bahasa query formal.
Klausa ini boleh tidak digunakan, yang artinya
query dilakukan untuk semua record didalam
tabel yang disebutkan pada klausa from. Berikut
ini adalah contoh untuk menampilkan semua
atribut untuk mahasiswa dengan NIM = ‘100002’
Select *
From mahasiswa
Where nim = ‘100002’
ï‚ž Perhatikanlah nilai 100002 diapit dengan tanda kutip tunggal.
Penggunaan tanda kutip ini digunakan terhadap nilai yang
bertipe string (yang harus disesuaikan dengan dengan tipe dari
atribut nim pada waktu pendefinisian tabel)
ï‚ž Kita juga dapat menerapkan predikat dengan operator relasi
lainnya (seperti <, >, <=, >=, <>) dan mengkombinasikannya
dengan operator logika (and, or, dan not). Misalnya kita ingin
menampilkan semua mata kuliah yang diselenggarakan di
semester 3 tetapi yang jumlah sksnya lebih besar dari 2,
ekspresi SQLnya adalah:
Select *
From kuliah
Where semester = 3 and sks > 2
ï‚ž Perhatikan kembali, nilai 3 dan 2 tidak diapit tanda kutip
tunggal karena nilai tersebut bertipe numerik sesuai dengan tipe
untuk atribut semester dan atribut sks di tabel kuliah
ï‚ž Melakukan query dengan kriteria yang
berbentuk jangkauan (range) nilai tertentu
dengan menggunakan tambahan klausa
between, misalnya untuk menampilkan
record-record kuliah yang diselenggarakan
antara semester 3 hingga semester 5 :
Select *
From kuliah
Where semester between 3 and 5
ï‚ž Khusus untuk atribut yang bertipe string, kita
dapat melakukan pencarian dengan pola
tertentu, dengan memanfaatkan karakter ‘%’
(percent) atau ‘_’ (underscore) dan
tambahan klausa like :
 Tanda ‘%’ berarti cocok untuk semua
substring
 Tanda’_’ berarti cocok untuk semua
karakter pada posisi yang sesuai
ï‚ž Berikut ini adalah perintah untuk menampilkan
record-record mahasiswa yang namanya diawali
dengan huruf ‘A’ :
Select * From mahasiswa Where nama_mhs like ‘A%’
ï‚ž Sedang ekspresi SQL untuk menampilkan mahasiswa
yang huruf/karakter kedua dari namanya adalah ‘a’
sebagai berikut :
Select * From mahasiswa Where nama_mhs like ‘_a%’
ï‚ž Menampilkan mahasiswa angkatan 2010 dengan
perintah berikut (dengan catatan bahwa dua
digit/karakter pertama dalam field nim menunjukan 2
digit terakhir dari tahun masuk mahasiswa) :
Select * From mahasiswa Where nim like ‘10%’
KLAUSA FROM
ï‚ž Contoh contoh sebelumnya, kita hanya
menunjukan query terhadap sebuah tabel. Sebagai
hasil penerapan basis data sebelumnya, tabel
kuliah terdiri atas atribut-atribut (field) kode_kul,
nama_kul, sks, semester dan kode_dos. Jika kita
ingin menampilkan data kuliah beserta nama-nama
dosen yang mengajarkannya, maka kita tidak akan
mendapatkannya, hanya melalui query terhadap
tabel kuliah saja, karena data seperti nama dosen
tidak tersimpan di tabel ini, tetapi berada di tabel
lain yaitu tabel dosen. Untuk memenuhi keinginan
itu, kita dapat menggunakan ekspresi SQL berikut :
Select *
From kuliah, dosen
Where kuliah.kode_dos = dosen.kode_dos
ï‚ž Perlu diperhatikan, melakukan query terhadap 2 tabel
atau lebih tidak bisa dilakukan sembarang. Tabel-
tabel yang menjadi sumber query harus memiliki
keterhubungan (relasi). Pada perintah diatas,
keterhubungan itu diwakili oleh kesamaan nilai pada
atribut kode_dos dan kita tahu bahwa atribut ini
dimiliki oleh kedua tabel. Ekspresi kuliah.kode_dos
menunjukan nilai kode_dos yang berasal dari tabel
kuliah. Sedangkan dosen.kode_dos menunjukan nilai
kode_dos yang berasal dari tabel dosen.
ï‚ž Kita dapat menggunakan nama alias untuk
tabel-tabel pada klausa from untuk
menyederhanakan penulisan. Ekspresi query
diatas dengan hasil yang sama, dapat pula
dinyatakan dengan ekspresi sebagai berikut :
Select *
From kuliah k, dosen d
Where k.kode = d.kode_dos
ï‚ž Terhadap banyak sumber data (tabel), tanda *
(asterik) pada klausa select akan mengacu pada
semua atribut yang ada di semua tabel yang
disebutkan pada klausa from. Jika kita hanya
ingin menampilkan atribut-atribut tertentu
saja, maka nama tabel atau aliasnya dapat kita
gunakan untuk memperjelas asal atribut yang
kita tampilkan tersebut, misalnya :
Select k.kode_kul, k.nama_kul, d.nama_dos
From kuliah k, dosen d
Where k.kode_dos = d.kode_dos
ï‚ž Ekspresi diatas dapat dikembangkan lagi,
misalnya dengan mengganti header dari
tampilan query dan menampilkan hasil query
hanya untuk mata kuliah yang
diselenggarakan di semester 3 :
Select k.kode_kul as kode, k.nama_kul as
kuliah, d.nama_dos as dosen
From kuliah k, dosen d
Where k.kode_dos = d.kode_dos and
k.semester = 3
ï‚ž Jika kita ingin menampilkan data NIM, nama
mahasiswa, nama mata kuliah dan indeks
nilai-nya untuk mata kuliah di semester 3,
maka kita harus melibatkan 3 buah tabel
sekaligus dengan ekspresi SQL sebagai
berikut :
ï‚ž Select n.nim, m.nama_mhs, k.nama_kul,
n.indeks_nilai
ï‚ž From nilai n, mahasiswa m, kuliah k
ï‚ž Where n.nim = m.nim and n.kode_kul =
k.kode_kul and k.semester = 3
PENGURUTAN HASIL QUERY
ï‚ž Jika kita ingin menampilkan hasil query dengan
urutan berdasarkan atribut tertentu yang kita
inginkan, maka kita dapat menambahkan klausa
order by. Contoh, tabel mahasiswa memiliki
indeks primer berdasarkan nim (sehingga hasil
query ke tabel ini akan disusun berdasarkan nilai
atribut nim tersebut), tapi kita ingin menampilkan
record-record mahasiswa berdasarkan urutan
namanya, ekspresi SQLnya adalah :
ï‚ž Select *
ï‚ž From mahasiswa
ï‚ž Order by nama_mhs
ï‚ž Urutan berdasrkan query tersebut disusun
secara menaik (dari abjad nama terkecil
hingga terbesar). Jika misalnya, kita ingin
menampilkan berdasarkan atribut tgl_lahir
tapi secara menurun (dari mahasiswa
termuda hingga mahasiswa tertua), maka
pada klausa order by kita sertakan pula
klausa desc seperti berikut:
Select *
From mahasiswa
Order by tgl_lahir desc
FUNGSI AGREGASI
ï‚ž Fungsi agregasi untuk menampilkan data-
data agregasi seperti banyaknya record
(count), total nilai suatu atribut(sum), rata-
rata nilai atribut(avg), nilai atribut terbesar
(max) ataupun terkecil (min).
CONTOH-CONTOH PENGGUNAAN
FUNGSI AGREGASI
ï‚ž Menampilkan banyaknya record mahasiswa :
Select count (*)
From mahasiswa
ï‚ž Menampilkan banyaknya mahasiswa angkatan 2010 :
Select count (*)
From mahasiswa
Where nim like ‘10%’
ï‚ž Menampilkan total sks untuk kuliah di semester 2 :
Select sum (sks)
From kuliah
Where semester =2
ï‚ž Menampilkan rata-rata sks untuk semua mata
kuliah
Select avg(sks)
From kuliah
ï‚ž Menampilkan indeks nilai terbesar yang
diperoleh mahasiswa untuk mata kuliah
dengan kode kuliah ‘IF-110’ :
Select max(indeks_nilai)
From nilai
Where kode_kul = ‘IF-110’
ï‚ž Menampilkan mahasiswa paling tua (artinya, tanggal
lahir paling kecil) yang ada di tabel mahasiswa :
Select min(tgl_lahir)
From mahasiswa
ï‚ž Menampilkan banyaknya record dan total sks untuk
mata kuliah yang dikelompokkan per semester :
Select semester, count (*) as jumlah, sum(sks) as total_sks
From kuliah
Group by semester
Order by semester
ï‚ž Penggunaan order by diatas hanya untuk tujuan agar
hasil querynya diurutkan berdasarkan nilai atribut
semesternya.
NILAI NULL
ï‚ž Jika kita ketahui bahwa didalam tabel Nilai
tidak semua data indeks_nilai sudah terisi
data, maka kita dapat menampilkan kode
kuliah dari tabel tersebut, yang
indeks_nilainya masih kosong, dengan
perintah SQL beikut ini :
Select distinct kode_kul
From nilai
Where indeks_nilai is null
ï‚ž Menghitung banyaknya baris data dalam
tabel nilai yang atribut indeks_nilainya telah
terisi data (artinya bukan null) :
Select count (*)
From nilai
Where indeks_nilai is not null
MANIPULASI DATA
1. penambahan record
Contoh perintah SQL untuk melakukan penambahan
record baru ke tabel mahasiswa :
Insert into mahasiswa (nim, nama_mhs, alamat_mhs,
tgl_lahir)
Values (‘100011’, ‘Siti Aminah’, ‘Jl. Suci 12, Bogor’,
‘02/03/1973’)
Atau :
Insert into mahasiswa
Values (‘100011’, ‘Siti Aminah’, ‘Jl. Suci 12, Bogor’,
‘02/03/1973’)
MANIPULASI DATA
2. Pengubahan Record
Perintah SQL untuk mengubah nilai atribut sks
untuk mata kuliah tertentu adalah :
Update kuliah
Set sks = 4
Where kode_kul = ‘IF-310’
MANIPULASI DATA
2. Pengubahan Record
perintah update juga dapat digunakan untuk melakukan perubahan
dengan mengacu pada nilai atribut yang lama (sebelum perubahan),
misalnya dengan penambahan gelar di depan nama dosen tertentu
berikut ini :
Update dosen
Set nama_dosen = ‘Prof. ‘ + nama_dosen
Where kode_dos = ‘SY’
Perintah update tanpa klausa where berikut ini dilakukan untuk semua
record :
Update nilai
Set indeks_nilai = null
Yang mengakibatkan terisinya nilai null (pengosongan nilai untuk
atribut indeks_nilai) pada semua record di tabel nilai
MANIPULASI DATA
3. penghapusan record
ï‚ž Perintah SQL untuk menghapus record kuliah
tertentu :
Delete from kuliah
Where kode_kul = ‘IF-310’
ï‚ž Perintah SQL untuk menghapus beberapa record di
tabel kuliah
Delete from kuliah
Where kode_kul like ‘IF%’
ï‚ž Perintah SQL untuk menghapus semua record dari
tabel kuliah (sehingga tabel kuliah menjadi kosong) :
Delete from kuliah
KONTROL TRANSAKSI
ï‚ž Operasi operasi manipulasi data merupakan bagian dari suatu transaksi.
Trasnsaksi sendiri bisa terdiri atas satu atau beberapa operasi
manipulasi data. Perintah-perintah manipulasi data tidak akan benar-
benar disimpan (ditulis di dalam disk) jika kita belum memberikan
perintah kontrol transaksi. Perintah kontrol transaksi itu adalah :
Commit (work)
Dan :
Rollback (work)
ï‚ž Jika perintah commit digunakan maka semua operasi manipulasi basis
data akan direkam ke dalam disk dan transaksi dinyatakan selesai.
Sedangkan jika perintah rollback yang kita gunakan, maka semua
operasi manipulasi basis data yang belum di commit, akan dibatalkan
(tidak jadi disimpan ke dalam disk). Klausa work sifatnya opsional dan
tidak berpengaruh terhadap pengertian kedua perintah tersebut.
DATA DEFINITION LANGUAGE
(DDL)
ï‚ž Ddl berkaitan dengan perintah-perintah
untuk pendefinisian objek-objek basis data.
Salah satu objek terpenting adalah tabel.
Berikut ini adalah sintaks SQL untuk
melakukan pembuatan tabel baru di dalam
basis data
ï‚ž Sebelum perintah SQL digunakan, kita
terlebih dulu harus mengetahui tipe data apa
saja yang dapat kita gunakan. Dalam SQl-92,
tipe data yang menjadi standard adalah :
DATA DEFINITION LANGUAGE
(DDL)
ï‚ž Char (n)
Untuk atribut yang bernilai string dengan panjang tetap sebesar n
karakter (jika banyaknya karakter yang diisikan ke atribut dengan
tipe ini kurang dari n, maka sisanya akan diisi dengan spasi)
ï‚ž Varchar (n)
Untuk atribut yang bernilai string dengan panjang fleksibel, tapi
maksimal sebanyak n karakter
ï‚ž Int atau integer
Untuk atribut yang bernilai integer (bilangan bulat) sebanyak 2 byte
ï‚ž Smallint
Untuk atribut yang bernilai integer (bilangan bulat) sebanyak 1 byte
ï‚ž Numeric (p,d)
Untuk atribut yang bernilai pecahan fixed-point dengan panjang p
dijit (termasuk tanda) dan d dijit untuk bilangan pecahan
DATA DEFINITION LANGUAGE
(DDL)
ï‚ž Real, double precision
Untuk atribut yang bernilai pecahan floating point
ï‚ž Float (n)
Untuk atribut yang bernilai pecahan floating point
dengan presisi n dijit
ï‚ž Date
Untuk atribut yang bernilai tanggal (terdiri atas 4
dijit tahun, 2 dijit bulan dan 2 dijit tanggal)
ï‚ž Time
Untuk atribut yang bernilai waktu (terdiri atas
jam, menit dan detik, masing-masing 2 dijit)
DATA DEFINITION LANGUAGE
(DDL)
ï‚ž Perintah SQL untuk membuat tabel
mahasiswa :
Create table mahasiswa
(nim char(6),
Nama_mhs varchar(30),
Alamat_mhs varchar(60),
Tgl_lahir date)
DATA DEFINITION LANGUAGE
(DDL)
ï‚ž Jika terhadap tabel yang kita buat, ingin kita sertakan
pula adanya indeks primer berdasarkan atribut
tertentu didalam tabel, maka klausa primary key
dapat kita gunakan. Berikut ini adalah contoh ekspresi
SQl untuk pembuatan tabel mahasiswa sekaligus
dengan pendefinisian indeks primer berdasarkan nim :
Create table mahasiswa
(nim char(6),
Nama_mhs varchar(30),
Alamat_mhs varchar(60),
Tgl_lahir date,
Primary key (nim))
DATA DEFINITION LANGUAGE
(DDL)
ï‚ž Jika jumlah atribut yang membentuk indeks
primer ada lebih dari satu, seperti yang ada
di tabel nilai, contoh ekspresi SQL-nya
adalah :
Create table nilai
(nim char(6),
Kode_kul char (6),
Indeks_nilai char (1),
Primary key (nim, kode_kul))
DATA DEFINITION LANGUAGE
(DDL)
ï‚ž Tabel yang dibuat juga dapat dibatalkan
keberadaaannya (sama artinya dengan
penghapusan tabel) dengan menggunakan
perintah SQL dengan sintaks berikut sebagai
contoh untuk menghapus tabel mahasiswa :
Drop table mahasiswa
DATA DEFINITION LANGUAGE
(DDL)
ï‚ž Struktur sebuah tabel juga dapat kita ubah, tanpa harus
menghapus dan membangunnya kembali dengan definisi
struktur yang baru. Perintah pengubahan struktur selain
lenih praktis, juga tidak mengakibatkan hilangnya data
yang sudah ada didalam tabel (jika memang sudah terisi
data). Perubahan struktur ini dapat berupa penambahan
atribut atau pengurangan/penghapusan atribut tertentu.
Berikut ini contoh SQL untuk penambahan atribut baru
bernama ip (untuk menyimpan data indeks prestasi) di
tabel mahasiswa :
Alter table mahasiswa add ip numeric (5, 2)
ï‚ž Jika atribut ip ingin dihapus dari tabel mahasiswa, ekspresi
SQLnya adalah :
Alter table mahasiswa drop ip

More Related Content

Similar to Strategi dan Implementasi Basis Data: Memahami Konsep, Struktur, dan Teknologi (20)

Laporan praktikum modul 8 (dml part 2)
Laporan praktikum modul 8 (dml part 2)Laporan praktikum modul 8 (dml part 2)
Laporan praktikum modul 8 (dml part 2)
Devi Apriansyah
Ìý
Bab iv sql
Bab iv   sqlBab iv   sql
Bab iv sql
Dogie Junior
Ìý
7 Materi Kuliah Bahasa SQL
7 Materi Kuliah Bahasa SQL7 Materi Kuliah Bahasa SQL
7 Materi Kuliah Bahasa SQL
Simon Patabang
Ìý
Laporan 1 annissaul hidayah 11120018_6
Laporan 1  annissaul hidayah 11120018_6Laporan 1  annissaul hidayah 11120018_6
Laporan 1 annissaul hidayah 11120018_6
Saul Anizsa
Ìý
Pengenalan lingkungan kerja Excel 2019 .pptx
Pengenalan lingkungan kerja Excel 2019 .pptxPengenalan lingkungan kerja Excel 2019 .pptx
Pengenalan lingkungan kerja Excel 2019 .pptx
dwikrisbiantoro2
Ìý
SQL.pdf
SQL.pdfSQL.pdf
SQL.pdf
nurnur469094
Ìý
Praktikum tentang bagaimana cara menggunakan MySQL – pert 4.pptx
Praktikum tentang bagaimana cara menggunakan MySQL – pert 4.pptxPraktikum tentang bagaimana cara menggunakan MySQL – pert 4.pptx
Praktikum tentang bagaimana cara menggunakan MySQL – pert 4.pptx
syamsulhikami29
Ìý
Pertemuan 10
Pertemuan 10Pertemuan 10
Pertemuan 10
Muhamad Edi.S
Ìý
20100104_5.JoinAntarTabel Basis Data.ppt
20100104_5.JoinAntarTabel Basis Data.ppt20100104_5.JoinAntarTabel Basis Data.ppt
20100104_5.JoinAntarTabel Basis Data.ppt
quiztugasujian
Ìý
Penggunaan SUBQUERY SQL SERVER (USING SUBQUERIES)
Penggunaan SUBQUERY SQL SERVER (USING SUBQUERIES)Penggunaan SUBQUERY SQL SERVER (USING SUBQUERIES)
Penggunaan SUBQUERY SQL SERVER (USING SUBQUERIES)
difa febri
Ìý
Pengenalan tentang Microsoft Excel bagi pemula
Pengenalan tentang Microsoft Excel bagi pemulaPengenalan tentang Microsoft Excel bagi pemula
Pengenalan tentang Microsoft Excel bagi pemula
laptopronggo
Ìý
Kumpulan rumus excel lengkap semua fungsi
Kumpulan rumus excel lengkap semua fungsiKumpulan rumus excel lengkap semua fungsi
Kumpulan rumus excel lengkap semua fungsi
abdul rohman
Ìý
Pertemuan 6 - SQL Advanced
Pertemuan 6 - SQL AdvancedPertemuan 6 - SQL Advanced
Pertemuan 6 - SQL Advanced
Adi Triyatmoko
Ìý
02. relational model dan query languages
02. relational model dan query languages02. relational model dan query languages
02. relational model dan query languages
Fakhrian Fadlia Adiwijaya
Ìý
Modul 2 19 jan 2013
Modul 2 19 jan 2013Modul 2 19 jan 2013
Modul 2 19 jan 2013
Muhammad Syafriansyah
Ìý
Pengolahan database
Pengolahan databasePengolahan database
Pengolahan database
Mohammad Ramadhan
Ìý
T modul 5 mysql
T modul 5 mysqlT modul 5 mysql
T modul 5 mysql
jafra
Ìý
Modul spreadsheet
Modul spreadsheetModul spreadsheet
Modul spreadsheet
smktamansiswabdg
Ìý
Sql programming
Sql programmingSql programming
Sql programming
Doni Rizky
Ìý
Laporan praktikum modul 8 (dml part 2)
Laporan praktikum modul 8 (dml part 2)Laporan praktikum modul 8 (dml part 2)
Laporan praktikum modul 8 (dml part 2)
Devi Apriansyah
Ìý
7 Materi Kuliah Bahasa SQL
7 Materi Kuliah Bahasa SQL7 Materi Kuliah Bahasa SQL
7 Materi Kuliah Bahasa SQL
Simon Patabang
Ìý
Laporan 1 annissaul hidayah 11120018_6
Laporan 1  annissaul hidayah 11120018_6Laporan 1  annissaul hidayah 11120018_6
Laporan 1 annissaul hidayah 11120018_6
Saul Anizsa
Ìý
Pengenalan lingkungan kerja Excel 2019 .pptx
Pengenalan lingkungan kerja Excel 2019 .pptxPengenalan lingkungan kerja Excel 2019 .pptx
Pengenalan lingkungan kerja Excel 2019 .pptx
dwikrisbiantoro2
Ìý
Praktikum tentang bagaimana cara menggunakan MySQL – pert 4.pptx
Praktikum tentang bagaimana cara menggunakan MySQL – pert 4.pptxPraktikum tentang bagaimana cara menggunakan MySQL – pert 4.pptx
Praktikum tentang bagaimana cara menggunakan MySQL – pert 4.pptx
syamsulhikami29
Ìý
20100104_5.JoinAntarTabel Basis Data.ppt
20100104_5.JoinAntarTabel Basis Data.ppt20100104_5.JoinAntarTabel Basis Data.ppt
20100104_5.JoinAntarTabel Basis Data.ppt
quiztugasujian
Ìý
Penggunaan SUBQUERY SQL SERVER (USING SUBQUERIES)
Penggunaan SUBQUERY SQL SERVER (USING SUBQUERIES)Penggunaan SUBQUERY SQL SERVER (USING SUBQUERIES)
Penggunaan SUBQUERY SQL SERVER (USING SUBQUERIES)
difa febri
Ìý
Pengenalan tentang Microsoft Excel bagi pemula
Pengenalan tentang Microsoft Excel bagi pemulaPengenalan tentang Microsoft Excel bagi pemula
Pengenalan tentang Microsoft Excel bagi pemula
laptopronggo
Ìý
Kumpulan rumus excel lengkap semua fungsi
Kumpulan rumus excel lengkap semua fungsiKumpulan rumus excel lengkap semua fungsi
Kumpulan rumus excel lengkap semua fungsi
abdul rohman
Ìý
Pertemuan 6 - SQL Advanced
Pertemuan 6 - SQL AdvancedPertemuan 6 - SQL Advanced
Pertemuan 6 - SQL Advanced
Adi Triyatmoko
Ìý
02. relational model dan query languages
02. relational model dan query languages02. relational model dan query languages
02. relational model dan query languages
Fakhrian Fadlia Adiwijaya
Ìý
T modul 5 mysql
T modul 5 mysqlT modul 5 mysql
T modul 5 mysql
jafra
Ìý
Sql programming
Sql programmingSql programming
Sql programming
Doni Rizky
Ìý

Strategi dan Implementasi Basis Data: Memahami Konsep, Struktur, dan Teknologi

  • 2. ï‚žBahasa Query yang paling populer tentu saja adalah SQL (Structured Query Language), karena bahasa ini diakomodasi oleh hampir semua DBMS. Namun disamping itu ada pula bahasa query yang secara khusus diterapkan oleh DBMS tertentu, seperti misalnya QUEL yang digunakan oleh DBMS Ingres ataupun bahasa dBase yang diterapkan oleh DBMS sederhana seperti dBase dan FoxBase. Dalam materi ini hanya akan membahas SQL.
  • 3. STRUKTUR DATA Sebuah ekspresi SQL dasar sebenarnya hanya terdiri atas 3 klausa, yaitu : select, from dan where ï‚ž Klausa select digunakan untuk menetapkan daftar atribut (field) yang diinginkan sebagai hasil query. ï‚ž klausa from digunakan untuk menetapkan relasi atau tabel (atau gabungan tabel) yang akan ditelusuri selama query data dilakukan ï‚ž Klausa where yang sifatnya opsional, digunakan sebagai predikat (kriteria) yang harus dipenuhi dalam memperoleh hasil query. Klausa ini mengacu pada operasi seleksi dalam bahasa query formal. ï‚ž Sintaks format penulisan dari ekspresi SQL dasar dengan 3 klausa tersebut adalah : Select A1 ( , A2, ...., An) From t1 ( , t2, ..., tm) ( where P )
  • 4. KLAUSA SELECT ï‚ž Jika kita ingin menampilkan NIM dan nama mahasiswa yang ada di tabel Mahasiswa, maka kita dapat menggunakan perintah SQL berikut : Select nim, nama_mhs From mahasiswa ï‚ž Sementara perintah berikut akan Menampilkan semua data nama mahasiswa yang ada. Select nama_mhs From mahasiswa
  • 5. KLAUSA WHERE ï‚ž Klausa ini berguna untuk menetapkan predikat atau kriteria yang harus dipenuhi dalam memperoleh hasil query, yang berasosiasi dengan operaksi seleksi dalam bahasa query formal. Klausa ini boleh tidak digunakan, yang artinya query dilakukan untuk semua record didalam tabel yang disebutkan pada klausa from. Berikut ini adalah contoh untuk menampilkan semua atribut untuk mahasiswa dengan NIM = ‘100002’ Select * From mahasiswa Where nim = ‘100002’
  • 6. ï‚ž Perhatikanlah nilai 100002 diapit dengan tanda kutip tunggal. Penggunaan tanda kutip ini digunakan terhadap nilai yang bertipe string (yang harus disesuaikan dengan dengan tipe dari atribut nim pada waktu pendefinisian tabel) ï‚ž Kita juga dapat menerapkan predikat dengan operator relasi lainnya (seperti <, >, <=, >=, <>) dan mengkombinasikannya dengan operator logika (and, or, dan not). Misalnya kita ingin menampilkan semua mata kuliah yang diselenggarakan di semester 3 tetapi yang jumlah sksnya lebih besar dari 2, ekspresi SQLnya adalah: Select * From kuliah Where semester = 3 and sks > 2 ï‚ž Perhatikan kembali, nilai 3 dan 2 tidak diapit tanda kutip tunggal karena nilai tersebut bertipe numerik sesuai dengan tipe untuk atribut semester dan atribut sks di tabel kuliah
  • 7. ï‚ž Melakukan query dengan kriteria yang berbentuk jangkauan (range) nilai tertentu dengan menggunakan tambahan klausa between, misalnya untuk menampilkan record-record kuliah yang diselenggarakan antara semester 3 hingga semester 5 : Select * From kuliah Where semester between 3 and 5
  • 8. ï‚ž Khusus untuk atribut yang bertipe string, kita dapat melakukan pencarian dengan pola tertentu, dengan memanfaatkan karakter ‘%’ (percent) atau ‘_’ (underscore) dan tambahan klausa like : ï‚ž Tanda ‘%’ berarti cocok untuk semua substring ï‚ž Tanda’_’ berarti cocok untuk semua karakter pada posisi yang sesuai
  • 9. ï‚ž Berikut ini adalah perintah untuk menampilkan record-record mahasiswa yang namanya diawali dengan huruf ‘A’ : Select * From mahasiswa Where nama_mhs like ‘A%’ ï‚ž Sedang ekspresi SQL untuk menampilkan mahasiswa yang huruf/karakter kedua dari namanya adalah ‘a’ sebagai berikut : Select * From mahasiswa Where nama_mhs like ‘_a%’ ï‚ž Menampilkan mahasiswa angkatan 2010 dengan perintah berikut (dengan catatan bahwa dua digit/karakter pertama dalam field nim menunjukan 2 digit terakhir dari tahun masuk mahasiswa) : Select * From mahasiswa Where nim like ‘10%’
  • 10. KLAUSA FROM ï‚ž Contoh contoh sebelumnya, kita hanya menunjukan query terhadap sebuah tabel. Sebagai hasil penerapan basis data sebelumnya, tabel kuliah terdiri atas atribut-atribut (field) kode_kul, nama_kul, sks, semester dan kode_dos. Jika kita ingin menampilkan data kuliah beserta nama-nama dosen yang mengajarkannya, maka kita tidak akan mendapatkannya, hanya melalui query terhadap tabel kuliah saja, karena data seperti nama dosen tidak tersimpan di tabel ini, tetapi berada di tabel lain yaitu tabel dosen. Untuk memenuhi keinginan itu, kita dapat menggunakan ekspresi SQL berikut :
  • 11. Select * From kuliah, dosen Where kuliah.kode_dos = dosen.kode_dos ï‚ž Perlu diperhatikan, melakukan query terhadap 2 tabel atau lebih tidak bisa dilakukan sembarang. Tabel- tabel yang menjadi sumber query harus memiliki keterhubungan (relasi). Pada perintah diatas, keterhubungan itu diwakili oleh kesamaan nilai pada atribut kode_dos dan kita tahu bahwa atribut ini dimiliki oleh kedua tabel. Ekspresi kuliah.kode_dos menunjukan nilai kode_dos yang berasal dari tabel kuliah. Sedangkan dosen.kode_dos menunjukan nilai kode_dos yang berasal dari tabel dosen.
  • 12. ï‚ž Kita dapat menggunakan nama alias untuk tabel-tabel pada klausa from untuk menyederhanakan penulisan. Ekspresi query diatas dengan hasil yang sama, dapat pula dinyatakan dengan ekspresi sebagai berikut : Select * From kuliah k, dosen d Where k.kode = d.kode_dos
  • 13. ï‚ž Terhadap banyak sumber data (tabel), tanda * (asterik) pada klausa select akan mengacu pada semua atribut yang ada di semua tabel yang disebutkan pada klausa from. Jika kita hanya ingin menampilkan atribut-atribut tertentu saja, maka nama tabel atau aliasnya dapat kita gunakan untuk memperjelas asal atribut yang kita tampilkan tersebut, misalnya : Select k.kode_kul, k.nama_kul, d.nama_dos From kuliah k, dosen d Where k.kode_dos = d.kode_dos
  • 14. ï‚ž Ekspresi diatas dapat dikembangkan lagi, misalnya dengan mengganti header dari tampilan query dan menampilkan hasil query hanya untuk mata kuliah yang diselenggarakan di semester 3 : Select k.kode_kul as kode, k.nama_kul as kuliah, d.nama_dos as dosen From kuliah k, dosen d Where k.kode_dos = d.kode_dos and k.semester = 3
  • 15. ï‚ž Jika kita ingin menampilkan data NIM, nama mahasiswa, nama mata kuliah dan indeks nilai-nya untuk mata kuliah di semester 3, maka kita harus melibatkan 3 buah tabel sekaligus dengan ekspresi SQL sebagai berikut : ï‚ž Select n.nim, m.nama_mhs, k.nama_kul, n.indeks_nilai ï‚ž From nilai n, mahasiswa m, kuliah k ï‚ž Where n.nim = m.nim and n.kode_kul = k.kode_kul and k.semester = 3
  • 16. PENGURUTAN HASIL QUERY ï‚ž Jika kita ingin menampilkan hasil query dengan urutan berdasarkan atribut tertentu yang kita inginkan, maka kita dapat menambahkan klausa order by. Contoh, tabel mahasiswa memiliki indeks primer berdasarkan nim (sehingga hasil query ke tabel ini akan disusun berdasarkan nilai atribut nim tersebut), tapi kita ingin menampilkan record-record mahasiswa berdasarkan urutan namanya, ekspresi SQLnya adalah : ï‚ž Select * ï‚ž From mahasiswa ï‚ž Order by nama_mhs
  • 17. ï‚ž Urutan berdasrkan query tersebut disusun secara menaik (dari abjad nama terkecil hingga terbesar). Jika misalnya, kita ingin menampilkan berdasarkan atribut tgl_lahir tapi secara menurun (dari mahasiswa termuda hingga mahasiswa tertua), maka pada klausa order by kita sertakan pula klausa desc seperti berikut: Select * From mahasiswa Order by tgl_lahir desc
  • 18. FUNGSI AGREGASI ï‚ž Fungsi agregasi untuk menampilkan data- data agregasi seperti banyaknya record (count), total nilai suatu atribut(sum), rata- rata nilai atribut(avg), nilai atribut terbesar (max) ataupun terkecil (min).
  • 19. CONTOH-CONTOH PENGGUNAAN FUNGSI AGREGASI ï‚ž Menampilkan banyaknya record mahasiswa : Select count (*) From mahasiswa ï‚ž Menampilkan banyaknya mahasiswa angkatan 2010 : Select count (*) From mahasiswa Where nim like ‘10%’ ï‚ž Menampilkan total sks untuk kuliah di semester 2 : Select sum (sks) From kuliah Where semester =2
  • 20. ï‚ž Menampilkan rata-rata sks untuk semua mata kuliah Select avg(sks) From kuliah ï‚ž Menampilkan indeks nilai terbesar yang diperoleh mahasiswa untuk mata kuliah dengan kode kuliah ‘IF-110’ : Select max(indeks_nilai) From nilai Where kode_kul = ‘IF-110’
  • 21. ï‚ž Menampilkan mahasiswa paling tua (artinya, tanggal lahir paling kecil) yang ada di tabel mahasiswa : Select min(tgl_lahir) From mahasiswa ï‚ž Menampilkan banyaknya record dan total sks untuk mata kuliah yang dikelompokkan per semester : Select semester, count (*) as jumlah, sum(sks) as total_sks From kuliah Group by semester Order by semester ï‚ž Penggunaan order by diatas hanya untuk tujuan agar hasil querynya diurutkan berdasarkan nilai atribut semesternya.
  • 22. NILAI NULL ï‚ž Jika kita ketahui bahwa didalam tabel Nilai tidak semua data indeks_nilai sudah terisi data, maka kita dapat menampilkan kode kuliah dari tabel tersebut, yang indeks_nilainya masih kosong, dengan perintah SQL beikut ini : Select distinct kode_kul From nilai Where indeks_nilai is null
  • 23. ï‚ž Menghitung banyaknya baris data dalam tabel nilai yang atribut indeks_nilainya telah terisi data (artinya bukan null) : Select count (*) From nilai Where indeks_nilai is not null
  • 24. MANIPULASI DATA 1. penambahan record Contoh perintah SQL untuk melakukan penambahan record baru ke tabel mahasiswa : Insert into mahasiswa (nim, nama_mhs, alamat_mhs, tgl_lahir) Values (‘100011’, ‘Siti Aminah’, ‘Jl. Suci 12, Bogor’, ‘02/03/1973’) Atau : Insert into mahasiswa Values (‘100011’, ‘Siti Aminah’, ‘Jl. Suci 12, Bogor’, ‘02/03/1973’)
  • 25. MANIPULASI DATA 2. Pengubahan Record Perintah SQL untuk mengubah nilai atribut sks untuk mata kuliah tertentu adalah : Update kuliah Set sks = 4 Where kode_kul = ‘IF-310’
  • 26. MANIPULASI DATA 2. Pengubahan Record perintah update juga dapat digunakan untuk melakukan perubahan dengan mengacu pada nilai atribut yang lama (sebelum perubahan), misalnya dengan penambahan gelar di depan nama dosen tertentu berikut ini : Update dosen Set nama_dosen = ‘Prof. ‘ + nama_dosen Where kode_dos = ‘SY’ Perintah update tanpa klausa where berikut ini dilakukan untuk semua record : Update nilai Set indeks_nilai = null Yang mengakibatkan terisinya nilai null (pengosongan nilai untuk atribut indeks_nilai) pada semua record di tabel nilai
  • 27. MANIPULASI DATA 3. penghapusan record ï‚ž Perintah SQL untuk menghapus record kuliah tertentu : Delete from kuliah Where kode_kul = ‘IF-310’ ï‚ž Perintah SQL untuk menghapus beberapa record di tabel kuliah Delete from kuliah Where kode_kul like ‘IF%’ ï‚ž Perintah SQL untuk menghapus semua record dari tabel kuliah (sehingga tabel kuliah menjadi kosong) : Delete from kuliah
  • 28. KONTROL TRANSAKSI ï‚ž Operasi operasi manipulasi data merupakan bagian dari suatu transaksi. Trasnsaksi sendiri bisa terdiri atas satu atau beberapa operasi manipulasi data. Perintah-perintah manipulasi data tidak akan benar- benar disimpan (ditulis di dalam disk) jika kita belum memberikan perintah kontrol transaksi. Perintah kontrol transaksi itu adalah : Commit (work) Dan : Rollback (work) ï‚ž Jika perintah commit digunakan maka semua operasi manipulasi basis data akan direkam ke dalam disk dan transaksi dinyatakan selesai. Sedangkan jika perintah rollback yang kita gunakan, maka semua operasi manipulasi basis data yang belum di commit, akan dibatalkan (tidak jadi disimpan ke dalam disk). Klausa work sifatnya opsional dan tidak berpengaruh terhadap pengertian kedua perintah tersebut.
  • 29. DATA DEFINITION LANGUAGE (DDL) ï‚ž Ddl berkaitan dengan perintah-perintah untuk pendefinisian objek-objek basis data. Salah satu objek terpenting adalah tabel. Berikut ini adalah sintaks SQL untuk melakukan pembuatan tabel baru di dalam basis data ï‚ž Sebelum perintah SQL digunakan, kita terlebih dulu harus mengetahui tipe data apa saja yang dapat kita gunakan. Dalam SQl-92, tipe data yang menjadi standard adalah :
  • 30. DATA DEFINITION LANGUAGE (DDL) ï‚ž Char (n) Untuk atribut yang bernilai string dengan panjang tetap sebesar n karakter (jika banyaknya karakter yang diisikan ke atribut dengan tipe ini kurang dari n, maka sisanya akan diisi dengan spasi) ï‚ž Varchar (n) Untuk atribut yang bernilai string dengan panjang fleksibel, tapi maksimal sebanyak n karakter ï‚ž Int atau integer Untuk atribut yang bernilai integer (bilangan bulat) sebanyak 2 byte ï‚ž Smallint Untuk atribut yang bernilai integer (bilangan bulat) sebanyak 1 byte ï‚ž Numeric (p,d) Untuk atribut yang bernilai pecahan fixed-point dengan panjang p dijit (termasuk tanda) dan d dijit untuk bilangan pecahan
  • 31. DATA DEFINITION LANGUAGE (DDL) ï‚ž Real, double precision Untuk atribut yang bernilai pecahan floating point ï‚ž Float (n) Untuk atribut yang bernilai pecahan floating point dengan presisi n dijit ï‚ž Date Untuk atribut yang bernilai tanggal (terdiri atas 4 dijit tahun, 2 dijit bulan dan 2 dijit tanggal) ï‚ž Time Untuk atribut yang bernilai waktu (terdiri atas jam, menit dan detik, masing-masing 2 dijit)
  • 32. DATA DEFINITION LANGUAGE (DDL) ï‚ž Perintah SQL untuk membuat tabel mahasiswa : Create table mahasiswa (nim char(6), Nama_mhs varchar(30), Alamat_mhs varchar(60), Tgl_lahir date)
  • 33. DATA DEFINITION LANGUAGE (DDL) ï‚ž Jika terhadap tabel yang kita buat, ingin kita sertakan pula adanya indeks primer berdasarkan atribut tertentu didalam tabel, maka klausa primary key dapat kita gunakan. Berikut ini adalah contoh ekspresi SQl untuk pembuatan tabel mahasiswa sekaligus dengan pendefinisian indeks primer berdasarkan nim : Create table mahasiswa (nim char(6), Nama_mhs varchar(30), Alamat_mhs varchar(60), Tgl_lahir date, Primary key (nim))
  • 34. DATA DEFINITION LANGUAGE (DDL) ï‚ž Jika jumlah atribut yang membentuk indeks primer ada lebih dari satu, seperti yang ada di tabel nilai, contoh ekspresi SQL-nya adalah : Create table nilai (nim char(6), Kode_kul char (6), Indeks_nilai char (1), Primary key (nim, kode_kul))
  • 35. DATA DEFINITION LANGUAGE (DDL) ï‚ž Tabel yang dibuat juga dapat dibatalkan keberadaaannya (sama artinya dengan penghapusan tabel) dengan menggunakan perintah SQL dengan sintaks berikut sebagai contoh untuk menghapus tabel mahasiswa : Drop table mahasiswa
  • 36. DATA DEFINITION LANGUAGE (DDL) ï‚ž Struktur sebuah tabel juga dapat kita ubah, tanpa harus menghapus dan membangunnya kembali dengan definisi struktur yang baru. Perintah pengubahan struktur selain lenih praktis, juga tidak mengakibatkan hilangnya data yang sudah ada didalam tabel (jika memang sudah terisi data). Perubahan struktur ini dapat berupa penambahan atribut atau pengurangan/penghapusan atribut tertentu. Berikut ini contoh SQL untuk penambahan atribut baru bernama ip (untuk menyimpan data indeks prestasi) di tabel mahasiswa : Alter table mahasiswa add ip numeric (5, 2) ï‚ž Jika atribut ip ingin dihapus dari tabel mahasiswa, ekspresi SQLnya adalah : Alter table mahasiswa drop ip