Syntax SQL (Relasi pada tabel database)
Relasi table pada database sangat diperlukan untuk menyederhanakan data-data kita, dan supaya mudah untuk diatur. Ada beberapa cara yang digunakan untuk merelasikan table.
A. Cara Manual
Cara manual untuk merelasikan kudua table yaitu dengan query seperti berikut
mysql> select produk.id_produk,produk.nm_produk,jenis.nm_jenis from
produk,jenis;
+-----------+-----------+------------+
| id_produk | nm_produk | nm_jenis |
+-----------+-----------+------------+
| 1 | Lemari | Furniture |
| 1 |Lemari | Elektronik |
| 1 | Lemari | FOOD |
| 2 | Kulkas | Furniture |
| 2 | Kulkas | Elektronik |
| 2 | Kulkas | FOOD |
| 3 | Meja | Furniture |
| 3 | Meja | Elektronik |
| 3 | Meja | FOOD |
| 4 | Bangku | Furniture |
| 4 | Bangku | Elektronik |
| 4 | Bangku | FOOD |
| 5 | Televisi | Furniture |
| 5 | Televisi | Elektronik |
| 5 | Televisi | FOOD |
| 6 | Komputer | Furniture |
| 6 | Komputer | Elektronik |
| 6 | Komputer | FOOD |
+-----------+-----------+------------+
18 rows in set (0.00 sec)
Karena tidak sesuai yang kita harapkan.terdapat banyak redudansi data pada output diatas nah,untuk mengatasi hal tersebut kita bias gunakan klausa wheresehingga query nya jadi seperti berikut
mysql> select produk.id_produk,produk.nm_produk,jenis.nm_jenis from
produk,jenis where produk.no_jenis=jenis.no_jenis;
+-----------+-----------+------------+
| id_produk | nm_produk | nm_jenis |
+-----------+-----------+------------+
| 1 | Lemari | Furniture |
| 2 | Kulkas | Elektronik |
| 3 | Meja | Furniture |
| 4 | Bangku | Furniture |
| 5 | Televisi | Elektronik |
| 6 | Komputer | Elektronik |
+-----------+-----------+------------+
6 rows in set (0.00 sec)
Sekarang tabel sudah muncul sesuai yang diharapkan. Ini dikarenakan yang kita relasikan hanya no_jenis di table produk dan no_jenis di table jenis.
B. Join Table
1. CROSS JOIN
Pada dasarnya cross join tidak ada bedanya dengan Cara manual di atas yang membedakan adalah tanda Koma(,) sesudah kata from.query nya seperti berikut.
mysql> select produk.id_produk,produk.nm_produk,jenis.nm_jenis from
produk cross join jenis where produk.no_jenis=jenis.no_jenis;
+-----------+-----------+------------+
| id_produk | nm_produk | nm_jenis |
+-----------+-----------+------------+
| 1 | Lemari | Furniture |
| 2 | Kulkas | Elektronik |
| 3 | Meja | Furniture |
| 4 | Bangku | Furniture |
| 5 | Televisi | Elektronik |
| 6 | Komputer | Elektronik |
+-----------+-----------+------------+
Bisa kita lihat tanda koma pada cara manual, di cara Cross join diganti dengan klausa Cross join. Klausa Cross Join ini selain bias menggunakan klausa where juga bisa menggunakan kalusa On.
mysql> select produk.id_produk,produk.nm_produk,jenis.nm_jenis from
produk cross join jenis on produk.no_jenis=jenis.no_jenis;
+-----------+-----------+------------+
| id_produk | nm_produk | nm_jenis |
+-----------+-----------+------------+
| 1 | Lemari | Furniture |
| 2 | Kulkas | Elektronik |
| 3 | Meja | Furniture |
| 4 | Bangku | Furniture |
| 5 | Televisi | Elektronik |
| 6 | Komputer | Elektronik |
+-----------+-----------+------------+
6 rows in set (0.00 sec)
2. STRAIGHT JOIN
Straight Join juga pada dasarnya sama seperti cross join perbedaan yang jelas disini adalah Straight Join tidak bisamenggunakan Klausa Kondisi seperti Where atau On.
mysql> select id_produk,nm_produk,nm_jenis from produk straight join
jenis where produk.no_jenis=jenis.no_jenis;
ERROR 1054 (42S22): Unknown column 'produk.no_jenis' in 'where clause'
mysql> select id_produk,nm_produk,nm_jenis from produk straight join
jenis on produk.no_jenis=jenis.no_jenis;
ERROR 1054 (42S22): Unknown column 'produk.no_jenis' in 'on clause'
mysql> select id_produk,nm_produk,nm_jenis from produk straight join
jenis;
+-----------+-----------+------------+
| id_produk | nm_produk | nm_jenis |
+-----------+-----------+------------+
| 1 | Lemari | Furniture |
| 1 | Lemari | Elektronik |
| 1 | Lemari | FOOD |
| 2 | Kulkas | Furniture |
| 2 | Kulkas | Elektronik |
| 2 | Kulkas | FOOD |
| 3 | Meja | Furniture |
| 3 | Meja | Elektronik |
| 3 | Meja | FOOD |
| 4 | Bangku | Furniture |
| 4 | Bangku | Elektronik |
| 4 | Bangku | FOOD |
| 5 | Televisi | Furniture |
| 5 | Televisi | Elektronik |
| 5 | Televisi | FOOD |
| 6 | Komputer | Furniture |
| 6 | Komputer | Elektronik |
| 6 | Komputer | FOOD |
+-----------+-----------+------------+
18 rows in set (0.00 sec)
Jadi kesimpulannya jangan gunakan Straight join supaya tidak ada penumpukkan/redudansi data.
3. INNER JOIN
Inner Join konseprnya sama seperti Cross Join. Tidak ada perbedaan apapun
mysql> select id_produk,nm_produk,nm_jenis from produk inner join jenis
on produk.no_jenis=jenis.no_jenis;
+-----------+-----------+------------+
| id_produk | nm_produk | nm_jenis |
+-----------+-----------+------------+
| 1 | Lemari | Furniture |
| 2 | Kulkas | Elektronik |
| 3 | Meja | Furniture |
| 4 | Bangku | Furniture |
| 5 | Televisi | Elektronik |
| 6 | Komputer | Elektronik |
+-----------+-----------+------------+
6 rows in set (0.00 sec)
mysql> select id_produk,nm_produk,nm_jenis from produk inner join jenis
where produk.no_jenis=jenis.no_jenis;
+-----------+-----------+------------+
| id_produk | nm_produk | nm_jenis |
+-----------+-----------+------------+
| 1 | Lemari | Furniture |
| 2 | Kulkas | Elektronik |
| 3 | Meja | Furniture |
| 4 | Bangku | Furniture |
| 5 | Televisi | Elektronik |
| 6 | Komputer | Elektronik |
+-----------+-----------+------------+
6 rows in set (0.00 sec)
4. LEFT JOIN
Left Join digunakan untuk menampilkan semua record pada table di sebelah kiri .
mysql> select id_produk,nm_produk,nm_jenis from produk left join jenis
on produk.no_jenis=jenis.no_jenis;
+-----------+-----------+------------+
| id_produk | nm_produk | nm_jenis |
+-----------+-----------+------------+
| 1 | Lemari | Furniture |
| 2 | Kulkas | Elektronik |
| 3 | Meja | Furniture |
| 4 | Bangku | Furniture |
| 5 | Televisi | Elektronik |
| 6 | Komputer | Elektronik |
+-----------+-----------+------------+
6 rows in set (0.00 sec)
Pada contoh diatas left join akan menampilkan semua record pada table di sebelah kiri yaitu table produk sedangkan table jenis berada disebelah kanan sehingga table jenis akan menyesuaikan.
5. RIGHT JOIN
Kebalikan dari left join ,right join digunakan untuk menampilkan semua record pada table di sebelah kanan.
mysql> select id_produk,nm_produk,nm_jenis from produk right join jenis
on produk.no_jenis=jenis.no_jenis;
+-----------+-----------+------------+
| id_produk | nm_produk | nm_jenis |
+-----------+-----------+------------+
| 1 | Lemari | Furniture |
| 3 | Meja | Furniture |
| 4 | Bangku | Furniture |
| 2 | Kulkas | Elektronik |
| 5 | Televisi | Elektronik |
| 6 | Komputer | Elektronik |
| NULL | NULL | FOOD |
+-----------+-----------+------------+
7 rows in set (0.00 sec)
Dapat dilihat Table jenis akan ditampilkan semua sehingga untuk field/kolom nm_jenis FOOD karena tidak ada pasangan di table produk maka table produk akan otomatis mengisinya dengan NULL. Right Join dan Left Join tidak bisa menggunakan klausa where.
6. NATURAL JOIN
Natural Join ini mungkin merupakan jawaban bagi query-query yang panjang seperti diatas. Karena tanpa menggunakan kalusa where, natural join akan secara otomatis merelasikan table tersebut dengan sangat tepat.
mysql> select id_produk,nm_produk,nm_jenis from produk natural join
jenis;
+-----------+-----------+------------+
| id_produk | nm_produk | nm_jenis |
+-----------+-----------+------------+
| 1 | Lemari | Furniture |
| 2 | Kulkas | Elektronik |
| 3 | Meja | Furniture |
| 4 | Bangku | Furniture |
| 5 | Televisi | Elektronik |
| 6 | Komputer | Elektronik |
+-----------+-----------+------------+
6 rows in set (0.00 sec)
Jika menggunakan where:
mysql> select id_produk,nm_produk,nm_jenis from produk natural join
jenis where produk.no_jenis=jenis.no_jenis;
+-----------+-----------+------------+
| id_produk | nm_produk | nm_jenis |
+-----------+-----------+------------+
| 1 | Lemari | Furniture |
| 2 | Kulkas | Elektronik |
| 3 | Meja | Furniture |
| 4 | Bangku | Furniture |
| 5 | Televisi | Elektronik |
| 6 | Komputer | Elektronik |
+-----------+-----------+------------+
6 rows in set (0.00 sec)
Natural join tidak bisa menggunakan klausa on.
Sumber:
Komunitas eLearning IlmuKomputer.Com
DDL&DML
1. DDL - Data Definition Language
DDL - Data Definition Language merupakan kumpulan perintah SQL yang digunakan untuk membuat, mengubah dan menghapus struktur dan definisimetadata dari objek-objek database.
Objek-objek database pada yang dimaksud - pada MySQL - adalah sebagai berikut:
- Database
- Table
- View
- Index
- Procedure (Stored Procedure)
- Function
- Trigger
Berikut adalah contoh perintah DDL yang digunakan pada MySQL. Klik pada link untuk melihat rincian penggunaan dari perintah tersebut.
- Pembuatan (CREATE)
- CREATE DATABASE
- CREATE FUNCTION
- CREATE INDEX
- CREATE PROCEDURE
- CREATE TABLE
- CREATE TRIGGER
- CREATE VIEW
- Perubahan (ALTER & RENAME)
- ALTER DATABASE
- ALTER FUNCTION
- ALTER PROCEDURE
- ALTER TABLE
- ALTER VIEW
- RENAME TABLE
- Penghapusan (DROP)
- DROP DATABASE
- DROP FUNCTION
- DROP INDEX
- DROP PROCEDURE
- DROP TABLE
- DROP TRIGGER
- DROP VIEW
2. DML - Data Manipulation Language
DML sendiri adalah kumpulan perintah SQL yang berhubungan dengan pekerjaan mengolah data di dalam table - dan tidak terkait dengan perubahan struktur dan definisi tipe data dari objek database seperti table, column, dan sebagainya.
Beberapa daftar Perintah DML MySQL 5.0
- CALL
- DELETE
- DO
- HANDLER
- INSERT
- LOAD DATA INFILE
- REPLACE
- SELECT
- TRUNCATE
- UPDATE
3. DCL dan Join Pada SQL
DCL atau Data Control Language merupakan perintah SQL yang berhubungan dengan pengaturan hak akses user MySQL, baik terhadap server, database, tabel maupun field. Perintah SQL yang termasuk dalam DCL antara lain:
* GRANT : Perintah ini digunakan untuk memberikan hak / izin akses oleh administrator (pemilik utama) server kepada user (pengguna biasa). Hak akses tersebut berupa hak membuat (CREATE), mengambil (SELECT), menghapsu (DELETE), mengubah (UPDATE) dan hak khusus berkenaan dengan sistem databasenya.
SINTAKS : GRANT privileges ON tbname TO user
CONTOH : grant select, update, insert, delete on perpustakaan.buku to 'ali'@'localhost';
* REVOKE : perintah ini memiliki kegunaan terbalik dengan GRAND, yaitu untuk menghilangkan atau mencabut hak akses yang telah diberikan kepada user oleh administrator.
SINTAKS : REVOKE privileges ON tbname FROM user
CONTOH : revoke select, update, insert, delete on perpustakaan.buku from 'ali'@'localhost';
* JENIS JENIS JOIN SQL:
1. INNER JOIN : hanya akan menampilkan baris untuk data yang memiliki nilai yang sama pada field kunci dengan tabel yang berelasi
2. LEFT JOIN : hanya menampilkan data dengan mengacu pada tabel yang ada disebelah kiri.
3. RIGHT JOIN : hanya menampilkan data dengan mengacu pada tabel yang ada disebelah kanan.
4. FULL JOIN : merupakan gabungan dari LEFT JOIN dan RIGHT JOIN.
Tipe-Tipe DBMS
TIPE - TIPE DBMS
Ada beberapa tipe database:
1. Hierarchical DBMS
-
Model database yg mengorganisasikan data
seperti struktur pohon.
-
Setiap record dibagi ke dalam beberapa bagian-bagian (segments) yang dihubungkan satu sama
lain dalam hubungan parent-child satu ke banyak (one to many / 1 to m).
-
Model ini bisa ditemukan dalam DBMS yg lebih lama dibandingkan RDBMS.
2. Network DBMS
-
Database logis yg berguna u/ menunjukkan hubungan banyak ke banyak (many-to-many).
-
Model ini bisa ditemukan dalam DBMS yg lebih lama dibandingkan hierarchical
3. Relational DBMS (RDBMS)
-
Model database logis yg memperlakukan data seakan-akan data tersebut tersimpan dalam tabel 2 dimensi.
-
Model ini dapat menghubungkan 2 tabel menjadi 1 tabel selama 2 tabel tsb berbagi elemen data yg sama.
-
Banyak digunakan dalam DBMS saat ini (Microsoft Access, Oracle, dll)
4. Object-oriented DBMS
Pendekatan ke manajemen data yg menyimpan data dan prosedur yg diperlakukan pada data itu
5. Object relational DBMS
Gabungan (hybrid) antara OODBMS dan RDBMS
Pengertian DBMS & Aplikasi Yang Ada Dalam DBMS.
- DBMS (DataBase Management System) adalah sistem yang secara khusus dibuat untuk memudahkan pemakai dalam mengelola basis data.
- Database (basis data) adalah kumpulan informasi yang disimpan didalam komputer secara sistematis sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari database tersebut. Perangkat lunak untuk memanggil dan mengelola dan memanggil query database disebut sistem manajemen database (database management system/DBMS).
- Aplikasi Yg ada dalam DBMS.
1. komersial ( bayar )
- DB2 adalah kelurga sistem manajemen database relasional (RDBMS) produk dari IBM yang melayani sejumlah sistem operasi yang beebeda platfrom.
- Sybase
-Terdata
-Microsoft SQL server 2000 adalah perangkat lunak relational database management system (RDBMS) yang didesain untuk melakukan proses manipulasi database berukuran besar dengan berbagai fasilitas. Microsoft SQL Server 2000 merupakan produk andalan Microsoft untuk database server.
-Oracle relational database management system (RDBMS) untuk mengelola informasi secara terbuka, komprehensif dan terintegrasi.
2. Free
- postgreSQLadalah sebuah object-relational database management system (ORDBMS) yang bersifat open source. PostgreSQL adalah database yang powerful dan tidak kalah dengan database komersil sekelasnya Oracle, Sybase maupun Informix.
- Firebird salah satu aplikasi RDBMS (Relational Database Management System) yang bersifat open source.
Pengertian Database
Database adalah kumpulan data sistematis yang disiapkan didalam komputer yang dapat digunakan dalam suatu komputer untuk memperoleh dari suatu basis tersebut.perangkat lunak yang digunakan untuk mengelola atau memanggil database tersebut(query)disebut dalam database management system