Oracle

ORACLE 공부 2일차 2020/07/22

햄찌개 2020. 8. 27. 20:20

2020-07-22
 1) 2.  테이블 삭제    
    -DROP 명령 사용
    -ROLLBACK의 대상
    
(사용형식)
DROP TABLE 테이블명;
-- EMP의 테이블을 참조하는 WORK 테이블이 있어서 바로 삭제가 안된다.
--관계를 삭제하던, 하위 테이블을 삭제한다.
DROP TABLE WORK;

02)테이블 수정 
-ALTER 명령으로 수정
-컬럼 추가 /변경/삭제
-테이블명 수정
-제약조건 (기본키, 외래키) 추가, 삭제, 수정 

1)테이블 명 수정
(사용형식)
ALTER TABLE OLD_테이블명
    RENAME TO NEW_테이블명;

예)EMP 테이블 이름을 EMPLOYEE로 변경하시오    
ALTER TABLE EMP RENAME TO EMPLOYEE;


2)컬럼 추가 
(사용형식)
ALTER TABLE 테이블명
    ADD 컬럼명 데이터타입[(크기)] [DEFAULT 값] [NOT NULL | NULL];
    
예) 사업장 테이블 (SITE)에 시공일자 컬럼을 추가하시오.
    시공일자 : S_START_DATE  DATE이고 기본값으로 오늘 날짜입력 
    
    ALTER TABLE SITE
    ADD S_START_DATE DATE DEFAULT SYSDATE;
    
3) 컬럼 변경
-컬럼 의 데이터 타입, 크기, 기본값을 변경
(사용형식)
ALTER TABLE 테이블명
    MODIFY 컬럼명 데이터타입[(크기)] [DEFAULT 값] [NOT NULL | NULL],
                [컬럼명 데이터타입[(크기)] [DEFAULT 값] [NOT NULL | NULL]];

예) 사업장 자재 테이블(SITE_ITEM)에서 자재이름(SI_ITEM_NAME)의 데이터 타입을 CHAR(70)으로 변경하시오
ALTER TABLE SITE_ITEM
    MODIFY SI_ITEM_NAME CHAR(70);
    
4)컬럼 명 변경 
-컬럼의 이름을 변경 
(사용형식)
ALTER TABLE 테이블명
    RENAME COLUMN OLD_컬럼명 TO NEW_컬럼명;
    
예) 사원테이블 (EMPLOYEE)에서 사원의 주소(E_ADDRESS) 컬럼명을 E_ADDR로 바꾸세요
ALTER TABLE EMPLOYEE 
    RENAME COLUMN E_ADDRESS TO E_ADDR;

5)컬럼 삭제
(사용형식)
ALTER TABLE 테이블명
    DROP COLUMN 컬럼명 ;
    
 예) 사업장 테이블(SITE)에서 시공일자 컬럼(S_START_DATE)을 삭제하시오
 ALTER TABLE SITE
    DROP COLUMN S_START_DATE;

6)제약 조건 변경
    -기본키 및 외래키 설정 추가/변경/삭제
(사용형식)   
ALTER TABLE 테이블명 
    ADD CONSTRAINT 기본키 설정명 PRIMARY KEY(컬럼명[,컬럼명,.......]),
        [CONSTRAINT 외래키 설정명 FOREIGN KEY(컬럼명[,컬럼명,.......])
            REFERENCES 외부테이블 (컬럼명)];
    MODIFY CONSTRAINT 기본키 설정명 PRIMARY KEY(컬럼명[,컬럼명,.......]),
        [CONSTRAINT 외래키 설정명 FOREIGN KEY(컬럼명[,컬럼명,...])
            REFERENCES 외부테이블명(컬럼명)];]
        [DROP CONSTRAINT 기본키 설정명 | 외래키 설정명 ;]
    
---------------------------------------------------------------------------------
03) DML (DATA MANIPULATION LANGUAGE)
-INSERT삽입, UPDATE수정, DELETE삭제
1. INSERT 문 
    - 테이블에 새로운 자료를 삽입
    -새롭게 삽입하고자 하는 데이터가 테이블에 존재하지 않아야 함 
    -너무 긴 글은 입력안됨 MAX : 50BYTE
    (사용형식)
    INSERT INTO 테이블명[(컬럼명[,컬럼명,....])]
        VALUES(값1[, 값2 ,........]);
            - 테이블명[컬럼명[,컬럼명,........])]에 기술된 컬럼의 갯수, 순서, 타입과 
                VALUES 다음의 값의 갯수,순서, 타입은 일치해야한다.
           - 테이블명 다음 컬럼명이 생략되면 테이블 생성시 정의한 모든 칼럼의
                값을 기술된 순서에 맞게 VALUES절에 정의 해야한다.
           - 테이블명[컬럼명[,컬럼명,........])]에서 컬럼명을 기술하는 경우는 
                모든 칼럼에 값을 정의하지 않는 경우 사용되며.
                컬러므이 제약사항 중 NOT NULL 항목은 생략한다.

 예) 사원테이블에 다음의 자료를 입력하시오
 사원번호   사원명     주소                              전화번호            직위    부서명
 -------------------------------------------------------------------------------------------
 E101       홍길동     대전시 중구 대흥동            042-222-8208     사원    개발팀
 E201       강감찬     서울 성북구 장위동            02 -123-3456     부장    운영팀
 E202       홍길순     대전시 서구 유천동            010-1234-5678   사원    개발팀
 ---------------------------------------------------------------------------------------------
 SELECT * FROM EMPLOYEE; 
 
 INSERT INTO EMPLOYEE(E_EMP_NO, E_NAME ,E_ADDR, E_POSITION, E_DEPT)
    VALUES('E101', '홍길동', '대전시 중구 대흥동', '사원', '개발팀');
 INSERT INTO EMPLOYEE
    VALUES( 'E201',  '강감찬', '서울 성북구 장위동', '02 -123-3456', '부장', '운영팀'); 
INSERT INTO EMPLOYEE
    VALUES( 'E202', '홍길순', '대전시 서구 유천동', '010-1234-5678', '사원', '개발팀');