Showing posts with label MySQL. Show all posts
Showing posts with label MySQL. Show all posts

Friday, 22 May 2015

Foreign Key Query

Cara membuat Foreign Key pada Tabel dengan perintah Query

Untuk membuat foreign key pada suatu tabel di database MySQL, kita dapat menggunakan perintah Query sebagai berikut:
FOREIGN KEY (<nama field>) REFERENCES <nama tabel referensi> (<nama field pada tabel referensi>)

Contoh:

CREATE TABLE tb_linkbukukategori (id_buku CHAR(13) NOT NULL,
id_kategori INT NOT NULL,
PRIMARY KEY(id_buku, id_kategori),
FOREIGN KEY (id_buku) REFERENCES tb_buku(id_buku),
FOREIGN KEY (id_kategori) REFERENCES tb_kategori(id_kategori)
)TYPE = InnoDB;

Database dan Perintah - Perintah MySQL

Dalam membentuk suatu web yang dinamis, diperlukan tempat penyimpanan data, penghapusan data, pengeditan data dan lain - lain, maka di butuhkanlah suatu Database. Database berfungsi untuk pengorganisasian data. Database harus didukung  dengan database server untuk pengorganisasiannya, seperti MySQL, Oracle, SQL server, postgre SQL dan lain - lain. Sehingga tentunya tampilan web yang telah di rancang baik menggunakan php, java maupun html dapat digunakan secara dinamis.  Sebelumnya membuat database, perlu anda ketahui terlebih dahulu istilah - istilah di bawah ini :
  1. Field, merupakan data terkecil yang memiliki makna, istilah lainnya disebut elemen data, atribut maupun kolom item. Misalnya Nama Mahasiswa, NIM dan Jurusan .
  2. Record, merupakan kumpulan atau elemen dari data yang saling terkait. Contohnya field nama yang memiliki record Adi, Budi dan Sandi. Record merupakan elemen - elemen data dari field dan biasanya dinyatakan sebagai tupel atau baris.
  3. Tabel, menghimpun sejumlah field dan record, misalnya tabel Mahasiswa yang terdiri dari field Jurusan yang memiliki record Teknik Komputer, Teknik Informatika dan Sistem Inormasi.
Salah satu istilah lain yang perlu anda ketahui adalah Query. Query adalah interaksi user terhadap database baik menyimpan, menginput, mengedit maupun menghapus.

Jenis - jenis query yaitu :
  1. Data Definition Language (DDL)
  2. Data Manipulation Language (DML)
  3. Data Control Language (DCL)
  4. Transaction Control (TC)
Data Definition Language (DDL), merupakan perintah yang berkaitan dengan struktur storage/data base     (berkaitan dengan struktur tabel ), contoh nya membuat database, menghapus database, membuat field, dan menghapus field, sedangkan Data Manipulation Language (DML) merupakan perintah - perintah yang berhubungan dengan record.


Perintah - Perintah Dasar MySQL
  •  Membuat database    
           CREATE DATABASE db_name

  • Menghapus database
          DROP DATABASE db_name

  • Membuat Tabel
          CREATE TABLE tb_name(field 1 type_data, field 2 type_data)

  • Menghapus table
          DROP TABLE tb_name

  • Menambah Primary Key
         ALTER TABLE tb_name ADD PRIMARY KEY(field_name)

  • Menambah Primary Key dengan nama constraint
         ALTER TABLE tb_name ADD CONSTRAINT const_name PRIMARY KEY(field_name)

  • Menghapus Primary Key
         ALTER TABLE tb_name DROP PRIMARY KEY(field_name)

  • Menambah Foreign Key
         ALTER TABLE tb_name ADD FOREIGN KEY(field_name)
         REFERENCES table_references_name(primary_field_table_references)
         ON CASCADE
         ON RESTRICT

        cascade --> Mengupdate jika terjadi perubahan di tabel induk
        restrict   --> Peringatan jangan mendelete field pada tabel induk karena sedang digunakan di tabel anak

  • Menambah Foreign Key dengan nama constraint
         ALTER TABLE tb_name ADD CONSTRAINT const_name  FOREIGN KEY(field_name)
         REFERENCES table_references_name(primary_field_table_references)

  • Menghapus Foreign Key
         ALTER TABLE tb_name DROP FOREIGN KEY(field_name)

  • Menambah record
          INSERT INTO tb_name VALUES(record 1, record 2, record 3...)
          atau
          INSERT INTO tb_name (column 1, column2, column3) VALUES (record 1, record 2, record 3)

  • Fungsi SELECT
          SELECT field
          FROM table_name
          WHERE field = 'value'

  • Fungsi UPDATE
          UPDATE table_name
          SET column1 = 'val1', column2='val2'
          WHERE somecolumn = somevalue
         
  • Fungsi DELETE
          DELETE FROM table_name
          WHERE somecolumn = somevalue

Pada fungsi SELECT, UPDATE, dan DELETE pada syntax WHERE bosa menggunakan operator perbandingan seperti >, <, =, !=, >=, <= dan juga operator logika OR, AND dan NOT.

  • Fungsi IN
          SELECT *FROM table_name
          WHERE field IN ('value')

  • Fungsi NOT IN
          SELECT *FROM table_name
          WHERE field NOT IN ('value')

  • Mencari Record yang berawalan -x
          SELECT field
          FROM table
          WHERE field LIKE 'x%'

  • Mencari Record yang berakhiran -x
          SELECT field
          FROM table
          WHERE field LIKE '%x'

  • Menampilkan field dari tabel - tabel yang berbeda
          SELECT mahasiswa.nama, kuliah.nilai
          FROM mahasiswa, kuliah
          WHERE mahasiswa.nim= kuliah.nim

  • INNERJOIN
          SELECT table1.*, table2.*
          FROM table1 INNERJOIN table2
          ON table1.pk = table2.pk

  • OUTERJOIN
          SELECT *FROM table1 NATURAL LEFTJOIN table2
          dan
          SELECT *FROM table1 NATURAL RIGHTJOIN table2

  • Rata - rata
          SELECT AVG(field) from table_name

  • Jumlah
          SELECT SUM(field) from table_name

  • Nilai Max
          SELECT MAX(field) from table_name

  • Nilai MIN
          SELECT MIN(field) from table_name

  • Jumlah record
          SELECT COUNT(field) from table_name
          atau
          SELECT COUNT(distinct field) from table_name  --> untuk field yang memiliki record yang sama

Thursday, 21 May 2015

Tutorial Belajar MySQL Part 17: Atribut Tipe Data dalam MySQL

Untuk pembuatan sebuah tabel dalam MySQL, selain mendefinisikan tipe data, kita juga dapat mendefinisikan atribut dari tipe data tersebut. Dalam tutorial belajar MySQL kali ini kita akan membahas tentang pengertian serta cara penggunaan atribut tipe data dalam MySQL.

Pengertian Atribut tipe data MySQL

Atribut tipe data adalah aturan yang kita terapkan untuk sebuah kolom. MySQL memiliki banyak atribut tipe data, namun dalam tutorial ini kita hanya membahas atribut tipe data yang paling umum digunakan, yakni: AUTO_INCREMENTBINARYDEFAULTNOT NULLNULLSIGNED,UNSIGNED, dan ZEROFILL.

Atribut AUTO_INCREMENT

Atribut AUTO_INCREMENT digunakan untuk tipe data numerik (biasanya tipe data INT), dimana jika kita menetapkan sebuah kolom dengan atribut AUTO_INCREMENT, maka setiap kali kita menginputkan data, nilai pada kolom ini akan bertambah 1. Nilai pada kolom tersebut juga akan bertambah jika kita input dengan NULL  atau nilai 0.
Pada sebuah tabel, hanya 1 kolom yang dapat dikenai atribut AUTO_INCREMENT. Setiap kolomAUTO_INCREMENT juga akan dikenakan atribut NOT NULL secara otomatis. KolomAUTO_INCREMENT juga harus digunakan sebagai KEY (biasanya PRIMARY KEY)

Atribut BINARY

Atribut BINARY digunakan untuk tipe data huruf, seperti CHAR dan VARCHAR. Tipe data CHAR, VARCHAR dan TEXT tidak membedakan antara huruf besar dan kecil (case-insensitive), namun jika diberikan atribut BINARY, maka kolom tersebut akan membedakan antara huruf besar dan kecil (case-sensitive)

Atribut DEFAULT

Atribut DEFAULT dapat digunakan pada hampir semua tipe data. Fungsinya untuk menyediakan nilai bawaan untuk kolom seandainya tidak ada data yang diinput kepada kolom tersebut, atau jika diinput dengan nilai NULL.

Atribut NOT NULL

Atribut NOT NULL dapat digunakan pada hampir semua tipe data, Fungsinya untuk memastikan bahwa nilai pada kolom tersebut tidak boleh kosong. Jika kita menginput data, namun tidak memberikan nilai untuk kolom tersebut, akan menghasilkan error pada MySQL.

Atribut NULL

Atribut NULL berkebalikan dengan NOT NULL, dimana jika sebuah kolom didefinisikan denganNULL, maka kolom tersebut tidak harus berisi nilai.
NULL adalah istilah atau tipe data khusus dalam pemograman yang menyatakan ‘tidak ada nilai’, NULL tidak sama dengan 0, atau ‘’(string kosong). Operasi matematis dengan NULL akan menghasilkan nilai NULL.

Atribut SIGNED

Atribut SIGNED digunakan untuk tipe data numerik. Berlawanan dengan atribut UNSIGNED, dimana atribut ini berfungsi agar kolom dapat menampung nilai negatif. Atribut SIGNED biasanya dicantumkan hanya untuk menegaskan bahwa kolom tersebut mendukung nilai negatif, karena MySQL sendiri telah menyediakan nilai negatif secara default untuk seluruh tipe numerik.

Atribut UNSIGNED

Atribut UNSIGNED digunakan untuk tipe data numerik, namun berbeda sifatnya untuk tipe dataINT,DECIMAL dan FLOAT. Untuk tipe data INT, atribut UNSIGNED berfungsi mengorbankan nilai negatif, untuk mendapatkan jangkauan nilai positif yang lebih tinggi. Namun untuk tipe dataDECIMAL dan FLOAT, atribut UNSIGNED hanya akan menhilangkan nilai negatif, tanpa menambah jangkauan data.

Atribut ZEROFILL

Atribut ZEROFILL digunakan untuk tipe data numerik, dimana berfungsi untuk tampilan format data yang akan mengisi nilai 0 di sebelah kanan dari data. Jika kita menggunakan atribut ZEROFILL untuk suatu kolom, secara otomatis kolom tersebut juga dikenakan attribut UNSIGNED.
Contoh query untuk penggunaan attribut :
mysql> CREATE TABLE contoh_att (no int AUTO_INCREMENT, 
nama VARCHAR(30) NOT NULL,umur TINYINT UNSIGNED DEFAULT '10', 
kodepos CHAR(5) NULL,PRIMARY KEY(no));
Query OK, 0 rows affected (0.13 sec)

mysql> DESCRIBE contoh_att;
+---------+---------------------+------+-----+---------+----------------+
| Field   | Type                | Null | Key | Default | Extra          |
+---------+---------------------+------+-----+---------+----------------+
| no      | int(11)             | NO   | PRI | NULL    | auto_increment |
| nama    | varchar(30)         | NO   |     | NULL    |                |
| umur    | tinyint(3) unsigned | YES  |     | 10      |                |
| kodepos | char(5)             | YES  |     | NULL    |                |
+---------+---------------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)

mysql> INSERT INTO contoh_att VALUES (NULL,'Joko',NULL,20155);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO contoh_att VALUES (0,'Amir',23,27118);
Query OK, 1 row affected (0.05 sec)

mysql> INSERT INTO contoh_att VALUES (6,'Thasya',24,30012);
Query OK, 1 row affected (0.04 sec)

mysql> INSERT INTO contoh_att VALUES (9,NULL,32,10099);
ERROR 1048 (23000): Column 'nama' cannot be null

mysql> INSERT INTO contoh_att VALUES (NULL,'Rina',21,10889);
Query OK, 1 row affected (0.05 sec)

mysql> SELECT * FROM contoh_att;
+----+--------+------+---------+
| no | nama   | umur | kodepos |
+----+--------+------+---------+
|  1 | Joko   | NULL | 20155   |
|  2 | Amir   |   23 | 27118   |
|  6 | Thasya |   24 | 30012   |
|  7 | Rina   |   21 | 10889   |
+----+--------+------+---------+
4 rows in set (0.00 sec)
Dapat kita lihat bahwa jika kita memberikan nilai NULL kepada kolom nama yang telah diberikan atribut NOT NULL, MySQL akan memberikan error. Juga pada kolom no, dimana kita lompat dengan memberikan nilai 6, namun untuk kolom selanjutnya, akan tetap ditambah sebanyak 1, karena dikenai atribut AUTO_INCREMENT.