Transcript mgg11_sql_2



Data Manipulation Language (DML)
merupakan bahasa basis data yang berguna
untuk melakukan modifikasi dan
pengambilan data pada suatu basis data
Modifikasi data terdiri dari: penambahan
(insert), pembaruan (update) dan
penghapusan (delete).

Instruksi SQL untuk melakukan penambahan data
adalah menggunakan syntax:
INSERT INTO <namaTabel> [(field1, field2, …)]
VALUES (field1 [,field2, …]) | SQL-SELECT
Keterangan
 <namaTabel>  nama tabel yang akan ditambahkan datanya
 [(field1, field2, …)] field-field di dalam tabel yang akan diisikan
nilainya
 VALUES (nilai1 [,nilai2, …]) | SQL-SELECT  nilai yang diisikan
Jika mengisikan sebuah data tunggal saja yang tidak diambil dari
tabel
lain, gunakan:
VALUES (nilai1 [,nilai2, …])
Contoh
Untuk mengisikan data pada tabel penerbit:
INSERT INTO penerbit 
VALUES (90, 'CV Cempaka', 'Jl Gebang Wetan 99', 
'59911111', 'http://www.cempaka.co.id')
Contoh di atas tidak menyertakan klausa [(field1, field2, …)],
sehingga pengisiannya harus seluruh field dan urutannya harus
benar sesuai dengan urutan field pada struktur tabel.
Contoh
Untuk mengisikan
penerbit:
data
pada
tabel
INSERT INTO penerbit (PN_ID, PN_Nama) 
VALUES (91, 'CV Angkasa')
Contoh di atas menyebutkan field-field yang diisikan pada tabel
penerbit, sehingga nilai-nilai yang ditulis setelah klausa VALUES
juga harus mengikuti field-field tersebut.

Instruksi SQL untuk melakukan perubahan
data adalah menggunakan syntax:
UPDATE <namaTabel>
SET <field1>=<nilai1> [ , <field2> = <nilai2>, …]
[WHERE <kondisi>]
Keterangan
 <namaTabel>  nama tabel yang akan diubah datanya
 SET <field1>=<nilai1> [,<field2>=<nilai2>,... ]  nilai baru yang
akan
diisikan pada field tertentu
 [WHERE <kondisi>]  filter yang berlaku untuk menentukan data
mana saja
yang diupdate
Contoh

Untuk melakukan update massal (berlaku untuk
seluruh field), yakni menaikkan seluruh harga
sebesar 110% pada koleksi:
UPDATE koleksi SET KL_Harga=KL_Harga*1.1

Untuk melakukan update tertentu, yakni
memberikan keterangan dg isian ‘Buku TA’ untuk
semua koleksi yang berjenis buku TA
(KL_TK_ID=4):
UPDATE koleksi SET KL_Keterangan = 'Buku TA'
WHERE KL_TK_ID=4

Instruksi SQL untuk menghapus data adalah
menggunakan syntax:
DELETE FROM <namaTabel>
[WHERE <kondisi>]
Keterangan
 <namaTabel>  nama tabel yang akan dihapus datanya
 [WHERE <kondisi>]  filter yang berlaku untuk menentukan data
mana saja
yang dihapus
Contoh

Untuk menghapus seluruh data peminjaman:
DELETE FROM Peminjaman

Untuk menghapus seluruh koleksi yang
berjenis buku TA (idJenisKoleksi=4)
DELETE FROM koleksi WHERE KL_TK_ID=4

Berikut adalah syntax dari SQL-SELECT
SELECT [DISTINCT] select_list
FROM table_source
[WHERE search_condition]
[GROUP BY group_by_expression]
[HAVING search_condition]
[ORDER BY order_expression [ASC |
DESC] ]




SELECT, INTO, FROM, WHERE, GROUP BY, HAVING DAN
ORDER BY  kata kunci (keyword) yang harus
disertakan jika kita membutuhkannya di dalam
pengolahan data
select_list, table_source, search_condition,
group_by_expression, order_expression  isian yang
bisa kita ubah berdasarkan kebutuhan kita
Kurung kotak [ ]  bagian tersebut boleh disertakan
atau tidak, tergantung dari kebutuhan
Urutan syntax untuk kata kunci (keyword), misalnya
ORDER BY terletak di setelah GROUP BY, menunjukkan
bahwa keyword harus disusun berdasarkan urutan
tersebut, jika keduanya disertakan, ORDER BY tidak
boleh ditulis mendahului GROUP BY
adalah kolom-kolom yang didefinisikan
sebagai hasil dari proses query
a.
Menampilkan keseluruhan field
Untuk menampilkan keseluruhan field dari
tabel-tabel yang didefinisikan, digunakan *.
Misalnya, untuk menampilkan seluruh field
dari tabel Anggota, perintahnya:
SELECT * FROM Anggota
b. Menampilkan kolom-kolom tertentu
Kolom-kolom yang dipilih berupa
ekspresi, yang mana ekspresi tersebut
bisa berupa:
 field tabel (biasanya)
 konstanta
 operasi dan fungsi
Antara kolom satu dengan lainnya dipisahkan
dengan tanda koma (,). Jika merupakan field
tabel, maka judul kolom adalah nama field
tersebut.
Contoh


menampilkan nama dan alamat Anggota
SELECT nama, alamat FROM Anggota
Yang terdapat ekspresi fungsi dari query
sebelumnya, yakni menampilkan nama dalam
bentuk huruf kapital:
SELECT UPPER(nama), alamat FROM Anggota
SELECT Lower(nama), alamat FROM Anggota
c. Mengubah judul kolom
Kolom-kolom
yang dipilih bisa diberi judul
tertentu sesuai dengan keinginan kita.
 Menggunakan syntax: ekspresi AS
judul_kolom
Ini merupakan cara standar yang dipakai
pada
banyak sistem database.
Contoh
Beberapa query pada point b sebelumnya, diberi
judul kolom sbb:

menampilkan nama dan alamat Anggota
SELECT nama AS NamaAnggota, alamat AS
AlamatAnggota FROM Anggota
d. Menyertakan nama tabel atau alias
Jika kita memasukkan sebuah field tabel di dalam
sebuah
ekspresi kolom, kita bisa menyertakan nama tabel
Sebelum nama fieldnya yang dipisah dengan tanda
titik:
Untuk apa?
nama_tabel.nama_field
Untuk mempermudah analisa pembuatan query
Untuk membedakan kepemilikan sebuah field di
dalam query yang menyertakan lebih dari satu tabel.
Sebab bisa saja terjadi dua buah tabel memiliki
nama field yang sama
Contoh
untuk sebuah contoh query sebelumnya, jika
disertakan nama tabel adalah sbb:
SELECT
UPPER(Anggota.nama) As Nama,
Anggota.alamat
FROM Anggota

Digunakan apabila kita ingin menghilangkan
duplikasi dari hasil query (hasil query yang
sama ditampilkan sekali)
SELECT [DISTINCT] select_list
FROM table_source
Contoh
untuk menampilkan nomor-nomor anggota
yang sedang meminjam atau belum
mengembalikan:
NoAnggota
ID001
ID002
SELECT NoAnggota FROM Peminjaman
pada
hasil
query
tersebut
terdapat
NoAnggota yang ditampilkan lebih dari
sekali. Untuk meniadakan duplikasi, querynya
adalah sbb:
SELECT DISTINCT NoAnggota FROM
Peminjaman
ID001
ID003
NoAnggota
ID001
ID002
ID003



Adalah sumber data dari query
Bisa merupakan tabel ataupun view
Tabel yang disertakan bisa lebih dari satu.
Jika lebih dari satu, dalam penulisan dipisah
dengan koma.


Sebuah tabel bisa diberi nama lain (alias),
yang mana hal ini digunakan untuk
memperpendek nama atau untuk
membedakan field jika sebuah query
mengambil tabel yang sama lebih dari satu
Nama alias ditulis setelah nama tabel yang
bersangkutan
Contoh
Alias yang digunakan untuk memperpendek
nama tabel:
SELECT UPPER(ang.nama) AS Nama,
ang.alamat
FROM Anggota ang
Nama tabel Anggota di atas diberi nama alias
ang.
Sehingga untuk menampilkan fieldnya, cukup
disertakan aliasnya saja.
Tabel SUPPLIER
Tabel PARTS
Tabel SHIPMENT
SELECT CITY
FROM PARTS
SELECT DISTINCT CITY
FROM PARTS
SELECT *
FROM SUPPLIER
WHERE STATUS = 20
SELECT *
FROM SUPPLIER
WHERE CITY = ‘Semarang’
Predikat pada klausa WHERE dapat
dikombinasikan dengan operator relasi
lainnya, seperti <, <=, >, >=, <>, dan
operator logika, seperti AND, OR, NOT
SELECT *
FROM SUPPLIER
WHERE STATUS = 30 AND CITY = ‘Yogyakarta’
Klausa WHERE dapat digunakan untuk
melakukan query dengan predikat yang
berbentuk suatu range nilai tertentu, yaitu
dengan menambahkan klausa BETWEEN.
SELECT *
FROM SUPPLIER
WHERE STATUS BETWEEN 20 AND 30


Klausa FROM digunakan untuk menentukan
tabel yang akan dijadikan sebagai sumber
untuk pencarian data.
Dalam melakukan query tidak hanya terbatas
pada satu tabel, tetapi sering kali dibutuhkan
untuk merelasikan beberapa tabel sekaligus.

Menampilkan semua SUPPLIER yang
melakukan SHIPMENT dengan jumlah
kuantitasnya > 300
SELECT *
FROM SUPPLIER, SHIPMENT
WHERE SUPPLIER.SCODE=SHIPMENT.SCODE
AND SHIPMENT.QTY > 300
SELECT SU.SNAME
FROM SUPPLIER SU, SHIPMENT SH
WHERE SU.SCODE=SH.SCODE AND SH.QTY > 300
SELECT SU.SNAME AS NAMA_SUPPLIER
FROM SUPPLIER SU, SHIPMENT SH
WHERE SU.SCODE=SH.SCODE AND SH.QTY > 300


Untuk menampilkan hasil query
berdasarkan urutan atribut tertentu, maka
dapat dilakukan dengan menambahkan
klausa ORDER BY.
Default yang diberikan klausa ORDER BY
adalah urutan secara menial (ASC), tetapi
untuk merubah menjadi urutan secara
menurun, dapat dilakukan dengan
menambahkan klausa DESC setelah nama
atribut.
SELECT *
FROM SUPPLIER
ORDER BY STATUS DESC
SELECT SNAME
FROM SUPPLIER
WHERE STATUS = 30
ORDER BY SNAME DESC


Dalam melakukan suatu query, terkadang
dibutuhkan untuk melakukan perhitungan
jumlah tuples, total nilai suatu atribut, nilai
atribut terbesar atau terkecil, dan
menentukan nilai rata-rata suatu atribut.
Untuk memenuhi kondisi-kondisi di atas, SQL
sebagai bahasa query menyediakan fungsifungsi agregasi.





AVG
Untuk memperoleh nilai
yang bertipe numerik.
MIN
Untuk memperoleh nilai
bertipe numerik.
MAX
Untuk memperoleh nilai
yang bertipe numerik.
SUM
Untuk memperoleh nilai
bertipe numerik.
COUNT
Untuk memperoleh nilai
rata-rata suatu atribut
terkecil suatu atribut yang
terbesar suatu atribut
total suatu atribut yang
banyaknya tuples.


Menghitung banyaknya tuples pada tabel
SHIPMENT
Perintah SQL-nya adalah :
SELECT COUNT(*)
FROM SHIPMENT


Menampilkan total berat (WEIGHT) untuk
semua PARTS
Perintah SQL-nya adalah :
SELECT SUM(WEIGHT)
FROM PARTS


Menghitung rata-rata kuantitas (QTY) untuk
semua SHIPMENT
Perintah SQL-nya adalah :
SELECT AVG(QTY)
FROM SHIPMENT


Menentukan nilai STATUS yang terbesar
untuk SUPPLIER
Perintah SQL-nya adalah :
SELECT MAX(STATUS)
FROM SUPPLIER


Menentukan nilai kuantitas (QTY) yang
terkecil untuk SHIPMENT
Perintah SQL-nya adalah :
SELECT MIN(QTY)
FROM SHIPMENT

Fungsi agregasi dapat juga dikombinasikan
dengan klausa GROUP BY, untuk menyatakan
pengelompokan tuple hasil query.

Menampilkan banyaknya tuple dan kuantitas
(QTY) untuk SHIPMENT yang dikelompokan
berdasarkan PARTS (PCODE) dengan urutan
secara menaik:
SELECT PCODE, COUNT(*),
SUM(QTY)
FROM SHIPMENT
GROUP BY PCODE
ORDER BY PCODE


Nilai NULL pada suatu query dapat
diperlakukan secara khusus, yaitu dapat
juga diperlakukan untuk query
menggunakan ekspresi SQL.
Misalkan, menampilkan atribut CITY dari
tabel SUPPLIER yang masih kosong :
SELECT DISTINCT SCODE
FROM SUPPLIER
WHERE CITY is NULL
SELECT COUNT(*)
FROM SUPPLIER
WHERE STATUS is NOT NULL