Mysql

76
Universitas Nasional Pasim | DBMS | Kelompok MySQL | 2013 Now, our Presentation is about

Transcript of Mysql

Page 1: Mysql

Universitas Nasional Pasim | DBMS | Kelompok MySQL | 2013

Now, our Presentation is about

Page 2: Mysql

Presenter

Andi Sopandi

Husnul K. (0203122062)

Hygsan

Asep Ardi Winardi Salam

Page 3: Mysql

Poin Pembahasan

Installasi 5

Studi Kasus & Demo 6

Spesifikasi 4 Sejarah 1

Kelebihan & Kekurangan 3

Teknologi / Fitur 2

Page 4: Mysql

Sejarah

Page 5: Mysql

Sejarah MySQL 1

Tahun 1979 Michael Widenius (Monty) at TcX

UNIREG

TcX mengembangkan UNIREG dengan interface builder yang menggunakan low-

level connection ISAM storage

UNIREG terlalu sulit untuk dikembangkan menjadi web base interface, sehingga

TcX mulai mencari alternatif lain.

Mencoba menggunakan mSQL, namun tidak mensupport indexing

Page 6: Mysql

Sejarah MySQL 1

Tahun 1995 Perusahaan TcX

MySQL UNIREG + mSQL

Monty mengajak David Huges, yaitu seorang pembuat mSQL, agar tertarik untuk

menghubungkan antara mSQL dengan UNIREG B+ ISAM sehingga

mampu menyediakan indexing untuk mSQL

melakukan kombinasi antara API mSQL dengan sistem UNIREG

MySQL pertama versi 1.0

Page 7: Mysql

Sejarah MySQL 1

Tahun 1998 Perusahaan TcX MySQL AB

MySQL versi 3.11 menjadi Open Source dan merilis software dibawah GPL (General

Public Licence)

Perubahan ini memungkinkan kontrol komersial yang lebih baik dalam

pengembangan dan support dari MYSQL

TcX berubah nama menjadi MySQL AB (Swedia)

Page 8: Mysql

Sejarah MySQL 1

Tahun 2008 Sun Microsystem, Inc

Sun Microsystems, Inc mengumumkan aksi korporasi - akuisisi terhadap MySQL AB

MySQL AB

Sun menjadi salah satu perusahaan dengan produk platform open source terbesar seperti Java, OpenSolaris dan akhirnya MySQL

Page 9: Mysql

Sejarah MySQL 1

Tahun 2009 Oracle

Oracle melakukan akusisi terhadap Sun Microsystems.

Sun Microsystem, Inc

Berkembang isu Oracle yang memiliki produk database yang berkompetisi dengan MySQL akan mematikan MySQL. Namun sampai sejauh ini hal tersebut belum terbukti

Page 10: Mysql

Teknologi / fitur

Page 11: Mysql

Teknologi / Fitur-fitur MySQL 2

Security 5

Scalability and Limits

Connectivity

Client & Tools

6

7

8

Portability 1

Data Types

Localization

Statements & Functions

2

3

4

Page 12: Mysql

1. Portability

MySQL dapat berjalan stabil pada berbagai platform :

Teknologi / Fitur-fitur MySQL

Windows, Linux, FreeBSD, Mac Os X Server, Solaris, Amiga, Novell NetWare dan lain-lain.

http://dev.mysql.com/doc/refman/5.0/en/supported-os.html

2

Page 13: Mysql

2. Data Types

MySQL memiliki ragam tipe data yang sangat kaya, seperti signed

( -128 to 127) / unsigned ( 0 to 255) integer, float, double, char, varchar, binnary,

text, blob, date, datetime, timestamp, year, dan tipe spatial OpenGIS dan lain-lain.

http://dev.mysql.com/doc/refman/5.6/en/data-types.html

Teknologi / Fitur-fitur MySQL 2

Page 14: Mysql

3. Statements & Functions

MySQL memiliki operator dan fungsi secara penuh yang mendukung perintah

Select dan Where dalam perintah (query).

Teknologi / Fitur-fitur MySQL

Full support untuk SQL GROUP BY dan ORDER BY

Support untuk LEFT OUTER JOIN and RIGHT OUTER JOIN sesuai standar SQL dan sintak ODBC.

2

Page 15: Mysql

4. Localization

MySQL dapat mendeteksi pesan error pada klien dengan menggunakan lebih

dari dua puluh bahasa. Meski pun demikian, bahasa Indonesia belum

termasuk di dalamnya.

Teknologi / Fitur-fitur MySQL 2

Page 16: Mysql

5. Security

Hak akses dan password sistem dapat dikontrol secara fleksibel, dan berbasis

host verification.

Teknologi / Fitur-fitur MySQL

Sekuritas Password dengan menggunakan encryption untuk semua lalu lintas

password ketika melakukan koneksi ke server.

2

Page 17: Mysql

6. Scalability and Limits

MySQL mampu menangani basis data dalam skala besar, dengan jumlah record sampai

50 juta dan 200 ribu tabel serta 5 milyar baris. Selain itu batas indeks yang

dapat ditampung mencapai 64 indeks pada tiap tabelnya

Teknologi / Fitur-fitur MySQL 2

http://dev.mysql.com/doc/refman/5.6/en/features.html

Page 18: Mysql

7. Connectivity

Client dapat terhubung ke MySQL Server menggunakan berbagai protokol : protokol TCP/IP, Unix soket (UNIX), atau Named Pipes (NT).

Teknologi / Fitur-fitur MySQL

Tersedia API untuk C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, and Tcl sehingga

memungkinkan MySQL client ditulis dalam berbagai bahasa pemrograman.

2

Mendukung ODBC (Open Database Connectivity), JDBC (java konektor) & MySQL

Connector/.Net (.Net konektor).

Page 19: Mysql

8. Client & Tools

MySQL menyediakan berbagai client dan utility program. Diantaranya command-line

program seperti mysqldump and mysqladmin, dan grafikal program seperti

MySQL Workbench, SQLyog, HeidiSQL, Navicat, Toad dll.

Teknologi / Fitur-fitur MySQL 2

Page 20: Mysql

Kelebihan & Kekurangan

Page 21: Mysql

Kelebihan & Kekurangan MySQL 3

disokong oleh komunitas pengguna yang besar

Mendukung web base Client

FOSS (Free & Opensource Software) dibawah GPL (General Public License)

Kelebihan

http://www.mysql.com/why-mysql/

Hampir semua perusahaan web-hosting menyediakan akses ke MySQL.

Page 22: Mysql

Kelebihan & Kekurangan MySQL 3

Kekurangan

Tidak support untuk case sensitive

Lisensi komersial untuk redistribusi komersial

Page 23: Mysql

Spesifikasi

Page 24: Mysql

Spesifikasi MySQL 4

Mendukung OS baik versi 32-bit maupun 64-bit.

Support TCP/IP.

RAM min 215 Mb.

Hardware & Software

Page 25: Mysql

Installasi

Page 26: Mysql

Installasi MySQL

Installasi MySQL 5

Download MySQL for windows

dan install

http://dev.mysql.com/downloads/installer/

Page 27: Mysql

Installasi MySQL

5

Page 28: Mysql

Installasi MySQL

5

Page 29: Mysql

Installasi MySQL

5

Page 30: Mysql

Installasi MySQL

5

Page 31: Mysql

Installasi MySQL

5

Page 32: Mysql

Installasi MySQL

5

Page 33: Mysql

4 Installasi MySQL

Page 34: Mysql

Installasi MySQL

5

Page 35: Mysql

Installasi MySQL

5

Page 36: Mysql

Installasi MySQL

5

Page 37: Mysql

Installasi MySQL

5

Page 38: Mysql

Installasi MySQL

5

Page 39: Mysql

Installasi MySQL

5

Page 40: Mysql

Installasi MySQL

Installasi MySQL 5

Download XAMPP for windows

dan install

http://www.apachefriends.org/en/xampp-windows.html/

Page 41: Mysql

Installasi MySQL

5

Page 42: Mysql

Installasi MySQL

5

Page 43: Mysql

Installasi MySQL

5

Page 44: Mysql

Installasi MySQL

5

Page 45: Mysql

Installasi MySQL

5

Page 46: Mysql

Installasi MySQL

5

Page 47: Mysql

Studi Kasus & Demo

Page 48: Mysql

Pengelolaan Stok Barang

Mencatat seluruh data barang berdasarkan kategorinya.

Studi Kasus 6

Mencatat data masuk dan keluar barang per hari.

Mencatat histori masuk dan keluar per data barang.

Page 49: Mysql

Mencatat seluruh data

barang berdasarkan

kategorinya.

Studi Kasus 6

Page 50: Mysql

Mencatat data barang

masuk dan keluar

per hari.

Studi Kasus 6

Page 51: Mysql

Mencatat

histori masuk

dan keluar per

data barang.

6

Page 52: Mysql

Entitas yang terlibat

Studi Kasus 6

Customer +

Supplier +

Barang +

Kategori +

Page 53: Mysql

Relasi antar Entitas

Studi Kasus 6

Page 54: Mysql

Tabel - tabel

Studi Kasus 6

1. m_barang

2. m_customer

3. m_supplier

4. r_kategori_barang

5. t_transak_keluar

6. t_det_transak_keluar

7. t_log_transak_keluar

8. t_log_det_transak_keluar

9. t_transak_masuk

10.t_det_transak_masuk

11.t_log_transak_masuk

12.t_log_det_transak_masuk

Page 55: Mysql

Procedure

Studi Kasus 6

1. sp_GetAllBarang()

2. sp_GetBarangById()

3. sp_GetCustomerByNama()

4. sp_InsertTransakMasuk()

5. sp_InsertDetTransakMasuk()

6. sp_InsertTransakKeluar()

7. sp_InsertDetTransakKeluar()

8. sp_UpdateTransakMasuk()

9. sp_UpdateDetTransakMasuk()

10.sp_UpdateTransakKeluar()

11.sp_UpdateDetTransakKeluar()

12.sp_DeleteTransakMasuk()

13.sp_DeleteDetTransakMasuk()

14.sp_DeleteTransakKeluar()

15.sp_DeleteDetTransakKeluar()

Page 56: Mysql

Function

Studi Kasus 6

1. fn_getTotalTransakMasukByNoSuratJalan()

2. fn_getTotalTransakKeluarByNoSuratJalan()

Page 57: Mysql

Trigger

Studi Kasus 6

1. after_insert_t_transak_masuk

2. after_insert_t_det_transak_masuk

3. after_update_t_transak_masuk

4. after_update_t_det_transak_masuk

5. after_update_t_transak_keluar

6. after_update_t_det_transak_keluar

Page 58: Mysql

CREATE DATABASE db_inventori;

CREATE TABLE m_supplier( id_supplier INT PRIMARY KEY

AUTO_INCREMENT,

nama VARCHAR(50) NOT NULL,

alamat VARCHAR(255) NULL,

no_telp VARCHAR(20) NULL

);

CREATE TABLE m_customer( id_customer INT PRIMARY KEY

AUTO_INCREMENT,

nama VARCHAR(50) NOT NULL,

alamat VARCHAR(255) NULL,

no_telp VARCHAR(20) NULL

);

CREATE TABLE m_barang(

id_barang INT PRIMARY KEY

AUTO_INCREMENT,

id_kategori_barang INT NOT NULL,

nama VARCHAR(50) NOT NULL,

merk VARCHAR(50) NULL

);

CREATE TABLE r_kategori_barang(

id_kategori_barang INT PRIMARY KEY

AUTO_INCREMENT,

nama VARCHAR(50) NOT NULL

);

Tabel Master

Page 59: Mysql

CREATE TABLE t_transak_masuk( id_transak_masuk INT PRIMARY KEY

AUTO_INCREMENT,

id_supplier INT NOT NULL,

tgl_transak DATE NOT NULL,

no_surat_jalan VARCHAR(20) NOT NULL,

ket TEXT NULL,

is_deleted TINYINT(1) NOT NULL DEFAULT 0

);

CREATE TABLE t_det_transak_masuk( id_det_transak_masuk INT PRIMARY KEY

AUTO_INCREMENT,

no_surat_jalan VARCHAR(20) NOT NULL,

id_barang INT NOT NULL,

jml_masuk BIGINT DEFAULT 0,

is_deleted TINYINT(1) NOT NULL DEFAULT 0

);

CREATE TABLE t_log_transak_masuk( id_log_transak_masuk INT PRIMARY KEY

AUTO_INCREMENT,

id_transak_masuk INT NOT NULL,

tgl_log TIMESTAMP NOT NULL,

no_surat_jalan VARCHAR(20) NOT NULL,

aksi VARCHAR(15) NOT NULL

);

CREATE TABLE t_log_det_transak_masuk( id_log_det_transak_masuk INT PRIMARY KEY

AUTO_INCREMENT,

tgl_log TIMESTAMP NOT NULL,

no_surat_jalan VARCHAR(20) NOT NULL,

id_det_transak_masuk INT NOT NULL,

aksi VARCHAR(15) NOT NULL

);

Tabel Transaksi Masuk

Page 60: Mysql

CREATE TABLE t_transak_keluar( id_transak_keluar INT PRIMARY KEY

AUTO_INCREMENT,

id_customer INT NOT NULL,

tgl_transak DATE NOT NULL,

no_surat_jalan VARCHAR(20) NOT NULL,

ket TEXT NULL,

is_deleted TINYINT(1) NOT NULL DEFAULT 0

);

CREATE TABLE t_det_transak_keluar( id_det_transak_keluar INT PRIMARY KEY

AUTO_INCREMENT,

no_surat_jalan VARCHAR(20) NOT NULL,

id_barang INT NOT NULL,

jml_keluar BIGINT DEFAULT 0,

is_deleted TINYINT(1) NOT NULL DEFAULT 0

);

CREATE TABLE t_log_transak_keluar(

id_log_transak_keluar INT PRIMARY KEY

AUTO_INCREMENT,

id_transak_keluar INT NOT NULL,

tgl_log TIMESTAMP NOT NULL,

no_surat_jalan VARCHAR(20) NOT NULL,

aksi VARCHAR(15) NOT NULL

);

CREATE TABLE t_log_det_transak_keluar(

id_log_det_transak_keluar INT PRIMARY KEY

AUTO_INCREMENT,

tgl_log TIMESTAMP NOT NULL,

no_surat_jalan VARCHAR(20) NOT NULL,

id_det_transak_keluar INT NOT NULL,

aksi VARCHAR(15) NOT NULL

);

Tabel Transaksi Keluar

Page 61: Mysql

CREATE VIEW v_TransakMasuk AS SELECT a.no_surat_jalan, a.tgl_transak,

c.nama AS nama_supplier,

d.nama AS nama_barang,

e.nama AS nama_kategori,

b.jml_masuk AS jml_masuk

FROM t_transak_masuk a

JOIN t_det_transak_masuk b ON a.no_surat_jalan = b.no_surat_jalan

JOIN m_supplier c ON a.id_supplier = c.id_supplier

JOIN m_barang d ON b.id_barang = d.id_barang

JOIN r_kategori_barang e ON d.id_kategori_barang = e.id_kategori_barang

WHERE a.is_deleted = 0;

View

Page 62: Mysql

DELIMITER //

CREATE PROCEDURE sp_GetAllBarang() BEGIN

SELECT *

FROM m_barang;

END//

CREATE PROCEDURE sp_GetBarangById(IN _id INT) BEGIN

SELECT *

FROM m_barang

WHERE id_barang=_id;

END//

CREATE PROCEDURE sp_GetCustomerByNama(IN _nama VARCHAR(50)) BEGIN

SELECT *

FROM m_customer

WHERE nama LIKE CONCAT('%', _nama, '%');

END//

Store Procedure Get Data

Page 63: Mysql

DELIMITER //

CREATE PROCEDURE sp_InsertTransakMasuk( IN _id_supplier INT,

IN _tgl_transak DATE,

IN _no_surat_jalan VARCHAR(20),

IN _ket TEXT)

BEGIN

INSERT INTO t_transak_masuk(id_supplier, tgl_transak, no_surat_jalan, ket)

VALUES(_id_supplier, _tgl_transak, _no_surat_jalan, _ket);

END //

CREATE PROCEDURE sp_InsertDetTransakMasuk( IN _no_surat_jalan VARCHAR(20),

IN _id_barang INT,

IN _jml_masuk BIGINT(20))

BEGIN

IF NOT EXISTS (SELECT id_transak_masuk FROM t_transak_masuk WHERE no_surat_jalan=_no_surat_jalan) THEN

SELECT 'No. Surat Jalan tidak ada di dalam database!' AS status;

ELSE

INSERT INTO t_det_transak_masuk(no_surat_jalan, id_barang, jml_masuk)

VALUES(_no_surat_jalan, _id_barang, _jml_masuk);

END IF;

END //

Store Procedure Insert Transaksi Masuk

Page 64: Mysql

DELIMITER //

CREATE PROCEDURE sp_InsertTransakKeluar( IN _id_customer INT,

IN _tgl_transak DATE,

IN _no_surat_jalan VARCHAR(20),

IN _ket TEXT)

BEGIN

INSERT INTO t_transak_keluar(id_customer, tgl_transak, no_surat_jalan, ket)

VALUES(_id_customer, _tgl_transak, _no_surat_jalan, _ket);

END //

CREATE PROCEDURE sp_InsertDetTransakKeluar( IN _no_surat_jalan VARCHAR(20),

IN _id_barang INT,

IN _jml_keluar BIGINT(20))

BEGIN

IF NOT EXISTS (SELECT id_transak_keluar FROM t_transak_keluar WHERE no_surat_jalan=_no_surat_jalan) THEN

SELECT 'No. Surat Jalan tidak ada di dalam database!' AS status;

ELSE

INSERT INTO t_det_transak_keluar(no_surat_jalan, id_barang, jml_keluar)

VALUES(_no_surat_jalan, _id_barang, _jml_keluar);

END IF;

END //

Store Procedure Insert Transaksi Keluar

Page 65: Mysql

DELIMITER //

CREATE PROCEDURE sp_UpdateTransakMasuk( IN _id_supplier INT,

IN _tgl_transak DATE,

IN _no_surat_jalan VARCHAR(20),

IN _ket TEXT,

IN _id_transak_masuk INT)

BEGIN

UPDATE t_transak_masuk SET id_supplier=_id_supplier, tgl_transak=_tgl_transak, no_surat_jalan=_no_surat_jalan,

ket=_ket WHERE id_transak_masuk=_id_transak_masuk;

END //

CREATE PROCEDURE sp_UpdateDetTransakMasuk( IN _no_surat_jalan VARCHAR(20),

IN _id_barang INT,

IN _jml_masuk BIGINT(20),

IN _id_det_transak_masuk INT)

BEGIN

IF NOT EXISTS (SELECT id_transak_masuk FROM t_transak_masuk WHERE no_surat_jalan=_no_surat_jalan) THEN

SELECT 'No. Surat Jalan tidak ada di dalam database!' AS status;

ELSE

UPDATE t_det_transak_masuk SET id_barang=_id_barang, jml_masuk=_jml_masuk WHERE id_det_transak_masuk=_id_det_transak_masuk;

END IF;

END //

Store Procedure Update Transaksi Masuk

Page 66: Mysql

DELIMITER //

CREATE PROCEDURE sp_UpdateTransakKeluar( IN _id_customer INT,

IN _tgl_transak DATE,

IN _no_surat_jalan VARCHAR(20),

IN _ket TEXT,

IN _id_transak_keluar INT)

BEGIN

UPDATE t_transak_keluar SET id_customer=_id_customer, tgl_surat=_tgl_surat, no_surat_jalan=_no_surat_jalan,

ket=_ket WHERE id_transak_keluar=_id_transak_keluar;

END //

CREATE PROCEDURE sp_UpdateDetTransakKeluar( IN _no_surat_jalan VARCHAR(20),

IN _id_barang INT,

IN _jml_keluar BIGINT(20),

IN _id_det_transak_keluar INT)

BEGIN

IF NOT EXISTS (SELECT id_transak_keluar FROM t_transak_keluar WHERE no_surat_jalan=_no_surat_jalan) THEN

SELECT 'No. Surat Jalan tidak ada di dalam database!' AS status;

ELSE

UPDATE t_det_transak_keluar SET id_barang=_id_barang, jml_masuk=_jml_masuk

WHERE id_det_transak_keluar=_id_det_transak_keluar;

END IF;

END //

Store Procedure Update Transaksi Keluar

Page 67: Mysql

DELIMITER //

CREATE PROCEDURE sp_DeleteTransakMasuk(IN _no_surat_jalan VARCHAR(20), OUT flag TINYINT) BEGIN

DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;

START TRANSACTION;

SET flag = 0;

UPDATE t_transak_masuk SET is_deleted=1 WHERE no_surat_jalan=_no_surat_jalan;

UPDATE t_det_transak_masuk SET is_deleted=1 WHERE no_surat_jalan=_no_surat_jalan;

SET flag = 1;

COMMIT;

END //

CREATE PROCEDURE sp_DeleteDetTransakMasuk(IN _id_det_transak_masuk INT) BEGIN

UPDATE t_det_transak_masuk SET is_deleted=1 WHERE

id_det_transak_masuk=_id_det_transak_masuk;

END //

Store Procedure Delete Transaksi Masuk

Page 68: Mysql

DELIMITER //

CREATE PROCEDURE sp_DeleteTransakKeluar(IN _id_transak_keluarINT) BEGIN

UPDATE t_transak_keluar SET is_deleted=1 WHERE

id_transak_keluar=_id_transak_keluar;

END //

CREATE PROCEDURE sp_DeleteDetTransakKeluar(IN _id_det_transak_keluar INT)

BEGIN

UPDATE t_det_transak_keluar SET is_deleted=1 WHERE

id_det_transak_keluar=_id_det_transak_keluar;

END //

Store Procedure Delete Transaksi Keluar

Page 69: Mysql

DELIMITER //

CREATE TRIGGER after_insert_t_transak_masuk AFTER INSERT ON t_transak_masuk FOR EACH ROW BEGIN

IF NEW.is_deleted THEN

SET @aksi = 'DELETE';

ELSE

SET @aksi = 'NEW';

END IF;

INSERT INTO t_log_transak_masuk(tgl_log, id_transak_masuk, no_surat_jalan, aksi) VALUES(NOW(), NEW.id_transak_masuk,

NEW.no_surat_jalan, @aksi);

END //

CREATE TRIGGER after_insert_t_det_transak_masuk AFTER INSERT ON t_det_transak_masuk FOR EACH ROW BEGIN

IF NEW.is_deleted THEN

SET @aksi = 'DELETE';

ELSE

SET @aksi = 'NEW';

END IF;

INSERT INTO t_log_det_transak_masuk(tgl_log, id_det_transak_masuk, no_surat_jalan, aksi) VALUES(NOW(),

NEW.id_det_transak_masuk, NEW.no_surat_jalan, @aksi);

END //

Trigger Insert Barang Masuk

Page 70: Mysql

DELIMITER //

CREATE TRIGGER after_update_t_transak_masuk AFTER UPDATE ON t_transak_masuk FOR EACH ROW BEGIN

IF NEW.is_deleted THEN

SET @aksi = 'DELETE';

ELSE

SET @aksi = 'EDIT';

END IF;

INSERT INTO t_log_transak_masuk(tgl_log, id_transak_masuk, no_surat_jalan, aksi) VALUES(NOW(),

NEW.id_transak_masuk, NEW.no_surat_jalan, @aksi);

END //

CREATE TRIGGER after_update_t_det_transak_masuk AFTER UPDATE ON t_det_transak_masuk FOR EACH ROW BEGIN

IF NEW.is_deleted THEN

SET @aksi = 'DELETE';

ELSE

SET @aksi = 'EDIT';

END IF;

INSERT INTO t_log_det_transak_masuk(tgl_log, id_det_transak_masuk, no_surat_jalan, aksi) VALUES(NOW(),

NEW.id_det_transak_masuk, NEW.no_surat_jalan, @aksi);

END //

Trigger Update Barang Masuk

Page 71: Mysql

DELIMITER //

CREATE TRIGGER after_update_t_transak_keluar AFTER UPDATE ON t_transak_keluar FOR EACH ROW BEGIN

IF NEW.is_deleted THEN

SET @aksi = 'DELETE';

ELSE

SET @aksi = 'EDIT';

END IF;

INSERT INTO t_log_transak_keluar(tgl_log, id_transak_keluar, no_surat_jalan, aksi) VALUES(NOW(), NEW.id_transak_keluar,

NEW.no_surat_jalan, @aksi);

END //

CREATE TRIGGER after_update_t_det_transak_keluar AFTER UPDATE ON t_det_transak_keluar FOR EACH ROW BEGIN

IF NEW.is_deleted THEN

SET @aksi = 'DELETE';

ELSE

SET @aksi = 'EDIT';

END IF;

INSERT INTO t_log_det_transak_keluar(tgl_log, id_det_transak_keluar, no_surat_jalan, aksi) VALUES(NOW(),

NEW.id_det_transak_keluar, NEW.no_surat_jalan, @aksi);

END //

Trigger Update Barang Keluar

Page 72: Mysql

DELIMITER //

CREATE FUNCTION fn_getTotalTransakMasukByNoSuratJalan( _no_surat_jalan VARCHAR(20)) RETURNS INT

BEGIN

DECLARE total INT DEFAULT 0;

SET total = (SELECT SUM(jml_masuk) FROM t_det_transak_masuk WHERE

no_surat_jalan=_no_surat_jalan);

RETURN total;

END //

CREATE FUNCTION fn_getTotalTransakKeluarByNoSuratJalan( _no_surat_jalan VARCHAR(20)) RETURNS INT

BEGIN

DECLARE total INT DEFAULT 0;

SET total = (SELECT SUM(jml_masuk) FROM t_det_transak_keluar WHERE

no_surat_jalan=_no_surat_jalan);

RETURN total;

END //

Function

Page 73: Mysql

INSERT INTO r_kategori_barang(nama) VALUES('Elektronik');

INSERT INTO r_kategori_barang(nama) VALUES('ATK');

INSERT INTO r_kategori_barang(nama) VALUES('Makanan');

INSERT INTO r_kategori_barang(nama) VALUES('Minuman');

INSERT INTO m_barang(id_kategori_barang, nama, merk) VALUES(1, 'Tablet 10"', 'Samsung');

INSERT INTO m_barang(id_kategori_barang, nama, merk) VALUES(1, 'Tablet 7"', 'Samsung');

INSERT INTO m_barang(id_kategori_barang, nama, merk) VALUES(1, 'Laptop Sony Vaio 14"', 'Sony');

INSERT INTO m_barang(id_kategori_barang, nama, merk) VALUES(1, 'Sony Handycam', 'Sony');

INSERT INTO m_barang(id_kategori_barang, nama, merk) VALUES(2, 'Kertas F4', 'Sinar Dunia');

INSERT INTO m_barang(id_kategori_barang, nama, merk) VALUES(2, 'Kertas A4', 'Sinar Dunia');

INSERT INTO m_barang(id_kategori_barang, nama, merk) VALUES(3, 'Indomie Bawang Rasa Kari Ayam', 'Indomie');

INSERT INTO m_barang(id_kategori_barang, nama, merk) VALUES(3, 'Indomie Mie Goreng', 'Indomie');

INSERT INTO m_barang(id_kategori_barang, nama, merk) VALUES(4, 'Green Sands Original', 'Green Sands');

INSERT INTO m_barang(id_kategori_barang, nama, merk) VALUES(4, 'Green Sands Fruit', 'Green Sands');

INSERT INTO m_customer(nama, alamat, no_telp) VALUES('PT. ABC', 'Jl. Pasantren', '022123456');

INSERT INTO m_customer(nama, alamat, no_telp) VALUES('Saddam', 'Jl. Kavling IPTN', '022999999');

INSERT INTO m_customer(nama, alamat, no_telp) VALUES('Baso Bedu', 'Jl. Cihanjuang', '022333444');

INSERT INTO m_supplier(nama, alamat, no_telp) VALUES('PT. Sinar Dunia', 'Jawa Barat', '');

INSERT INTO m_supplier(nama, alamat, no_telp) VALUES('Sony Corp.', 'Japan', '');

INSERT INTO m_supplier(nama, alamat, no_telp) VALUES('Samsung', 'South Korea', '');

INSERT INTO m_supplier(nama, alamat, no_telp) VALUES('PT. Indofood', 'Jawa Barat', '');

INSERT INTO m_supplier(nama, alamat, no_telp) VALUES('PT. Green Sands', 'Jupiter', '');

Insert Data Dummy

Page 74: Mysql

/* parm: id_supplier, tgl_transak, no_surat_jalan, ket */

CALL sp_InsertTransakMasuk(3, NOW(), 'SJ001', 'tes pertama');

/* parm: no_surat_jalan, id_barang, jml_masuk */

CALL sp_InsertDetTransakMasuk('SJ001', 1, 10);

CALL sp_InsertDetTransakMasuk('SJ001', 2, 5);

/* parm: id_supplier, tgl_transak, no_surat_jalan, ket, id_transak_masuk */

CALL sp_UpdateTransakMasuk(3, NOW(), 'SJ001', 'tes update pertama', 1);

/* parm: no_surat_jalan, id_barang, jml_masuk, id_det_transak_masuk */

CALL sp_UpdateDetTransakMasuk('SJ001', 1, 5, 1);

CALL sp_UpdateDetTransakMasuk('SJ001', 2, 10, 2);

/* parm: no_surat_jalan, @flag */

CALL sp_DeleteTransakMasuk('SJ001', @flag);

SELECT @flag;

/* parm: id_det_transak_masuk */

CALL sp_DeleteDetTransakMasuk(1);

SELECT fn_getTotalTransakMasukByNoSuratJalan('SJ001') AS 'Jumlah Total Masuk';

Penggunaan Store Procedure

Page 75: Mysql

SHOW TRIGGERS;

DROP TRIGGER {trigger_name};

SHOW PROCEDURE STATUS;

DROP PROCEDURE {procedure_name};

SHOW FUNCTION STATUS;

DROP FUNCTION {function_name};

Common Functions MySQL

Page 76: Mysql

Sekian

Terimakasih

Universitas Nasional Pasim | DBMS | Kelompok MySQL | 2013