Date post: | 01-Jan-2016 |
Category: |
Documents |
Upload: | kelly-rossa-sungkono |
View: | 34 times |
Download: | 2 times |
DATA MANIPULATION
LANGUAGE (INSERT, UPDATE, DELETE, SELECT)
TUJUAN PERKULIAHAN
Mahasiswa memahami penggunaan DML dan macam-macamnya
Mahasiswa mampu mengaplikasikan operasi-operasi INSERT, UPDATE, DELETE
Mahasiswa mampu mengaplikasikan operasi SELECT
SEKILAS TENTANG DML DML (Data Manipulation Language )
bahasa SQL yang digunakan untuk memanipulasi data di dalam suatu tabel.
Perintah DML meliputi:1. INSERT INTO – Menyisipkan/menambah
data baru ke dalam tabel di database2. UPDATE – Mengupdate data dalam tabel
di database3. DELETE – Menghapus data dari tabel di
database4. SELECT – Mengekstrak/menampilkan
data dari tabel-tabel di database
INSERT, UPDATE DAN DELETE
Memasukkan, Mengupdate dan Menghapus data
PERINTAH INSERT
INSERT [INTO] nama_tabel [kolom_1,…,kolom_2]VALUES (value_kolom_,…,value_kolom_n)
Sintaks
Keterangan
• bagian yang berada di dalam kurung siku bersifat optional• nama_tabel merupakan nama tabel yang datanya akan dimanipulasi• kolom_1,kolom_2, dst merupakan nama kolom dari tabel yang bersangkutan•Jika data akan diisikan ke dalam semua kolom (field) suatu tabel maka tidak perlu disebutkan nama kolomnya namun pengisianya harus urut.•Jika data hanya akan diisikan ke kolom (field) tertentu maka nama kolomnya harus disebutkan.
CONTOHTerdapat table mahasiswa dengan struktur sbb:
Contoh data:
Jika data mahasiswa ingin di tambah maka:
INSERT INTO MAHASISWA VALUES ('5100100002','123','BUDI','SURABAYA')
CONTOH (2)
Data mahasiswa akan ditambah tetapi datanya tidak lengkap
INSERT INTO MAHASISWA (NRP,NIP,MHS_NAMA) VALUES ('5100100103','123','TOMI')
PERINTAH UPDATE
Terkadang terdapat kesalahan dalam pengetikan data atau terjadi perubahan data karena suatu hal.
Data tersebut dapat diperbaiki dengan menggunakan perintah UPDATE.
UPDATE nama_tabel SET nama_kolom = value [WHERE syarat]
Sintaks
Keterangan
Nama_tabel berisi nama tabel di mana data yang akan dirubah berada. Nama_kolom berisi nama kolom dimana kolom dari data berada. Value merupakan nilai data pengganti yang akan dimasukkan Syarat merupakan kondisi data yang akan di rubah.
CONTOH
DELETE Terkadang data yang tersimpan dalam
tabel atau view tidak diperlukan kembali, sehingga memenuhi ruang penyimpanan.
Untuk itu data harus dihapus dengan perintah DELETE.
DELETE FROM nama_tabel[WHERE syarat]
Sintaks
Keterangan
Nama_tabel berisi nama tabel di mana data yang akan dihapus berada.
Syarat merupakan kondisi data yang akan di rubah.
CONTOH
SQL SELECT
Mendapatkan Informasi dari Database
SYNTAX SQL (REVIEW)
SELECT [DISTINCT] select_list
FROM table_source
[WHERE search_condition]
[GROUP BY group_by_expression]
[HAVING search_condition]
[ORDER BY order_expression [ASC | DESC] ]
Basis Data Teknik Informatika FTIf - ITS
PERNYATAAN SELECT
Pernyataan SELECT digunakan untuk menyeleksi (memilih) data dari satu atau beberapa tabel.
Hasil tabulasi disimpan dalam tabel hasil (disebut sebagai result-set).
Syntax : SELECT column_name(s) FROM table_name
SELECT [*] [<kolom1>, <kolom2>, . . ., <kolomN>][<alias.kolom1>, <alias.kolom2>, . . . , <alias.kolomN>]FROM <nama_tabel>
Basis Data Teknik Informatika FTIf - ITS
CONTOH PEMAKAIAN SELECT
Soal : Dapatkan Informasi NIP, Nama Depan, Alamat dan Gaji Pegawai
Syntax : SELECT NIP, NmDepan, Alamat, GajiFrom Pegawai
Hasil:
Basis Data Teknik Informatika FTIf - ITS
KLAUSA WHERE
WHERE digunakan jika informasi yang ditampilkan (pernyataan SELECT) memiliki kriteria tertentu.
Syntax:
SELECT column FROM table WHERE column operator value
Basis Data Teknik Informatika FTIf - ITS
OPERATOR DALAM KLAUSA WHERE
Operator yang dapat digunakan dalam klausa WHERE adalah:
Operator Description
= Equal (sama dengan)
<> Not equal (tidak sama dengan)
> Greater than (Lebih dari)
< Less than (kurang dari)
>= Greater than or equal (lebih dari sama dengan)
<= Less than or equal (kurang dari sama dengan)
BETWEEN Between an inclusive range
LIKESearch for a pattern (pencarian dengan pola
tertentu)
Basis Data Teknik Informatika FTIf - ITS
CONTOH PEMAKAIAN KLAUSA WHERE
Soal: Dapatkan Informasi NIP, Nama Depan, Alamat dan Gaji Pegawai yang gajinya lebih dari 25000
Syntax:SELECT NIP, NmDepan, Alamat, GajiFrom PegawaiWhere Gaji>25000
Hasil:
WHERE
Klausa ini biasanya digunakan untuk:
1.Filter (penyaringan) data. 2.Merelasikan/menghubungkan query yang
disusun lebih dari satu tabel.
o Penerapannya adalah dengan memasukkan suatu ekspresi kondisi setelah klausa WHERE:
WHERE <kondisi>o Jika <kondisi> lebih dari satu, maka bisa
ditambahkan dengan AND atau OR (sesuai dengan kebutuhan).
WHERE <KONDISI> UNTUK RELASI
Jika kita mengambil informasi dari lebih dari sebuah tabel, maka kita perlu menambahkan kondisi untuk relasi antara kedua tabel tersebut.
Pada dasarnya mirip dengan filter, tapi fungsinya digunakan untuk merelasikan antara tabel-tabel yang diambil informasinya
WHERE <KONDISI> UNTUK RELASI (2)
FK_PENYEWAA_MELAKUKAN_ANGGOTA
FK_PENYEWAA_TERDIRI_D_PENYEWAA
FK_PENYEWAA_BERISI_VCD
Anggota
No_anggotaNama_AnggotaAlamat_anggota
CHAR(5)VARCHAR(50)VARCHAR(100)
<pk>
Penyewaan
Kode_SewaNo_anggotaTgl_Sewa
CHAR(5)CHAR(5)DATE
<pk><fk>
Penyewaan_detail
Kode_SewaKodeVCDbiaya_sewatgl_harusKembalitgl_pengembaliandenda
CHAR(5)CHAR(5)CURRENCYDATEDATECURRENCY
<pk,fk1><pk,fk2>
VCD
KodeVCDJudul_VCDKategori_VCDbiaya_sewa
CHAR(5)VARCHAR(50)CHAR(2)CURRENCY
<pk>
Menampilkan Judul_VCD, Kategori_VCD, tgl_harusKembali
Judul_VCD dan KategoriVCD bisa diambil dari tabel VCD, tetapi tgl_harusKembali tidak ada pada tabel VCD sehingga haris diambil dari tabel Penyewaan_detail. Kedua tabel tersebut berelasi pada Kode_VCD. Sehingga querynya:
SELECT Judul_VCD, Kategori_VCD, tgl_harusKembaliFROM VCD, Penyewaan_detailWHERE VCD.KodeVCD=Penyewaan_detail.KodeVCD
WHERE <KONDISI> UNTUK RELASI (3)
Jika ada nama field yang sama dari tabel yang disertakan, maka sebelum nama field, berikan nama tabel diikuti sebuah titik (.)
Misal untuk query sebelumnya dengan ditambah menampilkan KodeVCD:
SELECT VCD.KodeVCD, VCD.Judul_VCD, VCD.Kategori_VCD, Penyewaan_detail.tgl_harusKembaliFROM VCD, Penyewaan_detailWHERE VCD.KodeVCD=Penyewaan_detail.KodeVCD
Atau untuk mempersingkat query menggunakan alias
SELECT V.KodeVCD, V.Judul_VCD, V.Kategori_VCD, P.tgl_harusKembaliFROM VCD V, Penyewaan_detail PWHERE V.KodeVCD=P.KodeVCD
WHERE <KONDISI> UNTUK RELASI (4)
Contoh
Menampilkan KodeVCD,Judul_VCD, tgl_harusKembali untuk VCD dengan kategori “kartun” diurutkan berdasarkan JudulVCD
SELECT V.KodeVCD, V.Judul_VCD, P.tgl_harusKembaliFROM VCD V, Penyewaan_detail PWHERE V.KodeVCD=P.KodeVCD AND V.Kategori_VCD=“kartun”ORDER BY V.Judul_VCD
WHERE <KONDISI> UNTUK FILTER
Where untuk filter atau pencarian data di dalam SQL Server bisa dalam beberapa bentuk ekspresi, yakni:
operasi pembandinganoperasi pendekatan polaoperasi pembandingan dengan sekumpulan nilai
OPERASI PEMBANDINGAN
Operasi:= < <= >= > <> is
Khusus untuk pembanding IS, nilai yang diisikan adalah null, yakni sebuah nilai yang belum berisi nilai.
nilai null tidak sama dengan nilai 0 pada tipe numerik ataupun string kosong pada tipe string
Basis Data Jurusan Teknik Informatika ITS
OPERASI PEMBANDINGANContoh menampilkan pegawai yang berjenis kelamin laki-
laki: SELECT * FROM Employee WHERE Sex=“M”
menampilkan Pegawai yang tahun kelahirannya lebih dari 1965 SELECT * FROM Employee WHERE year(Bdate) > 1965
menampilkan Pegawai wanita yang lahir di bulan Juli:
SELECT * FROM Employee WHERE Sex=“F” AND month(Bdate)=6
menampilkan idKoleksi yang belum dikembalikan (TglKembali belum terisi)
SELECT * FROM Peminjaman WHERE TglKembali IS NULL
Basis Data Jurusan Teknik Informatika ITS
OPERASI LIKE (PENDEKATAN POLA) Operasi ini, hanya untuk pembandingan
nilai bertipe string Digunakan untuk mengenali string-string
yang memiliki pola tertentu. Di dalam operasi ini, digunakan simbol-
simbol berikut:
simbol % (Oracle) atau *(ms. Access) artinya mewakili 0 s/d tak terhingga dari sembarang karakter
simbol _ artinya mewakili 1 sembarang karakter
Basis Data Jurusan Teknik Informatika ITS
OPERASI LIKE (PENDEKATAN POLA)Contoh
Menampilkan pegawai yang tinggal di Houston
SELECT * FROM Employee WHERE Address LIKE "*houston*"
menampilkan Pegawai yang huruf ketiga namanya adalah “m”:SELECT SSN, Fname FROM Employee WHERE FName LIKE “??d*"
Basis Data Jurusan Teknik Informatika ITS
“?” dan “_” mewakili satu karakter? : access_ : oracle
OPERASI IN ATAU NOT IN
Ekspresi ini digunakan untuk membandingkan dengan sebuah kumpulan nilai
Kumpulan nilai bisa berupa: nilai-nilai yang diisikan query tunggal
query yg hasilnya hanya terdapat sebuah kolom saja
Basis Data Jurusan Teknik Informatika ITS
OPERASI IN ATAU NOT IN Nilai-nilai yang diisikan, maksudnya kita
sendiri yang mengisikan nilai-nilai tersebut di dalam query kita.
Contoh Menampilkan pegawai yang terlibat dalam proyek selain nomer 3 dan 10
SELECT W.ESSN, E.Fname, W.PNOFROM Employee AS E, Works_on AS WWHERE W.PNO NOT IN (3,10) and W.ESSN=E.SSN;
Basis Data Jurusan Teknik Informatika ITS
OPERASI IN ATAU NOT IN Query tunggal, yakni nilai-nilai yang digunakan
sebagai pembanding diambil dari sebuah query tunggal yang hasilnya hanya satu kolom saja
Contoh Menampilkan data pegawai yang tidak pernah terlibat dalam proyek
SELECT SSN, FnameFROM EmployeeWHERE SSN NOT IN (Select distinct ESSN From Works_On)
menampilkan koleksi yang sedang dipinjam:
SELECT * FROM koleksi WHERE idKoleksi IN (SELECT idKoleksiFROM Peminjaman WHERE TglKembali is NULL)
Basis Data Jurusan Teknik Informatika ITS
FUNGSI-FUNGSI AGREGASI (AGREGATE FUNCTION) Query yang melibatkan fungsi penghitungan. Fungsi-fungsi tersebut yakni:
- COUNT(*) mendapatkan jumlah baris- SUM(kolom) mendapatkan hasil penjumlahan kolom- MAX(kolom) mendapatkan nilai tertinggi- MIN(kolom) mendapatkan nilai terendah- AVG(kolom) mendapatkan nilai rata-rata
Basis Data Jurusan Teknik Informatika ITS
FUNGSI-FUNGSI AGGREGASI (2)
SELECT AVG (V.Biaya_Sewa)FROM VCD VWHERE V.Kategori_VCD=“kartun”
SELECT COUNT (*)FROM VCD V
Tampilkan rata-rata harga sewa VCD koleksi kartun
Tampilkan jumlah VCD
34
FUNGSI-FUNGSI AGREGASI (3)
target-list terdiri dari: (a) attribute names, dan (b) “terms” berisikan operasi-operasi aggregasi (misal, MIN (S.age)). “term” adalah atribut yang mengandung fungsi
agregasi. attribute name yang dituliskan dalam target-list harus
juga menjadi subset dari grouping-list.
Klausa HAVING digunakan untuk menuliskan spesifikasi terhadapa GROUP
SELECT [DISTINCT] target-listFROM relation-listWHERE qualificationGROUP BY grouping-list[HAVING group-qualification]
Sintaks:
GROUP BY <KOLOM1> [,<KOLOM2>]
Digunakan untuk pengelompokan dari fungsi-fungsi aggregate
Yang penting untuk diperhatikan, kolom-kolom yang disertakan setelah GROUP BY harus sama dengan kolom-kolom yang dipilih pada setelah klausa SELECT yg selain fungsi AGGREGATE
DAPATKAN RATA-RATA HARGA SEWA VCD PERKATEGORI
Query ini ilegal! (Mengapa?)
SELECT V.Kategori_VCD, AVG (V.Harga_Sewa)FROM VCD V
SELECT V.Kategori_VCD, AVG (V.Harga_Sewa)FROM VCD VGROUP BY V.Kategori_VCD
HAVING <KONDISIAGREGATE>
Jika untuk filter query biasa kita menggunakan klause where, maka klausa having digunakan untuk filter fungsi-fungsi aggregate.Contoh Menampilkan departemen yang jumlah pegawainya lebih dari 2.
SELECT DNO, COUNT(*)as [Jumlah Pegawai] FROM EmployeeGROUP BY DNO HAVING COUNT(*)> 2
ORDER BY Perintah order by digunakan untuk
mengurutkan data Order by Asc (ascending) : pengurutan
dari kecil ke besar, dari A ke Z Order by Desc (Descending):
pengurutan dari besar ke kecil, dari Z ke A)
Contoh: Tampilkan gaji pegawai urut dari yang terbesar
SELECT SSN, FName, SalaryFROM EmployeeORDER BY salary DESC;
MENGEKSTRACT DATE
select NAMA,EXTRACT (YEAR FROM TO_DATE(TGL_LHR,'DD-MON-RR')) AS TAHUNFROM MAHASISWAORDER BY TAHUN ASC
Contoh:
REFERENSI TAMBAHAN http://docs.oracle.com/cd/B28359_01/
server.111/b28286/functions052.htm
LATIHAN
Dari struktur tabel di atas, buat query SQL untuk:Menambah data mata kuliah berupa:1. Kode: IF001, Nama: BASIS DATA, SKS: 32. Kode: IF002, Nama: PEMROGRAMAN, 3. Kode: IF003, Nama: IMKLakukan update pada:4. Mata kuliah basis data seharusnya jumlah sks=45. Mata kuliah pemrograman sksnya di isi 3Lakukan delete pada mata kuliah yang jumlah sksnya
null