----- ***** 어떤 테이블에 새로운 컬럼 추가하기 ***** -----
alter table 테이블명 add 추가할 컬럼명 데이터타입;
desc TBL_JIKWON;
alter table TBL_JIKWON add salary number(5);
-- Table TBL_JIKWON이(가) 변경되었습니다.
select *
from TBL_JIKWON;
----- ***** 어떤 테이블에 컬럼 삭제하기 ***** -----
alter table 테이블명 drop column 삭제할컬럼명;
alter table TBL_JIKWON drop column salary;
desc TBL_JIKWON;
----- ***** 어떤 테이블에 새로운 컬럼 추가하고 NOT NULL 을 주기 ***** -----
-- 1. 해당 테이블에 데이터가 전혀 없는 경우
alter table TBL_JIKWON add salary number(5) NOT NULL;
desc TBL_JIKWON;
-- 2. 해당 테이블에 데이터가 존재하는 경우
insert into tbl_buseo values(10, '관리부');
-- 1 행 이(가) 삽입되었습니다.
insert into TBL_JIKWON values(1001, '이순신', 'leess@gmail.com','사장',10, 9000);
-- 1 행 이(가) 삽입되었습니다.
commit;
select *
from tbl_jikwon;
-- salary 컬럼 삭제
alter table tbl_jikwon drop column salary;
-- Table TBL_JIKWON이(가) 변경되었습니다.
select *
from tbl_jikwon;
alter table TBL_JIKWON add salary number(5) NOT NULL;
-- ORA-01758: 테이블은 필수 열을 추가하기 위해 (NOT NULL) 비어 있어야 합니다.
-- TBL_JIKWON 테이블에 행이 1개도 없어야 한다는 말이다.
alter table 테이블명 add 추가할 컬럼명 데이터타입 DEFAULT 기본값 not null;
alter table TBL_JIKWON add salary number(5) default 0 NOT NULL;
-- Table TBL_JIKWON이(가) 변경되었습니다.
update tbl_jikwon set salary = 9000
where jikwon_no = 1001;
-- 1 행 이(가) 업데이트되었습니다.
commit;
select *
from tbl_jikwon;
---- ===== ***** 어떤 테이블에 존재하는 컬럼의 데이터타입 변경하기 ***** ===== -----
-- 1. 해당 컬럼에 데이터가 모두 NULL 인 경우
alter table 테이블명 modify 컬럼명 새로운타입명;
alter table tbl_jikwon modify hire_date date;
desc tbl_jikwon;
-- HIRE_DATE DATE
select * from tbl_jikwon;
-- 2. 해당 컬럼에 데이터가 NULL 이 아닌 값이 들어가 있는 경우
-- 데이터타입의 크기의 변경은 이미 들어가있는 데이터값보다 작게는 불가하지만 크게는 가능하다.
alter table tbl_jikwon modify salary varchar2(10);
-- ORA-01439: 데이터 유형을 변경할 열은 비어 있어야 합니다
-- 해당 컬럼에 데이터가 모두 null 일 때만 새로운 타입으로 변경할 수 있다.
desc tbl_jikwon;
-- SALARY NOT NULL NUMBER(5)
select * from tbl_jikwon;
-- salary 9000 number(4)
alter table tbl_jikwon modify salary NUMBER(3);
-- ORA-01440: 정도 또는 자리수를 축소할 열은 비어 있어야 합니다
alter table tbl_jikwon modify salary NUMBER(8);
-- Table TBL_JIKWON이(가) 변경되었습니다.
desc tbl_jikwon;
-- SALARY NOT NULL NUMBER(8)
----- ***** 어떤 테이블에 존재하는 컬럼의 이름 변경하기 ***** -----
alter table 테이블명 rename column 현재컬럼명 to 새로운컬럼명;
alter table TBL_JIKWON rename column SALARY to SAL;
-- Table TBL_JIKWON이(가) 변경되었습니다.
desc tbl_jikwon;
-- SAL NOT NULL NUMBER(8)
----- ***** 테이블의 테이블명 변경하기 ***** -----
rename 현재테이블명 to 새로운테이블명;
rename tbl_jikwon to jikwon;
-- 테이블 이름이 변경되었습니다.
select * from tbl_jikwon;
-- ORA-00942: 테이블 또는 뷰가 존재하지 않습니다
select * from jikwon;
rename jikwon to tbl_jikwon;
-- 테이블 이름이 변경되었습니다.
----- ===== ***** 테이블의 어떤 컬럼에 DEFAULT 값 조회하기 및 DEFAULT 값 변경하기 ***** ===== -----
-- tbl_jikwon 테이블의 컬럼에 존재하는 DEFAULT 값 조회하기
select column_name, data_type, data_default
from user_tab_columns
where table_name = 'TBL_JIKWON';
alter table TBL_JIKWON modify hire_date default sysdate;
-- Table TBL_JIKWON이(가) 변경되었습니다.
-- HIRE_DATE DATE sysdate
alter table TBL_JIKWON modify sal default 500;
-- SAL NUMBER 500
----- ***** 테이블의 어떤 컬럼에 주어진 default를 삭제하려면 default 값으로 null 을 주면 된다.
alter table TBL_JIKWON modify hire_date default null;
-- Table TBL_JIKWON이(가) 변경되었습니다.
-- HIRE_DATE DATE null
---- !!!![중요] 테이블을 생성한 이후에 웬만하면 테이블명에 대한 주석문을 달아주도록 합시다.!!!! ----
--- *** 테이블명에 달려진 주석문 생성, 조회하기 *** --
select *
from user_tab_comments;
comment on table TBL_JIKWON
is '우리회사 사원들의 정보가 들어있는 테이블';
-- Comment이(가) 생성되었습니다.
---- !!!! 테이블을 생성한 이후에 웬만하면 컬럼명에 대한 주석문을 달아주도록 합시다.!!!! ----
select *
from user_col_comments
where table_name = 'EMPLOYEES';
select *
from user_col_comments
where table_name = 'TBL_JIKWON';
comment on column TBL_JIKWON.JIKWON_NO is '사원번호 Primary Key'; -- Comment이(가) 생성되었습니다.
comment on column TBL_JIKWON.JIKNAME is '사원명 NOT NULL'; -- Comment이(가) 생성되었습니다.
comment on column TBL_JIKWON.EMAIL is '이메일'; -- Comment이(가) 생성되었습니다.
comment on column TBL_JIKWON.JIKKUB is '직급 사장,이사,부장,과장,대리,사원 만 가능함'; -- Comment이(가) 생성되었습니다.
comment on column TBL_JIKWON.FK_BUSEONO is '부서번호 TBL_BUSEO 테이블의 BUSEONO 컬럼을 참조하는 외부키 컬럼입니다.'; -- Comment이(가) 생성되었습니다.
select column_name, comments
from user_col_comments
where table_name = 'TBL_JIKWON';
----- ===== ***** 테이블을 삭제할 때 휴지통에 버리기 ***** ===== ------
-- ==> drop 된 테이블을 복구 할 수 있다.
create table tbl_exam_01
(name varchar2(20));
insert into tbl_exam_01(name) values('연습1');
commit;
create table tbl_exam_02
(name varchar2(20));
insert into tbl_exam_02(name) values('연습2');
commit;
create table tbl_exam_03
(name varchar2(20));
insert into tbl_exam_03(name) values('연습3');
commit;
create table tbl_exam_04
(name varchar2(20));
insert into tbl_exam_04(name) values('연습4');
commit;
create table tbl_exam_05
(name varchar2(20));
insert into tbl_exam_05(name) values('연습5');
commit;
drop table tbl_exam_01; --> tbl_exam_01 테이블을 영구히 삭제하는 것이 아니라 휴지통에 버리는 것이다.
-- Table TBL_EXAM_01이(가) 삭제되었습니다.
select * from tab;
-- 결과물에서 TNAME 컬럼에 BIN$로 시작하는 것이 휴지통에 버려진 테이블이다.
drop table tbl_exam_02; --> tbl_exam_01 테이블을 영구히 삭제하는 것이 아니라 휴지통에 버리는 것이다.
-- Table TBL_EXAM_01이(가) 삭제되었습니다.
select * from tab;
-- 결과물에서 TNAME 컬럼에 BIN$로 시작하는 것이 휴지통에 버려진 테이블이다.
select * from tbl_exam_01;
-- ORA-00942: 테이블 또는 뷰가 존재하지 않습니다
select * from tbl_exam_02;
-- ORA-00942: 테이블 또는 뷰가 존재하지 않습니다
select *
from "BIN$8wAARGffQ5muLsNjIgknCA==$0";
select *
from "BIN$TU3Zt+WTQeGls1HVNcGc5g==$0";
----- ===== ***** 휴지통 조회하기 ***** ===== ------
select *
from user_recyclebin;
----- ===== ***** 휴지통에 있던 테이블 복원하기 ***** ===== ------
flashback table TBL_EXAM_01 to before drop;
-- Flashback을(를) 성공했습니다.
-- TBL_EXAM_01 은 original_name 컬럼에 나오는 것이다.
select * from TBL_EXAM_01;
----- ===== ***** 휴지통에 있던 테이블을 영구히 삭제하기 ***** ===== ------
select *
from user_recyclebin;
purge table TBL_EXAM_02;
-- Table이(가) 비워졌습니다.
-- TBL_EXAM_02 은 original_name 컬럼에 나오는 것이다.
----- ===== ***** 휴지통에 있던 모든 테이블을 영구히 삭제하기 ***** ===== ------
drop table tbl_exam_03; -- Table TBL_EXAM_03이(가) 삭제되었습니다.
drop table tbl_exam_04; -- Table TBL_EXAM_04이(가) 삭제되었습니다.
select *
from user_recyclebin;
purge recyclebin; -- 휴지통에 있던 모든 테이블들을 영구히 삭제하는 것이다.
-- Recyclebin이(가) 비워졌습니다.
select * from tab;
----- ===== ***** 테이블 삭제할 때 영구히 삭제하기 ==> 복원 불가 ***** ===== ------\
select *
from tbl_exam_05;
drop table tbl_exam_05 purge;
-- Table TBL_EXAM_05이(가) 삭제되었습니다.
drop table tbl_exam_06 purge;
-- Table TBL_EXAM_06이(가) 삭제되었습니다.
select * from user_recyclebin;
'SQL' 카테고리의 다른 글
SQL*Developer 에서 Plan(실행계획) 확인하기 (0) | 2022.07.19 |
---|---|
======== **** INDEX(인덱스, 색인) **** ======== (0) | 2022.07.19 |
제약조건 (0) | 2022.07.15 |
NOT NULL 제약 (0) | 2022.07.15 |
Constraint(제약조건) !!!! [개중요] !!!! (0) | 2022.07.14 |