Perintah CREATE TABLE

📚 Pengenalan Perintah CREATE TABLE

Perintah CREATE TABLE digunakan untuk membuat tabel baru dalam database. Tabel adalah struktur dasar untuk menyimpan data dalam database relasional, terdiri dari baris dan kolom.

Sintaks CREATE TABLE

Sintaks dasar untuk CREATE TABLE adalah:

CREATE TABLE nama_tabel (
    kolom1 tipe_data [constraint],
    kolom2 tipe_data [constraint],
    ...
    [table_constraint]
);

Tipe Data Umum

Berikut adalah tipe data umum yang digunakan dalam SQL:

Tipe Data Numerik

Tipe Data Deskripsi
INT Bilangan bulat (-2.147.483.648 hingga 2.147.483.647)
BIGINT Bilangan bulat besar
SMALLINT Bilangan bulat kecil
TINYINT Bilangan bulat sangat kecil (0-255)
DECIMAL(p,s) Bilangan desimal dengan presisi p dan skala s
FLOAT(p) Bilangan floating point dengan presisi p
REAL Bilangan floating point

Tipe Data String

Tipe Data Deskripsi
CHAR(n) String dengan panjang tetap n
VARCHAR(n) String dengan panjang maksimal n
TEXT String dengan panjang maksimal besar
NCHAR(n) String Unicode dengan panjang tetap n
NVARCHAR(n) String Unicode dengan panjang maksimal n

Tipe Data Tanggal dan Waktu

Tipe Data Deskripsi
DATE Tanggal (YYYY-MM-DD)
TIME Waktu (HH:MI:SS)
DATETIME Tanggal dan waktu
TIMESTAMP Tanggal dan waktu dengan zona waktu
YEAR Tahun (YYYY)

Tipe Data Lainnya

Tipe Data Deskripsi
BOOLEAN Nilai benar atau salah (TRUE/FALSE)
BLOB Binary Large Object untuk data biner
JSON Data JSON
ENUM Enumerasi, pilihan dari nilai yang telah ditentukan

Constraints

Constraints adalah aturan yang diterapkan pada kolom atau tabel untuk memastikan integritas data:

NOT NULL

Memastikan kolom tidak boleh memiliki nilai NULL:

CREATE TABLE pelanggan (
    id INT PRIMARY KEY,
    nama VARCHAR(50) NOT NULL,
    email VARCHAR(100)
);

UNIQUE

Memastikan semua nilai dalam kolom unik:

CREATE TABLE pelanggan (
    id INT PRIMARY KEY,
    nama VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE
);

PRIMARY KEY

Mengidentifikasi setiap baris dalam tabel secara unik:

CREATE TABLE pelanggan (
    id INT PRIMARY KEY,
    nama VARCHAR(50) NOT NULL,
    email VARCHAR(100)
);

Atau sebagai constraint tabel:

CREATE TABLE pelanggan (
    id INT,
    nama VARCHAR(50) NOT NULL,
    email VARCHAR(100),
    PRIMARY KEY (id)
);

FOREIGN KEY

Menghubungkan ke kolom di tabel lain:

CREATE TABLE pesanan (
    id INT PRIMARY KEY,
    pelanggan_id INT,
    tanggal DATE,
    jumlah INT,
    FOREIGN KEY (pelanggan_id) REFERENCES pelanggan(id)
);

CHECK

Memastikan nilai dalam kolom memenuhi kondisi tertentu:

CREATE TABLE produk (
    id INT PRIMARY KEY,
    nama VARCHAR(50) NOT NULL,
    harga DECIMAL(10,2) CHECK (harga > 0),
    stok INT CHECK (stok >= 0)
);

DEFAULT

Memberikan nilai default untuk kolom:

CREATE TABLE pelanggan (
    id INT PRIMARY KEY,
    nama VARCHAR(50) NOT NULL,
    email VARCHAR(100),
    kota VARCHAR(50) DEFAULT 'Jakarta',
    tanggal_daftar DATE DEFAULT CURRENT_DATE
);

AUTO_INCREMENT

Secara otomatis menghasilkan nilai unik untuk kolom:

CREATE TABLE pelanggan (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nama VARCHAR(50) NOT NULL,
    email VARCHAR(100)
);

Catatan: Sintaks untuk AUTO_INCREMENT mungkin berbeda tergantung pada sistem database. Di SQL Server, gunakan IDENTITY, dan di PostgreSQL, gunakan SERIAL atau GENERATED AS IDENTITY.

Contoh Lengkap CREATE TABLE

Berikut adalah contoh lengkap untuk membuat tabel 'pelanggan':

CREATE TABLE pelanggan (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nama VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    telepon VARCHAR(15),
    alamat TEXT,
    kota VARCHAR(50) DEFAULT 'Jakarta',
    tanggal_lahir DATE,
    tanggal_daftar DATE DEFAULT CURRENT_DATE,
    status ENUM('Aktif', 'Tidak Aktif') DEFAULT 'Aktif',
    CHECK (tanggal_lahir < tanggal_daftar)
);

CREATE TABLE dengan Primary Key Komposit

Anda dapat membuat primary key dari beberapa kolom:

CREATE TABLE pesanan_detail (
    pesanan_id INT,
    produk_id INT,
    jumlah INT,
    harga DECIMAL(10,2),
    PRIMARY KEY (pesanan_id, produk_id),
    FOREIGN KEY (pesanan_id) REFERENCES pesanan(id),
    FOREIGN KEY (produk_id) REFERENCES produk(id)
);

CREATE TABLE dari Tabel Lain

Anda dapat membuat tabel baru dari tabel yang ada:

-- Membuat tabel baru dengan struktur dan data dari tabel lain
CREATE TABLE pelanggan_backup AS
SELECT * FROM pelanggan;

-- Membuat tabel baru dengan struktur dari tabel lain tanpa data
CREATE TABLE pelanggan_struktur AS
SELECT * FROM pelanggan WHERE 1=0;

CREATE TABLE di Berbagai Sistem Database

Sintaks untuk CREATE TABLE mungkin sedikit berbeda tergantung pada sistem database yang digunakan:

MySQL

CREATE TABLE pelanggan (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nama VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

PostgreSQL

CREATE TABLE pelanggan (
    id SERIAL PRIMARY KEY,
    nama VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE
);

SQL Server

CREATE TABLE pelanggan (
    id INT PRIMARY KEY IDENTITY(1,1),
    nama VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE
);

Oracle

CREATE TABLE pelanggan (
    id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    nama VARCHAR2(50) NOT NULL,
    email VARCHAR2(100) UNIQUE
);

Menampilkan Struktur Tabel

Untuk menampilkan struktur tabel yang ada:

MySQL

DESCRIBE pelanggan;
-- atau
SHOW COLUMNS FROM pelanggan;

PostgreSQL

\d pelanggan;

SQL Server

EXEC sp_columns pelanggan;
-- atau
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'pelanggan';

Oracle

DESCRIBE pelanggan;

Coba Sendiri

Anda dapat mencoba kode SQL di atas di editor berikut:

💡 Tips Perintah CREATE TABLE

Saat merancang tabel, pertimbangkan normalisasi data untuk menghindari redundansi. Gunakan tipe data yang sesuai untuk setiap kolom untuk mengoptimalkan penyimpanan dan kinerja. Selalu tentukan primary key untuk setiap tabel untuk memastikan setiap baris dapat diidentifikasi secara unik.