Wednesday, September 28, 2016

Pernyataan ALTER TABLE dalam MySQL

Pernyataan ALTER TABLE merupakan salah satu pernyataan DDL (Data Definition Language) dalam MySQL  yang digunakan untuk memodifikasi/mengubah definisi dan strktur dari struktur tabel, baik field maupun nama tabelnya. Dalam pernyataan ALTER TABLE terdapat beberapa klausa untuk memodifikasi struktur tabel yaitu:

Klausa ADD

Klausa ADD merupakan klausa yang dimiliki oleh pernyataan ALTER TABLE yang digunakan untuk menambah field dari suatu table. Sintaks Klausa ADD sebagai berikut.

ALTER TABLE nama_table 
ADD nama_field tipe_data;

Klausa CHANGE

Klausa CHANGE merupakan klausa yang dimiliki oleh pernyataan ALTER TABLE yang digunakan untuk mengubah nama dan atau tipe data suatu field. Sintaks Klausa CHANGE sebagai berikut:

ALTER TABLE nama_table
CHANGE nama_field_lama nama_field_baru tipe_data

Klausa DROP

Klausa DROP merupakan klausa yang dimiliki oleh pernyataan ALTER TABLE yang digunakan untuk menghpus field atau kolom tertentu. Sintaks Klausa DROP sebagai berikut:

ALTER TABLE nama_tabel
DROP nama_field

Klausa RENAME

Klausa RENAME digunakan untuk mengubah nama suatu tabel. Adapun sintaksnya sebagai beikut:

ALTER TABEL nama_tabel
RENAME nama_tabel

Contoh Pernyataan ALTER TABLE

Penyiapan database dan tabel

  • Buat database akademik
1
2
mysql> CREATE DATABASE akademik;
Query OK, 1 row affected (0.00 sec)
  • Aktifkan database
1
2
mysql> USE akademik;
Query OK, 1 row affected (0.00 sec)
  • Tampilkan semua database yang ada
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| akademik           |
| cdcol              |
| kepegawaian14b     |
| mysql              |
| performance_schema |
| phpmyadmin         |
| rental_film        |
| rental_mobil       |
| test               |
| webauth            |
+--------------------+
14 rows in set (0.00 sec)
  • Buat tabel mahasiswa
1
2
3
4
5
6
7
mysql> CREATE TABLE mahasiswa(
    -> npm CHAR(5) primary key,
    -> nama VARCHAR(30),
    -> tempat_lahir CHAR(30),
    -> tgl_lahir DATE,
    -> angkatan YEAR );
Query OK, 0 rows affected (0.06 sec)
  • Tampilkan daftar tabel
1
2
3
4
5
6
7
mysql> show tables;
+------------------------+
| Tables_in_akademik_14b |
+------------------------+
| mahasiswa              |
+------------------------+
1 rows in set (0.00 sec)
Tampilkan struktur tabel mahasiswa
1
2
3
4
5
6
7
8
9
10
11
mysql> DESC mahasiswa;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| npm          | char(5)     | NO   | PRI | NULL    |       |
| nama         | varchar(30) | YES  |     | NULL    |       |
| tempat_lahir | char(30)    | YES  |     | NULL    |       |
| tgl_lahir    | date        | YES  |     | NULL    |       |
| angkatan     | year(4)     | YES  |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

Latihan Pernyataan ALTER TABLE

Contoh Klausa ADD

  • Tambahkan field kode_prodi char(2) pada tabel mahasiswa
1
2
3
4
mysql> ALTER TABLE mahasiswa
    -> ADD kode_prodi CHAR(2);
Query OK, 0 rows affected (0.14 sec)
Records: 0  Duplicates: 0  Warnings: 0
  • Struktur tabel setelaah penambahan field
1
2
3
4
5
6
7
8
9
10
11
12
mysql> DESC mahasiswa;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| npm          | char(5)     | NO   | PRI | NULL    |       |
| nama         | varchar(30) | YES  |     | NULL    |       |
| tempat_lahir | char(30)    | YES  |     | NULL    |       |
| tgl_lahir    | date        | YES  |     | NULL    |       |
| angkatan     | year(4)     | YES  |     | NULL    |       |
| kode_prodi   | char(2)     | YES  |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
  • Ubah field nama menjadi nama_mahasiswa
1
2
3
4
mysql> ALTER TABLE mahasiswa
    -> change nama nama_mahasiswa varchar(30);
Query OK, 0 rows affected (0.13 sec)
Records: 0  Duplicates: 0  Warnings: 0
  • Tampilkan struktur tabel mahasiswa
1
2
3
4
5
6
7
8
9
10
11
12
mysql> DESC mahasiswa;
+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| npm            | char(5)     | NO   | PRI | NULL    |       |
| nama_mahasiswa | varchar(30) | YES  |     | NULL    |       |
| tempat_lahir   | char(30)    | YES  |     | NULL    |       |
| tgl_lahir      | date        | YES  |     | NULL    |       |
| angkatan       | year(4)     | YES  |     | NULL    |       |
| kode_prodi     | char(2)     | YES  |     | NULL    |       |
+----------------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

Contoh Klausa DROP

  • Hapus field tempat_lahir untuk tabel mahasiswa
1
2
3
4
mysql> alter table mahasiswa
    -> drop tempat_lahir;
Query OK, 0 rows affected (0.13 sec)
Records: 0  Duplicates: 0  Warnings: 0
  • Tampilkan struktur tabel mahasiswa
1
2
3
4
5
6
7
8
9
10
11
mysql> DESC mahasiswa;
+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| npm            | char(5)     | NO   | PRI | NULL    |       |
| nama_mahasiswa | varchar(30) | YES  |     | NULL    |       |
| tgl_lahir      | date        | YES  |     | NULL    |       |
| angkatan       | year(4)     | YES  |     | NULL    |       |
| kode_prodi     | char(2)     | YES  |     | NULL    |       |
+----------------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

Contoh Klausa RENAME

  • Ganti nama tabel mahasiswa menjadi mhs
1
2
3
mysql> alter table mahasiswa
    -> rename mhs;
Query OK, 0 rows affected (0.01 sec)
  • Tampilakan daftar tabel
1
2
3
4
5
6
7
mysql> show tables;
+------------------------+
| Tables_in_akademik_14b |
+------------------------+
| mhs                    |
+------------------------+
1 row in set (0.00 sec)
Sumber