PENGANTAR BASIS DATA II

BAB I PENDAHULUAN

Pengenalan Tools untuk Pengolahan Database
MySQL adalah open source database yang sangat populer digunakan di dunia. MySQL dapat dengan efektif membantu seorang pengembang dalam mengembangkan aplikasi database dengan performansi yang tinggi.

Fitur-fitur MySQL antara lain: 
      Relational Database System. Seperti halnya software database lain yang ada di pasaran, MySQL termasuk RDBMS.
      Arsitektur Client-Server. MySQL memiliki arsitektur client-server dimana server database MySQL terinstal di server. Client MySQL dapat berada di komputer yang sama dengan server,dan dapat juga di komputer lain yang berkomunikasi dengan server melalui jaringan bahkan internet.
      Mengenal perintah SQL standar. SQL (Structured Query Languange) merupakan suatu bahasa standar yang berlaku di hampir semua software database. MySQL mendukung SQL versi SQL:2003.
      Mendukung Sub Select. Mulai versi 4.1 MySQL telah mendukung select dalam select (sub select).
      Mendukung views. MySQL mendukung views sejak versi 5.0
      Mendukung stored prosedured (SP). MySQL mendukung SP sejak versi 5.0
      Mendukung replication
      Mendukung transaksi
      Mendukung foreign key
      Tersedia fungsi GIS
      Free (bebas didownload)
      Stabil dan tangguh
      Fleksibel dengan berbagai pemrograman
      Security yang baik
      Dukungan dari banyak komunitas.
      Perkembangan software yang cukup cepat.
Untuk dapat mengelola database MySQL, diperlukan XAMPP, yang mana dapat didownload juga secara gratis. Berikut cara installasi XAMPP:
      Jika belum memiliki file instalasi, download file instalasi dari web manapun.
      Setelah selesai mendownload file instalasi, jalankan file tersebut dengan klik 2 kali file tersebut.
      Pertama saat file installasi dijalankan kita diminta untuk memilih bahasa yang ingin digunakan saat proses installasi, setelah selesai memilih bahasa yag akan digunakan tekan tombol next.
Gambar 1.2 Installer Language for XAMPP

      Selanjutnya akan muncul welcome screen yang berisi informasi tentang versi yang akan kita install, disini kita diminta untuk menutup terlebih dahulu program-program yang sedang aktif selama proses instalasi, jika sudah tekan tombol next. 

Gambar 1.3 XAMPP 1.6.5 Win32 (Basic Package)
      Berikutnya kita diberikan kesempatan untuk memilih lokasi program akan diinstall, secara default XAMPP akan di install pada folder C:/xampp.
 
Gambar 1.4 Tampilan installer XAMPP
 
Gambar 1.5 Pemilihan lokasi untuk install XAMPP

      Selanjutnya akan ditampilkan pilihan-pilihan fasilitas yang ada, disini terdapat pilihan untuk mengaktifkan Apache, MySql dan Filezilla sebagai service.
Gambar 1.6 Tampilan untuk mengaktifkan Apache, MySQL dan FileZilla

      Berikutnya XAMPP akan melakukan installasi program pada komputer anda.
 
Gambar 1.7 Proses installasi XAMPP

      Setelah selesai melakukan installasi pada komputer anda akan muncul sebuah pesan yang memberitahukan proses berhasil dilakukan.
Gambar 1.8 Installasi XAMPP selesai

      Selanjutnya XAMPP akan langsung mencoba menjalankan hasil installasi.
 
Gambar 1.9 Start Apache dan MySQL pada XAMPP

      Jika Apache dan MySQL sudah running, kita dapat memulai operasi database dengan membuka browser (seperti Mozilla Firefox, Google Chrome, Internet Explorer, dan sebagainya), kemudian ketikkan URL: localhost/phpmyadmin/
Gambar 1.10 Tampilan localhost/phpmyadmin


Database Languages (DDL dan DML)
DDL merupakan kependekan dari Data Definition Language mempunyai fungsi utama untuk mendefinisikan data dalam database secara logika. DDL digunakan diantaranya untuk mendefiniskan karakteristik dari record (meliputi nama, tipe dan lebar dari field), untuk menentukan kunci field, menyediakan cara untuk menentukan hubungan dengan data di field lain, mengubah struktur dari record, menapilkan struktur dari record, dan lain-lain. DDL digunakan untuk mendefinisikan, mengubah, serta menghapus database dan objek-objek yang diperlukan dalam database, misalnya tabel.

DML (Data Manipulation Language) merupakan perintah-perintah yang memungkinkan pengguna melakukan akses dan manipulasi data sebagaimana yang telah diorganisasikan sebelumnya dalam model data yang tepat. DML digunakan untuk memanipulasi database yang telah didefinisikan dengan DDL.

DDL pada localhost/phpmyadmin
Berikut akan dijelaskan DDL pada localhost, dengan memanfaatkan GUI dari localhost tersebut. Di sini akan menggunakan contoh kasus database perpustakaan. 

Membangun database transaksi penjualan
·        Pilih menu Databases yang terletak di pojok kiri atas, sehingga GUI memiliki tampilan sebagai berikut: 
Gambar 1.11 Tampilan menu Databases 
·         Selanjutnya pada kolom Create database, isikan nama database yang ingin kita buat, yaitu transaksi_penjualan.  Lalu klik tombol create

·         Setelah di klik tomblo Create akan muncul tampilan sebagai berikut: 
Gambar 1.13 Database transaksi penjualan baru yang belum memiliki tabel

Membuat tabel baru
·     Misalkan kita akan membuat tabel baru. Tabel baru tersebut adalah tabel agen yang memiliki 12 atribut, yaitu id_agen, nama_agen, alamat_agen, umur_agen, jk_agen, tgl_lahir_agen, jumlah, ukuran, no_hp, id_kplmarketing, nama_barang, dan stok . Maka berdasarkan gambar sebelumnya, kita isikan buku pada kolom Name, lalu pada Number of columns kita isikan 12. Kemudian klik tombol Go.


Gambar 1.14 Tampilan atribut dari suatu  tabel yang sudah dibuat
·     Setelah semua nama atribut dan tipe datanya diisikan, selanjutnya klik tombol Save.

Gambar 1.15 Tampilan localhost/phpmyadmin setelah pembuatan tabel baru

Menampilkan struktur tabel 
·         Untuk menampilkan struktur tabel, cukup klik saja menu structure dari tabel yang ingin ditampilkan strukturnya. Misal pada Gambar 1.15, terlihat bahwa tabel yang ada adalah tabel agen, dimana di sebelah kanannya terdapat menu browsestructure, dan lain-lain. Maka dengan mengklik tabel structure, struktur tabel agen akan ditampilkan.


Gambar 1.16 Struktur tabel agen 

Merubah struktur tabel 
·         Perubahan struktur tabel juga dapat dilakukan dengan mudah di localhost/phpmyadmin. Misal kita diharuskan menambah atribut jumlah dan ukuran dalam tabel agen. Langkah yang dilakukan adalah dengan mengisikan 2 pada kolom Add yaitu bagian yang dilingkari merah pada gambar berikut.
·         Setelah itu klik Save. Sehingga struktur dari tabel agen adalah sebagai berikut:
 
Gambar 1.19 Struktur tabel agen setelah penambahan atribut

·         Kemudian kita juga diminta merubah length dari tipe data int pada atribut jumlah menjadi 5. Perhatikan pada struktur tabel agen di atas. Di sebelah kiri atribut jumlah terdapat kotak kosong. Klik kotak tersebut untuk memfokuskan perubahan yang akan dilakukan (yaitu pada atribut jumlah). Lalu klik Change untuk melakukan perubahan terhadap atribut jumlah tersebut. Setelah dilakukan perubahan berikut struktur dari tabel agen.


Gambar 1.20 Struktur tabel agen yang telah dilakukan perubahan tipe data pada atribut jumlah.

DML pada localhost/phpmyadmin
Berikut akan dijelaskan DML pada localhost. 
Menambahkan data baru 
·         Untuk menambahkan data baru, klik menu Insert. Menu Insert terletak di atas tampilan yang pada gambar berikut ditandai dengan lingkaran merah.
·         Setelah menu insert diklik, kita dapat menambahkan data melalui halaman berikut: 
Gambar 1.21 Tampilan insert data di localhost/phpmyadmin

·         Setelah mengisikan data baru, klik tombol Go untuk menyimpannya. Untuk melihat data yang telah dimasukkan dapat mengklik menu Browse yang ada di bagian atas.

·         Kita dapat mengisikan banyak data baru di tabel agen tersebut. Bahkan dengan sekali insert, kita bisa memasukkan beberapa data sekaligus. Berikut contoh tampilan list dari data agen setelah dilakukan proses insert untuk beberapa data buku. 

Mengedit data
·         Selain dapat memasukkan data baru, localhost/phpmyadmin juga menyediakan fitur mengedit data dengan mudah. Akan tetapi sebelum dapat melakukan proses pengeditan, tabel harus memiliki primary key (PK) terlebih dahulu. Misalkan pada tabel buku, atribut id_agen akan dijadikan PK. Caranya adalah pilih menu Structure pada tabel buku tersebut, kemudian pada atribut id_agen pilih menu Primary seperti pada gambar berikut 
·         Setelah atribut id_agen dijadikan PK, tampilan tabel buku akan menjadi seperti berikut: 
Gambar 1.26 Tampilan suatu tabel yang memiliki PK

·         Untuk melakukan pengeditan suatu data, cukup mengklik menu Edit yang terletak di sebelah kiri dari suatu data pada tabel buku, seperti yang dapat terlihat pada Gambar 1.26 di atas. Setelah diklim menu Edit tersebut, akan tampil halaman seperti pada gambar berikut: 

Gambar 1.27 Halaman edit data pada http://localhost/phpmyadmin
·         Cukup ubah saja data yang ingin diubah, lalu kemudian klik Go. Maka data telah terubah. 

Menghapus data
·         Jika dilihat pada Gambar 1.26 di atas, setiap data selain memiliki menu Edit di sebelah kirinya, juga memiliki menu Delete. Menu Delete ini digunakan untuk menghapus suatu data dari suatu tabel. Misalkan kita ingin menghapus atribut agen yang berisikan data-data langkah untuk menghapusnya adalah dengan mengklik menu Delete seperti pada gambar berikut :

·         Setelah menu Delete diklik, akan tampil suatu validasi apakah kita benar benar ingin menghapus data tersebut. Jika yakin klik saja OK. Berikut tampilan tabel setelah dihapus.

BAB II PENGANTAR SQL

Membuka Database MySQL dengan Command Prompt
Pada bab sebelumnya kita sudah membahas tentang bagaimana pengelolaan database menggunakan GUI yang disediakan oleh PHPMyAdmin. Ada banyak kemudahan yang ditawarkan oleh GUI tersebut. Akan tetapi, mahasiswa tidak akan mengetahui bagaimana suatu database dikelola sehingga akan kesulitan jika diharuskan untuk membuat aplikasi database. Berdasarkan permasalahan tersebut maka mahasiswa akan diajarkan mengelola database dengan menggunakan Command Prompt, dimana pada Command Prompt tersebut pengelolaan database hanya dapat dilakukan dengan menggunakan bahasa SQL.
Bahasa SQL (Structured Query Language) merupakan bahasa standar untuk database relasional. Bahasa SQL dikembangkan pertama kali oleh IBM pada awal tahun 1970. 
Untuk membuka database MySQL dengan menggunakan Command Prompt (bagi pengguna Windows), ketikkan shortcut Windows + R untuk mengaktifkan jendela Run, seperti pada gambar berikut:
Gambar 2.1 Jendela Run 
Jendela ini digunakan untuk menjalankan suatu aplikasi dengan cepat. Pada kotak yang disediakan ketik cmd lalku klik OK. Perintah ini digunakan untuk mengaktifkan Command Prompt seperti pada gambar berikut: 
Gambar 2.2 Command Prompt
Agar dapat membuka database MySQL yang menggunakan XAMPP, maka terlebih dahulu kita harus ingat dimana kita menginstallnya. Selanjutnya kita cari file mysql.exe yang terdapat pada direktori lib. Pertama kita masuk ke direktori xampp, dengan mengetikkan perintah cd c: xampp\ (karena saya menginstall XAMPP di C): 
Gambar 2.3 Perintah pada Command Prompt untuk masuk ke direktori xampp
Selanjutnya dengan mengetikkan perintah dir kita akan ditampilkan isi dari direktori xampp tersebut : 
Gambar 2.4 Perintah pada Command Prompt untuk dir

Perhatikan bahwa terdapat direktori mysql. Kita buka direktori tersebut dengan mengetikkan perintah cd mysql yang kemudian diikuti dengan mengetikkan perintah dir untuk menampilkan isi dari direktori tersebut. 
Gambar 2.5 Perintah pada mysql untuk cd mysql
Perhatikan bahwa terdapat direktori bin. Kita buka direktori tersebut dengan mengetikkan perintah cd bin yang kemudian diikuti dengan mengetikkan perintah dir untuk menampilkan isi dari direktori tersebut.
Gambar 2.6 Perintah pada Command Prompt untuk cd bin
Perhatikan bahwa terdapat file yang bernama mysql.exe. Buka file tersebut dengan mengetikkan perintah mysql disertai -u root -p. Perintah -u root -p menjadikan kita sebagai user root dan masuk dengan mengetikkan password (default tidak memiliki password). 
Gambar 2.7 Perintah mysql digunakan untuk –u root -p
Perhatikan pada Gambar 2.7 tersebut, ditampilkan MariaDB [(none)] bahwa database MySQL telah berhasil dibuka dan kita sudah masuk ke dalamnya. menandakan Untuk keluar dari database tersebut gunakan perintah exit
Gambar 2.8 Perintah exit digunakan untuk keluar dari database
Jika dari awal kita sudah mengetahui lokasi dari file mysql.exe, maka kita cukup menuliskan lokasi tersebut dalam cmd (jangan lupa disertai -u root -p). 
Gambar 2.8 Perintah exit digunakan untuk keluar dari database
Struktur Dasar dari Query SQL
Query SQL yang digunakan memiliki struktur yang digambarkan pada tabel berikut (berikan titik koma ; setiap akhir query):
Tabel 9.1 Struktur dasar query SQL
No
Query
Kegunaan
1
Show Databases
Menampilkan list database
2
Show Tables
Menampilkan list tabel dari suatu database
3
Use Database <DB Name>
Masuk ke dalam database tertentu
4
Select <attributes> From <table name>
Menampilkan data dari atribut-atribut pada suatu tabel
5
Desc <table name>
Mendeskripsikan atau menampilkan struktur dari suatu tabel
DDL 

5
Create Database <DB
Name>
Membuat database baru
6
Create Table <table name> (<attributes>)
Membuat tabel baru beserta atribut-atributnya
7
Alter…
Merubah struktur dari suatu tabel
8
Drop…
Menghapus database, tabel, atribut dari tabel
DM L

9
Insert INTO <table name>
(<attributes>)
Values(<values>)
Memasukkan data baru ke dalam suatu tabel
10
Update <table name> Set …
Merubah data dari suatu tabel
11
Delete From <table name>
Menghapus data dari suatu tabel

Operasi Dasar SQL

·         Perhatikan pada cmd, tertulis MariaDB[(none)]. None menandakan belum ada database dipilih. Untuk melihat list database, gunakan SHOW DATABASES;.
Gambar 2.3.1 Menampilkan list database dengan SHOW DATABASES 

·         Pada Bab 8 sebelumnya, telah dibangun database dengan nama transaksi_penjualan.
·         Untuk membuka database tersebut, gunakan query USE transaksi_penjualan;

Gambar 2.3.2 Query USE transaksi_penjualan digunakan untuk membuka database transaksi_penjualan

·         Perhatikan bahwa yang awalnya bertuliskan MariaDB[(none)] sekarang menjadi MariaDB[transaksi_penjualan]. Tampilan ini menandakan bahwa database yang digunakan saat ini adalah transaksi_penjualan.
·         Pada Bab sebelumnya juga dibangun suatu tabel untuk database transaksi_penjualan. Untuk menampilkan list tabel dari suatu database, gunakan query SHOW TABLES;
Gambar 2.3.3 Query SHOW TABLES untuk menampilkan list tabel

·         Perhatikan bahwa ada satu tabel pada database transaksi_penjualan, yaitu tabel agen. Untuk dapat menampilkan struktur tabel agentersebut, gunakan query DESC agen;
Gambar 2.3.4 Struktur tabel buku ditampilkan dengan DESC agen.
·         Untuk dapat menampilkan data agen, gunakan query SELECT * FROM agen;. Tanda menandakan bahwa yang ditampilkan adalah data untuk semua atribut. 
Gambar 2.3.5  SELECT * FROM agen digunakan untuk menampilkan data pada tabel agen
·         Sedangkan untuk menampilkan data dari beberapa atribut saja, dapat dengan menyebutkan nama-nama atributnya. Contoh, jika kita ingin menampilkan atribut judul dan pengarang, gunakan query SELECT ID-agen, Nama_agen FROM agen;.
Gambar 2.3.6 Tampilan data dari atribut judul dan pengarang pada tabel buku

SQL Data Definition

Data definition terdiri atas membangun, merubah struktur atau meniadakan database atau tabel.  

Merubah struktur suatu tabel
Struktur dari suatu tabel dapat diubah dengan menggunakan perintah ALTER. Perubahan yang dapat dilakukan adalah penambahan suatu atribut, perubahan nama dan tipe suatu atribut, dan menghapus suatu atribut.  
Merubah nama atribut dari suatu tabel 
Gunakan ALTER TABLE namatabel CHANGE atr_awal atr_skrg datatypeMisal pada tabel agen dilakukan perubahan nama atribut jk_agen menjadi jenis_kelamin_agen, maka query yang digunakan adalah: 
ALTER TABLE agen CHANGE jk_agen jenis_kelamin_agen varchar (15);
Gambar 2.4.1.1 Perubahan nama atribut dari suatu tabel 
Merubah tipe data dari suatu atribut 
Gunakan ALTER TABLE namatabel MODIFY COLUMN column_name datatype;. Misal ingin dilakukan perubahan tipe data dari atribut Alamat_Agen, dari varchar(50) menjadi varchar(70). Query yang diberikan adalah:
ALTER TABLE buku MODIFY COLUMN Alamat_Agen varchar(70);
Gambar 9.4.1.2 Perubahan tipe data dari suatu atribut
Menghapus suatu atribut
Gunakan ALTER TABLE namatabel DROP nama atribut. Misal ingin dilakukan penghapusan atribut Status_Agen pada tabel agen. Query yang diberikan adalah:
ALTER TABLE buku DROP Status_Agen;
Gambar 2.4.1.3 Menghapus suatu atribut dari tabel
Menambahkan suatu atribut 
Misal dibutuhkan suatu penambahan atribut baru, dapat menggunakan struktur: ALTER TABLE namatable ADD atribut datatype;
Misal ingin ditambahkan atribut Status_Agen pada tabel agen tersebut. Query yang dapat digunakan adalah sebagai berikut:
ALTER TABLE agen ADD Status_Agen Varchar;
Gambar 2.4.1.4 Penambahan atribut stok pada tabel agen
Menghapus primary key
Perhatikan pada tabel buku tersebut, atribut ID_Agen diset sebagai primary key. Sekarang kita akan menjadikan PK tidak lagi pada atribut ID_Agen dengan query 
ALTER TABLE agen DROP PRIMARY KEY;
Gambar 2.4.1.5 Menghapus primary key dari suatu tabel

Menghapus Tabel dan Database
Untuk menghapus suatu tabel, gunakan query DROP TABLE namatabel. Misal jika ingin menghapus tabel agen, gunakan query sebagai berikut:
DROP TABLE agen;
Gambar 2.4.2 DROP TABLE agen menyebabkan database transaksi_penjualan tidak memiliki tabel

Untuk menghapus suatu database, gunakan query DROP DATABASE namadatabaseMisal jika ingin menghapus database transaksi_penjualan dapat menuliskan query sebagai berikut:
DROP DATABASE transaksi_penjualan;
Gambar 2.4.3 Hasil DROP DATABASE

Membangun Database dan Tabel
Membangun database 
Berikut adalah list dari database yang dimiliki:

Misal diinginkan membangun database baru yang bernama transaksi_penjualan. Dapat menggunakan query berikut:

CREATE DATABASE transaksi_penjualan;

Membangun tabel 
Dimisalkan akan dibangun tabel agen dengan atributnya adalah id_agen (sebagai PK). Query yang digunakan adalah sebagai berikut:  CREATE TABLE agen ( id_agen int NOT NULL PRIMARY KEY, Nama_Agen varchar (10), Alamat_Agen varchar (40),jk_agen varchar (15), status_agen varchar (15), No_Hp_Agen, Tgl_Lahir_Agen varchar (15), Umur_Agen varchar (5), Jumlah int (5), Ukuran varchar (10);
Gambar 2.4.3.1 Pembangunan tabel 

BAB III MODIFIKASI DATABASE

NULL Values
Suatu atribut dari tabel dapat di set agar dapat berisi nilai NULL atau tidak. Pada Gambar terlihat bahwa pada tabel agen hanya atribut yang bukan primary key yang dapat bernilai NULL. Misal atribut agen tidak seharusnya memiliki nilai NULL, maka dapat diubah dengan menggunakan query:
ALTER TABLE buku CHANGE Nama_Agen Nama_Agen varchar(70) NOT NULL;
Gambar 3.1 Merubah suatu atribut menjadi NOT NULL
Jika ingin merubah atribut Nama_agen boleh memiliki nilai NULL, maka ubah saja dengan menggunakan query default:
ALTER TABLE buku CHANGE Nama_Agen Nama_Agen varchar(70);
Gambar 3.2 Merubah suatu atribut sehingga dapat diisi dengan nilai NULL

INSERT
INSERT digunakan untuk memasukkan data baru ke dalam suatu tabel. Contoh berikut adalah query untuk memasukkan suatu data ke dalam tabel buku (yang kemudian ditampilkan dengan menggunakan SELECT):
Gambar 3.1 Query untuk memasukkan data baru ke dalam suatu tabel
Anda dapat juga memasukkan banyak data sekaligus ke dalam suatu tabel:
Gambar 3.2 Query untuk memasukkan banyak data sekaligus
Anda dapat memasukkan data dengan nilai NULL, misalkan pada gambar berikut:
Gambar 3.3 Query untuk memasukkan data dengan nilai NULL
Sama dengan kasus di atas, Anda dapat memasukkan data untuk beberapa atribut saja, dengan yang lain secara otomatis akan bernilai NULL:

Gambar 3.4 Query untuk memasukkan data pada atribut tertentu

UPDATE
Update digunakan untuk merubah data dari suatu tabel. Misal sebelum perubahan data dilakukan, dibuat atribut Tempat_Lahir untuk tabel Agen:
Gambar 3.1 atribut Tempat_Lahir untuk tabel Agen:
Selanjutnya untuk setiap data agen memiliki jumlah dan ukuran adalah 50. Query yang digunakan adalah sebagai berikut :
Gambar 3.2 Merubah data dari suatu tabel menggunakan UPDATE

Anda bisa juga merubah nilai dari beberapa data dengan memanfaatkan klausa WHERE. Misal dilakukan perubahan data
Gambar 3.3 Perubahan data dilakukan berdasarkan nilai atribut yang NULL
Klausa WHERE tidak hanya dapat digunakan untuk nilai atribut NULL saja. Dimisalkan untuk semua data maka querynya adalah sebagai berikut:
Gambar 3.4 Perubahan data dilakukan berdasarkan atribut tertentu
Perubahan data juga dapat dilakukan berdasarkan beberapa karakter dari suatu atribut dengan menggunakan LIKE dan ‘%’. Misal untuk nama yang memuat kata putri memiliki umur 20:
Gambar 3.5 Perubahan data dilakukan berdasarkan potongan data dari atribut tertentu
Perubahan data juga dilakukan dengan menggunakan operasi matematika:
Gambar 3.6 Perubahan data dengan operasi matematik

DELETE 
DELETE digunakan untuk menghapus data dari suatu tabel. Sama seperti UPDATE, query DELETE juga dapat dilakukan berdasarkan atribut tertentu. Misal ingin dilakukan DELETE untuk Id_Agen = 2. Query nya adalah sebagai berikut:
Gambar 3.1 Menghapus data tertentu dari suatu tabel
 Sedangkan untuk menghapus semua data dari suatu tabel dapat menggunakan query sebagai berikut:
Gambar 3.2 Menghapus semua data dari suatu tabel

BAB VI  FUNGSI AGREGAT

Fungsi Agregat
Pada pertemuan sebelumnya, semua data pada tabel agen telah dihapus. Makapada pertemuan ini dilakuan pengisian data terlebih dahulu:


Gambar 4.1 Tabel buku untuk studi kasus pertemuan BAB 11
 Average
Fungsi average adalah mencari rata-rata suatu nilai dari suatu atribut pada suatu tabel. Misal ingin dicari rata-rata jumlah adalah 20 :
Gambar 4.2  Rata-rata jumlah

Perhatikan pada Gambar 4.2 tersebut, judul kolom susah dipahami oleh pengguna. Anda dapat menggunakan fungsi alias untuk membuat nama kolom lebih mudah dipahami. Fungsi alias adalah ‘AS’:
Gambar 4.3 Penambahan fungsi alias untuk penamaan suatu atribut
Bahkan dengan fungsi alias ini Anda dapat membuat atribut yang memiliki spasi:


Gambar 4.4 Fungsi alias dapat membuat atribut Anda memiliki spasi
Minimum
Fungsi minimum digunakan untuk mencari nilai paling kecil dari suatu atribut pada suatu tabel. Misal ingin dicari stok paling minimum dari tabel agen:


Gambar 4.1 jumlah agen paling minimum
Maximum
Fungsi maximum digunakan untuk mencari nilai paling besar/tinggi dari suatu atribut pada suatu tabel. Misal ingin dicari jumlah barang yang paling baru:

Gambar 4.1 jumlah barang terbaru
Total
Fungsi total digunakan untuk mendapatkan jumlah total dari suatu atribut pada suatu tabel. Fungsi ini menggunakan SUM pada query nya. Misal ingin dihitung banyaknya jumlah agen dalam memesan barang:


Gambar 4.1 jumlah barang 
Count
Fungsi count digunakan untuk mendapatkan banyaknya data dari suatu tabel. Misal ingin didapatkan berapa jenis jumlah barang:


Gambar 4.1 Banyaknya jumlah barang

BAB V  SET OPERATIONS

Set Operations
Pada pertemuan ini diperlukan lebih dari satu tabel untuk database transaksi_penjualan. Tabel tersebut memiliki karakteristik yang serupa dengan tabel agen. Misal tabel yang dimaksud adalah tabel yang menyimpan data-data agen, sehingga memiliki nama agen_baru:
Gambar 5.1 Tabel agen baru
Perhatikan pada CREATE TABLE yang dilakukan untuk agen_baru diberikan AUTO_INCREMENT. Dengan demikian pada saat penginputan data baru, id_agen tidak perlu diisikan karena akan terisi sendiri dengan otomatis dengan nilai yang selalu meningkat (increment). Sekarang Anda bisa mengisi tabel agen_baru dengan data sebagai berikut:
Gambar 5.2 Penginputan agen baru

Operasi Union
Operasi Union digunakan ketika mendapati kasus diperlukannya penggabungan data dari dua tabel yang memiliki kesesuaian. Format dari operasi ini adalah:
(SELECT …) UNION (SELECT …)
Sebagai contoh diperlukan data yang menggambarkan data seluruh buku, baik yang masih bagus ataupun yang sudah rusak. Dengan demikian diperlukan operasi union antara tabel agen dengan tabel agen_baru:


Gambar 5.3 Konsep UNION pada MySQL
Operasi Intersect
Operasi Intersect digunakan ketika mendapati kasus diperlukannya irisan data dari dua tabel yang bersesuaian. Pada MySQL tidak terdapat perintah INTERSECT, sehingga dapat digunakan format berikut untuk menggantikannya: SELECT a FROM b WHERE a IN (SELECT a FROM c);
Sebagai contoh diperlukan data buku yang terdapat pada tabel agen dan juga terdapat pada tabel agen_baru:

Gambar 5.4 Konsep INTERSECT pada MySQL
Operasi Except
Operasi Except adalah kebalikan dari Intersect, dimana diperlukan tampilan data dari suatu tabel x yang tidak ada di tabel y. Formatnya pada MySQL adalah sebagai berikut:
SELECT a FROM b WHERE a NOT IN (SELECT a FROM c)
Sebagai contoh diperlukan data buku yang rusak semua, sehingga tidak ada di tabel agen:
Gambar 5.5 Konsep EXCEPT pada MySQL

BAB VI MULTIPLE RELATIONS

MULTIPLE RELATIONS
Pada pertemuan sebelumnya, telah dibangun dan diisi tabel agen dan tabel agen_baru. Pada pertemuan kali ini, kedua tabel tersebut akan dihapus terlebih dahulu karena kedua tabel tersebut tidak dibangun atas dasar database relasional:
Kemudian kita akan rancang database relasional sederhana untuk kasus transaksi_penjualan, seperti yang digambarkan pada ERD berikut:

DDL untuk Multiple Relations
entitas email dan entitas kepala_marketing memiliki atribut foreign key (FK) di dalamnya. Sedangkan entitas lainnya, tidak memiliki FK.





Selanjutnya dibangunlah tabel-tabel yang terdapat foreign key di dalamnya. Pertama akan dibangun tabel agen. Di dalam tabel tersebut terdapat foreign key ID_Kplmarketing yang mana referensinya adalah ID_KplPro pada tabel agen. Berikut query yang digunakan:
CONSTRAINT berarti menambahkan batasan berupa Foreign Key yang pada Gambar 6.4 diberikan nama foreign key nya. Nama foreign key haruslah unique, sehingga jika ada pemakaian dua foreign key atau lebih, maka berikanlah nama yang berbeda. Setelah CONSTRAINT diberikan kemudian diikuti dengan FOREIGN KEY yang menunjukkan atribut mana pada tabel tersebut yang menjadi FK. REFERENCES adalah merujuk pada Primary Key atau atribut yang menjadi referensi dari FK yang dibuat, dengan format REFERENCES nama_tabel(nama_atribut_referensi)ON UPDATE CASCADE berarti jika nilai atribut referensi berubah (diupdate), maka perubahan tersebut terjadi pula pada semua atribut FK nya. ON DELETE CASCADE berarti jika data dengan nilai atribut referensi dihapus, maka demikian pula dengan data yang memiliki atribut FK nya. Selain CASCADE, dapat juga menggunakan RESTRICT dan SET NULL. Tentunya dengan kasus dan kepentingan yang berbeda.

Selanjutnya dengan cara yang sama kita dapat membuat tabel sales. Kode pada id_sales direncanakan merupakan gabungan dari Id_sales dan id_kplmarketing.   


DML untuk Multiple Relation
Untuk menginputkan data pada tabel yang memiliki atribut Foreign Key, harus dipastikan terlebih dahulu apakah pada tabel masternya sudah terisi atau belum. Dipastikan juga apakah nilai FK yang akan dimasukkan sudah ada pada tabel master atau belum. Misal, tabel agen masih kosong. Sekarang kita akan mengisikan tabel agen dimana terdapat FK ID_Agen . Kita akan isikan ID_Agen dengan nilai 1:

Seperti terlihat pada gambar di atas, akan keluar pesan kesalahan akibat nilai ID_Agen yang dimasukkan pada tabel agen  tidak ada pada tabel agen (tabel master). 
Lain halnya jika Anda menginputkan nilai NULL untuk ID_Agen, walaupun pada tabel agen belum memiliki data, tidak menjadi masalah.
Langkah yang tepat adalah dengan mengisikan terlebih dahulu tabel masternya. Di sini akan dinputkan data-data untuk tabel agen:
nilai ID_Agen adalah NULL. Nilai tersebut dapat diubah dengan nilai referensi (Primary Key) pada tabel agen.
Selanjutnya kita selesaikan penginputan untuk tabel-tabel lainnya.



SELECT dengan Klausa Where
Jika melihat tampilan tabel agen dan tabel ID_Agen cukup tidak user friendly karena pengguna hanya mendapatkan informasi nomor ID untuk agen dan kepala marketing. Hal itu terjadi karena untuk menampilkan data pada tabel agen dan Kpl_marketing menggunakan bahasa SQL standar. Agar dapat menampilkan nama agent di setiap daftar agen, kita bisa menghubungkan antara ID_Agen pada tabel agen (sebagai FK) dengan ID_Kpl_marketing pada tabel agen (sebagai PK). Tapi sebelumnya harus ditentukan terlebih dahulu atribut apa saja yang ingin ditampilkan. Misalkan kita ingin menampilkan atribut Id_agen, nama_agen, alamat_agen, dan jk_agen maka query yang dapat digunakan adalah sebagai berikut:
tersebut FROM diikuti oleh dua tabel. Hal ini dikarenakan yang ingin ditampilkan kepada pengguna adalah atribut-atribut yang berasal dari dua tabel tersebut. Sementara WHERE diikuti dengan menyamakan atribut FK dan PK, yaitu id_kpl_marketing pada tabel agen dan id_kpl_marketing pada tabel agen. Nama tabel disebutkan agar tidak terjadi ambiguitas dari sistem, karena kedua atribut yang disamakan nilainya memiliki nama yang sama.


BAB VII SUBQUERY BERSARANG 
SELECT
Berdasarkan kasus yang sudah ada, ada beberapa permasalahan yang mungkin saja agak rumit jika diselesaikan dengan query SQL dasar. Misal Anda diminta untuk menampilkan data agen.
Untuk menyelesaikan ini Anda dapat menggunakan subquery bersarang:
Gambar 7.1 Query bersarang untuk kasus SELECT
DISTINCT digunakan untuk jika dalam suatu tampilan data terdapat baris yang duplikat (lebih dari satu baris dengan isi yang sama), maka hanya ditampilkan satu baris data saja. 

INSERT
Jika Anda diminta untuk memasukkan data baru, dimana memiliki detail sebagai berikut: Maka Anda dapat menggunakan query bersarang berikut untuk tabel agen:
Gambar 7.2 Query bersarang untuk menginputkan data agen

Sementara untuk tabel agen akan menjadi lebih rumit, karena kita tidak tahu informasi email. Sedangkan PK dari agen mengharuskan format kode memuat id_agen dan id_email. Hal tersebut bukan masalah, Anda dapat memasukkan kode dummy terlebih dahulu, yang kemudian Anda bisa update nantinya. Misal:

Gambar 7.3 Query bersarang untuk menginputkan data transaksi_penjualan
 Selanjutnya Anda tinggal menuliskan perintah UPDATE :

UPDATE
Perhatikan tampilan data berikut:



Misalkan ada kesalahan pada data di atas data email “Fuzzy Inference System” Maka query bersarang yang bisa Anda gunakan adalah:

Gambar 7.4 Query bersarang untuk kasus UPDATE
DELETE
Sama seperti kasus sebelumnya, jika diminta untuk menghapus data email dengan password 12945, maka query yang dapat digunakan adalah sebagai berikut:
Gambar 7.5 Query bersarang untuk kasus DELETE
Jika data buku ada yang dihapus, lalu bagaimana dengan tabel email?
Karena sebelumnya membangun tabel email menggunakan ON DELETE CASCADE, maka seharusnya data pada tabel tersebut akan otomatis ikut hilang. Mari kita buktikan, tampilkan data pada tabel email:
Terlihat pada tabel tersebut tidak ada ID_Email = 1, karena sudah dihapus menggunakan query sebelumnya. Sekarang kita tampilkan tabel email :

Dapat terlihat bahwa data dengan id_email=1 sudah tidak ada lagi.


BAB VIII JOIN
Natural Join
Jika diperhatikan, penulisan query menggunakan SELECT untuk menampilkan data yang berrelasi menggunakan klausa WHERE memerlukan banyak energi. Query yang dituliska n panjang sehingga kemungkinan kesalahan dalam penulisan query pun semakin besar. Sebagai contoh perhatikan query berikut yang menggunakan klausa WHERE:
 
Gambar 8.1 Menampilkan  data email menggunakan klausa WHERE
 Sekarang Anda dapat m embuat tampilan yang sama dengan query yang lebih singkat, yaitu menggunakan NATURAL JOIN. Seperti yang ditunjukkan pada gambar berikut:

Gambar 8.2 Menampilkan data email menggunakan NATURAL JOIN
Anda tidak perlu lagi menyamakan FK dengan PK nya, karena NATURAL JOIN memastikan atribut yang bernama sama pasti berhubungan. Sehingga Anda dapat menghemat waktu dan energi dengan menggunakan NATURAL JOIN. Walaupun demikian, ada paling tidak dua kondisi yang harus diperhatikan jika Anda memutuskan menggunakan NATURAL JOIN:
1.      Pastikan untuk atribut-atribut yang berhubungan/berrelasi memiliki nama yang sama.
2.      Pastikan untuk atribut-atribut yang tidak saling berhubungan/berrelasi tidak memiliki nama yang sama.
Untuk membuktikan kondisi tersebut, di sini akan diberikan tambahan tabel yaitu tabel email. Dimana tabel email berrelasi dengan tabel lainnya dalam hal pengelolaan sehingga database memiliki tabel yang mencatat history pengelolaan data. Lebih jelasnya digambarkan pada ERD berikut:
Gambar 8.3 erd
 Perhatikan pada tabel email PK nya berubah menjadi ID_Email (silakan diubah dengan menggunakan ALTER). Selain itu terdapat juga tambahan entitas yang lain, seperti sales. Berikut akan ditunjukkan pembuatan tabel sales.
Gambar 8.4 Pembuatan tabel sales
Sedangkan untuk tabel lainnya hanya akan dicontohkan pembuatan tabel ID_Kpl_marketing saja. Silakan tabel lainnya juga dibuat dengan cara yang sama.
Gambar 8.5 Pembuatan tabel ID_Kpl_marketing
 Kemudian isikan tabel sales dan tabel Kpl_Produksi yang telah dibuat tadi dengan data sebagai berikut (tabel lainnya silakan diisi sendiri):
Gambar 8.6 Penginputan data sales

Gambar 8.7 Penginputan data Kpl_marketing
Perhatikan bahwa tabel sales dan tabel agen memiliki atribut yang bernama sama, yaitu nama. Kedua tabel tersebut berrelasi melalui tabel ID_Kpl_marketing. Saat pengisian yang dilakukan, diketahui bahwa sales yang melakukan penginputan. Akan tetapi jika kita gunakan natural join untuk menampilkan nama petugas dan nama pengarang pada tabel sales  hasilnya adalah sebagai berikut:
Gambar 8.8 Data kosong akibat kesalahan natural join
Himpunan kosong dihasilkan dari natural join karena tidak memperhatikan kondisi dan syarat untuk natural join. Hal ini diakibatkan karena pada tabel kpl_pro memiliki atribut nama yang namanya sama dengan atribut pada tabel id_kpl_marketing. Untuk mengatasi permasalahan ini, dapat digunakan klausa where:

Selain dengan klausa where, dapat juga digunakan left join, right join dan inner join untuk memecahkan permasalah di atas, yang dijabarkan pada sub bab beikutnya. 

Left Join dan Right Join
Left Join akan menampilkan semua record dari tabel sebelah kiri, dan record dari tabel sebelah kanan yang cocok. Hasilnya akan NULL untuk bagian kanan jika tidak ada kecocokan. Misal diminta untuk ditampilkan tabel Kpl_marketing yang menampilkan juga no HP kepala marketing yang mencatat. Query yang tepat jika menggunakan left join adalah sebagai berikut:

Gambar 8.9 Contoh penggunaan left join untuk menampilkan no_hp kepala marketing
Akan tetapi jika posisi kedua tabel yang berhubungan diubah, maka tampilan datanya pun akan memiliki arti yang lain. Yaitu menampilkan pekerjaan setiap
Kepala marketing dalam mengelola data, dalam hal ini tidak melakukan pekerjaan apapun dalam mengelola data agen.
Gambar 8.10 Beda posisi tabel pada left join menyebabkan perbedaan makna tampilan data

Right join adalah join yang serupa dengan left join, hanya saja posisi tabel yang kanan akan ditampilkan semua record nya. Sedangkan tabel yang kiri hanya record yang bersesuaian saja.

Inner Join
Versi aman dari left join maupun right join adalah inner join. Inner join tidak mementingkan posisi tabel pada query dan fungsinya sama dengan klausa where. Misalkan diperlukan tampilan dari pengelolaan kepala marketing, dimana menampilkan nama kepala marketing dan nama kepala produksi yang dikelola, query nya adalah sebagai berikut:
Gambar 8.11 Contoh penggunaan inner join






















Tidak ada komentar:

Posting Komentar

BAB VIII JOIN 8.1. Natural Join Sekarang Anda dapat membuat tampilan yang sama dengan query yang lebih singkat, yaitu menggunakan ...