PRAKTIKUM BASISDATA 2
LANJUT
BAB VII
Membuat Database dan Keamanannya
2
SQL merupakan singkatan dari Structured Query Language. SQL atau juga sering disebut
sebagai query merupakan suatu bahasa (language) yang digunakan untuk mengakses database.
SQL dikenalkan pertama kali dalam IBM pada tahun 1970 dan sebuah standar ISO dan ANSII
ditetapkan untuk SQL.Standar ini tidak tergantung pada mesin yang digunakan (IBM, Microsoft
atau Oracle).Hampir semua software database mengenal atau mengerti SQL. Jadi, perintah SQL
pada semua software database hampir sama.Terdapat 3 (tiga) jenis perintah SQL, yaitu :
1. DDL atau Data Definition Language
DDL merupakan perintah SQL yang berhubungan dengan pendefinisian suatu struktur
database, dalam hal ini database dan table. Beberapa perintah dasar yang termasuk DDL ini
antara lain :
�CREATE
�ALTER
�RENAME
�DROP
2. DML atau Data Manipulation Language
DML merupakan perintah SQL yang berhubungan dengan manipulasi atau pengolahan data
atau record dalam table. Perintah SQL yang termasuk dalam DML antara lain :
�SELECT
�INSERT
�UPDATE
�DELETE
3. DCL atau Data Control Language
DCL merupakan perintah SQL yang berhubungan dengan manipulasi user dan hak akses
(priviledges). Perintah SQL yang termasuk dalam DCL antara lain :
�GRANT
�REVOKE
ERD merupakan suatu model untuk menjelaskan hubungan antar data dalam basis data
berdasarkan objek-objek dasar data yang mempunyai hubungan antar relasi. ERD untuk
memodelkan struktur data dan hubungan antar data, untuk menggambarkannya digunakan
beberapa notasi dan simbol.
Keamanan di MySQL
Masalah keamanan (security) di MySQL merupakan hal yang tidak boleh dianggap sepele
apalagi dikesampingkan.MySQL merupakan software database yang bersifat client-server, yang
memungkinkan beberapa user dapat mengakses server MySQL dari mana pun.Untuk itu, server
MySQL harus benar-benar aman dari akses (serangan) orang-orang yang tidak berhak.
Berikut ini beberapa hal yang harus diperhatikan dalam mengamankan server MySQL:
a. Jangan pernah memberi akses ke semua user (kecuali USER root) untuk dapat mengakses database
mysql. Jika seseorang dapat mengakses database ini, maka dia dapat melihat informasi user
(termasuk user, password dan host) MySQL dan (mungkin) dapat menambah atau mengubah
informasi tersebut.
b. Pelajari mengenai hak akses di MySQL. Perintah GRANT dan REVOKE digunakan untuk
mengatur hak akses di MySQL. Sebisa mungkin jangan memberikan hak akses ke MySQL pada
semua host (%). Dan cobalah untuk mengecek dengan:
1. Cobalah login dengan perintah mysql –u root. Jika Anda berhasil login ke server, maka hal ini
bisa menjadi masalah besar, karena password root masih kosong sehingga semua user dapat
mengakses server MySQL.
2. Gunakan perintah SHOW GRANTS untuk melihat semua hak akses user.
c. Jangan pernah menyimpan password dalam bentuk teks biasa di MySQL! Gunakan fungsi enkripsi
searah seperti fungsi PASSWORD() dan MD5() untuk mengenkripsi isi password. Kita tidak dapat
menjamin 100% bahwa server kita aman dari penyusup (intruder).
d. Hati-hati dalam memilih password. Pilihlah password yang mudah diingat tapi sulit ditebak oleh
orang lain. Dan juga jangan gunakan kata-kata yang ada di kamus, gunakanlah kombinasi angka
dan huruf.
3
e. Pasang firewall di server untuk mencegah penyusup. Hal ini dapat mencegah setidaknya 50% dari
program penyusup yang ada.
f. Jangan percaya sepenuhnya terhadap data yang dimasukkan oleh user. Akan lebih baik jika kita
menganggap bahwa semua user adalah ‘jahat’.Lakukan validasi data sebelum dimasukkan ke
database.Hal ini biasanya dapat dilakukan di dalam bahasa pemrograman yang digunakan.
g. Hati-hati dalam mengirim atau mentransfer data lewat internet, karena mungkin ada orang lain
yang dapat ‘membajak’ data tersebut. Dalam hal pengamanan server MySQL, setidaknya ada
beberapa faktor yang mempengaruhi.Kita belum cukup jika mengamankan satu sisi (faktor) saja,
tetapi harus menyeluruh. Berikut ini beberapa faktor tersebut:
1. Server atau komputer tempat MySQL berada. Server tempat MySQL diinstall tentunya menjadi
gerbang utama bagi penyusup (intruder).Untuk ini kita harus benar-benar memperhatikan
faktor keamanan server.Kita dapat memasang firewall untuk membatasi akses penyusup ke
server. Gunakan prinsip deny-all, allow-some, dimana kita menutup semua lubang dan hanya
membuka yang diperlukan.
2. Server MySQL. Konfigurasi dan settingan dalam server MySQL juga sangat mempengaruhi
keamanan data MySQL.Bagaimana jadinya jika user yang tidak berhak dapat mengakses sistem
dan konfigurasi MySQL?Tentu sangat berbahaya.
3. Aplikasi (Pemrograman) yang digunakan. Aplikasi disini maksudnya adalah pemrograman
yang menggunakan atau berhubungan langsung dengan MySQL. Sebagian besar penyusup
akan memilih cara menyusup melalui aplikasi jika kedua hal diatas tidak dapat dilakukan. Dan
banyak database yang kebobolan karena kelemahan dari sisi aplikasi.Secara sederhana kita
dapat mengakses data ke MySQL melalui konsep yang sering disebut sebagai SQLInjection.
4. User atau pengguna. User atau pengguna server MySQL juga mempengaruhi keamanan
datanya.Misalnya pemilihan password yang mudah ditebak (seperti tanggal lahir), kecerobohan
user yang lupa logout setelah menggunakan MySQL atau user yang menuliskan passwordnya di
buku catatan.
4
GRANT priv_type
ON {tbl_name | * | *.* | db_name.*}
TO user_name [IDENTIFIED BY 'password']
[WITH GRANT OPTION]
REVOKE priv_type
ON {tbl_name | * | *.* | db_name.*}
FROM user_name
Berikut ini pilihan untuk priv_type dalam bentuk umum perintah GRANT dan REVOKE di atas:
ALL PRIVILEGES FILE RELOAD ALTER INDEX SELECT CREATE INSERT SHUTDOWN
DELETE PROCESS UPDATE DROP REFERENCES USAGE
Perintah GRANT dan REVOKE dapat digunakan untuk membuat user baru maupun mengatur hak
akses user yang sudah ada dengan hak akses (privileges ) tertentu. Tingkatan hak akses user dapat
terbagi menjadi tingkatan global (tersimpan di tabel mysql.user), database (tersimpan di tabel
mysql.host dan mysql.db), tabel (tersimpan di tabel mysql.tables_priv) dan kolom (tersimpan di tabel
mysql.columns_priv). Setiap perubahan hak akses di MySQL, termasuk menambahkan user baru,
tidak akan berlaku sebelum diakhiri dengan perintah FLUSH PRIVILEGES.
Berikut ini beberapa contoh mengatur hak akses user yang sudah ada di MySQL:
Mengubah hak akses user ‘adinda’ agar dapat mengakses database ‘Transaksi_Barang’.
GRANT ALL PRIVILEGES ON transaksi_barang.* TO adinda@192.168.1.5;
FLUSH PRIVILEGES;
Mengubah hak akses user ‘admin’ agar dapat CREATE di database ‘transaksi_barang’.
GRANT CREATE ON penjualan.* TO admin@localhost;
FLUSH PRIVILEGES;
5
MENGGANTI PASSWORD USER
Untuk mengganti password suatu user di MySQL, kita tinggal menjalankan perintah UPDATE
terhadap field Password di tabel mysql.user. Password tersebut diekripsi dengan fungsi
PASSWORD(). Berikut ini perintah SQL yang dapat digunakan untuk mengganti password user:
UPDATE user SET Password=PASSWORD(‘123’) WHERE User=’admin’ AND
Host=’localhost’;
SET PASSWORD FOR admin@localhost = PASSWORD (‘123’);
FLUSH PRIVILEGES
6
Pemodelan Konseptual
Stok
Kode_Barang Jumlah
M 1
Pembeli Membeli Barang
1
Kode_Barang Nama_Barang
Id_Pembeli Nama_Pembeli
Dicatat
Kejadian Kuantitas
Konfigurasi Jaringan
Nama User : Manajer
Password : 12345
Hak akses : All with grant option
Akses via : Jaringan (%)
IP Address :
SSID :
7
LANGKAH-LANGKAH MEMBUAT JARINGAN
8
Langkah 3 : Kemudian akan keluar kotak seperti dibawah ini dan pilih set up a wireless ad
hoc (computer to computer) network.
Langkah 4 : Pilih next selanjutnya akan keluar kotak di bawah ini dan isi nama network anda
9
Langkah 5 : Jika berhasil maka akan keluar kotak seperti gambar dibawah ini.
Langkah 6 : Connectkan jaringan yang telah kita buat tadi lalu klik kanan properties untuk
masuk dan mengatur IP jaringan kita
10
Langkah 7 : Lalu akan muncul tampilan seperti dibawah kemudian klik tulisan change
adapter setting
Langkah 8 : Kemudian pilih change adapter setting, lalu klik kanan di Wireless Network
Connection pilih Properties.
11
Langkah 9 : Setelah itu, akan keluar kotak seperti di bawah ini
12
Langkah 10 Selanjutnya, kita klik Internet Protocol Version 4 (TCP/IPv4) dan pilih menu
Properties maka akan keluar kotak seperti di bawah ini :
Pada [IP address], masukkan 192.168.0.200, pada [Subnet mask], masukkan 255.255.255.0,
dan untuk [Default Gateway] kosongkan saja. Setelah selesai klik [OK]. Settingan pada
komputer A sudah selesai.
13
Tahapan Uji Coba
1. Langka pertama, masuk ke sever root, buat user Manajer kemudian exit
pastikan bahwa user yang telah dibuat, dengan cara di bawah ini :
14
4. Di laptop client 1 masuk dengan user Karyawan1, pastikan databse yang telah dibuat telah
muncul, begitu juga di laptop client 2 (user Karyawan2)
15
BAB VIII
DDL (Data Definition Language)
DDL merupakan kelompok perintah yang berfungsi untuk mendefinisikan atribut-atribut basis data,
tabel, atribut(kolom), batasan-batasan terhadap suatu atribut, serta hubungan antar tabel. Yang
termasuk dalam kelompok DDL ini adalah CREATE, ALTER, dan DROP.
Beberapa perintah dasar yang termasuk DDL ini antara lain :
a. CREATEPerintah ini digunakan untuk membuat, termasuk diantaranya membuat database baru,
tabel baru, view baru, dan kolom.
b. ALTER
Perintah ini digunakan untuk mengubah struktur tabel yang telah dibuat. Pekerjaannya mencakup
mengganti nama tabel, menambah kolom, mengubah kolom, menghapus kolom, maupun
memberikan atribut pada kolom.
c. DROP
Perintah ini digunakan untuk menghapus database dan tabel.
Pembuatan (CREATE)
o create database
o create function
o create index
o create procedure
o create table
o create trigger
o create view
Penghapusan (DROP)
o drop database
o drop function
o drop index
o drop procedure
o drop table
o drop trigger
o drop view
16
Tahapan Uji Coba
Dengan konseptual (studi kasus) dan konfigurasi jaringan yang telah dibuat sebelumnya di BAB 1,
langsung saja ke tahap proses create, alter, drop. untuk proses create, alter, drop kita gunakan user
Karyawan1, karena pada user tersebut telah diberi hak akses DDL yang telah dibahas di BAB 1.
1. Proses Create (buat)
Buat 3 table dengan menggunakan database penjualan
Untuk melihat struktur table harus dilakukan di user Karyawan2 karena di user karyawan2
terdapat hak akses select. Jika dilakukan di user Karyawan1 maka yang terjadi adalah akses
ditolak. Berikut cara melihat struktur table:
17
3. Proses Drop (hapus)
Silakan hapus table Pembeli, kemudian desc Pembeli di user Karyawan2, jika yang
ditampilkan tidak ada maka proses drop berhasil.
18
BAB IX
DML (Data Manipulation Language)
Data Manipulation Language (DML) adalah sub bahasa SQL yang berfungsi memanipulasi data
yang ada di dalam basis data atau database. Manipulasi Data (DML) digunakan oleh
programkomputer atau pengguna database untuk menyisipkan, menghapus dan mengupdate data
dalam database. Read-only query yaitu SELECT, data ini dapat dianggap sebagai salah satu bagian
dari DML.
Perintah yang digunakan, di antaranya:
1. INSERT
Perintah ini digunakan untuk menyisipkan atau memasukkan data baru kedalam tabel.
Penggunaannya setelah database dan tabel selesai dibuat.
2. SELECT
Perintah ini digunakan untuk mengambil data atau menampilkan data dari satu tabel atau
beberapa tabel dalam relasi.
Data yang diambil dapat kita tampilkan dalam layar prompt MySQL secara langsung maupun
ditampilkan pada tampilan aplikasi.
Secara umum bentuk SELECT adalah:
SELECT Kolom1,Kolom2, ... FROM Nama_tabel WHERE predikat
Bila kunci kata “WHERE” tidak diberikan, maka yang diseleksi adalah seluruh isi dalam tabel.
SELECT * adalah karakterkhusus (wild character) yang menyatakan bahwa kolom yang dipilih
adalah seluruh yang ada pada tabel tersebut.
19
AND, OR, dan NOT
Untuk menggabungkan lebih dari satu kondisi AND dan OR.
Sedangkan untuk negasi, diperlukan NOT.
Contoh:
Tampilkan mahasiswa laki-laki yang berasal dari ‘Malang’
>SELECT Nama, Alamat, Kota FROM Mahasiswa_XXX WHERE kota=’Malang’ AND jk=’L’;
Prioritas AND lebih kuat dari OR
LIKE & NOT LIKE
Umumnya LIKE digunakan untuk permintaan yang mencari suatu teks berdasarkan prefix (kata
depan), surfix (kata akhir) atau kata tengah.
SELECT Kolom1,Kolom2, ... FROM Nama_tabel WHERE kolom LIKE Nilai
Contoh:
Cari mahasiswa yang bertempat tinggal di kota ‘Gresik’
>SELECT nama, alamat, kota FROM Mahasiswa_XXX WHERE kota LIKE ‘Gresik’ ;
Cari mahasiswa yang tempat tinggalnya dimulai dengan awalan ‘B’
>SELECT nama, alamat, kota FROM Mahasiswa_XXX WHERE kota LIKE ‘B%’
Perhatikan bahwa tanda % menyerupai “wild character” yang bisa di variasi dalam
menggunakannya. Tanda % adalah terdiri dari 0,1 atau beberapa karakter, maka tanda_ (under
score/garis bawah) merepresentasikan persis satu karakter.
IN & NOT IN
IN digunakan untuk mencari nilai dalam satu kelompok nilai (daftar/list).Nilai dalam daftar terdiri
atau satu atau lebih.
SELECT kolom1, kolom2, ... FROM Nama_tabel WHERE kolom IN
Contoh:
Cari peserta yang bertempat tinggal di Kota “ Malang” dan “Jakarta”
>SELECT nama, alamat, kota FROM Mahasiswa_XXX WHERE kota IN (‘Malang’,’Jakarta’);
20
SELECT kolom1, kolom2, ... FROM Nama_tabel WHERE predikat ORDER BY kolom
Bila kunci kata where tidak diberikan, maka seluruh record dalam tabel akan ditampilkan.
Contoh:
Tampilkan seluruh Mahasiswa menurut abjad.
>SELECT * FROM Mahasiswa_XXX ORDER BY inisial
Susunan dapat diatur dari A ke Z (ASC ending) atau dari Z ke A (DESC ending). Defaultnya adalah A
S C.
Untuk menyusun secara terbalik adalah:
>SELECT * FROM Mahasiswa_XXX ORDER BY inisial DESC;
DISTINCT
DISTINCT menghilangkan nilai ganda, sehingga membuatnya menjadi tunggal. Hal ini
dilakukan dengan mengeliminasi nilai yang sama.
Untuk menghilangkan duplikasi pada tampilan, maka digunakan kunci kata DISTINCT.
>SELECT DISTINCT kota FROM Mahasiswa_XXX;
3. UPDATE
Perintah ini digunakan untuk memperbaharui data lama menjadi data terkini. Jika anda
memiliki data yang salah atau kurang up to date dengan kondisi sekarang, maka dapat diubah
kondisi datanya menggunakan perintah UPDATE.
Syntax:
UPDATE Nama_tabel SET Field1=Data1,Field2=Data2,Field3=Data3 WHERE
Kondisi1,Kondisi2
Contoh:
>mahasiswa set nim =’08052926’=08052927
Pemanfaatan operasi aritmatika untuk merubah data. Misalnya sebuah perusahaan akan menaikkan
gaji pegawainya sampai 20%.
UPDATE Data_gaji SET gaji=gaji*1.2
4. DELETE
Perintah ini digunakan untuk menghapus data dari tabel. Biasanya data yang dihapus merupakan
data yang sudah tidak diperlukan lagi. Pada saat menghapus data, perintah yang telah dijalankan
tidak dapat digagalkan, sehingga data yang telah hilang tidak dapat dikembalikan lagi.
Syntax:
DELETE FROM Nama_tabel WHERE kondisi1
Dalam menghapus dan update bisa dilakukan untuk menghapus banyak baris atau menghapus
semua isi dari tabel tergantung dari kondisi yang diberikan.
Contoh:
Hapus isi semua record pada Data mahasiswa yang telah dibuat dimana Mahasiswa dengan
alamat yang tidak diisi <nilai=default> akan dihapus.
21
Perintah SQL nya adalah:
>DELETE FROM Mahasiswa_XXX WHERE Alamat=’Malang’
22
4. Proses select (tampilkan)
Proses select sangat beragam. Sebelumnya select sudah dilakukan di proses insert, update,
dan delete tetapi hanya menampilkan data yang umum. Select kali ini akan menampilkan data
yg bervariasi.
a. Jika kita ingin menampilkan data dengan mengurut nama barang sesuai abjad maka
lakukan lah proses dibawah ini :
b. Jika kita ingin mengurutkan stok dari yang terbanyak hingga yang paling sedikit, maka
menggunakan syntax desc(kebalikan) seperti di bawah ini :
Jika tidak menggunakan syntax desc maka yang terjadi mengurutkan dari yang paling
sedikit hingga yang terbanyak
23
BAB X
Stored Procedure
Stored Procedure adalah sebuah kelompok kode SQL yang di simpan di katalog database dan
dapat di panggil kemudian oleh program, trigger atau bahkan stored procedure.Sebuah Stored
Procedure yang memanggil diri nya sendiri di sebut rekursif stored procedure. Mysql sendiri
mendukung penggunaan Stored Procedure sejak MySQL versi 5.x ke atas.
Keuntungan penggunaan stored procedure :
Meningkatkan performance aplikasi.
Sebuah Stored Procedure di simpan dan di compile di katalog database yang mana dapat di
eksekusi lebih cepat di bandingkan SQL yang tidak di compile dari kode aplikasi.
Mengurangi traffic antara aplikasi dan database server.
Aplikasi hanya mengirim nama stored procedure untuk mengeksekusi SQL.
Dapat di gunakan kembali dan transparent ke aplikasi yang ingin menggunakan nya.
Aman.
Penggunaan Stored Procedure dapat di akses hak nya oleh aplikasi oleh Database Administrator
24
Memberi Nilai ke variabel
Terdapat beberapa cara memberi nilai ke variabel, yaitu dengan cara :
- SET
Contoh :
DECLARE total_count INT DEFAULT 0
SET total_count =0
- SELECT … INTO
DECLARE total_product INT DEFAULT 0
SELECT COUNT(*) INTO total_products FROM products
25
Tahab Uji Coba
Untuk membuat stored procedure dapat menggunakan user Manajer karena pada user Manajer
diberikan seluruh hak akses. Untuk procedure logikanya seperti ini, jika kita ingin menambah data di
table Barang tetapi data tersebut sudah ada di table Barang maka yang terjadi adalah proses Update
pada stok, tetapi jika data yg ingin ditambah tidak ada di table Barang maka akan dilakukan proses
Insert. Jadi Syntax procedure nya akan seperti berikut :
1. Buat stored procedure dengan studi kasus seperti di atas
2. Tampilkan table Barang sebelum proses call, agar dapat mengetahui bagaimana perubahan
table setelah proses call dilakukan.
3. Proses call dapat dilakukan di user Karyawan2 karena telah diberi hak akses execute.
Lakukan proses call dengan data yang belum ada di table Barang seperti berikut :
4. Lakukan lagi proses call dengan data yang sudah ada di table Barang seperti berikut :
26
Maka yang terjadi adalah proses update yang awalnya kode barang 1001 memiliki stok 5
berubah menjadi 3.
5. Jika ingin melihat status dari stored procedure dapat dilakukan seperti berikut :
27
BAB XI
Function
Function yaitu sebuah kumpulan statement yang akan mengembalikan sebuah nilai balik pada
pemanggilnya. Nilai yang dihasilkan Function harus ditampung kedalam sebuah variabel.
Perbedaan function dan procedure, yaitu kalau function dia akan mengembalikan suatu nilai pada
pemanggilnya, sedangkan kalau procedure dia tidak akan mengembalikan nilai apapun pada fungsi
pemanggilnya.
Fungsi (Function) adalah suatu bagian dari program yang dipergunakan untuk mengerjakan suatu
tugas tertentu yang menghasilkan suatu nilai untuk dikembalikan ke program pemanggil dan
letaknya dipisahkan dari bagian program yang menggunakannya.
Manfaat Fungsi (Function)
1. Menghindari pengulangan
2. tujuannya untuk menghindari penulisan bagian kode program berulang-ulang.
3. Penataan program
4. program yang besar dan komplek dibagi-bagi menjadi aktivitas yang berbeda dan ditempatkan
dalam subrutine yang terpisah, sehingga setiap aktivitas bisa ditulis dan diperiksa secara
mandiri.
5. Kemandirian
6. mempunyai variabel “private” yaitu variabel yang tidak bisa diakses program pemanggil atau
subrutin lain.
Untuk membuat function di MySQL menggunakan perintah CREATE FUNCTION. Berikut versi
lengkapnya.
DELIMITER = adalah untuk memberi tahu kepada myql soal delimiter yang digunakan, secara
default menggunakan ; jadi bila ada tanda ; mysql akan mengartikan akhir dari statement, pada
contoh di atas delimeter yang digunakan $$ jadi akhir statementnya adalah $$
CREATE FUNCTION = adalah header untuk membuat function
RETURNS = adalah untuk menentukan tipe data yang di return-kan oleh function
28
DETERMINISTIC/ NOT DETERMINISTIC = adalah untuk menentukan yang bisa
menggunakan function ini adalah user pembuatnya saja (determinisric) atau user siapa saja (not
determinisric).
BEGIN END = adalah body dari function jadi semua SQL nya di tulis disini.
29
Tahap Uji Coba
Lakukan proses function di user Manajer dan saat proses select dapat dilakukan di user Karyawan2.
Untuk membuat function studi kasus yang digunakan adalah menampilkan jumlah catatan transaksi
barang yang tercatat di table Transaksi. Misalnya jika ingin mengetahui, sudah berapa banyak
transaksi yang kode barang nya 1001? Maka dengan function kita dapat menjawab pertanyaan
tersebut.
2. Tampilkan table Transaksi yang telah di buat dan datanya telah di isi
Table ini sudah berisikan data karena sebelum proses function, di lakukan proses Trigger dan
Transact yang nanti akan di bahas di BAB 7 dan 8
3. Lakukan proses select, tampilkan jumlah catatan yang kode barangnya 1001
Lihat jumlah yang di tampilkan apakah sudah sesuai dengan table Transaksi, jika sudah sesuai
maka proses fuction telah berhasil
Mengapa yang tampil ‘tidak ada catatan’? karena kode barang 1010 tidak ada di table
Transaksi
30
5. Jika ingin melihat status dari function dapat dilakukan cara berikut:
31
BAB XII
View dan Index
A. View
View merupakan suatu bentuk representasi data yang dapat dibuat dengan melibatkan data
yang ada pada satu atau beberapa tabel. Dengan menggunakan view dimungkinkan untuk
membuat hanya bagian tertentu dalam suatu tabel yang akan muncul.
Sebuah view hanya berisi baris dan kolom yang cocok dengan table yang ada di database.
View tidak memiliki data sendiri, tetapi data-datanya berasal dari tabel-tabel atau view lain.
View dibuat atau dibangun dengan SELECT statement. select_statement: Suatu statemen
SELECT yang menyediakan definisi dari view. Statemen ini dapat men-select dari tabel dasar
atau view yang lain.
Statemen ini membutuhkan CREATE VIEW privilege untuk view, dan beberapa privilege
untuk setiap kolom terpilih oleh statemen SELECT. View termasuk dalam komponen database.
Secara default, suatu view baru dibuat ke dalam database yang diaktifkan.
Tujuan membuat view :
Meningkatkan keamanan data
Meningkatkan kemandirian data
Penyederhanaan bagi end user (data yang sedikit, nama-nama kolom yang baru dan dapat
dibaca lebih baik.
Properti :
View mencakup subset kolom dan/ atau baris
View dapat berisikan data dari beberapa tabel dan/ atau tabel-tabel view lainnya
View dapat berisi perolehan data, misal : nilai rata- rata
Manipulasi data melalui view terbatas
Membuat view
Pernyataan SQL yang digunakan untuk membuat view adalah CREATE VIEW
mysql> create view view_name as
select column_name(s)
from table_name;
Menghapus view
Suatu view dapat dihapus dengan menggunakan perintah DROP VIEW.
mysql> drop view view_name;
B. Index
Index merupakan sebuah tabel spesial yang dapat digunakan untuk mempercepat
pengambilan data. Isi dari tabel di index adalah pointer menuju data di tabel.
Implementasi table index mirip dengan indeks yang ada di bagian belakang sebuah buku.
Sebuah indeks mempercepat pengambilan data yang terkait dengan klausa SELECT, WHERE,
atau ORDER BY, tetapi memperlambat masukan data dengan klausa INSERT dan UPDATE.
32
Index ini sangat bermanfaat sekali untuk proses pencarian data. Jika suatu tabel tidak ada
index, maka proses pencarian data bisa membutuhkan waktu yang lama (untuk data dalam
jumlah besar).
Para pengguna tidak dapat melihat index, mereka hanya digunakan untuk mempercepat query
dan akan digunakan oleh Database Engine Search untuk mencari catatan sangat cepat.
Pengguna index, baik digunakan pada field (column) :
Ketika sering menggunakan WHERE pada bagian query.
Ketika sering menggunakan ORDER BY pada bagian query.
Ketika memiliki banyak perbedaan nilai.
Ketika sering menggunakan JOIN pada bagian query.
Membuat index
SQL menyediakan perintah yang dipakai untuk menciptakan index, yaitu CREATE UNIQUE
INDEX dan CREATE INDEX.
Perintah CREATE UNIQUE INDEX digunakan untuk menciptakan index unik, yaitu index yang
hanya bisa merujuk ke sebuah record. Sebagai konsekuensinya, tidak boleh ada lebih dari satu record
yang nilai kolomnya (kolom yang diindex) yang bernilai sama. Indeks unik bukan hanya digunakan
untuk performa yang lebih baik, tetapi juga untuk memastikan integritas data. Jadi, tidak boleh ada
data duplikasi yang masuk ke sebuah kolom dari tabel tersebut.
Bentuk perintah index unik :
mysql> create unique index nama_index
on nama_tabel (nama_kolom_yang_diindex);
Apabila index melibatkan gabungan lebih dari satu kolom, nama-nama kolom dituliskan dalam tanda
kurung dengan pemisah antarnama kolom berupa koma.
Perintah CREATE INDEX berguna untuk membuat index tidak unik, yakni index yang
memungkinkan nilai kolom sejumlah record boleh sama.
Bentuk penggunaan perintah ini serupa dengan CREATE UNIQUE INDEX
Bentuk perintah index :
mysql> create index nama_index
on nama_tabel (nama_kolom_yang_diindex);
Menghapus Index
Untuk menghapus suatu index dalam tabel, Anda perlu menyebutkan nama index dan nama tabel
dalam perintah DROP INDEX
mysql> drop index nama_index
on nama_tabel;
33
Tahap Uji Coba
A. Proses View
Studi kasus nya adalah menampilkan sebuah table yang telah di kombinasikan dari 2 table yaitu
table Barang dan Table Transaksi
1. Buat view dari table Barang pilih nama_barang, dari table Transaksi pilih kejadian, kuantitas,
waktu, maka view nya akan seperti berikut:
3. Jika ingin memastikan bahwa data view diatas benar sesuai table Barang dan table Transaksi,
dapat dilakukan menampikan table masing- masing
B. Index
Untuk index, misalkan di table Barang memiliki data yang sangat banyak, sehingga jika kita
ingin mendapatkan informasi stok suatu barang akan membutuhkan waktu yang lama (bufering).
Dengan menggunakan index, waktu yang dibutuhkan menjadi sangat singkat.
34
1. Index ini hanya berfokus pada table Barang, buat index berikut:
35
BAB XIII
Trigger
Trigger digunakan untuk memanggil satu atau beberapa perintah SQL secara otomatis sebelum
atau sesudah terjadi proses INSERT, UPDATE atau DELETE dari suatu tabel. Sebagai contoh
misalnya kita ingin menyimpan id_barang secara otomatis ke tabel ‘log’ sebelum menghapus data di
tabel Barang.Trigger juga merupakan sebuah database object yang berasosiasi dengan tabel. Artinya
bahwa trigger itu bisa ada setelah tabel di buat. Ketika tabel di drop atau di hilangkan maka secara
otomatis semua trigger yang melekat di tabel itu juga ikut hilang.
Triggers mulai dikenal di versi MySQL 5.0, dan di versi saat ini (5.0.4) fungsionalitasnya sudah
bertambah. Pada versi selanjutnya (5.1) pihak pengembang MySQL berjanji akan lebih menguatkan
(menambah) fitur trigger ini.
Trigger sering digunakan, antara lain untuk:
Melakukan update data otomatis jika terjadi perubahan. Contohnya adalah dalam kasus barang,
jika barangditambah maka stok akan bertambah dan jika barangdikeluarkan maka stok akan
berkurang secara otomatis.
Trigger dapat digunakan untuk mengimplementasikan suatu sistem log. Setiap terjadi perubahan,
secara otomatis akan menyimpan ke tabel log.
Trigger dapat digunakan untuk melakukan validasi dan verifikasi data sebelum data tersebut
disimpan.
36
Trigger timing adalah waktu kapan trigger diaktifkan. Ada tiga macam trigger triming, yaitu :
1. BEFORE : trigger dijalankan sebelum DML event pada tabel.
2. AFTER : trigger dijalankan setelah DML event pada tabel.
3. INSTEAD OF : trigger dijalankan pada sebuah view.
Trigger event ada 3 kemungkinan : INSERT, UPDATE, atau DELETE. Pada saat trigger event
UPDATE, kita dapat memasukkan daftar kolom untuk mengidentifikasi kolom mana yang berubah
untuk mengaktifkan sebuah trigger (contoh : UPDATE OF salary ...). Jika tidak ditentukan, maka
perubahannya akan berlaku untuk semua kolom pada semua baris.
Insert : Terjadi ketika ada penambahan baru melalui pernyataan insert, load maupun replace
Update : Terjadi ketika ada modifikasi data melalui pernyataan update
Delete : Terjadi ketika ada penghapusan data melalui pernyataan delete maupun replace.
Bila anda akan mengompilasi trigger untuk insert tabel dan ada pernyataan yang melibatkan field
tabel tersebut, anda di wajibkan menyertakan klausa new, artinya anda di haramkan menambah klausa
old. Misal: insert into tabel1(a) values(new.a) atau update tabel1 set a=new.a where b=new.b. Jadi
tidak boleh menjadi begini: insert into tabel1(a) values(old.a)
Hal ini berbeda dengan saat update tabel, anda dapat menyertakan kedua klausa tersebut baik new
dan old. Misal: Update tabel1 set a=new.a where b=old.b;
Kebalikannya dengan delete, anda di haramkan menambahkan klausa new dan di wajibkan
menggunakan klausa old.
Mungkin anda berpikir apa bedanya trigger itu aktif saat sebelum dan sesudahnya, misal before
insert di bandingkan dengan after insert, before update dengan after update dan before delete dengan
after delete, dan bagaimana seharusnya di gunakan?
Jika event trigger itu before insert atau update, sangat berguna untuk merubah data yang akan
masuk di tabel yang ditumpangi trigger itu sendiri. Contoh sintak: if new.a='mbahdien' then
new.b=2000 else new.b=0;
Sedangkan after berguna bila berurusan dengan penambahan ataupun modifikasi data di tabel
lain.
Bila event trigger itu terjadi pada saat before delete, berguna untuk memasukkan data yang akan
di hapus ke tabel lain. Sedangkan after berguna untuk menghapus data di tabel lain.
Tipe trigger ada 2 macam yaitu :
1. Statement : trigger dijalankan sekali saja pada saat terjadi sebuah event. Statement trigger juga
dijalankan sekali, meskipun tidak ada satupun baris yang dipengaruhi oleh event yang terjadi
2. Row : trigger dijalankan pada setiap baris yang dipengaruhi oleh terjadinya sebuah event. Row
trigger tidak dijalankan jika event dari trigger tidak berpengaruh pada satu baris pun.
Trigger body mendefinisikan tindakan yang perlu dikerjakan pada saat terjadinya event yang
mengakibatkan sebuah trigger menjadi aktif.
37
contoh:
CREATE TRIGGER tabel2_after_ins_tr AFTER INSERT ON tabel2
FOR EACH ROW
BEGIN
insert into table1(a) values(new.a);
END;
Untuk tanda yang di beri kurung kotak(DEFINER = { user | CURRENT_USER }) adalah opsional
yang artinya boleh di pakai boleh juga tidak. Jika tidak di pakai maka secara otomatis defaultnya
adalah DEFINER=CURRENT_USER. Jadi berdasar contoh di atas maka sintaknya berubah seperti
ini:
Perbedaannya menyangkut hak akses privelegenya. Misal jika si user root itu tidak mempunyai hak
menginsert tabel maka saat anda login menggunakan user tersebut kemudian trigger tersebut aktif
dan di trigger tersebut ada perintah memasukkan data ke tabel lain maka otomatis ia gagal dan terjadi
error. Berbeda dengan definer=current_user, ia tetap berhasil memasukkan data ke tabel lain
meskipun si user root itu tidak punya hak menginsert tabel.
38
Tahap Uji Coba
Membuat trigger dapat dilakukan oleh user Manajer, memasukkan data (insert) dapat
dilakukan di Karyawan2. Studi kasus yang dibuat yaitu misalkan sebuah toko, toko tersebut membeli
barang dan menjual barang. Saat melakukan pembelian dan penjualan barang akan dicatat di table
Transaksi. Jika sebuah kejadian ‘tambah’ (pembelian barang) maka stok di table Barang otomatis
akan bertambah. Jika kejadian ‘kurang’ (penjualan barang) maka stok di table Barang otomatis akan
berkurang.
Jika ingin memasukan data di table transaksi, maka kode barang yang ingin dimasukan
harus ada di table Barang. Jika memasukkan kode barang yang tidak ada di table barang, maka yang
terjadi adalah data akan masuk di table Transaksi, tetapi tidak terjadi perubahan di table Barang. Maka
penyimpangan data akan terjadi.
2. Kosongkan data di table Transaksi dan tampilkan table Barang sebelum proses insert, agar
dapat mengetahui perubahan pada stok barang.
3. Kemudian lakukan proses insert kejadian ‘tambah’ dan pastikan data sudah masuk di table
Transaksi serta stok di table Barang bertambah.
39
4. Lakukan lagi proses insert kejadian ‘tambah’, untuk membuat variasi data dan tampilkan table
Barang dan Transaksi untuk melihat lagi perubahan table
5. Lakukan proses insert untuk kejadian ‘kurang’ dan lihat kembali perubahan table, apakah stok
di table Barang berkurang.
6. Jika ingin melihat status dari trigger dapat dilakukan syntax berikut :
40
BAB XIV
Transaction
Transaksi adalah satu atau beberapa aksi program aplikasi yang mengakses/mengubah isi basis
data.Transaksi merupakan bagian dari pengeksekusian sebuah program yang melakukanpengaksesan
basis data dan bahkan juga melakukan serangkaian perubahan data.
DBMSyang kita gunakan harus menjamin bahwa setiap transaksi harus dapat dikerjakan
secarautuh atau tidak sama sekali. Tidak boleh ada transaksi yang hanya dikerjakan sebagian,karena
dapat menyebabkan inkonsistensi basis data. Untuk itu transaksi selalu merubahbasis data dari satu
kondisi konsisten ke kondisi konsisten lain.
Tujuan
Transaksi bertujuan untuk mencegah dari kehilangan ataupun kerusakan data. Untuk menjamin
agar integritas dapat tetap terpelihara maka setiap transaksi harus memiliki sifat-sifat:
1. Atomicity, dimana semua operasi dalam transaksi dapat dikerjakan seluruhnya atau tidak
sama sekali.
2. Consistency, dimana eksekusi transaksi harus dapat menjamin data tetap konsisten setelah
transaksi berakhir.
3. Isolation, jika pada sebuah sistem basis data terdapat sejumlah transaksi yang dilaksanakan
secara bersamaan, maka semua transaksi yang dilaksanakan pada saat yang bersamaan
tersebut harus dapat dimulai dan bisa berakhir.
4. Durability, dimana perubahan data yang terjadi setelah sebuah transaksi berakhir dengan
baik, harus dapat bertahan bahkan jika seandainya sistem mati.
Terhentinya suatu transaksi tidak selalu diakibatkan oleh kegagalan insidental baik dari
perangkat keras (crash) ataupun kemacetan sistem operasi (hang). Tapi lebih sering terjadi karena
user sengaja menghentikan transaksi atau karena penghentian transaksi oleh DBMS akibat adanya
kondisi tak diinginkan, seperti deadlock atau timeout.
Transaksi yang sudah di commit tidak dapat dibatalkan lagi. Jika ada kesalahan, maka harus
dilakukan transaksi lain yang membalik dampak transaksi sebelumnya.
Status yang dapat dicapai oleh sebuah transaksi sejak mulai dilaksanakan hingga selesai atau
batal adalah:
1. Aktif (Active) yang merupakan status awal (initial state) sebuah transaksi yang
menunjukkan transaksi tersebut masih dieksekusi.
2. Berhasil Sebagian (Partially Committed), yaitu keadaan yang dicapai transaksi tepat pada
saat operasi terakhir dalam transaksi selesai dikerjakan.
3. Gagal (Failed), yang merupakan keadaan dimana sebuah transaksi terhenti
pengeksekusiannya sebelum tuntas sama sekali.
4. Batal (Aborted), yaitu keadaan dimana sebuah transaksi dianggap tidak/belum dikerjakan
yang tentu dengan terlebih dahulu diawali dengan mengembalikan semua data yang telah
diubah ke nilai-nilai semula. (yang menjadi tanggung jawab DBMS).
41
5. Berhasil Sempurna (Committed), keadaan dimana transaksi telah dinyatakan berhasil
dikerjakan seluruhnya dan basis data telah merefleksikan perubahan-perubahan yang
memang diinginkan transaksi.
State-state dari transaksi
Perlu diketahui kapan suatu transaksi mulai, selesai melakukan operasi apa aja, dan commit
untuk keperluan recovery.
1. BEGIN_TRANSACTION : Mulai Transaksi
2. READ/WRITE : Operasi-operasi pada transaksi
3. END_ TRANSACTION : Akhir transaksi, diperiksa apakah perubahan yang
disebabkan suatu transaksi dapatdibuat permanen
atau harus digagalkan
4. COMMIT_TRANSACTION : Memberi signal bahwa suatu transaksi sukses
5. ROLLBACK (abort) : Memberi signal bahwa suatu transaksi gagal hingga semua
perubahan pada basis data harus dihapus.
42
Mesin Penyimpanan
Secara khusus tipe InnoDB akan dibahas karena mendukung fitur transaksi. Fitur ini sangat
bermanfaat karena memungkinkan penanganan Commit dan Rollback, yang biasanya tersedia pada
DBMS komersial.
Perlu diketahui, walaupun InnoDB mendukung transaksi, bukan berarti InnoDB lebih baik
daripada tipe seperti MyISAM. Bila Anda memang tidak memerlukan transaksi akan lebih baik kalau
menggunakan tipe seperti MyISAM karena kinerja menjadi lebih cepat. Selain itu, perlu juga
diketahui bahwa implementasi InnoDB masih memiliki beberapa batasan, antara lain tidak
mendukung tipe kolom spasial dan proses untuk menghitung semacam SELECT COUNT(*) FROM
table berjalan lebih lama daripada pada MyISAM karena implementasi InnoDB secara internal tidak
tercatat jumlah baris dalam tabel.
Untuk menciptakan tabel bertipe InnoDB, perlu penambahan ENGINE=InnoDB di bagian belakang
pernyataan CREATE TABLE. Untuk mempraktikkan hal ini, berikan perintah berikut terlebih dulu
untuk mengaktifkan database test.
Dengan cara seperti itu mesin penyimpanan yang digunakan untuk tabel stok berupa InnoDB.
Memahami Transaksi
Sebuah transaksi adalah sederetan operasi yang berkedudukan sebagai satu kesatuan proses.
Dalam dunia nyata, proses pengambilan uang melalui ATM merupakan contoh sebuah transaksi, yang
mencakup pemasukan kartu ATM, pemasukan nomor PIN (Personal Identification Number),
penentuan jumlah uang yang akan diambil, hingga pengambilan uang itu sendiri. Dalam proses
transaksi seperti itu, ada dua kemungkinan yang seharusnya dipenuhi, yaitu :
Bayangkanapa yang akan terjadi seandainya komputer telah mengurangi saldo dalam tabel tabungan
pemakai, tetapi tiba-tiba mesin tidak bisa mengeluarkan uang. Semestinya jika hal itu terjadi, pemakai
harus dianggap seperti kalau tidak melakukan proses apapun. Kasus yang lain, pihak Direksi
memutuskan untuk menaikkan gaji seluruh pegawai sebesar 20%. Ketika proses pemutakhiran
berlangsung baru setengah jalan, ada masalah dalam sistem. Seandainya data yang telah diperbaharui
43
tidak dianggap gagal (dikembalikan ke keadaan semula), maka terjadi hal yang tidak konsisten yaitu
ada data gaji yang sudah dinaikkan, tetapi ada yang belum.Untuk mengantisipasi keadaan seperti
itulah, SQL menyediakan perintah untuk menangani transaksi.Tujuannya adalah untuk menjamin agar
tidak terjadi perubahan yang bersifat parsial kalau sesuatu kesalahan terjadi sebelum suatu transaksi
berjalan secara lengkap.
Satu Satu
TRANSAKSI TRANSAKSI
Pernyataan 1; Pernyataan 1;
Pernyataan 2; Pernyataan 2;
….. …..
Perintah Perintah
dalam dalam
ROLBACK; COMMIT;
satu satu
Untuk menandai awal sebuah transaksi dan tanpa memperhatikan mode AUTOCOMMIT, MySQL
….. transaksi ….. transaksi
menyediakan pernyataan bernama BEGIN pernyataan COMMIT atau ROLLBACK dieksekusi.
44
dua orang pemakai memperoleh informasi bahwa terhadap 10 kursi, sedangkan dalam waktu
yang sama pemakai yang lain mengalokasikan 3 buah kursi. Ilustrasi berikut.
Dengan mekanisme seperti di atas tampak bahwa kursi yang kosong bernilai 7, padahal semestinya
yang benar adalah 3.
2. Pembacaan Kotor
Pembacaan kotor terjadi jika suatu data yang telah diperbarui tetapi belum melewati
COMMIT dibaca oleh pemakai lain. Kasus pembacaan kotor menimbulkan massalah
sekiranya tiba-tiba pemakai yang melakukan pemutakhiran data melakukan pembatalan,
sementara itu pemakai lain telah terlanjur membaca data yang telah diperbarui. Untuk lebih
jelasnya perhatikan gambar berikut.
Tampak bahwa transaksi kedua melihat kolom kosong bernilai 6, tetapi ternyata sebentar kemudian
nilai kolom tersebut telah berubah menjadi 10 (akibat ROLLBACK).
45
Tampak bahwa semula kolom kosong bernilai 10, tetapi sebentar kemudian telah berubah
menjadi 6. Hal seperti ini menjadi masalah sekiranya transaksi kedua berupa suatu proses
yang membaca data dalam waktu yang lama, misalnya membuat suatu ringkasan
4. Penyisipan yang Tak Dikehendaki
Penyisipan yang tidak dikehendaki merupakan kasus khusus dari pembacaan yang tidak sama.
Hal ini terjadi kalau ada instruksi INSERT saat pemakai lain sedang melakukan suatu query
tersebut belum berakhir. Penyisipan ini akan menimbulkan perbedaan hasil yang diperoleh
oleh pemakai lain.
Penanganan Multiuser
Mekanisme penanganan multiuser (pengaksesan secara serentak oleh sejumlah pemakai terhadap
database) biasa disebut dengan istilah penguncian (locking).Penguncian oleh para pemakai dapat
dilakukan terhadap semua baris atau sejumlah baris dalam database.
Secara bawaan MySQL melakukan penguncian secara otomatis, tetapi ada kalanya penguncian harus
dilakukan secara manual.Gambar 17.9 melukiskan contoh pemutakhiran data yang tidak melalui
penguncian secara manual.
46
Pada contoh di atas, siapapun dapat melakukan proses untuk mengubah baris tersebut sebelum
UPDATE dilakukan. Sebagai akibatnya, perintah UPDATE yang mengubah jumlah menjadi 17 dapat
memberikan hasil yang salah terhadap kolom tersebut.
Jika Anda tidak menghendaki orang lain mengubah baris tersebut sebelum pemakai pertama
memberikan COMMIT, Anda bias menambahkan FOR UPDATE pada perintah SELECT. Perhatikan
gambar berikut:
Pada contoh di atas, baris dengan kode_brg‘P-001’ tetap dalam keadaan terkunci dan baru akan
dilepaskan ketika COMMIT dijalankan. Penguncian dilakukan melalui FOR UPDATE pada
pernyataan SELECT. Akibatnya sebelum COMMIT, orang lain tidak bias mengubah baris tersebut
(harus menunggu sampai pemakai yang mengunci memberikan COMMIT atau waktu tunggu habis).
Selain FOR UPDATE, klausa LOCK IN SHARE MODE juga bisa dipakai. Kedua klausa tersebut
sama-sama melindungi dari kemungkinan orang lain melakukan perubahaan pada baris yang dikunci.
Perbedaannya, SELECT-FOR UPDATE hanya bisa dijalankan oleh satu pemakai, sedangkan
SELECT-FOR SHARE MODE bisa dijalankan oleh banyak pemakai.
47
Penguncian Secara Otomatis
MySQL menerapkan penguncian secara otomatis terhadap sejumlah perintah yang mutakhirkan
database.Beberapa pernyataan yang menggunakan penguncian secara otomatis adalah sebagai berikut.
Pernyataan UPDATE
Saat UPDATE dieksekusi, semua baris yang termodifikasi akan dikunci. Bila ada yang
mutakhirkan baris yang sama, yang UPDATE yang belakangan harus menunggu sampai
UPDATE yang pertama mengalami COMMIT.
Pernyataan INSERT
Pernyataan INSERT membuat semua kunci primer atau kunci yang unik akan dikunci. Hal
inilah yang memungkinkan pencegahan kunci yang kembar.
Pernyataan SELECT dengan klausa FOR UPDATE dan LOCK IN SHARE MODE
Saat SELECT dengan FOR UPDATE dan LOCK IN SHARE MODE dieksekusi, semua
baris yang dihasilkan akan dikunci sampai ada COMMIT atau ROLLBACK.
48
Tahap Uji Coba
Studi kasus yang digunakan pada proses transact sama dengan trigger tetapi trigger dapat terjadi
penyimpangan data apabila kode barang yang dimasukkan tidak ada di table Barang. Berbeda dengan
transact apabila kode barang yang dimasukkan tidak ada di table Barang maka yang terjadi tidak ada
perubahan di kedua table. Karena adanya syntax Commit dan Rollback. Jadi penyimpangan data tidak
akan terjadi pada proses transact.
1. Buat transact untuk kejadian ‘tambah’ dengan nama “insert_tambah” yang dikombinasikan
dengan procedure sesuai studi kasus di atas.
3. Tampilkan kondisi table Transaksi dan table Barang agar dapat mengetahui perubahan di
setiap table.
49
4. Lakukan proses call insert_tambah dan lihat perubahan stok table Barang apakah stok
bertambah.
5. Lakukan proses call insert_kurang dan lihat apakah stok di table Barang berkurang
50
6. Lakukan lagi proses call inser_tambah tetapi masukkan kode barang yang tidak ada di table
Barang. Lihat perubahannya jika kedua table tidak mengalami perubahan maka proses
transact diatas berhasil.
7. Jika ingin melihat status dari transact maka dapat dilakukan cara berikut :
Prosesnya sama seperti melihat status procedure karena transact ini telah dikombinasikan
dengan procedure.
51
Kesimpulan
Masalah keamanan (security) di MySQL merupakan hal yang tidak boleh dianggap sepele apalagi
dikesampingkan.MySQL merupakan software database yang bersifat client-server, yang
memungkinkan beberapa user dapat mengakses server MySQL dari mana pun.Untuk itu, server
MySQL harus benar-benar aman dari akses (serangan) orang-orang yang tidak berhak.
DDL merupakan kelompok perintah yang berfungsi untuk mendefinisikan atribut-atribut basis data,
tabel, atribut(kolom), batasan-batasan terhadap suatu atribut, serta hubungan antar tabel. Yang
termasuk dalam kelompok DDL ini adalah CREATE, ALTER, dan DROP.
Data Manipulation Language (DML) adalah sub bahasa SQL yang berfungsi memanipulasi data yang
ada di dalam basis data atau database. Manipulasi Data (DML) digunakan oleh programkomputer atau
pengguna database untuk menyisipkan, menghapus dan mengupdate data dalam database.
Mysql versi 5.0 memiliki beberapa syntax atau objek yang dapat memudahkan pengguna dalam
melakukan DBMS yaitu Stored Procedure, Function, View & Index, Trigger, dan Transaction.
Masing masing mempunyai kelebihan dan kekurangan, jika ingin digunakan maka sesuaikan dengan
studi kasus yang telah dibuat.
52