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 Data | Fungsi | Contoh |
|---|---|---|
NUMBER(p, s) | Angka, presisi p digit, skala s desimal | NUMBER(10), NUMBER(8,2) |
VARCHAR2(n) | Teks panjang variabel maksimal n byte | VARCHAR2(100) |
DATE | Tanggal dan jam (detik) | DATE |
TIMESTAMP | Tanggal jam dengan pecahan detik | TIMESTAMP(6) |
CLOB | Teks sangat panjang (sampai 4 GB) | isi artikel, catatan panjang |
BLOB | Data biner | file, gambar |
beberapa hal yang bikin kaget orang yang datang dari MySQL:
- tidak ada
INTmurni sebagaimana MySQL;NUMBERmenangani semuanya - teks itu
VARCHAR2, bukanVARCHAR. pakaiVARCHAR2saja biar aman antar versi - tidak ada
AUTO_INCREMENTklasik; untuk nomor urut otomatis pakaiIDENTITYdi 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:
| Constraint | Fungsi |
|---|---|
PRIMARY KEY | Identitas unik tiap baris, otomatis NOT NULL |
FOREIGN KEY | Menautkan kolom ke tabel lain |
NOT NULL | Kolom wajib diisi |
UNIQUE | Nilai tidak boleh kembar |
CHECK | Nilai 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 denganSELECT object_name FROM user_objects WHERE object_name = 'MAHASISWA';lalu pakai nama lain, atauDROP TABLE mahasiswa;dulu.ORA-00904: invalid identifierโ ada nama kolom atau tipe data yang salah tulis. periksa koma dan ejaanVARCHAR2.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, misalNUMBER(4)diisi12345.
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, danTIMESTAMP; nomor urut otomatis pakaiIDENTITY, bukanAUTO_INCREMENT - constraint (
PRIMARY KEY,FOREIGN KEY,NOT NULL,UNIQUE,CHECK) dijaga di level tabel, sebaiknya diberi nama eksplisit - verifikasi struktur dengan
DESCRIBEatau queryuser_tab_columns - error
ORApaling 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;

