Selasa, 04 Januari 2022

Mysql~9 - Views

Apa Itu View dalam MySQL 

View adalah perintah query yang disimpan pada database dengan suatu nama tertentu, sehingga bisa digunakan setiap saat untuk melihat data tanpa menuliskan ulang query tersebut. sebelum masuk pada proses view kita akan membuat databases views terlebih dahulu sebagi berikut :











Syntax dasar perintah untuk membuat view adalah sebagai berikut :

CREATE
    [OR REPLACE]
    VIEW view_name [(column_list)]
    AS select_statement

Kita menggunakan opsi OR REPLACE jika kita ingin mengganti view dengan nama yang sama dengan perintah tersebut. Jika tidak maka perintah CREATE VIEW akan menghasilkan error jika nama view yang ingin dibuat sudah ada sebelumnya.

Contoh Penggunaan

Kita akan membuat view dari relasi antara table "ms_harga_harian", "ms_cabang" dan "ms_produk" dari database phi-minimart dengan nama "view_harga". Perintahnya adalah sebagai berikut :

CREATE VIEW view_harga
AS
SELECT m1.kode_produk, m2.nama_produk,
m1.kode_cabang, m3.nama_cabang,
m1.tgl_berlaku, m1.harga_berlaku_cabang
FROM
ms_harga_harian m1 JOIN ms_produk m2 ON m1.kode_produk = m2.kode_produk
JOIN ms_cabang m3 ON m1.kode_cabang = m3.kode_cabang;

Eksekusi perintah berikut untuk memastikan view telah dibuat :

SELECT * FROM information_schema.views WHERE table_name = 'view_harga';



Terakhir, query view tersebut untuk melihat hasilnya :

SELECT * FROM view_harga;



Mysql~ 01 - Proses Instalasi xaamp

 

Mysql~5 - DML Function

 Praktikum 5 DML Function


    Seperti biasa, kita cek terlebih dahulu apakah database Kasir masih ada (dengan perintah show databases;), jika ada kita aktifkan database kasir agar bisa digunakan (perintahnya use kasir;). Jika sudah kita cek tabel apa saja yang database kasir miliki (show tables;).

Gunakan perintah

insert into (Id_Pelanggan, Nama, Alamat, Pekerjaan, No_KTP, No_Telp) values
(‘4′,’Adi’,’Klaten’,’Mahasiswa’,’123456789′,’159753′),(‘5′,’Ica’,’Solo’,’Mahasiswa’,’987654321′,’951357′);


Nah, Materi lanjutan SELECT, menampilkan data dengan kondisi tertentu sesuai record,
contoh:

1. Menampilkan data pelanggan yang pekerjaannya adalah mahasiswa
SELECT * FROM pelanggan WHERE pekerjaan = ‘mahasiswa’;

2. Menampilkan data pelanggan yang pekerjaannya adalah mahasiswa dan tinggal di Klaten
SELECT * FROM pelanggan WHERE pekerjaan = ‘mahasiswa’ AND alamat = ‘Klaten’;

3. Menampilkan data pelanggan yang pekerjaannya adalah mahasiswa atau tinggal di Ciamis
SELECT * FROM pelanggan WHERE pekerjaan = ‘mahasiswa’ OR alamat = ‘Ciamis’;

Karena mahasiswa yang tinggal di Ciamis tidak ada di data, maka hasilnya akan empty.

4. Menampilkan data pelanggan yang namanya dimulai huruf A
SELECT * FROM pelanggan WHERE nama like ‘A%’;

5. Menampilkan data pelanggan yang namanya diakhiri huruf A
SELECT * FROM pelanggan WHERE nama like ‘%a’;

6. Mengurutkan data pelanggan berdasarkan nama dengan sorting ASC
SELECT * FROM pelanggan ORDER BY nama ASC;

7. Mengurutkan data pelanggan berdasarkan nama dengan sorting DESC
SELECT * FROM pelanggan ORDER BY nama DESC;

Untuk selanjutnya praktikum materi functin

1. Menggabungkan nama dan pekerjaan dengan memberi inisial Nama dan Pekerjaan
SELECT CONCAT (nama,’ ‘,pekerjaan) as ‘Nama Dan Pekerjaan’ FROM pelanggan;

2. Menggabungkan nama dan pekerjaan tanpa inisial baru
SELECT CONCAT (nama,”,pekerjaan) FROM pelanggan;

3. Memotong 2 huruf di depan dari nama
SELECT SUBSTRING(nama, 2) FROM pelanggan;

4. Mengambil 2 huruf setelah 2 huruf di depan dari nama
SELECT SUBSTRING(nama, 2, 2) FROM pelanggan;

5. Menghitung panjang karakter/string dari nama
SELECT LENGTH (nama) FROM pelanggan;




Selasa, 23 November 2021

Mysql~7 -TRIGGER

PENGERTIAN TRIGGER



 Dalam DBMS (Database Management System), trigger merupakan kumpulan script yang berhubungan dengan table, view ataupun skema yang dijalankan secara otomatis ketika terdapat event yang dijalankan. Event tersebut meliputi operasi yang biasa dilakukan dalam mengolah database, seperti :

  • DML (Data Manipulation Language) yang meliputi DELETE, INSERT atau UPDATE
  • DDL (Data Definition Language) yang meliputi CREATE, ALTER atau DROP
  • Operasi Database lainnya, seperti SERVERERROR, LOGON, LOGOFF, STARTUP atau SHUTDOWN)

Secara sederhana, perintah untuk membuat trigger adalah sebagai berikut :

CREATE TRIGGER nama_trigger [BEFORE|AFTER]
[INSERT/UPDATE/DELETE]
ON nama_table
FOR EACH ROW
BEGIN
// trigger body
END;

Keterangan dari bentuk perintah umum dalam membuat trigger, yaitu :

  • nama_trigger : nama trigger yang dibuat sesuai dengan karakteristik penamaan dalam MySQL
  • [BEFORE|AFTER] : menunjukkan waktu untuk mengeksekusi trigger secara otomatis, apakah sebelum atau sesudah perubahan pada row data table. Jadi pilihannya adalah AFTER atau BEFORE.
  • [INSERT | UPDATE | DELETE] : digunakan untuk menentukan event yang menyebabkan terjadinya trigger, pilIhan event tersebut terdiri dari INSER, UPDATE dan DELETE.
  • nama_table : menunjukkan table yang akan dilakukan trigger didalamnya
  • trigger_body : menunjukkan statement perintah dalam MySQL yang akan otomatis dijalankan jika event sedang aktif.

Fungsi Trigger

fungsi trigger

Biasanya dalam relasional database, trigger dapat ditemui ketika melakukan perintah eksekusi table. Hal itu menjadi lebih bermanfaat trigger menjaikan penulisan pemrograman yang sederhana dan dapat menjaga informasi agar tetap konsisten dalam database. Selain itu, terdapat beberapa fungsi trigger yang akan dijelaskan dibawah ini.

1. Integritas Data

Dengan adanya trigger, Anda dapat mempertahankan integritas table yang terdapat dalam database. Sebab, Anda dapat melakukan operasi-operasi yang berkaitan dengan pengolahan database, seperti INSERT, UPDATE dan DELETE

2. Mencegah Error

Trigger dalam MySQL dapat mencegah terjadinya error dalam pengoperasian data. Jika terjadi error dalam pendefinisian trigger, error tersebut tidak mengganggu trigger yang sedang berjalan.

3. Membuat Tugas Kerja menjadi Terjadwal

Ketika trigger telah dijalankan, maka Anda dapat menggunakan berbagai bahasa pemrograman tanpa harus bingung bagaimana cara mengaksesnya.

4. Mencegah Proses Transaksi yang Tidak Sah

Dalam praktiknya, biasa trigger digunakan untuk melakukan proses transaksi. Anda dapat menyimpan record transaksi tersebut ke table lain (history) tanpa harus takut jika data tersebut di-update atau delete. Semua perubahan yang terjadi juga dapat diacak berdasarkan waktu pembuatannya.

CONTOH KASUS :

>Membuat table produk , jika dalam gambar dibawah ini sebelum di lakukan rename dengan 
    RENAME table penjualan to produk;

MariaDB [(none)]> use penjualan;
Database changed
MariaDB [penjualan]> create table penjualan(
    -> kd_produk varchar(6) NOT NULL,
    -> nm_produk varchar(100),
    -> harga int(11));
Query OK, 0 rows affected (0.387 sec)


>Membuat table log_harga

    MariaDB [penjualan]> create table log_harga (

    -> log_id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,

    -> kd_produk varchar(8),

    -> harga_lama int(11),

    -> harga_baru int(11),

    -> waktu_perubahan datetime);

Query OK, 0 rows affected (0.168 sec)

>Input data table
    sebelum dilakukan uji coba dalam pembuatan trigger terlebih dahulu dalam melakukan input data guna dapat menampilkan hasil trigger jika dilakukan select 

MariaDB [penjualan]> insert into produk values ('ATK001','PENSIL','12000');
Query OK, 1 row affected (0.124 sec)

MariaDB [penjualan]> INSERT INTO produk values ('ATK002','PENGHAPUS','8000');
Query OK, 1 row affected (0.083 sec)

MariaDB [penjualan]> SELECT * FROM PRODUK;
---------------------------------------------
| kd_produk | nm_produk      | harga   |
---------------------------------------------
| ATK001     | PENSIL           | 12000  |
| ATK002     | PENGHAPUS |  8000   |
---------------------------------------------
2 rows in set (0.041 sec)


>Membuat Trigger
    Delimiter $$
    CREATE trigger before_produk_update
        BEFORE UPDATE ON produk
        FOR EACH ROW
    BEGIN
        INSERT into_harga
        SET kd_produk = OLD.kd_produk,
        harga_baru = NEW.harga,
        harga_lama = OLD.harga,
        waktu_perubahan = NOW();
    END $$

    
hasil contoh jika trigger dengan nama yang kita buat telah tersedia.
jika kita ingin melihat trigger yang telah kita buat dalam PHPmyAdmin berikut gambarannya :


>Uji Coba Trigger 
1. Masukkan beberapa record ke tabel produk, 
    contoh 
    INSERT INTO produk VALUES ('ATK001','PENSIL',12000); 
    INSERT INTO produk VALUES ('ATK002','PENGHAPUS',8000);
XAMPP nya :
MariaDB [penjualan]> insert into produk values ('ATK001','PENSIL','12000');
Query OK, 1 row affected (0.124 sec)

MariaDB [penjualan]> INSERT INTO produk values ('ATK002','PENGHAPUS','8000');
Query OK, 1 row affected (0.083 sec)

MariaDB [penjualan]> SELECT * FROM PRODUK;
---------------------------------------------
| kd_produk | nm_produk      | harga   |
---------------------------------------------
| ATK001     | PENSIL           | 12000  |
| ATK002     | PENGHAPUS |  8000   |
---------------------------------------------
2 rows in set (0.041 sec)


2. Update harga produk, 
    contoh 
    update produk set harga=10000 WHERE kd_produk='ATK001' 
    Membuktikan Trigger Trigger akan berhasil jika di dalam tabel tujuan trigger, yang dalam contoh ini adalah tabel log_harga secara otomatis akan terdapat record baru, cara cek? select * from log_harga;




- Pada tabel log_harga tambahkan field:
    > nm_produk_baru dengan tipe data varchar (100) 
    > nm_produk_lama dengan tipe data varchar (100) 


- Uji cobakan triger yang dibuat dengan update: 
    > update produk set nm_produk=PENGGARIS WHERE kd_produk='ATK001'

penjelasan mengapa eror, karena pada field produk tidak terdapatnya field yang bernama penggaris sedangkan dalam field log_harga hanya di sebutkan kode produk namun tidak disebutkan nama produknya.

sekian penjelasan tentang trigger kali ini. mohon maaf terdapat beberapa gambaran yang tidak serupa dikarenakan terdapat gangguan laptop yang sempet ngeblank pada akhirnya beberapa script lupa untuk di ambil tangkapan gambarnya. terima kasih wassalam.

Rabu, 03 November 2021

UTS Basis Data Semester 3

 Nama : Afni Eka Rahmawati

NIM    : 203100077

Prodi   : Sistem Informasi


Langkah awal, masukkan data berikut ke tabel detil_pesan.


detil_pesan

id_pesan  id_produk  jumlah  harga 

1 MIE001  3 jumlah x dengan harga di ID PRODUK

2 ATK001 4 jumlah x dengan harga di ID PRODUK

3 ATK002 5 jumlah x dengan harga di ID PRODUK

4 ATK002  6 jumlah x dengan harga di ID PRODUK




SOAL!


Petunjuk: setiap soal discreenshootkan syntak dan hasil querynya.


1. Lakukan INNER JOIN dari semua tabel yang bisa dilakukkan inner join! (tidak ada ketentuan minimal, semakin banyak tentu semakin baik jika benar)


  • select pesan.id_pesan,pesan.tgl_pesan,faktur.id_faktur,faktur.tgl_faktur,pelanggan.id_pelanggan,pelanggan.nm_pelanggan,
    • pelanggan.alamat,pelanggan.telepon,pelanggan.email,detail_pesan.id_produk,detail_pesan.jumlah,detail_pesan.harga-> from pesan -> inner join faktur on pesan.id_pesan=faktur.id_pesan -> inner join pelanggan on pesan.id_pelanggan=pelanggan.id_pelanggan -> inner join detail_pesan on pesan.id_pesan=detail_pesan.id_pesan;

  • select produk.id_produk,produk.nm_produk,produk.satuan,produk.harga,produk.stock,detail_pesan.id_pesan,detail_pesan.jumlah,detail_pesan.harga
    • -> from produk
    • -> inner join detail_pesan on produk.id_produk=detail_pesan.id_produk;

2. Lakukan LEFT JOIN untuk menampilkan id_pelanggan, nm_pelanggan, id_pesan, tgl_pesan



MariaDB [sistem_pemesanan]> select pelanggan.id_pelanggan,pelanggan.nm_pelanggan,pesan.id_pesan,pesan.tgl_pesan
    -> from pelanggan
    -> left join pesan on pelanggan.id_pelanggan=pesan.id_pelanggan;
+--------------+--------------+----------+------------+
| id_pelanggan | nm_pelanggan | id_pesan | tgl_pesan  |
+--------------+--------------+----------+------------+
| UAA00        | Abiyasa      |        1 | 2020-10-28 |
| UAA02        | Baladewa     |        2 | 2020-10-29 |
| UAA03        | Cakil        |        3 | 2020-10-30 |
| UAA04        | Dasamuka     |        4 | 2020-10-31 |
| UAA05        | Ekalawya     |        5 | 2020-10-31 |
+--------------+--------------+----------+------------+
5 rows in set (0.076 sec)


3. Tampilkan semua field dari penggabungan 3 tabel yang dimungkinkan karena adanya relasi tabel! (tidak ada ketentuan minimal, semakin banyak tentu semakin baik jika benar)

MariaDB [sistem_pemesanan]> select pelanggan.id_pelanggan,pelanggan.nm_pelanggan,pesan.id_pesan,pesan.tgl_pesan

    -> from pelanggan

    -> left join pesan on pelanggan.id_pelanggan=pesan.id_pelanggan;

+--------------+--------------+----------+------------+

| id_pelanggan | nm_pelanggan | id_pesan | tgl_pesan  |

+--------------+--------------+----------+------------+

| UAA00        | Abiyasa      |        1 | 2020-10-28 |

| UAA02        | Baladewa     |        2 | 2020-10-29 |

| UAA03        | Cakil        |        3 | 2020-10-30 |

| UAA04        | Dasamuka     |        4 | 2020-10-31 |

| UAA05        | Ekalawya     |        5 | 2020-10-31 |

+--------------+--------------+----------+------------+

5 rows in set (0.076 sec)


MariaDB [sistem_pemesanan]> select pelanggan.id_pelanggan,pelanggan.nm_pelanggan,pelanggan.alamat,pelanggan.telepon,pelanggan.email,pesan.id_pesan,pesan.tgl_pesan,detil_pesan.id_produk,detil_pesan.jumlah,detil_pesan.harga

    -> from pelanggan,pesan,detil_pesan

    -> where pelanggan.id_pelanggan=pesan.id_pelanggan and pesan.id_pesan=detil_pesan.id_pesan;

+--------------+--------------+-----------+-------------+------------------------+----------+------------+-----------+--------+-------+

| id_pelanggan | nm_pelanggan | alamat    | telepon     | email                  | id_pesan | tgl_pesan  | id_produk | jumlah | harga |

+--------------+--------------+-----------+-------------+------------------------+----------+------------+-----------+--------+-------+

| UAA00        | Abiyasa      | Ngastino  | 08111222333 | abiyasa@almaata.ac.id  |        1 | 2020-10-28 | MIE00     |      3 |  6000 |

| UAA02        | Baladewa     | Madura    | 08222333444 | baladewa@almaata.ac.id |        2 | 2020-10-29 | ATK01     |      4 | 20000 |

| UAA03        | Cakil        | Goa       | 08333444555 | cakil@almaata.ac.id    |        3 | 2020-10-30 | ATK01     |      5 | 37500 |

| UAA04        | Dasamuka     | Ngalengka | 08444555666 | Dasamuka@almaata.ac.id |        4 | 2020-10-31 | ATK02     |      6 | 45000 |

+--------------+--------------+-----------+-------------+------------------------+----------+------------+-----------+--------+-------+

4 rows in set (0.109 sec)




4. Salinlah syntak berikut "SELECT pesan.id_pesan, pesan.tgl_pesan, SUM(detil_pesan.jumlah) as jumlah FROM pesan, detil_pesan WHERE pesan.id_pesan=detil_pesan.id_pesan GROUP BY id_pesan;" hasilnya apa dan jelaskan!

MariaDB [sistem_pemesanan]> select pesan.id_pesan,pesan.tgl_pesan,SUM(detil_pesan.jumlah) as jumlah from pesan,detil_pesan where pesan.id_pesan=detil_pesan.id_pesan group by id_pesan;

+----------+------------+--------+

| id_pesan | tgl_pesan  | jumlah |

+----------+------------+--------+

|        1 | 2020-10-28 |      3 |

|        2 | 2020-10-29 |      4 |

|        3 | 2020-10-30 |      5 |

|        4 | 2020-10-31 |      6 |

+----------+------------+--------+

4 rows in set (0.151 sec)



5. Salinlah syntak berikut "SELECT id_pelanggan, nm_pelanggan FROM pelanggan WHERE id_pelanggan IN (SELECT id_pelanggan FROM pesan);" hasilnya apa dan jelaskan perhatikan dengan melihat tabel pelanggan.

MariaDB [sistem_pemesanan]> desc pelanggan;

+--------------+-------------+------+-----+---------+-------+

| Field        | Type        | Null | Key | Default | Extra |

+--------------+-------------+------+-----+---------+-------+

| id_pelanggan | varchar(5)  | NO   | PRI | NULL    |       |

| nm_pelanggan | varchar(40) | NO   |     | NULL    |       |

| alamat       | text        | NO   |     | NULL    |       |

| telepon      | varchar(20) | NO   |     | NULL    |       |

| email        | varchar(50) | NO   |     | NULL    |       |

+--------------+-------------+------+-----+---------+-------+

5 rows in set (0.225 sec)


MariaDB [sistem_pemesanan]> select id_pelanggan,nm_pelanggan from pelanggan where id_pelanggan in (select id_pelanggan from pesan);

+--------------+--------------+

| id_pelanggan | nm_pelanggan |

+--------------+--------------+

| UAA00        | Abiyasa      |

| UAA02        | Baladewa     |

| UAA03        | Cakil        |

| UAA04        | Dasamuka     |

| UAA05        | Ekalawya     |

+--------------+--------------+

5 rows in set (0.151 sec)



sekian jawaban uts saya, saya ucapkan terimakasih


Kamis, 21 Oktober 2021

MySql~6 -Data Manupalation Language "JOIN"

DATA MANIPULATION LANGUAGE "JOIN"

Pengertian JOIN dalam DML

Join adalah cara untuk menghubungkan data yang diambil dari tabel-tabel melalui sebuah kolom yang menghubungkan mereka.

    • Pembuatan sistem/aplikasi, jarang sekali tidak ada join antar tabel.
    • pasti akan ada di mana kita mengakses data di tabel A membutuhkan di tabel B.
Join penting karena dengan join bisa mengambil data dari beberapa tabel melalui query. Sedangkan query adalah kemampuan untuk menampilkan data dari database untuk diolah leibih lanjut  yang biasanya diambil dari tabel-tabel dalam database. jika kita melihat jenis pada join tersebut ada beberapa yang akan menjadi pembahasan dan menjadi pokok dalam sebuah penyelesaian kasus. 

INNER - JOIN
Inner join mungkin tipe join yang paling banyak dipakai. Inner join mengembalikan baris-baris dari dua tabel atau lebih yang memenuhi syarat.
contoh sintax dari inner join adalah sebagai berikut:
  • SELECT tablel.*, tabel2.* FROM tabel INNER JOIN tabel ON tabel1.PK = tabel2.FK;
LEFT OUTER - JOIN
Left outer join (sering disingkat left join) akan mengembalikan seluruh baris dari tabel diseblah kiri yang dikenai kondisi ON dan hanya baris dari tabel disebelah kanan yang memenuhi kondisi join.
contoh sintax dari left outer - join adalah sebagai berikut:
  • SELECT tabel1.*, tabel2.* FROM table1 LEFT JOIN tabel2 ON tabel1.PK = tabel2.FK;
RIGHT OUTER - JOIN
Right outer join (sering disingkat right join) akan mengembalikan semua baris dari tabel sebeleah kanan yang dikenai kondisi ON dengan data dari tabel sebelah kiri yang memenuhi kondisi join. Teknik ini merupakan kebalikan dari left outer join.
contoh sintax dari right join adalah sebagai berikut:
  • SELECT tabel1.*, tabel2.* FROM tabel1 RIGHT JOIN tabel2 ON tabel1.PK = tabel2.FK;
FULL OUTER - JOIN
Full outer join (sering disingkat full join) akan mengembalikan seluruh baris dari kedua tabel yang dikenai ON termasuk data-data yang bernilai NULL.
contoh sintax dari full join adalah sebagai berikut:
  • SELECT columns FROM tableA FULL JOIN tableB ON A.columnName = B.columnName;


Menggabungkan 3 Tabel
Untuk menggabungkan tiga tabel atau lebih, pada dasarnya sama dengan penggabungan 2 (dua) tabel menggunakan WHERE.

Contoh where 2 tabel
  • SELECT tabel1.*, tabel2.* FROM tabel1, tabel2 WHERE tabel1.PK = tabel2.FK;
Contoh where 3 tabel
  • SELECT tabel1.*, tabel2.*,  tabel3.* FROM tabel1, tabel2, tabel3 WHERE tabel1.PK = tabel2.FK AND tabel2.PK = tabel3.FK;


Pengelompokkan hasil Query
Hasil query terkadang perlu dikelompokkan berdasarkan kriteria atau kondisi tertentu. Misalnya kita akan menampilkan jumlah barang yang dibeli untuk masing-masing transaksi (pemesanan).

sebagai contoh kasus berikut kasus data base yang dapat kita praktikan adalah sebagai berikut :
1. langkah pertma adalah kita diharuskan melakukan input data jika kita telah membuat data base nya serta tabelnya . ada beberapa yang table yang akan kita lakukan input yaitu :

a.  Input data pelanggan 



b. Input data pesan

c. Input data produk


d. Input data faktur



Jika dari data table yang telah di input kan, maka nantinya akan di gunakan sebagai contoh kasus yaitu dengan mencari JOIN dan  INNER JOIN, OUTER JOIN serta Penggabungan tabel.

1. JOIIN
        a. Penggabungan tabel pelanggan dengan pesan menggunakan Where

        b. Penggabungan tabel pelanggan dengan pesan menggunakan Inner Join


        c. Penggabungan tabel pesan dengan faktur menggunakan Where


        d. Penggabungan tabel pesan dengan faktur menggunakan Inner Join



2. OUTER JOIN
        a. Penggabungan tabel pelanggan dengan pesan menggunakan LEFT JOIN


        b. Penggabungan tabel pelanggan dengan pesan menggunakan RIGHT JOIN


3. Penggabungan 3 Tabel 



mungkin sekian sekilas materi DML JOIN, mohon maaf jika terdapat salah kata dan saya ucapkan terimakasih




 


Mysql~9 - Views

Apa Itu View dalam MySQL  View  adalah perintah query yang disimpan pada database dengan suatu nama tertentu, sehingga bisa digunakan setiap...