SQL: CREATE TABLE

Pada sesi kali ini akan dibahas tentang  salah satu pernyataan SQL yaitu pernyataan CREATE Table.  Klausa-klausa yang digunakan pada artikel ini mengacu pada DBMS MYSQL.

Fungsi pernyataan CREATE TABLE

Pernyataan CREATE TABLE termasuk dalam kateogri DDL (Data Definition Languange). Pernyataan ini digunakan untuk menciptakan suatu tabel dalam basis data.

Bentuk umum Pernyataan CREATE TABLE

Adapun bentuk umum pernyataan CREATE TABLE pada mySQL sebagai berikut:

CREATE TABLE nama_tabel
 (
 nama_kolom1 data_type1 [PRIMARY KEY],
 nama_kolom2 data_type2,
 nama_kolom3 data_type3,
 ....
 )

Tipe data disesuaikan dengan karakteristik dari data-data setiap kolom atau field. Untuk refferensi tipe data dapat anda baca pada artikel: SQL: Tipe-tipe data

Contoh Pernyataan CREATE TABLE

Jika database belum ada maka buatlah database kepegawaian terlebih dahulu. Dengan perintah, sebagai berikut:

CREATE DATABASE kepegawaian

Jika diketahui contoh data tabel pegawai sebagai berikut:

Gambar 1. contoh tabel yang akan dibuat menggunakan pernyataan CREATE TABLE

Perintah SQLnya sebagai berikut:

CREATE TABLE pegawai
(
 nip CHAR(6) PRIMARY KEY,
 nama VARCHAR(50),
 alamat VARCHAR(100),
 tempat_lahir VARCHAR(30),
 tanggal_lahir DATE,
 gol CHAR(2),
 kode_jabatan CHAR(3),
 kode_fungsional CHAR(2)
)

Klausa PRIMARY KEY

Klausa PRIMARY KEY dapat diletakkan diakhir pertanyaan, menjadi sebagai berikut:

CREATE TABLE pegawai
(
 nip CHAR(6),
 nama VARCHAR(50),
 alamat VARCHAR(100),
 tempat_lahir VARCHAR(30),
 tanggal_lahir DATE,
 gol CHAR(2),
 kode_jabatan CHAR(3),
 kode_fungsional CHAR(2)
 PRIMARY KEY (nip)
)

Klausa NULL dan NOT NULL

  • Klausa NULL digunakan untuk menentukan sebuah field dapat tidak diisi (NULL)
  • Klausa NOT NULL digunakan untuk menentukan sebuah field wajin diisi dan tidak boleh kosong

Contoh penggunaan NULL dan NOT NULL :

CREATE TABLE pegawai
(
 nip CHAR(6) NOT NULL,
 nama VARCHAR(50) NOT NULL,
 alamat VARCHAR(100) NOT NULL,
 tempat_lahir VARCHAR(30) NULL,
 tanggal_lahir DATE NULL ,
 gol CHAR(2) NOT NULL,
 kode_jabatan CHAR(3) NOT NULL,
 kode_fungsional CHAR(2) NOT NULL
 PRIMARY KEY (nip)
)

Contoh pernyataan diatas menunjukkan bahwa field nip, nama, alamat, gol, kode_jabatan, kode_fungsional wajib diisi. Sedangkan field tempat_lahir dan tanggal_lahir tidak wajib diisi atau dapat dikosongkan.

KLAUSA FOREIGN KEY

Dalam database relational  ditemukan klausa primary key dan foreign key. Tujuan utama dari adanya kedua klausa adalah untuk mengidentifikasi relasi setiap tabel dengan tabel lain.

  • Primary key adalah field atau beberapa field pada tabel yang bersifat unik dan menjadi dasar pengurutan dalam suatu tabel .
  • Foreign Key adalah satu atau beberapa field pada tabel yang merupakan field yang dihubungkan ke field primarykey tabel induknya.

Sebagai contoh relasi tabel sebagai berikut:

Relasi Tabel

 

Pada contoh skema basis data diatas dapat diketahui bahwa:

  • Tabel jabatan memiliki primary key kode_jabatan
  • Tabel fungsional memiliki primary key kode_fungsional
  • Tabel pegawai memiliki primary key nip dan foreign key kode_jabatan dan kode_fungsional
CREATE TABLE pegawai
(
 nip CHAR(6) NOT NULL PRIMARY KEY,
 nama VARCHAR(50) NOT NULL,
 alamat VARCHAR(100) NOT NULL,
 tempat_lahir VARCHAR(30) NULL,
 tanggal_lahir DATE NULL ,
 gol CHAR(2) NOT NULL,
 kode_jabatan CHAR(3) NOT NULL 
 FOREIGN KEY REFERENCES jabatan(Kode_jabatan),
 kode_fungsional CHAR(2) NOT NULL 
 FOREIGN KEY REFERENCES fungsioanal(Kode_fungsional)
)

 Klausa ON DELETE  dan ON UPDATE

Pada MYSQL, kita harus menambahkan perintah ON DELETE [opsi] dan ON UPDATE [opsi]pada table yang mereferensikan foreign key. Contoh:

CREATE TABLE pegawai
(
 nip CHAR(6) NOT NULL PRIMARY KEY,
 nama VARCHAR(50) NOT NULL,
 alamat VARCHAR(100) NOT NULL,
 tempat_lahir VARCHAR(30) NULL,
 tanggal_lahir DATE NULL ,
 gol CHAR(2) NOT NULL,
 kode_jabatan CHAR(3) NOT NULL 
 FOREIGN KEY REFERENCES jabatan(Kode_jabatan) ON UPDATE DELETE,
 kode_fungsional CHAR(2) NOT NULL, 
 FOREIGN KEY REFERENCES fungsioanal(Kode_fungsional) ON UPDATE  DELETE
)

Opsi pada perintah tersebut jelasnya dibawah ini.

  • RESTRICT, Jika tabel anak berisi nilai dalam kolom yang mengkait yang nilainya sama dengan di kolom terkait pada tabel induk, baris dalam tabel induk tidak bisa dihapus, dan nilai di kolom terkait tidak dapat diupdate. Ini adalah opsi default jika klausa ON DELETE atau ON UPDATE tidak dispesifikasikan.
  • CASCADE, Baris-baris dalam tabel anak yang berisi nilai-nilai yang juga terdapat dalam kolom terkait dari tabel induk dihapus ketika barisbaris yang berkaitan dihapus dari tabel induk. Baris-baris dalam tabel anak yang berisi nilai-nilai yang juga terdapat dalam kolom terkait dari tabel induk diupdate ketika nilai-nilai yang berkaitan diupdate dalam tabel induk.
  • SET NULL, Nilai-nilai dalam kolom yang mengkait dari tabel anak diset ke NULL saat baris-baris dengan data terkait dalam tabel induk dihapus dari tabel induk atau ketika data terkait dalam tabel induk diupdate. Untuk menggunakan opsi ini, semua kolom-kolom yang mengkait dalam tabel anak harus mengijinkan nilai NULL.
  • NO ACTION Tidak ada aksi yang diambil dalam tabel anak ketika baris-baris dihapus dari tabel induk atau nilai-nilai dalam kolom terkait dalam tabel induk diupdate.
  • SET DEFAULT Nilai-nilai dalam kolom-kolom yang mengkait dari tabel anak diset ke nilai default mereka ketika baris-baris dihapus dari tabel induk atau kolom terkait dari tabel induk diupdate.

Tipe data MySQL

  • tipe CHAR umumnya digunakan untuk field yang memiliki panjang data yang seragam. misalnya nip, gol, kode_jabatan, dan kode_fungsional
  • tipe VARCHAR digunakan untuk field yang memiliki panjang data yang tidak seragam, misalnya nama, alamat dan tempat_lahir.
  • untuk memahami berbagai tipe data lainya pada mysql dapat anda pelajari pada artikel :
    Tipe Data pada MySQL

Latihan Pernyataan CREATE TABLE

latihan pernyataan CREATE TABLE

latihan pernyataan CREATE TABLE

  1. Gambarkan skema basis data dari contoh data diatas
  2. Buatlah struktur tabel-tabel berikut menggunakan pernyataan CREATE TABLE lengkap dengan klausa PRIMARY KEY, FOREIGN KEY dan ON UPDATE DELETE

Tuliskan komentar anda

Komentar

Tinggalkan Balasan