Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk menambah lajur pada jadual oracle

Bagaimana untuk menambah lajur pada jadual oracle

青灯夜游
青灯夜游asal
2021-12-24 15:35:1236377semak imbas

Dalam Oracle, anda boleh menggunakan pernyataan "ALTER TABLE ADD" untuk menambah satu atau lebih lajur pada jadual, sintaksnya ialah "ALTER TABLE table_name ADD column_name data_type constraint;".

Bagaimana untuk menambah lajur pada jadual oracle

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi Oracle 11g, komputer Dell G3.

Dalam Oracle, anda boleh menggunakan pernyataan "ALTER TABLE ADD" untuk menambah satu atau lebih lajur pada jadual.

Untuk menambah lajur baharu pada jadual, gunakan pernyataan ALTER TABLE seperti berikut:

ALTER TABLE table_name 
ADD column_name data_type constraint;

Dalam pernyataan di atas,

  • Mula-mula, selepas klausa ALTER TABLE, nyatakan nama jadual yang anda ingin tambahkan lajur baharu.
  • Kedua, nyatakan nama lajur, jenis data dan kekangannya.

Sila ambil perhatian bahawa anda tidak boleh menambah lajur yang sudah wujud dalam jadual apabila berbuat demikian akan mengakibatkan ralat. Selain itu, pernyataan lajur ALTER TABLE ADD menambah lajur baharu di hujung jadual. Oracle tidak menyediakan cara langsung untuk membolehkan anda menentukan lokasi lajur baharu seperti sistem pangkalan data lain (seperti MySQL).

Jika anda ingin menambah berbilang lajur, gunakan sintaks berikut:

ALTER TABLE table_name 
ADD (
    column_name_1 data_type constraint,
    column_name_2 data_type constraint,
    ...
);

Dalam sintaks ini, pisahkan dua lajur dengan koma.

Contoh lajur Oracle ALTER TABLE ADD

Mari kita buat jadual bernama members. Rujuk kepada pernyataan SQL berikut -

-- 12c语法
CREATE TABLE members(
    member_id NUMBER GENERATED BY DEFAULT AS IDENTITY,
    first_name VARCHAR2(50),
    last_name VARCHAR2(50),
    PRIMARY KEY(member_id)
);

Pernyataan berikut menambah lajur baharu bernama birth_date pada jadual members:

ALTER TABLE members 
ADD birth_date DATE NOT NULL;

Dalam contoh ini, birth_date Lajur ialah lajur DATE, ia tidak menerima null.

Andaikan anda ingin merakam masa penciptaan dan kemas kini baris. Kemudian anda boleh menambah dua lagi lajur created_at dan updated_at, seperti berikut: Jenis data lajur

ALTER TABLE
    members ADD(
        created_at TIMESTAMP WITH TIME ZONE NOT NULL,
        updated_at TIMESTAMP WITH TIME ZONE NOT NULL
    );

created_at dan updated_at ialah TIMESTAMP WITH TIME ZONE. Lajur ini juga tidak menerima null.

Untuk menyemak sama ada lajur wujud dalam jadual, anda boleh menanyakan data daripada paparan user_tab_cols. Sebagai contoh, pernyataan berikut akan menyemak sama ada jadual members mempunyai lajur first_name.

SELECT
    COUNT(*)
FROM
    user_tab_cols
WHERE
    column_name = 'FIRST_NAME'
    AND table_name = 'MEMBERS';

Pertanyaan ini berguna apabila anda ingin menyemak sama ada lajur wujud dalam lajur sebelum menambahkannya pada jadual.
Sebagai contoh, blok PL/SQL berikut menyemak sama ada jadual members mempunyai lajur effective_date sebelum menambahkannya.

SET SERVEROUTPUT ON SIZE 1000000
DECLARE
  v_col_exists NUMBER 
BEGIN
  SELECT count(*) INTO v_col_exists
    FROM user_tab_cols
    WHERE column_name = 'EFFECTIVE_DATE'
      AND table_name = 'MEMBERS';

   IF (v_col_exists = 0) THEN
      EXECUTE IMMEDIATE 'ALTER TABLE members ADD effective_date DATE';
   ELSE
    DBMS_OUTPUT.PUT_LINE('The column effective_date already exists');
  END IF;
END;
/

Jika blok ini dilaksanakan buat kali pertama, maka lajur effective_date akan ditambahkan pada penghujung jadual members. Walau bagaimanapun, sebaik sahaja anda melaksanakannya dari kali kedua, anda akan melihat mesej berikut:

The column effective_date already exists

Ini adalah seperti yang dijangkakan daripada program yang ditulis di atas.

Tutorial yang disyorkan: "Tutorial Oracle"

Atas ialah kandungan terperinci Bagaimana untuk menambah lajur pada jadual oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn