Anda di halaman 1dari 9

Data Definition Language (DDL) – Database & Tabel

MODUL I
DATA DEFINITION LANGUAGE (DDL)
DATABASE & TABEL

A. Tujuan Praktikum
Mahasiswa memahami sintaks perintah pada MySQL untuk membuat,
mengubah dan menghapus database dan tabel.

B. Indikator
Mahasiswa mampu membuat, mengubah dan menghapus dabatase dan
tabel pada MySQL menggunakan perintah yang telah dipelajari.

C. Materi
Data definition language (DDL) adalah perintah-perintah yang digunakan
untuk membuat ataupun menghapus database dan obyek database. Obyek
database disini adalah lain tabel, view, procedure, trigger. Sebenarnya
untuk membuat database dan obyeknya dapat dilakukan melalui
antarmuka phpMyAdmin, namun demikian pemahaman tentang sintaks
perintah sangatlah penting. Pada modul ini akan dibahas bagaimana
membuat database dan tabel menggunakan perintah yang telah
disediakan oleh MySQL.
1. CREATE
Merupakan perintah yang digunakan untuk membuat database
dan obyek database.
Sintaks untuk membuat database:

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name     
[create_specification] ...  

create_specification:     
[DEFAULT] CHARACTER SET [=] charset_name   | 
[DEFAULT] COLLATE [=] collation_name

Q1. Pada sintaks di atas terdapat pilihan-pilihan yang berada di


dalam tanda {..} dan [..]. Apa maksud dari tanda {..} dan [..]
tersebut?

Untuk membuat suatu database baru dengan nama


“db_praktikum” maka perintah yang diketikkan adalah:

1
Data Definition Language (DDL) – Database & Tabel

CREATE DATABASE db_praktikum;

Ketika perintah di atas berhasil dijalankan, maka pada server akan


muncul suatu database baru dengan nama “db_praktikum”.

Q2. Adakah kemungkinan perintah tersebut tidak berhasil dijalankan?


Kenapa?
Perintah IF NOT EXISTS digunakan untuk memastikan bahwa
database yang ingin dibuat belum ada di server. Jika database dengan
nama itu sudah ada, maka perintah pembuatan database ini akan
diabaikan.
CREATE DATABASE IF NOT EXISTS db_praktikum;

Sintaks untuk membuat table:


CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(create_definition,...)     
[table_options]     
[partition_options]
     
create_definition:     
col_name column_definition   
| [CONSTRAINT [symbol]] PRIMARY KEY [index_type] 
(index_col_name,...)[index_option] ...   
| {INDEX|KEY} [index_name] [index_type] 
(index_col_name,...)[index_option] ...   
| [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY]       
[index_name] [index_type] (index_col_name,...)       
[index_option] ...   
| {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] 
(index_col_name,...)[index_option] ...   
| [CONSTRAINT [symbol]] FOREIGN KEY [index_name] 
(index_col_name,...) reference_definition   
| CHECK (expr)  

column_definition:     
data_type 
   [NOT NULL | NULL] 
   [DEFAULT default_value]       
   [AUTO_INCREMENT] 
   [UNIQUE [KEY] | [PRIMARY] KEY]       
   [COMMENT 'string']       
   [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]       
   [STORAGE {DISK|MEMORY|DEFAULT}]          
   [reference_definition]

2
Data Definition Language (DDL) – Database & Tabel

As

Q3. Tipe-tipe data apa saja yang disediakan oleh MySQL?

Dari sintaks di atas dapat dilihat bahwa terdapat perintah


CREATE diikuti dengan TABLE beserta table_name yang merupakan
nama dari tabel yang diinginkan. Setelah nama tabel maka diikuti
dengan col_name (nama field/kolom) yang diinginkan dan
column_definition (berisikan tipe data serta beberapa properti
yang untuk kolom tersebut). Properti itu antara lain: NOT
NULL/NULL, DEFAULT, AUTO_ICREMENT, UNIQUE dan lain
sebagainya. Contoh untuk membuat suatu tabel dengan nama
tb_baru dengan dua buah kolom yaitu col_id (tipe data INT) dan
col_name (tipe data VARCHAR) adalah sebagai berikut:

CREATE TABLE tb_baru (
col_id INT,
col_name VARCHAR(12)
);

3
Data Definition Language (DDL) – Database & Tabel

Tiap tabel, sesuai dengan kaidah normalisasi, harus memiliki satu


primary key. Primary key ini tidak boleh bernilai NULL. Untuk
membuat tabel tb_baru dengan col_id sebagai primary key dapat
digunakan perintah berikut:

CREATE TABLE tb_baru (
col_id INT NOT NULL AUTO_INCREMENT,
col_name VARCHAR(12),
PRIMARY KEY (col_id)
);

Foreign key digunakan untuk mendefinisikan suatu kolom pada


tabel yang juga merupakan primary key pada tabel lain. Hal ini biasa
ditemui pada hubungan antara dua tabel yang bersifat one-to-many
(1-N). Sebagai contoh: misalkan pada tabel tb_lain, kolom
lain_col_id merupakan foreign key yang mengacu pada kolom col_id
pada tb_baru. Perintah untuk membuat tabel tb_lain yang berisikan
foreign key ini adalah sebagai berikut:
CREATE TABLE tb_lain (
lain_id INT NOT NULL AUTO_INCREMENT,
lain_uraian VARCHAR(45),
lain_col_id INT NOT NULL,
PRIMARY KEY (lain_id),
CONSTRAINT `PK1`
FOREIGN KEY (lain_col_id)
REFERENCES tb_baru (col_id)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

Q4. Apa guna perintah ON DELETE NO ACTION dan ON UPDATE NO


ACTION?

4
Data Definition Language (DDL) – Database & Tabel

Kata kunci CONSTRAINT digunakan untuk mendefinisikan


aturan-aturan yang melarang/memperbolehkan nilai yang dapat
disimpan pada kolom suatu tabel. CONSTRAINT juga dapat
digunakan untuk mendefinisikan aturan tipe data apa saja yang bisa
dimasukkan ke suatu tabel. Oleh karena itu CONSTRAINT berlaku
pada tingkat kolom dan tabel. Pada tingkat kolom maka aturan
tersebut hanya berlaku untuk satu kolom saja sedangkan pada
tingkat tabel maka aturan akan berlaku untuk seluruh kolom pada
tabel tersebut. MySQL menyediakan CONSTRAINT berikut:

CONSTRAINT DESKRIPSI
NOT NULL NOT NULL digunakan untuk mendefinisikan
bahwa satu kolom tidak boleh berisi nilai NULL.
UNIQUE UNIQUE digunakan untuk menyatakan bahwa
pada satu kolom tidak boleh ada nilai yang
sama (duplikat). Pada satu tabel boleh terdapat
lebih dari satu kolom yang UNIQUE.
PRIMARY KEY PRIMARY KEY digunakan untuk memastikan
bahwa data pada suatu kolom adalah unik dan
sekaligus membuatkan INDEX untuk akses tabel
yang lebih cepat.
FOREIGN KEY FOREIGN KEY digunakan untuk
menghubungkan dua buah tabel menggunakan
masing-masing satu kolom pada kedua tabel.
Kolom yang digunakan pada satu tabel harus
merupakan PRIMARY KEY dan diacu oleh kolom
pada tabel lain yang disebut FOREIGN KEY.
CHECK CHECK digunakan untuk mengontrol nilai pada
suatu kolom. CHECK akan menentukan apakah
nilai pada kolom tersebut valid atau tidak
berdasarkan suatu ekspresi logika.
DEFAULT Tiap tabel pada MySQL harus memiliki suatu
nilai (termasuk nilai NULL). Ketika suatu kolom
tidak diberikan nilai pada proses INSERT tabel
maka kolom tersebut akan disiikan nilai yang
dispesifikasikan sebagai DEFAULT.

2. ALTER
Tujuan penggunaan perintah ini pada tabel adalah untuk
mengubah struktur dari tabel tersebut. Sebagai contoh, perintah ini
digunakan untuk menambah atau menghapus kolom, membuat atau
menghapus index, mengubah tip dari suatu kolom, atau mengubah
nama kolom atau tabel itu sendiri. Perintah ini juga dapat digunakan

5
Data Definition Language (DDL) – Database & Tabel

untuk mengubah karakteristik seperti storage engine yang dipakai


atau komentar pada tabel.
ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name     
[alter_specification [, alter_specification] ...]     
[partition_options]  
| ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] 
alter_specification:     
(index_col_name,...) [index_option] ...   
table_options   
| ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] 
| ADD [COLUMN] col_name column_definition [FIRST | 
[index_name][index_type] (index_col_name,...) 
AFTER col_name ]   
[index_option] ...   
| ADD [COLUMN] (col_name column_definition,...) 
| ADD FULLTEXT [INDEX|KEY][index_name]
| ADD {INDEX|KEY} [index_name] [index_type] 
(index_col_name,...) [index_option] ...   
(index_col_name,...) [index_option] ...   
| ADD SPATIAL [INDEX|KEY][index_name]
(index_col_name,...) [index_option] ...   
| ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] 
(index_col_name,...) reference_definition   
| ALTER [COLUMN] col_name {SET DEFAULT literal 
| DROP DEFAULT}   
| CHANGE [COLUMN] old_col_name new_col_name 
column_definition [FIRST|AFTER col_name]   
| MODIFY [COLUMN] col_name column_definition [FIRST | 
AFTER col_name]   
| DROP [COLUMN] col_name   
| DROP PRIMARY KEY   
| DROP {INDEX|KEY} index_name   
| DROP FOREIGN KEY fk_symbol   
| MAX_ROWS = rows   
| DISABLE KEYS   
| ENABLE KEYS   
| RENAME [TO|AS] new_tbl_name   
| ORDER BY col_name [, col_name] ...   
| CONVERT TO CHARACTER SET charset_name [COLLATE 
collation_name]   
| [DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=]
collation_name]   
| DISCARD TABLESPACE   
| IMPORT TABLESPACE   
| ADD PARTITION (partition_definition)   
| DROP PARTITION partition_names   
| COALESCE PARTITION number   
| REORGANIZE PARTITION [partition_names INTO 
(partition_definitions)]   
| ANALYZE PARTITION {partition_names | ALL}   
| CHECK PARTITION {partition_names | ALL}   
| OPTIMIZE PARTITION {partition_names | ALL}   
| REBUILD PARTITION {partition_names | ALL}   
| REPAIR PARTITION {partition_names | ALL}   
| PARTITION BY partitioning_expression   
| REMOVE PARTITIONING  
index_col_name: col_name [(length)] [ASC | DESC] 
index_type: USING {BTREE | HASH}  
index_option: KEY_BLOCK_SIZE [=] value   | index_type  
| WITH PARSER parser_name  
table_options:     
6
Data Definition Language (DDL) – Database & Tabel

Contoh penggunaan perintah ALTER:


 Untuk mengubah nama tabel dari t1 menjadi t2:
ALTER TABLE t1 RENAME t2;

 Untuk mengubah tipe data kolom a dari INTEGER menjadi


TINYINT NOT NULL (nama kolom tidak diubah) dan kolom b
dari CHAR(10) ke CHAR(20) sekaligus mengubah namanya dari
b menjadi c:
ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c 
CHAR(20);

 Untuk menghapus kolom c pada tabel t2:

ALTER TABLE t2 DROP COLUMN c;

 Untuk menambah suatu kolom c pada tabel t2 dengan properti


AUTO_INCREMENT:

ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL 
AUTO_INCREMENT,   ADD PRIMARY KEY (c);

7
Data Definition Language (DDL) – Database & Tabel

Q5. Kenapa untuk menambah kolom c dengan properti


AUTO_INCREMENT harus ditambahkan NOT NULL dan PRIMARY
KEY?

3. DROP
Perintah DROP yang diikuti dengan nama database digunakan
untuk menghapus semua tabel di database tersebut termasuk
menghapus database itu sendiri. Penghapusan database dari server
juga mengakibatkan semua file (fisik) yang dibuat sebagai hasil dari
perintah CREATE database akan dihapus. Contoh perintah untuk
menghapus database db_praktikum adalah sebagai berikut:

DROP DATABASE db_praktikum;

Perintah DROP pada tabel digunakan untuk menghapus satu atau


lebih tabel pada database. Ketika perintah DROP TABLE dijalankan
maka semua data dan definis tabel akan dihapus. Sintaks dari
perintah DROP TABLE adalah sebagai berikut:

DROP [TEMPORARY] TABLE [IF EXISTS]     
tbl_name [, tbl_name] ...     
[RESTRICT | CASCADE]

Contoh perintah untuk menghapus tabel t1 dan t2 dari database


adalah sebagai berikut:

DROP TABLE t1, t2;

D. LATIHAN
Kerjakanlah latihan berikut:
1. Buatlah suatu database baru dengan nama “db_latihan”.
2. Pada “db_latihan” tambahkan tabel “m_mahasiswa” dengan field
sebagai berikut:
a. “mhs_NIM”, CHAR(10)
b. “mhs_Nama”, VARCHAR(50), NOT NULL

8
Data Definition Language (DDL) – Database & Tabel

c. “mhs_Tanggal_Lahir”, DATE
d. “mhs_Alamat”, VARCHAR(100)
e. “mhs_Jenis_Kelamin”, TINYINT, DEFAULT 1
f. “mhs_Telpon”, VARCHAR(20)
g. “mhs_Asal”, CHAR(5)
3. Buatlah CONSTRAINT PRIMARY KEY pada kolom “mhs_NIM”.
4. Buatlah tabel “m_kota” dengan field sebagai berikut:
a. “kota_id”, CHAR(5)  primary key
b. “kota_nama”, VARCHAR(20)
5. Buatlah CONSTRAINT FOREIGN KEY dari tabel “m_mahasiswa”
kolom “mhs_asal” ke tabel “m_kota” kolom “kota_id”.
6. Cobalah untuk menghapus tabel “m_kota”. Berhasilkah?

E. REFERENSI
1. MySQL Server Documentation, http://dev.mysql.com
2. MySQL Tutorials, http://www.devshed.com

Anda mungkin juga menyukai