Cara Create Table di Oracle: Panduan Lengkap

| | | Oracle
Cara Create Table di Oracle: Panduan Lengkap

pas pertama kali disuruh pegang Oracle di kantor, saya yang biasa main MySQL di XAMPP langsung panik sendiri: kok bikin tabel aja beda caranya, AUTO_INCREMENT-nya mana, kok pakai tool segala? ๐Ÿ™‚ ternyata setelah beberapa kali praktik, create table di Oracle itu polanya sama saja dengan database lain, cuma bahasanya sedikit beda.

di artikel ini saya tunjukkan langkah lengkapnya dari sintaks dasar, pemilihan tipe data, constraint, sampai error ORA yang hampir pasti kalian temui di perjalanan. semua contohnya bisa dicoba di Oracle Live SQL atau SQL Developer.

Persiapan: Tempat Menjalankan Perintah

sebelum bikin tabel, kalian butuh tempat mengetik SQL. pilihannya:

  • Oracle SQL Developer, aplikasi GUI gratis dari Oracle, paling nyaman buat pemula
  • SQL*Plus, terminal bawaan Oracle, ringan dan sering dipakai di server
  • Oracle Live SQL, tanpa install sama sekali, langsung di browser lewat laman resmi Oracle

yang penting satu: akun yang dipakai harus punya hak CREATE TABLE di schema-nya. kalau pakai user SYSTEM atau user belajar standar, biasanya sudah otomatis.

Sintaks Dasar CREATE TABLE

bentuk umumnya:

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

contoh nyata, tabel mahasiswa:

CREATE TABLE mahasiswa (
    id          NUMBER(10)     PRIMARY KEY,
    nim         VARCHAR2(15)   NOT NULL UNIQUE,
    nama        VARCHAR2(100)  NOT NULL,
    email       VARCHAR2(100),
    tanggal_masuk DATE         DEFAULT SYSDATE
);

setelah dijalankan, Oracle menjawab Table MAHASISWA created. di SQL Developer, atau Table created. di SQL*Plus. dari sini tabelnya sudah ada meskipun belum berisi apa-apa.

Tipe Data yang Paling Sering Dipakai

Tipe DataFungsiContoh
NUMBER(p, s)Angka, presisi p digit, skala s desimalNUMBER(10), NUMBER(8,2)
VARCHAR2(n)Teks panjang variabel maksimal n byteVARCHAR2(100)
DATETanggal dan jam (detik)DATE
TIMESTAMPTanggal jam dengan pecahan detikTIMESTAMP(6)
CLOBTeks sangat panjang (sampai 4 GB)isi artikel, catatan panjang
BLOBData binerfile, gambar

beberapa hal yang bikin kaget orang yang datang dari MySQL:

  • tidak ada INT murni sebagaimana MySQL; NUMBER menangani semuanya
  • teks itu VARCHAR2, bukan VARCHAR. pakai VARCHAR2 saja biar aman antar versi
  • tidak ada AUTO_INCREMENT klasik; untuk nomor urut otomatis pakai IDENTITY di Oracle 12c ke atas:
CREATE TABLE produk (
    id  NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    nama VARCHAR2(100) NOT NULL
);

Menambahkan Constraint

constraint itu penjaga aturan di level tabel. lima yang wajib kalian kenal:

ConstraintFungsi
PRIMARY KEYIdentitas unik tiap baris, otomatis NOT NULL
FOREIGN KEYMenautkan kolom ke tabel lain
NOT NULLKolom wajib diisi
UNIQUENilai tidak boleh kembar
CHECKNilai harus lolos kondisi logika

contoh lengkap dengan relasi antar tabel, mirip skema toko sederhana:

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

CREATE TABLE pesanan (
    id             NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    pelanggan_id   NUMBER NOT NULL,
    total          NUMBER(12,2) DEFAULT 0,
    status         VARCHAR2(20) DEFAULT 'BARU',
    tanggal        DATE DEFAULT SYSDATE,
    CONSTRAINT fk_pesanan_pelanggan FOREIGN KEY (pelanggan_id)
        REFERENCES pelanggan(id),
    CONSTRAINT ck_pesanan_status CHECK (status IN ('BARU', 'BAYAR', 'KIRIM', 'SELESAI'))
);

perhatikan penamaan constraint-nya saya beri nama eksplisit (fk_..., ck_...). kelihatannya ribet sekarang, tapi nanti kalau muncul error, pesannya langsung menunjuk constraint yang bermasalah, tidak perlu nebak-nebak.

Menjalankan dan Memverifikasi

kalau sudah selesai menulis, jalankan perintahnya. di SQL Developer cukup blok perintah lalu tekan Ctrl+Enter, di SQL*Plus akhiri dengan titik koma lalu Enter.

untuk memastikan strukturnya terbentuk sesuai keinginan:

-- lihat struktur di SQL*Plus
DESCRIBE mahasiswa;

-- atau query data dictionary, jalan di mana saja
SELECT column_name, data_type, data_length, nullable
FROM   user_tab_columns
WHERE  table_name = 'MAHASISWA';

ingat, nama tabel di data dictionary itu huruf besar semua (MAHASISWA), jadi di WHERE tulis pakai kutip satu dan huruf kapital.

Masukkan Data Uji dan Coba Query

biar terasa hidup, isi beberapa baris:

INSERT INTO mahasiswa (nim, nama, email) VALUES ('2210511001', 'Sigit', '[email protected]');
INSERT INTO mahasiswa (nim, nama, email) VALUES ('2210511002', 'Andini', '[email protected]');
COMMIT;

SELECT * FROM mahasiswa WHERE nama LIKE 'S%';

kalau SELECT-nya mengembalikan dua baris tadi, artinya tabel kalian berfungsi penuh: struktur benar, constraint jalan, dan siap dipakai.

Error yang Sering Muncul

beberapa ORA klasik yang hampir pasti kalian temui beserta solusinya:

  • ORA-00955: name is already used by an existing object โ†’ nama tabel sudah ada. cek dengan SELECT object_name FROM user_objects WHERE object_name = 'MAHASISWA'; lalu pakai nama lain, atau DROP TABLE mahasiswa; dulu.
  • ORA-00904: invalid identifier โ†’ ada nama kolom atau tipe data yang salah tulis. periksa koma dan ejaan VARCHAR2.
  • ORA-02264: name already used by an existing constraint โ†’ nama constraint bentrok dengan tabel lain. ganti nama constraint-nya.
  • ORA-01438: value larger than specified precision โ†’ angka yang dimasukkan melebihi presisi kolom, misal NUMBER(4) diisi 12345.

Kesimpulan

  • create table di Oracle pakai CREATE TABLE nama_tabel (kolom tipe_data constraint); dan dijalankan dari SQL Developer, SQL*Plus, atau Live SQL
  • tipe data utamanya NUMBER, VARCHAR2, DATE, dan TIMESTAMP; nomor urut otomatis pakai IDENTITY, bukan AUTO_INCREMENT
  • constraint (PRIMARY KEY, FOREIGN KEY, NOT NULL, UNIQUE, CHECK) dijaga di level tabel, sebaiknya diberi nama eksplisit
  • verifikasi struktur dengan DESCRIBE atau query user_tab_columns
  • error ORA paling umum: 00955 (nama dipakai), 00904 (identifier salah), 01438 (nilai kelebihan presisi)

setelah tabel pertama jadi, langkah berikutnya latihan INSERT, UPDATE, dan DELETE, atau bandingkan sintaksnya dengan MySQL biar makin peka perbedaannya.

Baca Juga Mengenai :

Pertanyaan yang Sering Diajukan

Apa perintah untuk membuat tabel di Oracle?

Gunakan perintah CREATE TABLE diikuti nama tabel dan daftar kolom beserta tipe datanya, misal CREATE TABLE mahasiswa (id NUMBER PRIMARY KEY, nama VARCHAR2(100)); Jalankan di SQL Plus atau SQL Developer.

Apa beda VARCHAR2 dan VARCHAR di Oracle?

VARCHAR2 adalah tipe data standar Oracle yang perilakunya dijamin konsisten antar versi, sedangkan VARCHAR saat ini berfungsi sama tapi sebaiknya dihindari karena Oracle berhak mengubah semantiknya. Selalu pakai VARCHAR2.

Kenapa muncul error ORA-00955 name is already used?

Error itu berarti nama tabel sudah dipakai objek lain di schema kalian. Cek dengan SELECT object_name FROM user_objects WHERE object_name = NAMA_TABEL;, lalu pakai nama lain atau DROP tabel lamanya dulu.

Bagaimana cara melihat struktur tabel yang sudah dibuat?

Jalankan DESCRIBE nama_tabel di SQL Plus, atau di SQL Developer buka tab Columns pada tabel tersebut. Bisa juga query SELECT column_name, data_type FROM user_tab_columns WHERE table_name = MAHASISWA;

Sigit Nurhanafi avatar
Full-stack developer & technical writer. Berpengalaman di PHP, Laravel, NodeJS, MySQL, dan Python. Aktif menulis tutorial pemrograman dan maintaining open-source projects di PemburuKode sejak 2021.