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.