Menciptakan Table

Seperti telah kita pelajari sebelumnya bahwa sistem basis data Oracle memiliki berbagai macam struktur data. Table merupakan struktur data utama pada sistem basis data Oracle. Pada pembahasan kali ini kita akan membicarakan bagaimana menciptakan table di Oracle.

9.1. Menciptakan Table

Kita dapat menciptakan table dengan menggunakan perintah CREATE TABLE. Kita harus memiliki privilege CREATE TABLE untuk dapat menciptakan table serta harus memiliki area penyimpanan dimana objek tersebut diciptakan. Kita akan membahas masalah privilege pada bab tentang Mengontrol Akses User.

Sintaks

CREATE TABLE [ schema. ]table
( column datatype [ DEFAULT expr ] [ column_constraint ],
. . .
[ table_constraint ] );

Dimana:

Aturan Penamaan

Pemberian nama pada table atau kolom harus memenuhi aturan-aturan berikut:

Keterangan:

9.2. Tipe Data

Terdapat banyak tipe data yang disediakan oleh sistem basis data Oracle. Tipe-tipe data utama adalah character, number, date, dan RAW.

9.3. Constraint

Constraint berfungsi memaksakan aturan tertentu pada table atau kolom. Kita dapat menggunakan constraint untuk:

9.3.1. Tipe-tipe Constraint

Terdapat berbagai tipe constraint yang dapat kita gunakan dalam definisi table sesuai dengan kebutuhan kita. Table berikut ini menunjukkan tipe-tipe constraint tersebut.

9.3.2. Ketentuan Penamaan Constraint

Seluruh constraint tersimpan pada data dictionary. Penamaan constraint yang baik memudahkan kita jika suatu saat kita akan memodifikasi atau menghapus constraint yang telah kita ciptakan. Jika kita tidak memberi nama pada constraint yang kita ciptakan, maka otomatis Oracle akan memberikan nama dengan format SYS_Cn, dimana n adalah nomor constraint.

Nama constraint sebaiknya memiliki format table_constraint_type. Sebagai contoh apabila kita ingin menciptakan constraint PRIMARY KEY untuk kolom ID dari tabel EMPLOYEE, maka nama constraint sebaiknya EMPLOYEE_ID_PK. Keterangan mengenai simbol yang disarankan untuk setiap jenis constraint dapat dilihat pada tabel berikut.

9.3.3. Menciptakan Constraint

Constraint biasanya diciptakan bersamaan dengan saat table diciptakan. Constraint dapat ditambahkan ke table setelah table sudah ada dan juga dapat dinonaktifkan sementara. Pembahasan mengenai hal ini akan kita jumpai pada bab Memodifikasi Table dan Constraint.

9.3.4. Mendefinisikan Constraint

Constraint dapat didefinisikan pada salah dua level berbeda.

Sintaks – Constraint Level Kolom

column [CONSTRAINT constraint_name] constraint_type

Sintaks – Constraint Level Kolom

column,
[CONSTRAINT constraint_name] constraint_type
(column, …),

Contoh:

Mendefinisikan constraint PRIMARY KEY (level kolom) untuk kolom ID dari table REGION.

CREATE TABLE region
(id NUMBER(7)
CONSTRAINT region_id_pk PRIMARY KEY,
name VARCHAR2(50)
CONSTRAINT_region_name_nn NOT NULL
CONSTRAINT region_name_uk UNIQUE);

Mendefinisikan constraint PRIMARY KEY (level tabel) untuk kolom ID dari table REGION.

CREATE TABLE region
(id NUMBER(7),
name VARCHAR2(50)
CONSTRAINT_region_name_nn NOT NULL
CONSTRAINT region_name_uk UNIQUE,
CONSTRAINT region_id_pk PRIMARY KEY(id));

9.3.5. Constraint NOT NULL

Constraint NOT NULL melarang nilai null untuk suatu kolom. Kolom tanpa constraint NOT NULL secara default dapat mengandung nilai null. Constraint ini hanya dapat didefinisikan pada level kolom.

Contoh:

Menentukan constraint NOT NULL pada kolom PHONE.

CREATE TABLE friend …
phone VARCHAR2(15) NOT NULL

Menentukan constraint NOT NULL pada kolom LAST_NAME. Constraint diberi nama FRIEND_LAST_NAME_NN.

CREATE TABLE friend …
last_name VARCHAR2(15)
CONSTRAINT friend_last_name_nn NOT NULL, …

9.3.6. Constraint UNIQUE

Contoh:

Mendefinisikan constraint UNIQUE untuk kolom NAME dari tabel REGION.

CREATE TABLE region …
name VARCHAR2(50)
CONSTRAINT region_name_uk UNIQUE, …

Jika constraint tersebut didefinisikan pada level table maka perintahnya menjadi sebagai berikut.

CREATE TABLE employee …
name VARCHAR2(50), …
CONSTRAINT region_name_uk UNIQUE(name), …

9.3.7. Constraint PRIMARY KEY

Contoh:

Mendefinisikan constraint PRIMARY KEY untuk kolom ID dari table EMPLOYEE.

CREATE TABLE employee …
id NUMBER(7)
CONSTRAINT employee_id_pk PRIMARY KEY, …

Jika constraint tersebut didefinisikan pada level table maka perintahnya menjadi sebagai berikut.

CREATE TABLE employee …
id NUMBER(7), …
CONSTRAINT employee_id_pk PRIMARY KEY (id), …

9.3.8. Constraint FOREIGN KEY

Constraint FOREIGN KEY menandakan bahwa kolom atau kombinasi kolom sebagai kunci tamu dan membentuk hubungan antara kunci utama atau kunci unik dalam table yang sama atau antara beberapa table.

Kunci tamu harus memiliki nilai sama dengan table induk yang diacunya atau bernilai null.

Constraint FOREIGN KEY dapat didefinisikan pada constraint level kolom atau level table. Kunci tamu yang terdiri dari beberapa kolom diciptakan pada definisi level table.

Kunci tamu yang merupakan bagian dari kunci utama tidak boleh bernilai null karena tidak ada satupun bagian dari kunci utama boleh bernilai null.

Kunci tamu didefinisikan pada table anak, dan mengandung kolom yang diacunya pada table induk. Kunci tamu didefinisikan dengan kombinasi perintah-perintah berikut:

Tanpa opsi ON DELETE CASCADE, baris data pada table induk tidak dapat dihapus jika masih ada data dari table anak yang mengacu kepadanya.

Contoh:

Mendefinisikan constraint FOREIGN KEY untuk kolom DEPT_ID dari table EMPLOYEE yang mengacu kepada kolom ID dari table DEPARTMENT.

CREATE TABLE employee …
dept_id NUMBER(7)
CONSTRAINT employee_dept_id_fk REFERENCES department(id), …

Jika constraint tersebut didefinisikan pada level table maka perintahnya menjadi sebagai berikut.

CREATE TABLE employee …
dept_id NUMBER(7), …
CONSTRAINT employee_dept_id_fk FOREIGN KEY (dept_id)
REFERENCES department(id), …

9.3.9. Constraint CHECK

Constraint CHECK mendefinisikan kondisi yang harus dipenuhi oleh setiap baris data. Kondisi dapat menggunakan bentuk yang sama dengan kondisi-kondisi query dengan perkecualian:

Constraint CHECK dapat didefinisikan pada constraint level kolom atau level table.

Contoh:

Mendefinisikan constraint CHECK untuk kolom COMMISSION_PCT dari table EMPLOYEE.

CREATE TABLE employee …
commission_pct NUMBER(4,2)
CONSTRAINT employee_commission_pct_ck
CHECK (commission_pct IN (10, 12.5, 15, 17.5, 20)), …

Jika constraint tersebut didefinisikan pada level table maka perintahnya menjadi sebagai berikut.

CREATE TABLE employee …
commission_pct NUMBER(4,2), …
CONSTRAINT employee_commission_pct_ck
CHECK (commission_pct IN (10, 12.5, 15, 17.5, 20)), …

9.4. Menciptakan Tabel dari Table Instance Chart

Metode pertama untuk menciptakan table adalah berdasarkan table instance chart (definisi table) yang telah kita buat sebelumnya.

Contoh:

Menciptakan table DEPARTMENT berdasarkan table instance chart.

Column Datatype Length Constraint FK Table FK Column
ID NUMBER 7 PK, NN, UK
NAME VARCHAR2 25 NN, UK1
REGION_ID NUMBER 7 UK1, FK REGION ID

CREATE TABLE department
(id NUMBER(7)
CONSTRAINT department_id_pk PRIMARY KEY,
name VARCHAR2(25)
CONSTRAINT department_name_nn NOT NULL,
region_id NUMBER(7)
CONSTRAINT department_region_id_fk
FOREIGN KEY (region_id) REFERENCES region (id),
CONSTRAINT department_name_region_id_uk
UNIQUE (name, region_id));

Pembahasan

Oracle MagazineOracle Magazine contains technology strategy articles, sample code, tips, Oracle and partner news, how to articles for developers and DBAs, and more. Oracle (NASDAQ: ORCL) is the world’s largest enterprise software company.

For more information about Oracle, please visit their Web site at http://www.oracle.com. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

Get Free Oracle Magazine

9.5. Menciptakan Table dengan Subquery

Metode lain untuk menciptakan table adalah dengan subquery. Hal ini dapat diartikan menciptakan table baru dengan cara mengkopi struktur dan data dari table lain.

Sintaks

CREATE TABLE table
[column(, column …)]
AS subquery

Dimana:

Aturan

Contoh:

Menciptakan table yang berisi data karyawan yang bekerja pada departemen 41.

CREATE TABLE employee41
AS
SELECT id, last_name, userid, start_date
FROM employee
WHERE dept_id = 41;

9.6. Mengkonfirmasi Table

Setelah tabel diciptakan maka informasi table tersebut akan tersimpan dalam data dictionary (kamus data) Oracle, sama seperti objek-objek lainnya. Kita dapat melihatnya menggunakan table USER_OBJECTS atau USER_TABLES.

Contoh:

Menampilkan informasi dari seluruh table telah kita ciptakan.

SELECT table_name
FROM user_tables;

Menampilkan struktur table DEPARTMENT.

DESCRIBE department

9.7. Menghapus Table

Gunakan perintah DROP TABLE untuk menghapus table. Perintah ini hanya dapat dilakukan oleh pemilik table atau user yang memiliki system privilege DROP ANY TABLE.

Sintaks

DROP TABLE table

Silahkan melanjutkan membaca pembahasan Oracle Data Dictionary

Catatan:
Untuk mempraktekkan artikel-artikel mengenai Oracle SQL & PL/SQL Anda dapat mendownload script table disini, lalu jalankan sesuai live demo (browser Anda harus mendukung Flash Player).

 

 

Buku ini membahas berbagai macam tip dan trik yang sangat berguna bagi Anda pembaca pengguna database Oracle. Pemula, mahasiswa, programmer, maupun database administrator yang mengharapkan solusi cepat dalam menangani permasalahan-permasalahan dalam penggunaan database Oracle dapat membaca buku ini. Anda tidak harus membaca buku ini secara urut karena buku ini di susun berdasarkan topik permasalahan, dan Anda dapat membaca topik-topik yang sesuai dengan permasalahan yang Anda hadapi.
Dapat di beli di toko buku Gramedia, Gunung Agung, Uranus, Karisma dsb. Harga Rp. 24.800,- (157 halaman)

 

Related Articles

 

Comments

[…]  Silahkan melanjutkan membaca pembahasan Menciptakan Table […]

Leave a comment

(required)

(required)


*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word