>  기사  >  데이터 베이스  >  오라클 테이블에 컬럼을 추가하는 방법

오라클 테이블에 컬럼을 추가하는 방법

青灯夜游
青灯夜游원래의
2021-12-24 15:35:1236367검색

Oracle에서는 "ALTER TABLE ADD" 문을 사용하여 테이블에 하나 이상의 열을 추가할 수 있으며 구문은 "ALTER TABLE table_name ADD column_name data_type Constraint;"입니다.

오라클 테이블에 컬럼을 추가하는 방법

이 튜토리얼의 운영 환경: Windows 7 시스템, Oracle 11g 버전, Dell G3 컴퓨터.

Oracle에서는 "ALTER TABLE ADD" 문을 사용하여 테이블에 하나 이상의 열을 추가할 수 있습니다. ALTER TABLE ADD”语句来向表中添加一列或多列。

要将新列添加到表中,请按如下所示使用ALTER TABLE语句:

ALTER TABLE table_name 
ADD column_name data_type constraint;

在上面这个语句中,

  • 首先,在ALTER TABLE子句之后指定要添加新列的表的名称。
  • 其次,指定列名,数据类型及其约束。

请注意,不能添加表中已经存在的列; 这样做会导致错误。 另外,ALTER TABLE ADD列语句在表的末尾添加新列。 Oracle没有提供直接的方法来允许您像其他数据库系统(如MySQL)那样指定新列的位置。

如果想要添加多个列,请使用以下语法:

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

在这个语法中,用逗号分隔两列。

Oracle ALTER TABLE ADD列的例子

下面来创建一个名为members的表。参考以下SQL语句 -

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

以下语句将一个名为birth_date的新列添加到members表中:

ALTER TABLE members 
ADD birth_date DATE NOT NULL;

在这个例子中,birth_date列是一个DATE列,它不接受null

假设想记录一行的创建和更新的时间。那么可以再添加两列created_atupdated_at,如下所示:

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

created_atupdated_at列的数据类型是TIMESTAMP WITH TIME ZONE。 这些列也不接受null

要检查表中是否存在列,可以从user_tab_cols视图查询数据。 例如,以下语句将检查members表是否具有first_name列。

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

当想在添加表之前检查列中是否存在列时,此查询就派上用场了。
例如,下面的PL/SQL块在添加之前检查members表是否有effective_date列。

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;
/

如果第一次执行该块,那么effective_date列将被添加到members

테이블에 새 열을 추가하려면 다음과 같이 ALTER TABLE 문을 사용하세요.

The column effective_date already exists

위 문에서

  • 먼저 이름을 지정하세요. ALTER TABLE 절 뒤에 새 열을 추가할 테이블의 이름입니다.
  • 두 번째로 열 이름, 데이터 유형 및 제약 조건을 지정합니다.

테이블에 이미 존재하는 열을 추가할 수 없습니다. 그렇게 하면 오류가 발생합니다. 또한 ALTER TABLE ADD 열 문은 테이블 끝에 새 열을 추가합니다. Oracle은 다른 데이터베이스 시스템(예: MySQL)과 같이 새 열의 위치를 ​​지정할 수 있는 직접적인 방법을 제공하지 않습니다.

🎜여러 열을 추가하려면 다음 구문을 사용하세요. 🎜rrreee🎜이 구문에서는 두 열을 쉼표로 구분하세요. 🎜

🎜Oracle ALTER TABLE ADD 열 예

🎜 members 표면이라는 열을 생성해 보겠습니다. 다음 SQL 문을 참조하세요. 🎜rrreee🎜다음 문은 members 테이블에 birth_date라는 새 열을 추가합니다. 🎜rrreee🎜이 예에서는 birth_date 열은 DATE 열이며 null을 허용하지 않습니다. 🎜🎜행의 생성 및 업데이트 시간을 기록하고 싶다고 가정해 보겠습니다. 그런 다음 아래와 같이 두 개의 created_atupdated_at 열을 더 추가할 수 있습니다. 🎜rrreee🎜created_atupdated_at 열 데이터 유형은 TIMESTAMP WITH TIME ZONE입니다. 이 열에는 null도 허용되지 않습니다. 🎜🎜테이블에 열이 있는지 확인하려면 user_tab_cols 뷰에서 데이터를 쿼리하면 됩니다. 예를 들어, 다음 문은 members 테이블에 first_name 열이 있는지 확인합니다. 🎜rrreee🎜이 쿼리는 테이블에 추가하기 전에 열에 열이 있는지 확인하려는 경우 유용합니다. 🎜예를 들어 다음 PL/SQL 블록은 members 테이블을 추가하기 전에 validate_date 열이 있는지 확인합니다. 🎜rrreee🎜이 블록이 처음 실행되면 members 테이블 끝에 valid_date 열이 추가됩니다. 그러나 두 번째부터 실행하면 다음과 같은 메시지가 표시됩니다. 🎜rrreee🎜 이는 위에서 작성한 프로그램에서 예상한 대로입니다. 🎜🎜🎜추천 튜토리얼: "🎜Oracle Tutorial🎜"🎜

위 내용은 오라클 테이블에 컬럼을 추가하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.