Membuat Tabel — SQL

Untuk menyimpan data, kamu perlu membuat tabel terlebih dahulu dengan perintah CREATE TABLE. Syntax: CREATE TABLE nama_tabel ( nama_kolom TIPE_DATA…

Sebelum menyimpan data, kamu bikin wadahnya dulu: tabel. Perintah CREATE TABLE menentukan nama tabel, kolom-kolomnya, tipe isi tiap kolom, dan aturan tambahannya. Bayangin bikin formulir pendaftaran kosong: kamu menentukan isian apa saja yang ada, tiap isian diisi angka atau teks, mana yang wajib diisi, dan nomor pendaftarannya diisi petugas, bukan pendaftar. Formulir kosong itu tabel, dan tiap formulir yang terisi nanti jadi satu baris.

🧪 Tebakan cepat: kamu bikin kolom id INTEGER saja, tanpa aturan tambahan, lalu menyimpan siswa tanpa menyebut id-nya. id siswa itu jadi berapa? Tebak dulu, jawabannya ada di bagian "PRIMARY KEY dan AUTOINCREMENT".

Bentuk CREATE TABLE

Tabel students ini dipakai terus sampai akhir kelas SQL:

CREATE TABLE students (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  name TEXT NOT NULL,
  grade INTEGER,
  city TEXT
);

Aturan seperti PRIMARY KEY dan NOT NULL disebut constraint. Database menegakkannya tiap kali ada data masuk.

Tipe data

Tipe Isinya Contoh
INTEGER bilangan bulat 90, -5
TEXT teks 'Dewi', 'Jakarta'
REAL bilangan desimal (pakai titik) 87.5

Itu tipe utama SQLite. MySQL punya VARCHAR(n) untuk teks dengan panjang maksimal n karakter, misalnya name VARCHAR(100). SQLite menerima tulisan VARCHAR(100) juga, tapi memperlakukannya seperti TEXT dan gak mengecek panjangnya.

SQLite juga longgar: teks 'delapan puluh' tetap diterima di kolom INTEGER. MySQL (dengan pengaturan bawaannya) dan PostgreSQL menolaknya. Jadi pilih tipe yang tepat sejak awal.

PRIMARY KEY dan AUTOINCREMENT

Uji tabelnya dengan menyimpan Dewi dan Rizky tanpa menyebut id. Hasilnya tergantung cara kolom id ditulis:

Kolom id ditulis id Dewi id Rizky
id INTEGER NULL NULL
id INTEGER PRIMARY KEY 1 2
id INTEGER PRIMARY KEY AUTOINCREMENT 1 2

NULL artinya kosong, gak ada nilainya. Kolom INTEGER biasa gak diisi siapa-siapa, jadi id-nya NULL. Itu jawaban tebakannya.

Ejaannya beda di tiap database:

-- SQLite
id INTEGER PRIMARY KEY AUTOINCREMENT
-- MySQL
id INT PRIMARY KEY AUTO_INCREMENT
-- PostgreSQL
id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY

Editor SQL di BelajarWeb.dev menerjemahkan ejaan MySQL yang umum (INT, VARCHAR(n), AUTO_INCREMENT) ke ejaan SQLite sebelum menjalankannya, jadi di latihan dua-duanya diterima.

NOT NULL: kolom wajib diisi

NOT NULL menolak baris yang kolom itu kosong. Dengan name TEXT NOT NULL, menyimpan siswa tanpa nama dijawab:

Error: NOT NULL constraint failed: students.name

Barisnya gak masuk. NULL beda dengan teks kosong '' dan angka 0: dua-duanya tetap nilai, jadi lolos NOT NULL.

⚠️ Jebakan yang sering ketemu

TL;DR: CREATE TABLE nama (kolom TIPE ATURAN, ...); membuat tabel. Tiap kolom: nama, tipe (INTEGER, TEXT, REAL, atau VARCHAR(n) di MySQL), lalu constraint di baris yang sama; koma di antara kolom, gak di belakang yang terakhir. PRIMARY KEY membuat nilai unik, dan di SQLite INTEGER PRIMARY KEY mengisi id sendiri; AUTOINCREMENT (MySQL: AUTO_INCREMENT) menjamin nomor gak dipakai ulang. NOT NULL menolak baris yang kolomnya kosong: NOT NULL constraint failed.

Yang akan kamu pelajari