Archive for Januari 2016
My SQL awal (2)
By : Unknown
TUGAS 02
PRAKTIKUM SISTEM BASIS DATA
Disusun oleh :
NAMA : Muhammad Fahrizal Farid (NIM : 141051002)
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
INSTITUT SAINS & TEKNOLOGI AKPRIND
YOGYAKARTA
2015
Menggabungkan Tabel MySql.
Sebelumnya cek database yang sebelumnya sudah dibuat.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| cdcol |
| mysql |
| penjualan |
| performance_schema |
| phpmyadmin |
| test |
| webauth |
+--------------------+
8 rows in set (0.11 sec)
Database yang akan digunakan adalah penjualan.
Sebelum lanjoet Tujuan dari menggabungkan tabel adalah untuk menyajikan informasi secara lebih detail. Contohnya dari table penjualan dan table pelanggan, tujuan kita adalah menyajikan informasi barang dank kode_pelanggan yang memiliki transaksi pada table nota. Jadi dengan adanya fitur Join pada MySql memudahkan untuk mendapatkan informasi yang sedetail mungkin.
- Pertama-tama lihat table yang tersedia atau yang sudah dibuat pada database penjualan.
mysql> show tables;
+---------------------+
| Tables_in_penjualan |
+---------------------+
| t_barang |
| t_nota |
| t_pelanggan |
+---------------------+
3 rows in set (0.05 sec)
- Setelah mengetahui tablenya, adakalany mengetahui record pada setiap table.
- Table t_barang.
mysql> desc t_barang;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| kode_barang | varchar(8) | NO | PRI | NULL | |
| nama_barang | varchar(50) | YES | | NULL | |
| harga | int(50) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
3 rows in set (0.17 sec)
mysql> select *from t_barang;
+-------------+----------------+-------+
| kode_barang | nama_barang | harga |
+-------------+----------------+-------+
| RG18 | Mouse Logitech | 40000 |
| RG19 | Mouse Comic | 20000 |
| RG21 | Coolpad | 30000 |
+-------------+----------------+-------+
3 rows in set (0.06 sec)
- Table t_nota.
mysql> desc t_nota;
+----------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+------------+------+-----+---------+-------+
| no_nota | varchar(8) | NO | PRI | NULL | |
| kode_pelanggan | varchar(8) | YES | | NULL | |
| kode_barang | varchar(8) | YES | | NULL | |
| jumlah | int(50) | YES | | NULL | |
+----------------+------------+------+-----+---------+-------+
4 rows in set (0.09 sec)
mysql> select *from t_nota;
+---------+----------------+-------------+--------+
| no_nota | kode_pelanggan | kode_barang | jumlah |
+---------+----------------+-------------+--------+
| N0011 | 01 | RG18 | 9 |
| N0015 | 03 | RG19 | 4 |
| N0016 | 02 | RG21 | 3 |
+---------+----------------+-------------+--------+
3 rows in set (0.05 sec)
- Table t_pelanggan.
mysql> desc t_pelanggan;
+----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| kode_pelanggan | varchar(8) | NO | PRI | NULL | |
| nama_pelanggan | varchar(50) | YES | | NULL | |
| alamat | varchar(50) | YES | | NULL | |
+----------------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
mysql> select *from t_pelanggan;
+----------------+----------------+------------------+
| kode_pelanggan | nama_pelanggan | alamat |
+----------------+----------------+------------------+
| 01 | Agus | Jl Mangga |
| 02 | Rizal | Jl tribrata no 6 |
| 03 | Yolly Setiawan | Jl Kalisahak |
+----------------+----------------+------------------+
3 rows in set (0.03 sec)
- Selanjutnya memikirkan informasi yang nantinya sangat dibutuhkan dari penggabungan table. Semisal informasi yang dibutuhkan adalah informasi pelanggan dan notanya (Cross Join).
mysql> select *from t_pelanggan, t_nota;
+----------------+----------------+------------------+---------+----------------
+-------------+--------+
| kode_pelanggan | nama_pelanggan | alamat | no_nota | kode_pelanggan
| kode_barang | jumlah |
+----------------+----------------+------------------+---------+----------------
+-------------+--------+
| 01 | Agus | Jl Mangga | N0011 | 01
| RG18 | 9 |
| 02 | Rizal | Jl tribrata no 6 | N0011 | 01
| RG18 | 9 |
| 03 | Yolly Setiawan | Jl Kalisahak | N0011 | 01
| RG18 | 9 |
| 01 | Agus | Jl Mangga | N0015 | 03
| RG19 | 4 |
| 02 | Rizal | Jl tribrata no 6 | N0015 | 03
| RG19 | 4 |
| 03 | Yolly Setiawan | Jl Kalisahak | N0015 | 03
| RG19 | 4 |
| 01 | Agus | Jl Mangga | N0016 | 02
| RG21 | 3 |
| 02 | Rizal | Jl tribrata no 6 | N0016 | 02
| RG21 | 3 |
| 03 | Yolly Setiawan | Jl Kalisahak | N0016 | 02
| RG21 | 3 |
+----------------+----------------+------------------+---------+----------------
+-------------+--------+
9 rows in set (0.02 sec)
- Jika ingin menampilkan informasi dari beberapa table dengan membandingkan nilai yang sama antara dua buah kolom. T_nota
Sebelum menggunakan inner join, sebelumnya buat table nota_join terlebih dahulu yang dimana untuk menerapkan join.
mysql> create table nota_join as (select*from t_nota);
Query OK, 3 rows affected (0.45 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select*from nota_join;
+---------+----------------+-------------+--------+
| no_nota | kode_pelanggan | kode_barang | jumlah |
+---------+----------------+-------------+--------+
| N0011 | 01 | RG18 | 9 |
| N0015 | 03 | RG19 | 4 |
| N0016 | 02 | RG21 | 3 |
+---------+----------------+-------------+--------+
3 rows in set (0.00 sec)
mysql> select*from nota_join inner join t_nota using (no_nota);
+---------+----------------+-------------+--------+----------------+------------
-+--------+
| no_nota | kode_pelanggan | kode_barang | jumlah | kode_pelanggan | kode_barang
| jumlah |
+---------+----------------+-------------+--------+----------------+------------
-+--------+
| N0011 | 01 | RG18 | 9 | 01 | RG18
| 9 |
| N0015 | 03 | RG19 | 4 | 03 | RG19
| 4 |
| N0016 | 02 | RG21 | 3 | 02 | RG21
| 3 |
+---------+----------------+-------------+--------+----------------+------------
-+--------+
3 rows in set (0.09 sec)
Kesimpulan :
Di dalam MySQL, kata INNER JOIN dapat diganti dengan CROSS JOIN, atau hanya JOIN saja. Ketiga kata kunci ini memiliki fungsi yang sama. MySQL menyediakannya agar dapat kompatible dengan SQLdari RDBMS lainnya seperti ORACLE dan MS SQL.
My SQL Awal
By : Unknown
TUGAS
PRAKTIKUM SISTEM BASIS DATA
Disusun oleh :
NAMA : Muhammad Fahrizal Farid (NIM : 141051002)
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
INSTITUT SAINS & TEKNOLOGI AKPRIND
YOGYAKARTA
2015
- Cara membuat Database.
Setting environment for using XAMPP for Windows.
Miner@OTONG-PC c:\xampp
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.26 MySQL Community Server (GPL)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database penjualan;
Query OK, 1 row affected (0.06 sec)
mysql>
mysql> use penjualan;
Database changed
- Membuat table dengan primary key.
mysql> create table t_pelanggan(kode_pelanggan varchar(8) primary key, nama_pelanggan varchar(50), alamat varchar(50));
Query OK, 0 rows affected (0.76 sec)
mysql> create table t_barang(kode_barang varchar(8) primary key, nama_barang var
char(50), harga int(50));
Query OK, 0 rows affected (0.27 sec)
mysql> create table t_nota(no_nota varchar(8) primary key, kode_pelanggan varchar(8), kode_barang varchar(8), jumlah int(50));
Query OK, 0 rows affected (0.25 sec)
- Melihat deskripsi table.
mysql> desc t_pelanggan;
+----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| kode_pelanggan | varchar(8) | NO | PRI | NULL | |
| nama_pelanggan | varchar(50) | YES | | NULL | |
| alamat | varchar(50) | YES | | NULL | |
+----------------+-------------+------+-----+---------+-------+
3 rows in set (0.47 sec)
mysql> desc t_barang;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| kode_barang | varchar(8) | NO | PRI | NULL | |
| nama_barang | varchar(50) | YES | | NULL | |
| harga | int(50) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
mysql> desc t_nota;
+----------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+------------+------+-----+---------+-------+
| no_nota | varchar(8) | NO | PRI | NULL | |
| kode_pelanggan | varchar(8) | YES | | NULL | |
| kode_barang | varchar(8) | YES | | NULL | |
| jumlah | int(50) | YES | | NULL | |
+----------------+------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
- Menambah Record ke table.
mysql> insert into t_pelanggan values('01','Agus','Jl Mangga');
Query OK, 1 row affected (0.11 sec)
mysql> insert into t_pelanggan values('02','Rizal','Jl Tribrata no 6');
Query OK, 1 row affected (0.04 sec)
mysql> insert into t_pelanggan values('03','Yolly Setiawan','Jl Kalisahak');
Query OK, 1 row affected (0.09 sec)
mysql> insert into t_pelanggan values('01','Otong','Jl Kalisahak');
ERROR 1062 (23000): Duplicate entry '01' for key 'PRIMARY'
NB : Ini error karena pada Id pelanggan bersifat primary key, kalau primary key record harus unik dan tidak boleh sama.
- Melihat isi record pada setiap table.
mysql> select*from t_pelanggan;
+----------------+----------------+------------------+
| kode_pelanggan | nama_pelanggan | alamat |
+----------------+----------------+------------------+
| 01 | Agus | Jl Mangga |
| 02 | Rizal | Jl Tribrata no 6 |
| 03 | Yolly Setiawan | Jl Kalisahak |
+----------------+----------------+------------------+
mysql> select*from t_barang;
+-------------+----------------+-------+
| kode_barang | nama_barang | harga |
+-------------+----------------+-------+
| RG18 | Mouse Logitech | 40000 |
| RG19 | Mouse Comic | 20000 |
| RG21 | Coolpad | 30000 |
+-------------+----------------+-------+
3 rows in set (0.00 sec)
mysql> select*from t_nota;
+---------+----------------+-------------+--------+
| no_nota | kode_pelanggan | kode_barang | jumlah |
+---------+----------------+-------------+--------+
| N0011 | 01 | RG18 | 9 |
| N0015 | 03 | RG19 | 4 |
| N0016 | 02 | RG21 | 3 |
+---------+----------------+-------------+--------+
3 rows in set (0.00 sec)
- Cascade.
Data yang terdapat di tabel induk dan tabel anak akan sama – sama terhapus atau terupdate.
mysql> create table t_stok(id_stok varchar(8) primary key, nama_barang varchar(50), harga int(50),kode_barang varchar(8), foreign key(kode_barang) references t_barang(kode_barang) on delete cascade on update cascade);
jadi pengertian sintak diatas adalah table baru yang akan dibuat merupakan table direferensikan pada table t_barang dimana kode_barang sebagai linkednya.
mysql> desc t_stok;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| id_stok | varchar(8) | NO | PRI | NULL | |
| nama_barang | varchar(50) | YES | | NULL | |
| harga | int(50) | YES | | NULL | |
| kode_barang | varchar(8) | YES | MUL | NULL | |
+-------------+-------------+------+-----+---------+-------+
4 rows in set (0.02 sec)
mysql> insert into t_stok values('ST-002','Mouse Comic','20000','RG19');
Query OK, 1 row affected (0.03 sec)
mysql> insert into t_stok values('ST-003','Coolpad','30000','RG21');
Query OK, 1 row affected (0.05 sec)
mysql> select*from t_stok;
+---------+----------------+-------+-------------+
| id_stok | nama_barang | harga | kode_barang |
+---------+----------------+-------+-------------+
| ST-001 | Mouse Logitech | 40000 | RG18 |
| ST-002 | Mouse Comic | 20000 | RG19 |
| ST-003 | Coolpad | 30000 | RG21 |
+---------+----------------+-------+-------------+
3 rows in set (0.00 sec)
- Fitur Cascade ( Delete & Update ).
mysql> select*from t_stok;
+---------+----------------+-------+-------------+
| id_stok | nama_barang | harga | kode_barang |
+---------+----------------+-------+-------------+
| ST-001 | Mouse Logitech | 40000 | RG18 |
| ST-002 | Mouse Comic | 20000 | RG19 |
| ST-003 | Coolpad | 30000 | RG21 |
+---------+----------------+-------+-------------+
3 rows in set (0.00 sec)
mysql> delete from t_barang where kode_barang='RG18';
Query OK, 1 row affected (0.20 sec)
mysql> select*from t_barang;
+-------------+-------------+-------+
| kode_barang | nama_barang | harga |
+-------------+-------------+-------+
| RG19 | Mouse Comic | 20000 |
| RG21 | Coolpad | 30000 |
+-------------+-------------+-------+
Record yg ada pada pada t_barang dan t_stok akan terhapus karena kedua table itu sudah terhubung atau sudah direlasi dan juga inilah salah satu fitur cascade dimana syntaknya berbunyi “create table t_stok(id_stok varchar(8) primary key, nama_barang varchar(50), harga int(50),kode_barang varchar(8), foreign key(kode_barang) references t_barang(kode_barang) on delete cascade on update cascade);” yg dimana artinya jika record di update atau didelete pada salah satu table yg sudah terrelasi makan table pasangannya juga ikut berubah.
mysql> select*from t_stok;
+---------+-------------+-------+-------------+
| id_stok | nama_barang | harga | kode_barang |
+---------+-------------+-------+-------------+
| ST-002 | Mouse Comic | 20000 | RG19 |
| ST-003 | Coolpad | 30000 | RG21 |
+---------+-------------+-------+-------------+
- Tanpa Fitur Cascade.
Sebelumnya hapus dulu table t_stok.
mysql> drop table t_stok;
Query OK, 0 rows affected (0.20 sec)
mysql> create table t_stok(id_stok varchar(8) primary key, nama_barang varchar(5
0), harga int, kode_barang varchar(8), foreign key(kode_barang) references t_bar
ang(kode_barang));
Query OK, 0 rows affected (0.22 sec)
Isi table, kode_barang harus sesuai dengan table t_barang.
mysql> insert into t_stok values('ST-002','Mouse Comic','20000','RG19');
Query OK, 1 row affected (0.07 sec)
mysql> insert into t_stok values('ST-003','Coolpad','30000','RG21');
Query OK, 1 row affected (0.09 sec)
Untuk membuktikan Foerign berjalan atau tidak berfungsi dengan cara delete record dari t_barang yang dimana recordnya berkaitan dengan t_stok.
mysql> delete from t_barang where kode_barang='RG19';
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constrai
nt fails (`penjualan`.`t_stok`, CONSTRAINT `t_stok_ibfk_1` FOREIGN KEY (`kode_ba
rang`) REFERENCES `t_barang` (`kode_barang`))
Kesimpulannya :
Jika menggunakan on delete cascade on update cascade yang memiliki arti dimana record pada table yg terrelasi akan berubah secara bersamaan sesuai dengan perubahan yg kita buat.
Dan sebaliknya jika tidak menggunakan fitur tersebut akan error.