Dynamic Blinkie Text Generator at TextSpace.net

Feedburner

I heart FeedBurner

Rabu, 20 April 2016

Perbedaan Unset dan Session Destroy

Unset akan menghancurkan variabel sesi tertentu sedangkan session_destroy() akan menghancurkan semua data sesi untuk pengguna tersebut.
Itu benar-benar tergantung pada aplikasi Anda untuk yang satu harus Anda gunakan. Hanya perlu di atas dalam pikiran.

#unset($_SESSION['name']); // will delete just the name data session_destroy(); // will delete ALL data associated with that user.
 

Selasa, 19 April 2016

AGREGASI DATA di mysql

Group function merupakan fungsi yang akan akan memproses banyak data dan menghasilkan satu atau beberapa output sesuai dengan pengelompokan yang dilakukan. Untuk pengelompokan digunakan klausa GROUP BY. Berbeda dengan Single-row function yang akan memproses satu data dan menghasilkan satu output. Untuk melihat gambar ilustrasi perbedaan antara single-row function dan group function lagi Materi 7 tentang Single-row function.
Jenis group function :
- AVG untuk mencari nilai rata-rata
- COUNT untuk menghitung jumlah data/baris
- MAX untuk mencari nilai paling besar
- MIN untuk mencari nilai paling kecil
- STDDEV untuk menghitung nilai standard deviasi (statistik)
- SUM untuk menghitung nilai total
- VARIANCE untuk menghitung nilai variance (statistik)
Fungsi AVG, SUM, STDDEV dan VARIANCE hanya berlaku untuk data bertipe numerik, tidak bisa untuk karakter atau date.
Syntax lengkap untuk perintah SQL dengan GROUP BY :
SELECT group_function(kolom),...
FROM tabel
[WHERE kondisi]
[GROUP BY group_function(kolom)|kolom_alias]
[HAVING kondisi]
[ORDER BY kolom|kolom_alias]
Untuk mempraktekkan group function, gunakan tabel EMP yang ada di schema SCOTT, untuk itu tentunya kita harus login dulu sebagai user SCOTT sbb:
SQL> connect scott
Password : *****
Connected
Mari kita periksa data di tabel EMP
SQL> set pagesize 50
SQL> SELECT deptno, ename, sal
  2  FROM emp
  3  ORDER BY deptno;

    DEPTNO ENAME             SAL
---------- ---------- ----------
        10 CLARK            2450
        10 KING             5000
        10 MILLER           1300
        20 JONES            2975
        20 FORD             3000
        20 ADAMS            1100
        20 SMITH             800
        20 SCOTT            3000
        30 WARD             1250
        30 TURNER           1500
        30 ALLEN            1600
        30 JAMES             950
        30 BLAKE            2850
        30 MARTIN           1250

14 rows selected.
Kita diminta untuk menampilkan nilai salary yang paling tinggi, untuk itu gunakan function MAX sperti ini:
SQL> SELECT max(sal)
  2  FROM emp;

  MAX(SAL)
----------
      5000
Function MAX akan memperoses semua baris data yang ada (14 row) untuk menghasilkan satu nilai maksimum (5000). Nilai 5000 berarti salary tertinggi dalam perusahaan tersebut. Jika Anda menginginkan salary tertinggi di setiap department (DEPTNO) tambahkan klausa GROUP BY deptno, perintah diatas menjadi :
SQL> SELECT deptno, max(sal)
  2  FROM emp
  3  GROUP BY deptno;

    DEPTNO   MAX(SAL)
---------- ----------
        30       2850
        20       3000
        10       5000
Silahkan dicoba dengan group funtion yang lain.
HAVING
Jika dalam single-row function untuk menyeleksi data kita menggunakan klausa WHERE. Sedangkan untuk menyeleksi data dimana data yang akan kita seleksi merupakan hasil dari group function digunakan HAVING. Sebagai contoh, tampilkan Department yang rata-rata salary-nya diatas 2500.
Mari kita lihat dulu rata-rata gaji per-Department:
SQL> SELECT deptno, avg(sal)
  2  FROM emp
  3  GROUP BY deptno;

    DEPTNO   AVG(SAL)
---------- ----------
        30 1566.66667
        20       2175
        10 2916.66667
Jika yang ingin ditampilkan adalah department yang rata-rata salarynya diatas 2500 berarti yang dijadikan pembanding adalah AVG(SAL) karena ini merupakan group function maka harus digunakan HAVING untuk menyeleksinya. HAVING boleh diletakkan sebelum atau sesudah GROUP BY
SQL> SELECT deptno, avg(sal)
  2  FROM emp
  3  GROUP BY deptno
  4  HAVING avg(sal) > 2500;

    DEPTNO   AVG(SAL)
---------- ----------
        10 2916.66667
GROUP BY dengan ROLLUP dan CUBE
ROLLUP dan CUBE adalah group function yang sering digunakan dalam desain query untuk data warehouse. ROOLUP digunakan untuk menghitung nilai sub total dan total dari suatu group data sedangkan CUBE digunakan untuk menghitung sub total dari group data dalam beberapa dimensi.
Ok, untuk lebih memahami pemakaian ROLLUP dan CUBE buatlah tabel penduduk beserta isinya dengan menjalankan script create_penduduk.sql, ambil script disini. Setelah didownload dan letakkan dic:\create_penduduk.sql
Jalankan script dengan cara berikut:
SQL> @c:\create_penduduk.sql
Tabel penduduk berisi data sebanyak 40 penduduk yang dibagi dalam 2 kecamatan dan 4 kelurahan, jenis kelamin laki-laki ‘L’ dan perempuan ‘P’. Datanya seperti ini :
SQL> select * from penduduk;

ID NAMA            J KECAMATAN       KELURAHAN
---------- --------------- - --------------- ---------------
1 JOHAN           L Kecamatan 1     Kelurahan 1
2 AMIR            L Kecamatan 1     Kelurahan 1
3 KUSNANTO        L Kecamatan 1     Kelurahan 1
4 MELISA          P Kecamatan 1     Kelurahan 1
5 KUSNO           L Kecamatan 1     Kelurahan 1
6 ANDRIANI        P Kecamatan 1     Kelurahan 1
7 AHMAD           L Kecamatan 1     Kelurahan 1

--> dan seterusnya...
Kita diminta untuk menghitung jumlah penduduk per-kelurahan dan per-kecamatan. Apakah hal ini bisa diselesaikan dengan GROUP BY ?, mari kita coba.
SQL> SELECT kecamatan, kelurahan, COUNT(id) as "JlhPenduduk"
  2  FROM penduduk
  3  GROUP BY kecamatan, kelurahan
  4  ORDER BY kecamatan, kelurahan;

KECAMATAN       KELURAHAN       JlhPenduduk
--------------- --------------- -----------
Kecamatan 1     Kelurahan 1              19
Kecamatan 1     Kelurahan 2               6
Kecamatan 2     Kelurahan 3               5
Kecamatan 2     Kelurahan 4              10
Ternyata, dengan GROUP BY kita hanya bisa menampilkan sub total per kelurahan sedangkan total total per-kecamatan total keseluruhan penduduk tidak bisa dimunculkan. Untuk itu kita gunakan GROUP BY dengan ROLLUP, sbb:
SQL> SELECT kecamatan, kelurahan, COUNT(id) as "JlhPenduduk"
  2  FROM penduduk
  3  GROUP BY ROLLUP(kecamatan, kelurahan)
  4  ORDER BY kecamatan, kelurahan;

KECAMATAN       KELURAHAN       JlhPenduduk
--------------- --------------- -----------
Kecamatan 1     Kelurahan 1              19
Kecamatan 1     Kelurahan 2               6
Kecamatan 1                              25
Kecamatan 2     Kelurahan 3               5
Kecamatan 2     Kelurahan 4              10
Kecamatan 2                              15
                                         40

7 rows selected.
.
Kita bisa mempermanis tampilan dengan sedikit trik seperti ini :
SQL> BREAK ON kecamatan SKIP 1
SQL> SELECT kecamatan,
  2         NVL(kelurahan,'Total --->') As "Kelurahan",
  3         COUNT(id) AS "JlhPenduduk"
  4  FROM penduduk
  5  GROUP BY ROLLUP(kecamatan, kelurahan)
  6  ORDER BY kecamatan, kelurahan;

KECAMATAN       Kelurahan       JlhPenduduk
--------------- --------------- -----------
Kecamatan 1     Kelurahan 1              19
                Kelurahan 2               6
                Total --->               25

Kecamatan 2     Kelurahan 3               5
                Kelurahan 4              10
                Total --->               15

                Total --->               40

7 rows selected.
Dengan ROLLUP dan sedikit modifikasi tampilan masalah menghitung subtotal terselesaikan.
Catatan : untuk fungsi NVL silahkan lihat di single-row function.
Bagaimana dengan CUBE?, seperti sudah disebutkan diatas, CUBE digunakan untuk membuat cross-tabulasi(sub-total lebih dari satu dimensi). Misal kita diminta untuk menghitung jumlah penduduk per-kecamatan berdasarkan jenis kelaminnya, kemudian setelah itu juga dihitung berapa jumlah penduduk berdasarkan jenis kelamin tanpa memperhatikan kecamatannya. Mungkin pembaca masih sedikit bingung mencerna kalimat diatas :) . Sebaiknya kita coba saja langsung, caranya adalah sbb:
SQL> SELECT kecamatan,
  2         jk as "JenKelamin",
  3         COUNT(id) as "JlhPenduduk"
  4  FROM penduduk
  5  GROUP BY CUBE(kecamatan, jk)
  6  ORDER BY kecamatan, jk;

KECAMATAN       J JlhPenduduk
--------------- - -----------
Kecamatan 1     L           7
                P          18
                           25

Kecamatan 2     L           5
                P          10
                           15

                L          12
                P          28
                           40
9 rows selected.
Apakah Anda masih bingung membaca hasil query diatas?, sebenarnya secara simple, hasil query diatas bisa ditampilkan dengan bentuk tabel seperti ini :
Cross Tabulasi hasil query CUBE
Dengan ilustrasi gambar diatas mudah-mudahan Anda bisa lebih memahami tentang CUBE.
Demikian ulasan tentang Aggregasi, GROUP BY, ROLLUP dan CUBE. Semoga bermanfaat.

Dasar Dasar SQL

A. DASAR TEORI
Seperti halnya pemrograman java, C++ dll, SQL juga memiliki operator dasar. Operator dalam SQL adalah simbol yang digunakan untuk menginstruksi program untuk melakukan sesuatu. Akan berbeda definisi ketika kita membicarakan operator dalam kehidupan sehari-hari. Banyak sekali operator yang bisa digunakan ketika kita ingin menuliskan query. Disini kita akan membahas satu persatu operator dasar yang bisa kitra gunakan dalam menuliskan query.
1. AS (Alias)
Seperti halnya DBMS lain, MySQL juga menyediakan perintah tambahan AS untuk mengganti sementara nama tabel atau kolom. Disebut sementara karena pada dasarnya nama tabel tersebut tidak berubah, hanya di ganti untuk 1 kali penulisan query. Di dalam bahasa SQL, query AS  ini lebih dikenal sebagai alias dari nama tabel yang sebenarnya. Alias ini ditujukan untuk mempermudah penulisan query atau mempercantik tampilan hasil query. Selain itu alias ini juga di gunakan untuk mengganti nama dari kolom tertentu agar di mengerti oleh orang lain ketika kita menampilkannya. Berikut query yang bisa kita gunakan untuk menampilkan tabel atau kolom menggunakan alias.
#  Alias Untuk Tabel
Perintah AS bukanlah query SQL yang dapat berdiri sendiri seperti SELECT, UPDATE, maupun DELETE. AS digunakan sebagai tambahan untuk query SQL lainnya seperti SELECT, UPDATE, dan DELETE.
Format dasar penulisan alias tabel:
  • SELECT aliastabel.namakolom1, aliastabel.namakolom2 . . . FROM namatabel AS namaaliastabel;
#  Alias Untuk Kolom
Selain untuk nama tabel, ada juga alias yang digunakan untuk menampilkan nama kolom. Salah satu kegunaan alias kolom ini adalah untuk merubah sementara nama kolom agar lebih sesuai dengan yang kita maksudkan ketika di tampilkan. Sama seperti alias untuk nama tabel, alias pada nama kolom juga merupakan perintah tambahan dari query inti seperti SELECT.
Format dasar penulisan alias kolom:
  • SELECT namakolom1 AS namaalias, namakolom2 AS namaalias, namakolom3 AS namaalias FROM namatabel;
2. AND dan OR
Pada artikel sebelumnya telah di jelaskan tentang penggunaan SELECT yaitu untuk menampilkan data. Penggunaan SELECT tidak bisa berdiri harus ada inisialisasi lainnya seperti SELECT . . . FROM. Telah di jelaskan juga penggunaan syarat ketika menampilkan data yaitu dengan SELECT . . . FROM . . . WHERE tapi pada artikel sebelumnya masih terbatas pada satu syarat (Baca : Perintah Dasar SQL). Pada bahasan kali ini akan di jelaskan penggunaan WHERE dengan lebih dari satu syarat, dengan menambakan operator logika AND dan OR.
#  Logika AND
Logika AND digunakan untuk menspesifikasikan syarat yang di ajukan untuk di penuhi. Jadi ketika kita menambahkan logika AND ke dalam syarat yang kita ajukan, maka akan di tampilkan data yang memenuhi semua syarat yang diberikan. Karenan semua syarat yang diberikan tersebut saling terkait.
  • SELECT * FROM namatabel WHERE syarat1 AND syarat2 AND syarat3 . . . ;
#  Logika OR
logika OR digunakan untuk memberikan pilihan syarat untuk di penuhi. Jadi ketika kita menambahkan logika OR maka data yang akan di tampilkan adalah data yang memenuhi semua syarat atau satu persatu syarat.
  • SELECT * FROM namatabel WHERE syarat1 OR syarat2 OR syarat3 . . . ;
3. BETWEEN
Sama dengan AND dan OR, BETWEEN juga salah satu operasi perbandingan pada perintah SELECT. BETWEEN ini digunakan untuk menentukan lebar dari data yang akan di tampilkan. Dimulai dati data terendah yang akan di tampilkan sampai data yang paling tinggi untuk di tampilkan. Pada operator between terdapat beberapa operasi pembanding yang digunakan, berikut beberapa operasi pembanding yang bisa di gunakan
Praktikum Desain Basis Data
MySQL, Query SELECT, Operator BETWEEN

Logika operator BETWEEN sebagai berikut :
Untuk menampilkan data diantara operator BETWEEN menggunakan query sebagai berikut :
  • SELECT * FROM nama_tabel WHERE nama_kolom BETWEEN ‘nilai_awal’ AND ‘nilai_akhir’;
  • SELECT * FROM nama_tabel WHERE nama_kolom ‘nilai_awal’>= AND <=‘nilai_akhir’;
Untuk menampilkan data diantara di luar operator BETWEEN menggunakan query sebagai berikut :
  • SELECT * FROM nama_tabel WHERE nama_kolom NOT BETWEEN ‘nilai_awal’ AND ‘nilai_akhir’;
  • SELECT * FROM nama_tabel WHERE nama_kolom ‘nilai_awal’>= OR <=‘nilai_akhir’;
4. IN dan NOT IN
Operator IN juga merupakan salah satu operator yang bisa di gunakan pada perintah SELECT. Operator IN ini berguna melakukan pencocokan dengan salah satu yang ada pada suatu daftar nilai. Berikut Struktur yang digunakan
  • SELECT * FROM namatabel WHERE namakolom IN (katakunci1, katakunci2, katakunci13, katakunci14);
5. LIKE
MySQL menyediakan struktur SELECT . . . LIKE untuk pencarian sebuah data dengan diwakili karakter tertentu. Berikut macam macam operator LIKE yng bisa digunakan
  • S%’ : Cocok dengan kata yang diawali dengan S, dan diikuti dengan karakter apa saja, contoh: ‘S’, ‘Sa’, ‘Si’, ‘Saaaaaa’, ‘Susi’, dan ‘Sabrina Sari’.
  • S_’: Cocok dengan kata yang diawali dengan S, dan diikuti dengan satu karakter apa saja, contoh: ‘Si’, ‘Sa’, ‘Su’, ‘Se’, dan ‘St’.
  • A__i’: Cocok dengan kata yang diawali dengan ‘A’, diikuti oleh 2 karakter bebas, namun diakhiri dengan i, contoh: ‘Andi’, ‘ardi’, ‘aaai’.
  • %e’: Cocok dengan seluruh kata dengan panjang berapapun yang diakhiri dengan huruf ‘e’, contoh: ‘Kece’, ‘Kue’, dan ‘mie’.
  • %dia%’: Cocok dengan seluruh kata yang mengandung kata ‘dia’, contoh: ‘media’, ‘kemudian’, ‘dia’, dan  ‘diaaaa’.
Berikut struktur query dasar untuk pencarian data menggunakan LIKE :
  • SELECT * FROM namatabel WHERE namakolom LIKE ‘operator’;
6. REGEXP (Regular Expression)
Regular Expression atau REGEXP adalah kumpulan huruf atau karakter yang digunakan untuk pencocokan pola (pattern matching). Pola disini contohnya ‘pola untuk kata yang diawali dengan huruf a dan diakhiri dengan huruf j’, atau yang sedikit rumit seperti ‘pola untuk kata yang diawali huruf a,b, c dengan panjang maksimal 5 huruf, mengandung minimal sebuah angka’. Cakupan REGEXP cukup luas, masih banyak sekali operator REGEXP yang bisa digunakan. Berikut ini sedikit operator REGEXP yang sering digunakan
  • . : tanda titik dalam RegExp berarti sebuah karakter apa saja
  • [ … ]: tanda kurung siku ini berarti kumpulan karakter. Misalkan [abc] akan cocok dengan ‘a’, ‘b’, atau ‘c’. kita bisa juga menggunakan jangkauan (range), contohnya [a-z] akan cocok dengan seluruh huruf, [0-9] akan cocok dengan seluruh angka.
  • *: tanda bintang ini akan cocok dengan 0 atau lebih karakter sebelumnya. Misalkan ‘a*’ berarti akan cocok dengan seluruh kata yang mengandung 0 atau lebih a.
  • ^: tanda pangkat atau topi ini menandakan berada di awal kata.
  • $: tanda dollar ini berarti bahwa pola berada di akhir kata.
Mari kita contohkan penggunakan pola RegExp:
  • ab*’: Pola ini berarti akan cocok dengan seluruh kata yang mengandung a dan diikuti oleh b atau tidak sama sekali. Contohnya: ‘a’, ‘ab’, ‘abbbbbb’, dan juga ‘kebab’, karena untuk RegExp, kita harus menyatakan dimana karakter itu muncul.
  • ^ab*’: Pola ini sama artinya dengan ‘ab*’ seperti diatas, namun tanda ^ menyatakan bahwa pola ini harus berada di awal kata, sehingga ‘kebab’ tidak akan cocok.
  • ^s..i$’: Pola ini akan cocok dengan seluruh kata yang diawali dengan s, dan diakhiri dengan i, terdiri dari 4 huruf. Contohnya: susi, sapi, dan siti.
Berikut struktur query dasar untuk pencarian data menggunakan REGEXP :
  • SELECT * FROM namatabel WHERE namakolom REGEXP ‘keywordREGEXP’ ;
7. DISTINCT
Query DISTINCT digunakan untuk memanipulasi tampilan hasil dari tabel. Denagn menggunakan query DISTINCT duplikasi akan dihapus untuk ditampilkan datanya, ini bukan tabel asli dari MySQL. adi DISTINCT ini digunakan untuk menampilkan data tunggal yang tidak ada duplikasinya. Query dasar yang digunakan adalah
  • SELECT DISTINCT namakolom FROM namatabel ;
8. LIMIT
LIMIT digunakan untuk membatasi data yang ingin di tampilkan. Berikut Query dasar yang bisa digunakan
SELECT * FROM namatabel LIMIT jumlahbaris;
9. UNION, INTERSECT, EXCEPT
Perintah UNION dalam MySQL di gunakan untuk menggabungkan/mengkombinasikan isi dari dua tabel menjadi satu. Sama seperti artinya INTERSECT ini di gunakan untuk mencari irisan pada dua atau lebih tabel. Kemudian perintah yang terakhir yaitu EXCEPT, EXCEPT ini di vgunakan untuk memunculkan isi tabel yang berada di luar irisan tabel. Berikut query dasar yang bisa di gunakan untuk menggunakan perintah tersebut.
UNION
  • SELECT * FROM namatabel1 UNION SELECT * FROM namatabel2 ;
INTERSECT
  • SELECT * FROM namatabel1 WHERE syarat1 IN (SELECT * FROM namatabel2) ;
EXCEPT
  • SELECT * FROM namatabel1 WHERE syarat1 NOT IN (SELECT * FROM namatabel2) ;

B. PRAKTIKUM
Pembahasan kali ini akan di praktekan query query yang telah kita pelajari dari dasar teori di atas.
Persiapan praktek : Gunakan tabel mahasiswa dan fakultas pada. Isi kolom sama dengan tabel mahasiswa dan fakultas pada artikel sebelumnya, tambahkan kolom gender di tabel mahasiswa kemudian update data mahasiswa. Insert data mahasiswa hingga 7 baris dengan salah satu nama adalah ‘binta’ dan insert data fakultas hingga 3 baris.

1. Menampilkan Data Menggunakan AS
Berdasarkan tabel yang telah kita buat sebelumnya, menampilkan data mahasiswa dengan nama dari kolomnya berubah menjadi nomor_identitas, nama, alamat,nama_fakultas tanpa harus merubah nama kolom secara permanen. Berikut querynya
  • select nim_mah as nomor_identitas, nama_mah as nama, alamat_mah as alamat, nama_fak as nama_fakultas from mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak;


 2. Menampilkan Data Menggunakan Operator AND dan OR
Menampilkan nama mahasiswa fakultas saintek yang berjenis kelamin laki-laki. Kemudian nama mahasiswa fakultas saintek atau berjenis kelamin laki-laki. Berikut query dari soal di atas.
  • select*from mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak and gender=’L’;
2
  • select*from mahasiswa where id_fak=1 or gender=’L’;
3

3. Menampilkan Data Menggunakan Operator BETWEEN
Berikut soal untuk menampilkan data menggunakan BETWEEN. Suatu tabel mahasiswa terdapat 7 baris data mahasiswa. menampilkan data mahasiswa dari nomor 3 sampai dengan 5, kemudian tampilkan juga data mahasiswa yang bukan dari nomor 3 sampai dengan 5 menggunakan between dan tanpa menggunakan between.
Disini kita akan menggunakan perintah BETWEEN dan NOT BETWEEN, baik itu menggunakan BETWEEN atau menggunakan simbol atau keyword untuk betwee. Berikut query yang bisa di gunakan
  • select*from mahasiswa where nim_mah>=3 and Nim_mah<=5;
  • select*from mahasiswa where nim_mah between 3 and 5;
  • select*from mahasiswa where nim_mah not between 3 dan 5;
  • select*from mahasiswa where nim_mah<3 or nim_mah>5;
4


4. Menampilkan Data menggunakan Operator IN
Menampilkan mahasiswa dengan nomor 2,3,5 menggunakan operator IN. Berikut query yang bisa digunakan
  • select*from mahasiswa where nim_mah in (2, 3, 5);
5

5. Menampilkan Data Menggunakan Operator LIKE
Menampilkan semua data mahasiswa yang namanya mempunyai awalan huruf “a”. Dan Menampilkan semua data mahasiswa yang namanya mempunyai akhiran “a” dan huruf ke-3 dari nama tersebut terdapat huruf “n”. Berikut query dari soal berikut
  • select*from mahasiswa where nama_mah like ‘a%’;
  • select*from mahasiswa where nama_mah like ‘__%n%a’;
6


6. Menampilkan Data Menggunakan Operator DISTINCT
Menampilkan nomor fakultas di tabel mahasiswa dengan nomor harus tidak ada yang sama dari baris pertama sampai akhir. Berikut query dari operator DISTINCT
  • select distinct id_fak from mahasiswa;
7

7. Menampilkan Data Menggunakan OperatorLIMIT
Menampilkan data mahasiswa 3 baris saja, menggunakan operator LIMIT. Berikut query yang bisa digunakan
  • select*from mahasiswa limit 3;
8


8. Menampilkan Data Menggunakan Operator REGEXP
Menampilkan data mahasiswa dengan ciri-ciri memiliki nama awalan a kemudian kata selanjutnya boleh b atau boleh m atau boleh d. misalkan yang memenuhi kriteria ciri tersebut seperti abi, amik, adik, adam dll. Gunakan operator RGEXP untuk menyelesaikan soal tersebut. Berikut query yang bisa digunakan
  • select*from mahasiswa where nama_mah regexp ‘^k[aid]’;
9


9. UNION, INTERSECT dan EXCEPT
Sebelum menjalankan perintah UNION, INTERSECT dan EXCEPT, buat dulu tabel baru dengan nama organ_dalam dan organ_luar. Dengan nama kolom nomor dan nama, kemudian pada organ_dalam isi tabel dengan (1, jantung), (2, paru-paru), (3, tenggorokan) kemudian pada tabel organ luar isi tabel dengan (1, hidung), (2, mata), (3, tenggorokan). Setelah modifikasi tabel tersebut dengan perintah UNION, INTERSECT dan EXCEPT
  • select nama from organ_dalam union select nama from organ_luar;
  • select*from organ_dalam where nama in (select nama from organ_luar);
  • select*from organ_dalam where nama not in (select nama from organ_luar);
10



C. Perbedaan, Kesamaan, Kelebihan dan Kekurangan Pada DBMS PostgreSQL dan MySQL
Sebenarnya PostgreSQL maupun MySQL merupan DBMS andalan yang banyak dan mudah digunakan oleh banyak orang. Mulai dari struktur query yang digunakan tidaklah serumit DBMS lain. Oleh sebab itu banyak sekali kesamaan dari kedua DBMS ini, dari artikel Pengenalan Operator Dasar Pada MySQL penulis melihat bahwa banyak sekali kesamaan antara PostgreSQL dan MySQL pada penulisan operatorquery  yang digunakan. Hanya terdapat sedikit sekali perbedaan yang ada, antara lain :
#  Pada Operator REGEXP
Pada operator REGEXP terdapat sedikit perbedaan antara kedua DBMS ini, pada PostgreSQL operator REGEXP dituliskan dalam bentuk simbol ( ), tapi apabila dalam MySQL operator REGEXP tidak di tulis dalam simbol tetapi ditulis operatornya langsung yaitu dengan menuliskan (regexp) saat penulisan querynya. Berikut perbedaan query dasar dari dua DBMS tersebut
PostgreSQL
  • SELECT * FROM namatabel WHERE namakolom ~ ‘keywordREGEXP’;
MySQL
  • SELECT * FROM namatabel WHERE namakolom REGEXP ‘keywordREGEXP’ ;
#  Pada Perintah INTERSECT dan EXCEPT
Pada perintah INTERSECT dan EXCEPT terdapat perbedaan yang sangat mencolok, apabila pada PostgreSQL disediakan sendiri perintah INTERSECT dan EXCEPT, tetapi jika di MySQL perintah INTERSECT dan EXCEPT tidak di sediakan. Jadi untuk mendapatkan perintah ini kita bisa menggunakan operatop IN untuk INTERSECT dan NOT IN untuk EXCEPT.
PostgreSQL
  • SELECT namakolom FROM namatabel EXCEPT SELECT namakolom FROM namatabel; //EXCEPT
  • SELECT namakolom FROM namatabel INTERSECT SELECT namakolom FROM namatabel; //INTERSECT
MySQL
  • SELECT * FROM namatabel1 WHERE syarat1 IN (SELECT * FROM namatabel2) ; //INTERSECT
  • SELECT * FROM namatabel1 WHERE syarat1 NOT IN (SELECT * FROM namatabel2) ; //EXCEPT

D. KESIMPULAN
Pada MySQL terdapat banyak sekali variasi penggunaan operator SELECT untuk menampilkan data. Kita bisa menggunakan alias, operator logika, limit dll. Operator ini tidak hanya ada pada MySQL saja tetapi juga terdapat pada PostgreSQL. Tetapi terdapat sedikit perbedaan penulisan query pada kedua DBMS ini, yaitu pada penggunaan operator REGEXP dan perintah INTERSECT dan EXCEPT. Jadi bagi para pembaca kalian mungkin bisa menggunakan kedua DBMS ini agar mengetahui variasi yang ada dan dapat meningkatkan kemampuan anda dalam menulis query.

Fungsi Agregat pada SQL

Pengertian Fungsi Agregat dalam SQL

Dalam SQl dikenal fungsi  agregat. Fungsi agregat (aggregate)  adalah fungsi yang menerima koleksi nilai dan mengembalikan nilai tunggal sebagai hasilnya.

Jenis fungsi Agregat

Standar ISO mendefinisikan lima jenis fungsi agregat, yaitu:
fungsi Agregat standar ISO
fungsi Agregat standar ISO

Sebelum mencoba berbagai fungsi agregat SQL, buatlah tabel dengan struktur sebagai berikut:

Struktul tabel buku
Struktul tabel buku
Tambahkan record-record berikut ini:
data tabel buku
data tabel buku

Fungsi Agregat: COUNT

Digunakan untuk menghitung jumlah record.
Contoh:
Hitung jumlah record tabel buku
SELECT COUNT(*)
FROM buku;
Hitung jumlah record tabel buku dengan nama kolom jum_rec
SELECT COUNT(*) AS jum_rec
FROM buku;
Hitung jumlah record untuk tahun 2003
SELECT COUNT(*) AS jum_rec
FROM buku
WHERE tahun = 2003;

Fungsi Agregat: SUM

Fungsi Agregat SUM digunakan untuk menghitung total nilai dari kolom tertentu
Contoh:
Hitung total harga
SELECT SUM(harga) AS total_harga 
FROM buku;
Hitung total harga untuk tahun 2003
SELECT SUM(harga) AS total_harga
FROM buku
WHERE tahun=2003;

Fungsi Agregat: MAX

Fungsi agregat AVGDigunakan untuk menampikan nilai tertinggi dari suatu kolom
Contoh:
Tampilkan harga tertinggi
SELECT MAX(harga) AS harga_tertingi
FROM buku;
Tampilkan harga tertinggi untuk tahun 2003
SELECT MAX(harga) AS harga_tertinggi
FROM buku
WHERE tahun=2003;
Fungsi Agregat: MIN
Fungsi agregat MIN Digunakan untuk menampikan nilai terendah dari suatu kolom
Contoh:
Tampilkan harga terendah
SELECT MIN(harga) AS harga_terendah
FROM buku;
Tampilkan harga terendah untuk tahun 2003
SELECT MIN(harga) AS harga_terendah
FROM buku
WHERE tahun=2003;
Fungsi Agregat: AVG
Fungsi agregat AVG Digunakan untuk menampikan nilai rata-rata dari suatu kolom
Contoh:
Tampilkan harga rata-rata
SELECT AVG(harga) AS harga_rerata
FROM buku;
Tampilkan harga rata-rata untuk tahun 2003
SELECT AVG(harga) AS harga_rerata
FROM buku
WHERE tahun=2003;

Minggu, 17 April 2016

Cara Membuat ERD

Cara Membuat ERD

Kali ini saya ingin menjelaskan bagaimana cara membuat ERD (Entity Relational Diagram) dalam database. Sebelum kita membuat ERD ada baiknya kita berkenalan dulu dengan segala sesuatu yang berhubungan dengan ERD. Untuk membuat ERD kita memerlukan Entitas/Entity, Relasi/Relationship, dan Atribut/Attribute.
  • ERD adalah pemodelan data utama yang membantu mengorganisasikan data dalam suatu proyek ke dalam entitas-entitas dan menentukan hubungan antar entitas.
  • Entitas/Entity adalah suatu tempat atau objek untuk menyimpan data. Contoh: Entitas buku untuk menyimpan atribut mengenai buku (judul buku, kode buku, pengarang, dsb). Entity digambarkan dengan Persegi dalam ERD.
  • Relasi/Relationship adalah hubungan yang terjadi antara entitas atau lebih. Contoh: Entitas buku dan Entitas Pengarang memiliki hubungan “ditulis”, yang artinya, pengarang menulis buku, dan buku ditulis pengarang. Selain itu, terdapat relasi “one to one”, “one to many”, dan “many to many” dalam entity. Relasi ini digambarkan dengan garis dalam ERD.
  • Atribut/Attribute adalah ciri umum semua entitas atau semua yang ada dalam entitas. Contoh: Entitas pengarang memiliki atribut nama, alamat, no telpon, dsb. Atribut digambarkan dengan lingkaran memanjang dalam ERD tapi jarang sekali dalam ERD atribut ikut digambarkan. Atribut juga sering disebut dengan field atau kolom dalam suatu ERD.
Ada 10 langkah atau tips yang dapat saya berikan untuk membuat ERD yang baik: 

Metode pembuatan ERD
Dalam membuat ERD, ada beberapa hal yang perlu kita waspadai, selain itu kita juga dituntut untuk lebih teliti dalam menentuka entity, relasi, atribut, menghindarkan terjadinya relasi “many to many” dan lain sebagainya. Untuk itu lihat beberapa langkah berikut agar kita bisa membuat ERD dengan baik:
  • Menentukan Entity
    • Disini kita dituntut untuk menentukan dengan cermat sebuah entity yang ada dalam suatu proyek atau masalah. Entity berguna untuk menentukan peran, kejadian, lokasi, hal nyata dan konsep penggunaan untuk database
  •  Menentukan Relasi
    • Setelah kita berhasil membuat Entity, langkah selanjutnya adalah menentukan relasi antar entity. Relasi apa yang terdapat antara Entity A dan B, apakah entity A dan B memiliki relasi “one to one”, “one to many”, atau “many to many”.
  • Gambar ERD sementara
    • Jika sudah mengetahui Entity beserta Relasinya, sekarang kita buat dulu gambar ERD sementara. Entity digambarkan dengan persegi, relasi digambarkan dengan garis.
  • Isi kardinalitas
    • Kardinalitas menentukan jumlah kejadian satu entitas untuk sebuah kejadian pada entitas yang berhubungan. Contohnya antara Entitas Buku, Distributor dan Pengarang, kardinalitas yang ada berupa:
      • Satu pengarang dapat menulis banyak buku
      • Satu buku ditulis satu pengarang
      • Banyak buku di distribusikan oleh satu distributor.
    • Dari sini kita bisa mengetahui harus memberi relasi apa. One to one kah?, dsb.
  • Tentukan Primary Key (Kunci Utama)
    • Menentukan Primary Key pada masing-masing entity. Primary Key adalah atribut pada entity yang bersifat unik. Jadi setiap entity hanya memiliki satu Primary Key saja. Contoh: Entity Buku memiliki Primary Key bernama kode buku. Kode Buku ini bersifat unik, karena masing-masing buku memiliki kode yang berbeda-beda.
    • Tentukan pula Foreign Key (Kunci Tamu) pada masing-masing Entity. Foreign Key adalah Primary Key yang ada dalam Entity yang lain. Contoh pada Entity Pengarang misalnya terdapat atribut kode buku, yang mana, kode buku merupakan Primary Key dari Entity buku.
  •  Gambar ERD berdasarkan Primary Key
    • Menghilangkan relasi “many to many” dan memasukkan Primary dan Foreign Key pada masing-masing entitas. Relasi many to many antar entity perlu dihilangkan dengan cara menambah atribut baru antara 2 entity yang memiliki relasi many to many.
  • Menentukan Atribut
    • Jika sudah melakukan step diatas, sekarang saatnya menentukan atribut pada masing-masing Entitas. Telitilah dalam menentukan atribut.
  • Pemetaan Atribut
    • Apabila atribut telah ditentukan, sekarang pasang atribut dengan entitas yang sesuai.
  • Gambar ERD dengan Atribut
    • Mengatur ERD seperti langkah 6 dengan menambahkan atribut dan relasi yang ditemukan.
  • Periksa Hasil
    • Periksa lagi ERD. Apakah ERD sudah menggambarkan system yang akan dibangun? Jika belum, check kembali dari awal.A. Teori ERD 
      Notasi yang digunakan dalam ERD adalah :
      Entitas dapat merupakan :


      ·         Sebuah elemen lingkungan dari perusahaan seperti customer atau supplier
      ·         Suatu sumber daya seperti suatu piutang dagang, suatu  produk, atau suatu penjual
      ·         Suatu arus informasi seperti suatu penjualan pemesanan atau suatu faktur  
                Di dalam sebuah entitas terdapat beberapa atribut. Atribut merupakan gambaran karakteristik dari sebuah entitas atau himpunan entitas. 
      Contoh : atribut untuk himpunan entitas mahasiswa adalah nim (PK), nama, program studi.
       


      Penggunaan key merupakan cara untuk membedakan suatu entitas didalam himpunan entitas dengan entitas lain. Key dipilih karena unik, untuk setiap entitas sehingga bisa di bedakan dari entitas yang lain. Kita bisa mendefinisikan key sebagai satu atau gabungan dari beberapa atribut yang dapat membedakan semua row dalam relasi secara unik. 
      Ada 3 macam key :


      1. Super Key
      Superkey yaitu satu atau lebih atribut (kumpulan atribut) yang dapat membedakan satiap baris data dalam sebuah relasi secara unik.
      Contoh super key yaitu =
      1. Nim, nama, alamat, kota
      2. Nim, nama, alamat
      3. Nim, nama
      4. Nim 
      2.   Candidat Key
      Kumpulan atribut minimal yang dapat membedakan setiap baris data dalam sebuah relasi secara unik
      Contoh Nim
      3.   Primary Key
      Primary key merupakan salah satu dari candidate key yang terpilih. Alasan pemilihan primary key :
      1.   Lebih sering di jadikan acuan
      2.   Lebih ringkas
      3.   Jaminan keunikan key lebih baik
      Contoh dari primary key adalah Nim.
        
      Jika sebuah primary key terhubung ke table/entity lain, maka keberadaan primary key pada entity tersebut di sebut sebagai foreign key ( kunci tamu ). 
      Misal : Primary Key Kode Dosen dari entity Dosen digunakan juga pada field entity KRS, maka keberadaan field Kode Dosen pada entity KRS disebut sebagai foreign key. (by : flowerfukushima.blogspot.com )
              Dalam ERD, hubungan (relasi) dapat terdiri dari sejumlah entitas yang disebut dengan derajad relasi. Derajad relasi maksimum disebut dengan kardinalitas sedangkan derajad minimum disebut dengan modalitas. Jadi kardinalitas relasi menunjukkan jumlah maksimum entitas yang dapat berelasi dengan entitas pada himpunan entitas lain. Kardinalitas relasi yang terjadi diantara dua himpunan entitas (misalnya A dan B) dapat berupa :
      1. Satu ke satu (one to one/ 1-1)
      Setiap entitas pada himpunan entitas A dapat berelasi dengan paling banyak satu entitas pada himpunan entitas B, demikian juga sebaliknya.
      2. Satu ke banyak (one to many/ 1- N ) / N-1
      Setiap entitas pada himpunan entitas A dapat berelasi dengan banyak entitas pada himpunan entitas B, tetapi tidak sebaliknya. Atau Setiap entitas pada himpunan entitas A hanya dapat berelasi dengan satu entitas pada himpunan entitas B, tetapi tidak sebaliknya.
      3. Banyak ke banyak (many to many/ N –N)
      Setiap entitas pada himpunan entitas A dapat berelasi dengan banyak entitas pada himpunan entitas B, demikian juga sebaliknya.
      B. Tahapan Pembuatan ERD 
               Berikut ini adalah contoh tahapan dalam pembuatan ERD pada " Sistem Informasi Akademis " .
      Tahap 1: Penentuan Entities 


       


      Keterangan :
      Mahasiswa:
      • nim: nomor induk mahasiswa (integer) PK
      • nama_mhs: nama lengkap mahasiswa (string)
      • alamat_mhs: alamat lengkap mahasiswa (string)
      Dosen:
      • nip: nomor induk pegawai (integer) PK
      • nama_dosen: nama lengkap dosen (string)
      • alamat_dosen: alamat lengkap dosen (string)
      Mata_kuliah:
      • kode_mk: kode untuk mata kuliah (integer) PK
      • nama_mk: nama lengkap mata kuliah (string)
      • deskripsi_mk: deskripsi singkat mengenai mata kuliah (string)
      Ruang:
      • kode_ruang: kode untuk ruang kelas (string) PK
      • lokasi_ruang: deskripsi singkat mengenai lokasi ruang kelas (string)
      • kapasitas_ruang: banyaknya mahasiswa yang dapat ditampung (integer)
      Tahap 2 : Penentuan Atribut
      Tahap 3 : Penentuan Kardinalitas Relasi
      Hubungan :a.  ruang digunakan untuk mata_kuliah:


           · Tabel utama: ruang
           · Tabel kedua: mata_kuliah
           · Relationship: One-to-one (1:1)
           · Attribute penghubung: kode_ruang (FK kode_ruang di mata_kuliah)


      b.  dosen mengajar mata_kuliah:
           · Tabel utama: dosen
           · Tabel kedua: mata_kuliah
           · Relationship: One-to-many (1:n) 
           . Attribute penghubung: nip (FK nip di mata_kuliah) 


      c.  dosen membimbing mahasiswa:
           . Tabel utama: dosen
           · Tabel kedua: mahasiswa
           . Relationship: One-to-many (1:n)
           . Attribute penghubung: nip (FK nip di mahasiswa)
      d.  mahasiswa mengambil mata_kuliah:
          · Tabel utama: mahasiswa, mata_kuliah
          · Tabel kedua: mhs_ambil_mk
          · Relationship: Many-to-many (m:n)
          · Attribute penghubung: nim, kode_mk (FK nim, kode_mk di mhs_ambil_mk)
      Tahap 4 : Pembuaatan ERD
      EER (Enhanced Entity Relationship) Diagram:

              Relasi many to many antar entity perlu dihilangkan dengan cara menambah atribut baru antara 2 entity yang memiliki relasi many to many. Pada diagram diatas, terdapat relasi mahasiswa mengambil matakuliah dimana mempunyai kardinalitas many to many. Maka dari itu perlu dibuat satu entity baru yang didalamnya menampung primary key dari entity mahasiswa dan entity mata kuliah yang nantinya dapat dijadikan foreign key pada entity mhs_ambl_mk , sedang yang dijadikan primary key disini kita ambil password portal akademik yang sifatnya unik ( satu mahasiswa mempunyai password yang berbeda dengan mahasiswa lain ) .
  • Sunber : http://yadiesherro.wordpress.com/category/cara-membuat-erd-entity-relational-diagram/
    http://niezpipao.blogspot.com/2012/11/teori-dan-tahapan-pembuatan-erd-a.html