Oracle에서는 "ALTER TABLE" 문을 사용하여 테이블 구조를 수정할 수 있습니다. 이 문은 열 추가 또는 삭제, 원래 열 유형 변경, 열 또는 테이블 이름 바꾸기 등을 통해 원본 테이블의 구조를 변경할 수 있습니다. 구문 "ALTER TABLE 테이블 이름 [옵션 수정]". ALTER TABLE 테이블 이름 [옵션 수정]
이 튜토리얼의 운영 환경: Windows 7 시스템, Oracle 버전 11g, Dell G3 컴퓨터.
Oracle에서는 "ALTER TABLE
" 문을 사용하여 테이블 구조를 수정할 수 있습니다. ALTER TABLE
”语句来修改表结构。
ALTER TABLE
语句可以改变原有表的结构,例如增加或删减列、更改原有列类型、重新命名列或表等。
ALTER TABLE 语句的语法:
ALTER TABLE 表名 [修改选项]
在上面的语句中,
首先,指定要修改的表名称。
其次,指出想在表名称后执行的修改操作。
ALTER TABLE
语句可用来:
下面来看看一些例子来了解每个操作的工作原理。
我们将使用在上一个教程中创建的persons
表进行演示。
-- 12c语法 CREATE TABLE persons( person_id NUMBER GENERATED BY DEFAULT AS IDENTITY, first_name VARCHAR2(50) NOT NULL, last_name VARCHAR2(50) NOT NULL, PRIMARY KEY(person_id) );
要将新列添加到表中,请使用以下语法:
ALTER TABLE table_name ADD column_name type constraint;
例如,以下语句将一个名为birthdate
的新列添加到persons
表中:
ALTER TABLE persons ADD birthdate DATE NOT NULL;
如果查看persons
表格,会看到birthdate
日期列被添加到列列表的末尾:
DESC persons; Name Null Type ---------- -------- ------------ PERSON_ID NOT NULL NUMBER FIRST_NAME NOT NULL VARCHAR2(50) LAST_NAME NOT NULL VARCHAR2(50) BIRTHDATE NOT NULL DATE
要同时向表中添加多列,请按如下所示将新列置于括号内:
ALTER TABLE table_name ADD ( column_name type constraint, column_name type constraint, ... );
看下面的例子:
ALTER TABLE persons ADD ( phone VARCHAR(20), email VARCHAR(100) );
在这个例子中,语句在users
表中添加了两个名为phone
和email
的新列。
DESC persons Name Null Type ---------- -------- ------------- PERSON_ID NOT NULL NUMBER FIRST_NAME NOT NULL VARCHAR2(50) LAST_NAME NOT NULL VARCHAR2(50) BIRTHDATE NOT NULL DATE PHONE VARCHAR2(20) EMAIL VARCHAR2(100)
要修改列的属性,请使用以下语法:
ALTER TABLE table_name MODIFY column_name type constraint;
例如,下面的语句将birthdate
列更改为一个空列:
ALTER TABLE persons MODIFY birthdate DATE NULL;
我们再次验证persons
表结构:
DESC persons Name Null Type ---------- -------- ------------- PERSON_ID NOT NULL NUMBER FIRST_NAME NOT NULL VARCHAR2(50) LAST_NAME NOT NULL VARCHAR2(50) BIRTHDATE DATE PHONE VARCHAR2(20) EMAIL VARCHAR2(100)
正如所看到的,birthdate
日期变得无能为力。
要修改多个列,请使用以下语法:
ALTER TABLE table_name MODIFY ( column_1 type constraint, column_1 type constraint, ...);
例如,以下语句将phone
和email
列更改为NOT NULL
列,并将email
列的长度扩展为255
个字符:
ALTER TABLE persons MODIFY( phone VARCHAR2(20) NOT NULL, email VARCHAR2(255) NOT NULL );
再次验证persons
表结构:
DESC persons; Name Null Type ---------- -------- ------------- PERSON_ID NOT NULL NUMBER FIRST_NAME NOT NULL VARCHAR2(50) LAST_NAME NOT NULL VARCHAR2(50) BIRTHDATE DATE PHONE NOT NULL VARCHAR2(20) EMAIL NOT NULL VARCHAR2(255)
要从表中删除现有的列,请使用以下语法:
ALTER TABLE table_name DROP COLUMN column_name;
该语句从表结构中删除列,并删除存储在该列中的数据。以下示例从persons
表中删除birthdate
日期类型的列:
ALTER TABLE persons DROP COLUMN birthdate;
再次查看persons
表结构,就会发现birthdate
列已被删除:
DESC persons; Name Null Type ---------- -------- ------------- PERSON_ID NOT NULL NUMBER FIRST_NAME NOT NULL VARCHAR2(50) LAST_NAME NOT NULL VARCHAR2(50) PHONE NOT NULL VARCHAR2(20) EMAIL NOT NULL VARCHAR2(255)
要同时删除多个列,请使用以下语法:
ALTER TABLE table_name DROP (column_1,column_2,...);
例如,以下语句从个人表中删除phone
和email
列:
ALTER TABLE persons DROP ( email, phone );
我们再来看一下persons
表:
DESC persons; Name Null Type ---------- -------- ------------ PERSON_ID NOT NULL NUMBER FIRST_NAME NOT NULL VARCHAR2(50) LAST_NAME NOT NULL VARCHAR2(50)
email
和phone
列已按预期删除。
从版本9i开始,Oracle添加了一个用于重命名列的子句,如下所示:
ALTER TABLE table_name RENAME COLUMN column_name TO new_name;
例如,以下语句将first_name
列重命名为forename
列:
ALTER TABLE persons RENAME COLUMN first_name TO forename;
以下语句检查结果:
DESC persons; Name Null Type --------- -------- ------------ PERSON_ID NOT NULL NUMBER FORENAME NOT NULL VARCHAR2(50) LAST_NAME NOT NULL VARCHAR2(50)
要将一个表重命名为一个新的name
的表名,使用下面的语法:
ALTER TABLE table_name RENAME TO new_table_name;
例如,下面的语句将users
表重命名为people
ALTER TABLE
문은 열 추가 또는 삭제, 원래 열 유형 변경, 열 또는 테이블 이름 바꾸기 등 원본 테이블의 구조를 변경할 수 있습니다. ALTER TABLE persons RENAME TO people;위 문에서 🎜
ALTER TABLE
문을 사용하여 다음을 수행할 수 있습니다. 🎜persons
테이블을 사용한 데모입니다. 🎜rrreeepersons
테이블에 birthdate
라는 새 열을 추가합니다. 🎜rrreee🎜persons
를 보는 경우 > 테이블을 사용하면 열 목록 끝에 생년월일
날짜 열이 추가된 것을 볼 수 있습니다. 🎜rrreee🎜 테이블에 동시에 여러 열을 추가하려면 다음과 같이 새 열을 대괄호로 묶습니다. : 🎜rrreee🎜 아래 예를 살펴보세요. 🎜rrreee🎜 이 예에서 명령문은 users
에 phone
및 email
이라는 두 개의 새 항목을 추가합니다. > 테이블 목록. 🎜rrreeebirthdate
열을 빈 열로 변경합니다. 🎜rrreee🎜다시 확인합니다. persons
테이블 구조: 🎜rrreee🎜보시다시피 생년월일
날짜는 무력해집니다. 🎜🎜여러 열을 수정하려면 다음 구문을 사용하세요. 🎜rrreee🎜예를 들어 다음 문은 phone
및 email
열을 NOT NULL
로 변경합니다. > 열을 추가하고 email
열의 길이를 255
자로 확장합니다. 🎜rrreee🎜 persons
테이블 구조를 다시 확인합니다. 🎜rrreeepersons
테이블에서 birthdate
날짜 유형 열을 삭제합니다. 🎜rrreee🎜persons
테이블 구조를 다시 보면 생일열이 삭제되었습니다: 🎜rrreee🎜여러 열을 동시에 삭제하려면 다음 구문을 사용하십시오. 🎜rrreee🎜예를 들어 다음 문은 phone
및 email열: 🎜rrreee🎜 <code>persons
테이블을 다시 살펴보겠습니다: 🎜rrreee🎜 email
및 phone code> 열이 예상대로 삭제되었습니다. 🎜<h4 id="h4-4-oracle-alter-table-rename-">4. 열 이름 바꾸기의 예</h4>🎜 버전 9i부터 Oracle은 아래와 같이 열 이름 바꾸기에 대한 절을 추가했습니다. 🎜rrreee🎜예를 들어 다음 문은 <code>first_name
열의 이름을 forename
열로 바꿉니다. 🎜rrreee🎜다음 문은 결과를 확인합니다. 🎜rrreeename
테이블 이름으로 바꾸려면 다음을 사용합니다. 다음 구문: 🎜rrreee🎜예를 들어, 다음 문은 users
테이블의 이름을 people
테이블로 바꿉니다. 🎜rrreee🎜권장 튜토리얼: "🎜Oracle Tutorial🎜" 🎜위 내용은 오라클에서 테이블 구조를 수정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!