Mengelola Tabel di Oracle

Banyak atribut dan properti dari tabel dapat diubah. Kita fokus pada jenis perubahan ini:

  • Tabel Perubahan. Nama tabel dapat diubah dan tabel dapat dipindahkan. Memindahkan tabel database tugas administrasi karena biasanya digunakan untuk memindahkan tabel antara tablespace yang berbeda.
  • Menambah atau Mengganti Kolom. Sebuah kolom datatype, panjang, atau nama dapat diubah. Anda dapat mengubah kolom dari nullable untuk tidak nullable juga.
  • Menghapus Kolom. Menghapus sebuah kolom dari tabel dapat menghapus keduanya atau salah satu dari kolom atau baris data dari yang ada.
  • Membangun kembali Tables. Paket oraclet yang disertakan dalam Database Oracle 9i memungkinkan perubahan yang sebelumnya memerlukan banyak usaha. Perubahan seperti penataan kembali kolom-kolom dalam tabel, menambahkan kolom antara kolom yang ada, dan mengubah primary key dari tabel dapat dilakukan dengan paket ini.

Statement ALTER TABLE digunakan untuk :

· Menambahkan kolom baru

· Memodifikasi kolom yang sudah ada

· Mendefinisikan nilai default untuk kolom baru

· Menghapus kolom

a.         Menambahkan Kolom

Ketika menambahkan kolom baru, Anda tidak dapat menentukan constrain NOT NULL jika tabel telah memiliki baris. Untuk menambahkan kolom NOT NULL, Anda perlu mengikuti tiga langkah:

  1. Memodifikasi tabel untuk menambahkan kolom.
  2. Update kolom dengan nilai-nilai untuk semua baris yang ada.
  3. Tambahkan NOT NULL kendala.

Anda dapat menambahkan NOT NULL default kendala dengan klausa, bahkan jika tabel memiliki baris. Berikut ini sebuah contoh:

ADD updated_by VARCHAR2 (30) NOT NULL;

ALTER TABLE orders

ADD updated_by VARCHAR2 (30) NOT NULL

*

ERROR at line 1:

ORA-01758: table must be empty to add mandatory

(NOT NULL) column

ALTER TABLE orders ADD updated_by VARCHAR2 (30)

DEFAULT ‘JOHN’ NOT NULL;

ALTER TABLE orders

Berikut adalah sintaks untuk menambahkan kolom baru ke tabel yang ada:

ALTER TABLE [<schema>.]<table_name> ADD <column_definitions>;

Ketika kolom baru yang ditambahkan, selalu di bagian bawah tabel. Untuk yang ada baris, kolom baru akan bernilai NULL. Mari kita menambahkan kolom baru, ORDER_DATE, ke tabel ORDERS.

ALTER TABLE orders ADD order_date DATE;

Jika Anda menambahkan lebih dari satu kolom, kolom harus definisi
terlampir dalam tanda kurung dan dipisahkan dengan koma. Jika Anda menentukan sebuah nilai default untuk kolom baru ditambahkan, semua baris dalam tabel akan memiliki nilai default yang diberikan secara otomatis. Contoh berikut menambahkan dua lebih kolom ke tabel ORDERS.

ALTER TABLE orders ADD (quantity NUMBER (13,3), update_dt DATE DEFAULT SYSDATE);


b.        Mengubah Kolom

Sintaks untuk mengubah kolom yang sudah ada dalam tabel adalah sebagai berikut:

ALTER TABLE [<schema>.]<table_name>

MODIFY <column_name> <new_attributes>;

Jika Anda menghilangkan salah satu bagian dari definisi kolom (datatype, nilai default, atau kolom constraint), bagian-bagian yang dihilangkan tetap tidak  berubah. Jika Anda mengubah lebih dari satu kolom pada satu waktu, melampirkan definisi kolom dalam tanda kurung. Misalnya, untuk memodifikasi meja ORDERS, meningkatkan STATUS kolom ke 15 dan mengurangi kolom QUANTITY untuk 10,3, lakukan ini:

status VARCHAR2 (15));

ALTER TABLE orders MODIFY (quantity NUMBER (10,3),

Anda dapat menambahkan atau menghapus constrain dalam kolom dan memodifikasi nilai DEFAULT untuk kolom. Nilai DEFAULT termasuk menggunakan klausa MODIFY hanya mempengaruhi baris baru disisipkan ke tabel; yang ada baris dengan nilai kolom NULL tidak terpengaruh. Untuk menghapus nilai default untuk kolom, mendefinisi ulang klausa DEFAULT dengan nilai NULL. Sebagai contoh, pernyataan berikut menghapus SYSDATE default nilai dari kolom UPDATE_DT tabel ORDERS.

ALTER TABLE orders

MODIFY update_dt DEFAULT NULL;

Ini adalah aturan untuk mengubah definisi kolom:

  • Anda dapat meningkatkan panjang kolom karakter dan ketepatan dari kolom numerik. Jika meja Anda memiliki banyak baris, semakin panjang suatu kolom CHAR akan memerlukan banyak sumber daya.
  • Anda dapat menurunkan VARCHAR2 panjang kolom dan mengurangi ketepatan atau meningkatkan skala kolom numerik, jika semua data pada kolom sesuai dengan panjang yang baru.
  • Anda dapat menurunkan panjang kolom CHAR nonempty, jika parameter BLANK_TRIMMING disetel ke TRUE.
  • Kolom harus nilai NULL untuk mengubah datatype. Jika Anda tidak mengurangi panjang, Anda dapat mengubah datatype dari char ke VARCHAR2 atau sebaliknya, bahkan jika kolom tidak kosong.

c.         Menghapus Kolom

Anda dapat menghapus kolom yang tidak digunakan, atau Anda dapat menandai kolom yang tidak digunakan dan menghapusnya nanti. Berikut adalah sintaks untuk menghapus kolom:

ALTER TABLE [<schema>.]<table_name>

DROP {COLUMN <column_name> | (<column_names>)}

[CASCADE CONSTRAINTS]

Mengapus DROP COLUMN nama kolom tertentu dari tabel. Anda dapat memberikan lebih dari satu nama kolom yang dipisahkan oleh koma di dalam tanda kurung. Ini akan mengakibatkan indeks dan contarin pada kolom juga terhapus. Anda harus menentukan CASCADE CONSTRAINTS jika menghapus kolom bagian dari multicolumn constrain; constrain akan dihapus. Sintaks untuk menandai kolom seperti yang digunakan adalah sebagai berikut:

ALTER TABLE [<schema>.]<table_name> SET UNUSED {COLUMN <column_name> | (<column_names>)}

[CASCADE CONSTRAINTS]

Setelah kolom ditandai sebagai tidak digunakan, Anda tidak akan melihatnya sebagai bagian dari definisi tabel. Mari kita tandai UPDATE_DT PERINTAH kolom dalam tabel sebagai tidak terpakai:

ALTER TABLE orders SET UNUSED COLUMN update_dt;

DESCRIBE orders

Name                                     Null?              Type

——————- ——– ————————————–

ORDER_NUMBER            NOT NULL    NUMBER(8)

STATUS                                            VARCHAR2(15)

ORDER_DATE                                DATE

QUANTITY                                       NUMBER(10,3)

Berikut adalah sintaks untuk menjatuhkan kolom sudah ditandai sebagai tidak terpakai:

ALTER TABLE [<schema>.]<table_name>

DROP {UNUSED COLUMNS | COLUMNS CONTINUE}

Gunakan klausa COLUMNS CONTINUE untuk melanjutkan operasi DROP yang sebelumnya terganggu. Klausul DROP UNUSED COLUMNS yang tidak terpakai akan menghapus semua kolom yang ditandai sebagai tidak terpakai. Anda tidak dapat selektif menghapus nama kolom setelah menandai mereka sebagai tidak terpakai. Contoh berikut membersihkan UPDATE_DT data dari kolom dalam tabel ORDERS:

ALTER TABLE orders DROP UNUSED COLUMNS;

d.        Rename Tabel

Pernyataan RENAME digunakan untuk mengganti nama tabel dan objek database lain, seperti views, private synonyms, atau sequences. Sintaks untuk pernyataan RENAME adalah sebagai berikut:

RENAME old_name TO new_name;

Di sini, new_name dan old_name adalah nama tabel, view, private synonym, atau sequence. Bila Anda mengubah nama tabel, Oracle transfer secara otomatis  batasan integritas, indeks, dan grants di atas tabel sebelumnya ke tabel baru. Oracle membatalkan semua obkect yang bergantung pada tabel yang berganti nama, seperti views, synonyms, stored procedures, dan functions. Contoh berikut ORDERS  mengganti nama tabel untuk PURCHASE_ORDERS:

RENAME orders TO purchase_orders;

DESCRIBE purchase_orders

Name                                     Null?                          Type

—————— ——– ————————————————

ORDER_NUMBER            NOT NULL                NUMBER(8)

STATUS                                                                    VARCHAR2(15)

ORDER_DATE                                                        DATE

QUANTITY                                                               NUMBER(10,3)

Anda juga dapat menggunakan klausul RENAME TO dari pernyataan ALTER  TABLE untuk mengubah nama sebuah tabel. Dengan menggunakan teknik ini, Anda dapat memenuhi syarat nama tabel dengan skema. Anda harus menggunakan pernyataan ALTER TABLE untuk mengganti nama tabel yang  dimiliki oleh user lain (dan Anda memerlukan hak istimewa ALTER atas tabel atau hak istimewa sistem ALTER ANY TABLE). Berikut ini sebuah contoh:

ALTER TABLE scott.purchase_orders RENAME TO orders;

e.         Menghapus Tabel

Menghapus  tabel sederhana. Sintaks adalah sebagai berikut :

DROP TABLE [schema.]table_name [CASCADE CONSTRAINTS]

Bila Anda menghapus tabel, data dan definisi dari tabel tersebut dihapus. Indeks, constraints, triggers, dan privileges atas tabel juga terhapus. Setelah Anda menghapus tabel, tindakan tidak dapat dibatalkan. Oracle tidak menghapus views, materialized views, atau program yang disimpan referensi tabel, tapi itu menandai mereka sebagai tidak valid. Anda harus menentukan klausul CASCADE CONSTRAINTS jika ada kendala integritas referensial mengacu pada kunci primer atau kunci unik tabel ini. Berikut adalah cara untuk drop tabel TEST yang dimiliki oleh user SCOTT:

DROP TABLE scott.test;

Sebuah metode untuk mengosongkan tabel semua baris adalah dengan menggunakan pernyataan TRUNCATE. Hal ini berbeda dari menghapus dan kembali membuat tabel, karena membatalkan TRUNCATE tidak tergantung objek atau menghapus indexes, trigger, atau integritas referensial kendala.

Tinggalkan Balasan

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Ubah )

Twitter picture

You are commenting using your Twitter account. Log Out / Ubah )

Facebook photo

You are commenting using your Facebook account. Log Out / Ubah )

Connecting to %s

Ikuti

Get every new post delivered to your Inbox.