[Oracle] 오라클 SQL (DML, DDL, DCL, TCL)

 SQL

DML - Data Manipulation Language (데이터 조작)
    1) SELECT (데이터 검색)

    2) INSERT (데이터 추가)
        형식)
           1. 전체 추가
            INSERT INTO table_name VALUES(값, 값..)

           2. 원하는 데이터만 추가
            INSERT INTO table_name(컬럼명, 컬럼명..) VALUES(값, 값..)

           3. 다른 테이블에 있는 데이터 전체를 추가
            INSERT INTO table_name SELECT * FROM table_name

           4. 같은 데이터를 여러 테이블에 저장
            INSERT ALL
                
           컬럼갯수보다 적은 데이터갯수를 추가할때는 들어갈 값의 컬럼명을 
            VALUES앞에 명시해줘야 한다. 그렇지않고 데이터를 컬럼명보다 
            부족하게 전달하면 에러가 발생한다. not enough values
            
            ex)  컬럼3개를 갖고있는 테이블 => 컬럼명1, 컬럼명2, 컬럼명3
                 INSERT INTO table_name(컬럼명, 컬럼명) VALUES( 데이터, '데이터');
                추가 결과 => 데이터, '데이터', (null)

    3) UPDATE (데이터 수정)
        형식)
            UPDATE table_name SET 컬럼명=변경할값, 컬럼명=변경할값.. [ WHERE 조건 ]

    4) DELETE (데이터 삭제)
        형식)
            DELETE FROM table_name [ WHERE 조건 ]

    5) MERGE (데이터 병합)


     : 데이터 추가, 변경 할때마다 COMMIT 하기. 
       테이블 생성, 삭제, 데이터 삭제 관련된 명령어는 자동 저장.
      COMMIT 안하면 가상메모리에 저장되어 프로그램을 껏다키면 적용되어있지 않는다.

=====================CRUD

DDL - Data Definition Language (데이터 선언)
    1) CREATE : 데이터를 저장하는 공간 제작 (TABLE: 파일) 
        TABLE, VIEW, SEQUENCE, INDEX, PL/SQL
        PL/SQL => PROCEDURE, FUNCTION, TRIGGER

        1. CATS : 복사(기존에 존재하는 테이블을 복사)
           CREATE TABLE table_name AS
                SELECT ~ FROM WHERE true / false

            **WHERE조건절이 true이면 테이블전체 복사
            **WHERE조건절이 false이면 데이터를 제외한 컬럼만 복사
        2. 새로운 테이블 제작(데이터 저장하는 공간)
            CREATE TABLE table_name(
                컬럼명 데이터형 [제약조건(여러개 사용 가능)],
                컬럼명 데이터형 [제약조건(여러개 사용 가능)],
                컬럼명 데이터형 [제약조건(여러개 사용 가능)]
            );

            제약조건으로  NOT NULL, DEFAULT 작성 가능.

    2) DROP : 삭제(TABLE을 자체 삭제)
        형식) DROP TABLE 삭제할 테이블명;
            
    3) ALTER : 수정, 삭제, 추가(컬럼관련)
        형식) ALTER TABLE table_name ADD 컬럼명 데이터형 (컬럼 추가)
                ALTER TABLE table_name DROP COLUMN 컬럼명 (컬럼 삭제)
                ALTER TABLE table_name MODIFY COLUMN 컬럼명 데이터형 (컬럼 수정)
                ALTER TABLE table_name RENAME COLUMN 이전 컬럼명 TO 변경컬럼명
    
    4) TRUNCATE : 데이터만 삭제
        형식) TRUNCATE TABLE table_name;        

    5) RENAME : 테이블 이름 변경
        형식) RENAME 이전 테이블명 TO 변경할 테이블명


    *** 읽기 전용 테이블 (SELECT 문장만 사용 가능)
        형식) ALTER TABLE table_name read only;

DCL - Data Control Language (데이터 제어)
    1) GRANT : 권한부여
    2) REVOKE : 권한 해제

TCL - Transaction Control Language (트랜잭션)
    1) COMMIT : 저장
    2) ROLLBACK : 취소, 복구(뒤로가기)




테이블 생성시 필요한 요소
    
    1. 테이블명은 반드시 문자로 시작
    2. 숫자는 사용이 가능한데 맨 앞에 사용 불가
    3. 알파벳, 한글도 가능 되도록 알파벳 사용(한글 => 깨질 수 있다.)
    4. 대소문자 구분은 없다 => 오라클에 저장시에 대문자로 저장된다.
    5. 테이블, 컬럼명 저장길이 30byte, 한글(15byte)
    6. 테이블명은 중복해서 만들 수 없다 (XE) (유일) XE는 기본 테이블명이다.
    7. 키워드는 사용 할 수 없다. (SELECT, FROM..)
        *테이블명, 컬럼명이 동일할 수 있다.
    8. 빈 줄을 만들면 안된다.
    9. 바뀌기 쉬운부분은 NUMBER사용하기 VARCHAR2(문자형)으로는 증감을 표현하기 힘들다. ex) 관람객, 평점 등등
    10. 테이블에 값이 안들어올경우 DEFAULT로 기본값을 지정해 저장할 수 있다. (null값 방지)
    
    


   테이블 복사
   CREATE TABLE 테이블명1 AS SELECT * FROM 테이블명2

   CREATE TABLE 테이블명3 AS SELECT 컬럼명1, 컬럼명2, 테이블명1.컬렴명3.... 
   FROM 테이블1, 테이블2 
   WHERE 테이블명1.column1, 테이블명12.column1


    테이블명1.컬럼명3은 공통된 컬럼명이기때문에 테이블을 명시해준것이다.

   ex)
    CREATE TABLE dept_name AS SELECT * FROM dept WHERE 1=2;
        ( WHERE 조건이 FALSE이면 테이블 틀만 복사(컬럼(명)만 복사))

    CREATE TABLE dept_name AS SELECT * FROM dept WHERE 1=1;
        ( WHERE 조건이 TRUE이면 테이블+데이터 복사)


   사용자 정의 데이터형
    오라클에서 제공하는 데이터형
    = 문자 저장
        CHAR (1byte ~ 2000byte) : 고정 바이트
            CHAR(10) => 'A' => 10byte
            메모리 낭비 발생이 발생할 수 있으므로 글자수가 동일할때 주로 설정 
            ex) 성별(남자, 여자)

        VARCHAR2 (1byte ~ 4000byte) : 가변 바이트
            VARCHAR2(10) => 'A' => 1byte
            글자수가 작성된 만큼의 메모리만 가변적으로 할당
            VARCHAR2(34)  =>  한글 17자 (한글 2byte)

        CLOB (4G): 가변 바이트
            4기가 저장이 가능 => 내용, 줄거리, 자기소개

    = 숫자 저장
        NUMBER(정수) : 실제 정수 => NUMBER(4) => (1~9999)
        NUMBER(정수, 실수) => 실수 => NUMBER(10, 2) 소수점 2자리까지 저장
        NUMBER => 자리수 14자리

    = 날짜 저장
        DATE : 일반 날짜, 시간
        TIMESTAMP : 기록 경기(올림픽...)

    = 기타 저장 : 동영상, 사진 등등 ( 4G )
        BLOB : 사진, 동영상... 바이너리로 저장
        BFILE : 사진, 동영상... File 형태로 저장





        









댓글