DAY 59

dokiru·2023년 4월 21일
0

학원

목록 보기
39/51

오라클 명령어 종류들

• DML (Data Manipulation Language)
: INSERT(입력) , UPDATE(변경) , DELETE(삭제) , MERGE(병합)

•DDL (Data Definition Language)
: CREATE (생성) , ALTER (수정) , TRUNCATE (잘라내기) , DROP (삭제)

•DCL (Data Control Language)
: GRANT (권한 주기) , REVOKE (권한 뺏기)

•TCL ( Transaction Control Language)
: COMMIT (확정) , ROLLBACK (취소)

DDL (Data Definition Language)

  1. CREATE : 테이블 생성

    • 기본 입력 값을 설정하면서 생성하기
    CREATE TABLE tt02
    (num NUMBER(3,1) DEFAULT 0,
    name VARCHAR2(10) DEFAULT 'NO Name',
    hiredate DATE DEFAULT SYSDATE) ;
    • 다른 테이블에서 값 복사해오기 (AS)
-- 1. 형식과 데이터 전부
CREATE TABLE new_emp2
AS 
SELECT no, name, hiredate FROM new_emp;

-- 2. 형식만 (WHERE 절에 false값 넣어주기)
CREATE TABLE new_emp3
AS 
SELECT no, name, hiredate FROM new_emp WHERE 1=2;
  1. ALTER
  • 새로운 컬럼 추가 (ADD)
ALTER TABLE 테이블명
ADD (컬럼명 데이터타입 [DEFAULT값]);
  • 컬럼 이름 바꾸기 (RENAME)
ALTER TABLE 테이블명 RENAME COLUMN COLUMN명 TO 바꿀COLUMN명
  • 컬럼의 데이터 크기 조정 (MODIFY)
ALTER TABLE 테이블명 MODIFY (컬럼명 데이터타입(크기))
  • 특정 컬럼만 삭제 (DROP)
ALTER TABLE 테이블명 DROP COLUMN 삭제할컬럼명;
  1. TRUNCATE : 테이블 형태는 남겨두고 데이터만 삭제
  2. DROP : 테이블 객체 자체를 전부 삭제

DML (Data Manipulation Language)

  1. INSERT
    : 새로운 데이터 입력
INSERT INTO 테이블명 [(column1, column2,……)]
VALUES (value 1 , value 2,….);
  • 전체 컬럼에 값을 넣을 경우 컬럼명 생략 가능
INSERT INTO 테이블명
VALUES (value 1 , value 2,…);
  1. UPDATE
    : 데이터 변경 (조건 잘 설정하지 않으면 모든 데이터가 업데이트 될 수 있음)
UPDATE 테이블명
SET 컬럼명 = value
WHERE 조건;

ex. Professor 테이블에서 'Sharon Stone' 교수의 직급과 동일한 직급을 가진 교수들 중 현재 급여가 250 만원이 안 되는 교수들의 급여를 15% 인상

UPDATE professor
SET pay = pay * 1.15
WHERE position = (SELECT position
                  FROM professor
                  WHERE name = 'Sharon Stone')
    AND pay < 250;
  1. DELETE
    : 데이터 삭제
DELETE FROM 테이블명
WHERE 조건

: SELECT로 조건문으로 어떤 데이터가 걸러지는 지 확인한 후에 지우는 것이 좋음 (한번 지우면 돌이킬 수 XXX!!)

  1. MERGE
    : 여러 테이블의 데이터를 합치는 병합
    : 조건이 참인 데이터가 있을 경우 기존의 테이블 데이터를 업데이트, 없을 경우 새 데이터를 삽입
MERGE INTO 테이블명
USING 테이블명2
ON (조건) -- 조건
WHEN MATCHED THEN -- 참일 경우
    UPDATE SET 업테이트 내용
WHEN NOT MATCHED THEN -- 거짓일 경우
    INSERT VALUES (컬럼이름, 컬럼이름1, [...])
;

ex.
두 개의 테이블 날짜를 비교해서 새로운 테이블에 업데이트


테이블 1


테이블 2

 MERGE INTO table_colc tc -- 병합할 테이블
    USING table_data_1 td -- 테이블1을 이용
    ON (tc.std_date = td.create_date) -- 병합할 테이블에 테이블1의 데이터가 있는지
    WHEN MATCHED THEN -- 있으면 업데이트
        UPDATE
        SET tc.check_data1 = 'Y'
    WHEN NOT MATCHED THEN -- 없으면 삽입
        INSERT
        VALUES (td.create_date, 'Y', 'N');
    
 MERGE INTO table_colc tc -- 병합할 테이블
    USING table_data_2 td -- 테이블2를 이용
    ON (tc.std_date = td.create_date) -- 병합할 테이블에 테이블2의 데이터가 있는지
    WHEN MATCHED THEN -- 있으면 업데이트
        UPDATE
        SET tc.check_data2 = 'Y'
    WHEN NOT MATCHED THEN -- 없으면 삽입
        INSERT
        VALUES (td.create_date, 'N', 'Y');
    

Transaction (트랜잭션)

: 논리적인 작업 단위 (DML 작업들을 하나의 단위로 묶어둔 것)
: 해당 트랜잭션에 있는 모든 DML이 성공해야 해당 트랜잭션이 성공, 아니면 실패
: DML 작업을 한 후에는 반드시 COMMIT(확정)이나 ROLLBACK(취소) 명령을 수행해야 작업이 마무리 됨!


커밋 버튼과 롤백 버튼

: 커밋이나 롤백을 하지 않은 상태면 다른 세션에서 조작할 수 없는 lock 상태가 됨

Data_Dictionary (DD)

(출처 : https://isstory83.tistory.com/138)

  • 오라클 데이터베이스의 메모리 구조와 파일에 대한 구조 정보들
  • 각 오브젝트들이 사용하고 있는 공간들의 정보들
  • 제약 조건 정보들
  • 사용자에 대한 정보들
  • 권한이나 프로파일 , 롤에 대한 정보들
  • 감사(Audit) 에 대한 정보들

현재 사용자가 볼 수 있는 데이터베이스의 모든 사용자들 나열

SELECT *
FROM ALL_USERS;

사용자의 INDEX 사전 조회

SELECT *
FROM USER_INDEXES;

모든 제약 조건 확인

SELECT *
FROM ALL_CONSTRAINTS;
profile
안녕하세요!

0개의 댓글