Chillax in dev

Oracle 공부 기초 03 : DDL 테이블의 alter 수정, drop 삭제 본문

DataBase 공부/Oracle

Oracle 공부 기초 03 : DDL 테이블의 alter 수정, drop 삭제

Seong Story 2020. 7. 12. 18:35
728x90

 Oracle 공부 기초 03 : DDL 테이블의 alter 수정,  drop 삭제

- 저번에 배운 SQL 중 DDL의 수정, 삭제 기능을 통해 table생성 시 빈번하게 발생하는 오류나 실수들을 당황하지 않고 고쳐나갈 수 있는 힘을 기르자.

 

- 테이블 수정(ALTER)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
-- 테이블의 수정 형식
ALTER TABLE 이름 rename column 변경전 이름 to 변경후 이름
 
--1. 필드명의 변경
---ALTER TABLE 이름 rename column 변경전 이름 to 변경후 이름
 
alter table booklist rename column title to subject; --booklist를 title로 바꾸겠다.
select * from Booklist;
select * from tabs;
 
 
--2. 필드 자료형의 변경
--varchar(12) 였던 person 테이블의 personname 필드를 varchar2(30)으로 변경
alter table person modify personname varchar2(30);
select * from person;
 
--3. 필드의 추가
--ALTER TABLE 테이블명 ADD 필드명 자료형
--booklist에 구매등급을 저장할 수있는 grade vlfemfmf varchar2(15)로 추가
alter table booklist add grade varchar2(15);
 
--person테이블에 성별(gender)필드 추가 varchar2(3)
alter table person add gender varchar2(3);
 
--person 테이블에 나이(age) 필드 추가 number(2)
alter table person add age number(2);
 
select * from person;
 
--4. 필드의 삭제 alter + drop
--ALTER TABLE 테이블명 DROP COLUMN 필드명
--PERSON 테이블에서 성별 필드 제거
 
ALTER TABLE person DROP column gender;
select * from person;
 
--5.제약 조건의 추가/제거
--alter table 테이블명 add constraint 제약조건명 제약조건식
 
--person 테이블명에서 성별 필드에 'F','M'만 입력되도록 제약 조건 추가
alter table person add constraint check_gender check(gender in('F','M'));
--마치 if문 처럼말이다.
alter table person add constraint check_age check(age<=120);
--나이 제한같이 특정 값을 못넣게함.
 
--in_out테이블에서 dvdlist 테이블의 dvdnum을 참조하는 외래키 제거
alter table in_out drop constraint fk1;
--in_out 기본키 제거
alter table in_out drop constraint in_out_pk;
--in_out에서 기본키 다시 추가
alter table in_out add constraint in_out_pk primary key (out_date,indexk);
--in_out테이블에 booklist 테이블의 booknum 을 참조하는 외래키 다시 추가
alter table in_out add constraint fk1 foreign key (booknum)
references booklist(booknum);
 
--boolist의 grade필드에 '전체' '청소년구매가능','성인전용'으로 입력을 제한
alter table booklist add constraint check_grade
check(grade in('전체','청소년구매가능','성인전용'));
select *from booklist;
 
 
 
 
--예제 1 테이블 생성
--테이블명 ORDERS
--필드: ORDER_ID NUMBER(12,0), ORDER_DATE DATE, ORDER_MORE VARCHAR2(8),CUSTOMER_ID NUMBER(6,0),
--        ORDER_STATUS NUMBER(2,0) , ORDE_TOTAL NUMBER(8,2)  SALES_REP_ID NUMBER(6,0) PROMOTION_ID NUMBER(6,0),
--제약사항: 기본키는 ORDER_ID
--            ORDER_MODE에는 'direct' ,'online'만 입력가능
--            order_total의 디폴트값은 0
            
                
create table orders(
            ORDER_ID NUMBER(12,0not null,
            ORDER_DATE DATE, 
            ORDER_MORE VARCHAR2(8NOT NULL,
            CUSTOMER_ID NUMBER(6,0NOT NULL,
            ORDER_STATUS NUMBER(2,0NOT NULL,
            ORDE_TOTAL NUMBER(8,2default 0,
            SALES_REP_ID NUMBER(6,0NOT NULL,
            PROMOTION_ID NUMBER(6,0NOT NULL,
            
            CONSTRAINT pk_order PRIMARY KEY(ORDER_ID),
            CONSTRAINT ck_order_mode check(ORDER_MORE in('direct','online'))
--alter table orders add constraint check_order check(ORDER_MORE in('direct','online'));
);
 
--예제 2 테이블 수정
--customer_id 필드명을 customer_number로 수정
--promotion_id 값은 10000~99999사이의 값만 저장가능
 
alter table orders rename column customer_id to customer_number;
alter table orders add constraint pro_check check(PROMOTION_ID between 10000 and 99999);
 
--테이블의 복사
create table orders_2 as select *from orders;
-- AS SELECT 구분은 다음에합니다.
 
--테이블의 제거
DROP TABLE ORDERS_2 PURGE;--PURGE는 생략 가능 
--PERGE 가 없이 삭제된 테이블은 나중에 휴지통과 같이 복구 가능 
--PURGE를 사용하면 완전 삭제 !! 
cs

 

정리

- 생성한 테이블,필드등등...을 수정하거나 삭제하고 원하는 방향으로 정정하는 방법을 배웠다. 

- 1. 필드명의 변경 : ALTER TABLE 이름 rename column 변경 전 이름 to 변경 후 이름 ;

- 2. 필드 자료형의 변경 : alter table person modify personname varchar2(30);

- 3. 필드의 추가 : ALTER TABLE 테이블명 ADD 필드명 자료형;

- 4. 필드의 삭제 : ALTER TABLE person DROP column gender;

- 5. 제약 조건의 추가/제거 : alter table 테이블명 add constraint 제약조건명 제약조건식

 

728x90
LIST
Comments