LK 03b (SQL - DDL, DML, Trigger, Procedure, Function)
LK 03b (SQL - DDL, DML, Trigger, Procedure, Function)
Masuk ke mysql :
Jika menggunakan port default dan password tertentu
mysql –u root –p password
Jika menggunakan port 3307 dan password tertentu
Mysql –u root –port=3307 –h localhost –p password
Menciptakan Database :
create database pendaftaran;
Menghapus Database :
drop database pendaftaran;
Menciptakan Table :
Create table data_diri(
no int(3),
nama varchar(35),
alamat varchar(60),
email varchar(40),
no_telepon varchar(15),
jenis_kelamin char(1));
Menampilkan Table :
Show tables;
1|Page
Melihat Struktur Table :
Desc data_diri; atau
Describe data_diri;
Menghapus table :
Drop table data_diri;
3|Page
Menghapus Field :
Alter table data_diri drop gol_darah;
Contoh :
Insert into user(Host, User, Password) values (‘localhost’,’gibran’,MD5(‘if290216’));
Flush privileges;
4|Page
c. Input Data :
insert into tamu(no,nama,alamat,email,no_telp) values
('1','Boi Triyono','Ujungberung','[email protected]','085613548789');
atau
insert into tamu values
('2','Bray Triyana','Cibiru','[email protected]','085555222999');
6|Page
4. Menampilkan data dengan BETWEEN
Between artinya antara, between berfungsi untuk menampilkan data yang tertentu misalnya
antara 2000 s.d. 5000. Untuk menampilkan data dengan between sebelumnya kita harus
membuat table yang didalamnya terdapat data dengan type int (angka).
7|Page
select * from t_barang where harga_brg between 37500 and 45000;
8|Page
7. Menampilkan data dengan pengelompokkan data (group by)
select * from t_barang group by nama_barang;
b. Fungsi SUM
select sum(harga_brg) from t_barang;
c. Fungsi AVG
select AVG(harga_brg) from t_barang;
9|Page
d. Fungsi MIN
select min(harga_brg) from t_barang;
e. Fungsi MAX
select max(harga_brg) from t_barang;
b. Fungsi RIGHT(x,n)
select * from t_barang where right(kode_brg,1)="2";
10 | P a g e
c. Fungsi MID(x,n,z)
select * from t_barang where mid(kode_brg,2,1)="P";
FROM A, B
sama dengan
ON A.kolom1 = B.kolom3
Implementasi:
11 | P a g e
Tipe join ini akan mengambil semua row dari table asal dan table tujuan dengan kondisi nilai
key yang terkait saja, dan jika tidak maka row tersebut tidak akan muncul. Kalau tidak
terdapat kondisi key terkait antar table, maka semua row dari kedua table dikombinasikan.
2 ON karyawan.karyawan_id=gaji.karyawan_id;
Record yang ditampilkan sebanyak 5 record. Karena INNER JOIN hanya memperhitungkan
kondisi key yang terkait antara table karyawan dengan table gaji.
Sedangkan karyawan dengan karyawan_id=’006’ tidak ditampilkan, karena tidak terkait
dengan table gaji.
menampilkan semua data sebelah kiri dari table yang di joinkan dan menampilkan data
sebelah kanan yang cocok dengan kondisi join. Jika tidak ditemukan kecocokan, maka akan
Contoh:
2 ON karyawan.karyawan_id=gaji.karyawan_id;
12 | P a g e
Record yang ditampilkan sebanyak 6 record. Karena LEFT JOIN akan menampilkan semua
table sebelah kiri dari kondisi join yaitu table karyawan.
Semua data pada table karyawan akan ditampilkan, meskipun tidak ada kecocokan key pada
table gaji.
Jika dibuat diagram venn-nya akan terlihat seperti gambar berikut:
Selain kondisi diatas, LEFT JOIN juga bisa menampilkan data yang hanya kondisi key pada
table tamu (foreign key) kosong (NULL).
Contoh:
2 ON karyawan.karyawan_id=gaji.karyawan_id
13 | P a g e
Data yang ditampilkan hanya 1 record. Hal ini dikarenakan, hanya ada satu data yang belum
antara kedua LEFT JOIN ini coba perhatikan diagram venn berikut:
Dengan melihat perbedaan dari diagram venn tersebut, maka Anda akan mudah memahami
bagaimana left join ini bekerja.Ingat LEFT JOIN ini sangat penting untuk anda pahami, karena
disaat Anda mulai mengerjakan project yang cukup kompleks, maka anda akan banyak
Contoh pada kasus diatas, hanya dengan memanfaatkan left join kita bisa menampilkan
semua data karyawan yang sudah ada gajinya dan siapa yang belum ada gajinya.
14 | P a g e
Selain itu anda juga dapat menampilkan semua data karyawan yang belum ada gajinya
Kebalikan dari LEFT JOIN adalah RIGHT JOIN, atau biasa juga dikenal dengan RIGHT OUTER
JOIN. RIGHT JOIN akan menampilkan semua data yang ada di table sebelah kanan dan
mencari kecocokan key pada table sebelah kiri. Jika tidak ditemukan kecocokan, maka akan
di set NULL secara otomatis pada table sebelah kiri.
Contoh:
2 ON gaji.karyawan_id=karyawan.karyawan_id;
Pada output diatas, anda dapat melihat bahwa terdapat NULL pada table sebelah kiri. Hal ini
dikarenakan tidak ditemukan kecocokan key diantara kedua table. Untuk lebih mudah
memahaminya, perhatikan diagram venn berikut:
15 | P a g e
Selain kondisi diatas, RIGHT JOIN juga bisa menampilkan data yang hanya kondisi key pada
table tamu (foreign key) kosong (NULL).
Contoh:
2 ON gaji.karyawan_id=karyawan.karyawan_id
Data yang ditampilkan hanya 1 record. Hal ini dikarenakan, hanya ada satu data yang belum
memiliki kecocokan key pada table tamu. Untuk mempermudah anda memahami perbedaan
antara kedua RIGHT JOIN ini coba perhatikan diagram venn berikut:
Perhatikan diagram venn diatas, dan bandingkan dengan diagram venn sebelumnya.
16 | P a g e
LEMBAR KERJA | PEMBUATAN TRIGGER (1)
Membuat database akademik :
create database akademik;
17 | P a g e
Input data mahasiswa :
insert into mahasiswa values
('00543','Ahmad','Karang Malang A-50','P01'),
('10043','Ahmad Sholihun','Karang Malang D-17','P02'),
('10041','Sugiharti','Karang Malang A-23','P02');
Keterangan :
Maksud perintah trigger diatas adalah :
Apabila perintah insert dilakukan pada tabel mahasiswa maka secara otomatis tabel log_mhs akan
dilakukan perintah insert Tambah data dan Waktu.
Contoh :
insert into mahasiswa values ('00631','Hanif','Kalasan','P01');
select * from mahasiswa;
18 | P a g e
select * from log_mhs;
Keterangan :
Maksud perintah trigger diatas adalah :
Apabila perintah update dilakukan pada tabel mahasiswa maka secara otomatis tabel log_mhs akan
dilakukan perintah insert Ubah Data dan waktu.
Contoh :
update mahasiswa set nama='Moh. Riyan' where nim='00543';
select * from log_mhs;
Keterangan :
Maksud perintah trigger diatas adalah :
Apabila perintah delete dilakukan pada tabel mahasiswa maka secara otomatis tabel log_mhs akan
dilakukan perintah insert Hapus Data dan waktu.
Contoh :
Delete from mahasiswa where nim='00631';
19 | P a g e
select * from log_mhs;
20 | P a g e
Membuat Trigger kurangi_stok :
create trigger kurangi_stok after insert on penjualan
for each row update barang set stok=stok-new.jumlah
where kd_barang=new.kd_barang;
Menampilkan Trigger :
show triggers;
Pengujian Trigger :
4. Tampilkan data pada tabel Barang (setelah melakukan insert pada table penjualan):
Select*from barang;
21 | P a g e
LEMBAR KERJA | PEMBUATAN PROCEDURE (1)
Membuka database akademik :
use akademik;
delimiter //
create procedure pMhsIlkom(OUT x varchar(25))
begin
select nama into x from mahasiswa where kode_prodi='P01';
end
//
call pMhsIlkom(@Nama);
select @Nama;
//
22 | P a g e
LEMBAR KERJA | PEMBUATAN PROCEDURE (2)
Membuka database akademik :
use akademik;
delimiter //
call pMhs(@Nama,@Alamat,'P01');
select @Nama,@Alamat;
//
23 | P a g e
LEMBAR KERJA | PEMBUATAN FUNCTION
Membuka database akademik :
use akademik;
delimiter //
call pMhs(@Nama,@Alamat,'P01');
select @Nama,@Alamat;
//
24 | P a g e
LEMBAR KERJA | PEMBUATAN VIEW
Membuka database akademik :
use akademik;
25 | P a g e
Menampilkan VIEW vDetailMhs :
select * from vDetailMhs;
Keterangan :
Dari contoh diatas dapat dijelaskan bahwa view tersebut berisi informasi mahasiswa (nim, nama,
alamat) dan informasi prodi mahasiswa yang bersangkutan (nama_prodi dan jurusan). Implementasi
view dalam program aplikasi adalah untuk memudahkan dalam mendesain laporan(report).
26 | P a g e
LEMBAR KERJA | Penggunaan RollBack
Membuka database akademik :
use akademik;
27 | P a g e
Keterangan :
Rollback adalah perintah yang di gunakan untuk mengembalikan ke posisi data sebelum START
TRANSACTION, atau bisa dibilang fungsi rollback sama seperti restore data.
28 | P a g e
Data pada table mahasiswa setelah dilakukan 2 kali Insert :
Keterangan :
Insert data yang ditambahkan Commit akan tetap dilakukan walaupun dibawahnya ditambahkan
Rollback. Commit digunakan untuk membuat data tidak berubah kembali meskipun menggunakan
perintah rollback.
29 | P a g e
30 | P a g e