SQL - 데이터 조작하기

jodbsgh·2022년 7월 10일
0

💾"SQL"

목록 보기
2/5

🕐DML이란?

데이터 조작어(DML: Data Manipulation Language)
: 사용자가 데이터의 삽입, 삭제, 수정, 검색 등을 처리를 데이터베이스 관리 시스템에 요구하기 위해 사용하는 데이터 언어

  • INSERT : 테이블에 새로운 행 추가

    
    INSERT INTO  테이블명(열1, 열2)
    VALUES  (열1의 값, 열2의 값);
      - 열 리스트에서 열을 생략하고 VALUE 값을 주어도 순서대로 입력됨
      - 특정 열에 값을 넣지 않을 때는 NULLVALUE 값 개수 맞춰야 함
      - subquery로 INSERT 가능, 이 때는 VALUE 절을 사용하지 않는다.
    
    
  • UPDATE : 테이블에 기존 행 수정

    
    UPDATE 테이블명
    SET 열1 = 열1의 값
    [WHERE 조건];
      - 필요한 경우 한 번에 두 개 이상의 행을 갱신할 수 있음
      - 조건절(WHERE)을 작성하지 않으면 모든 행이 수정됨
      - subquery로 UPDATE 가능
    
    
  • DELETE : 테이블의 기존 행 삭제

    
    DELETE [FROM] 테이블명
    [WHERE 조건];
      - 조건절(WHERE)을 작성하지 않으면 모든 행이 삭제됨
      - subquery로 DELETE 가능
      
      cf. TRUNCATE하면 빠르게 삭제할 수 있으나 복구가 불가능함!
    
    
  • SELECT : 테이블 내 데이터 검색

    
    	SELECT 검색할 열 이름
        FROM 테이블명
        [WHERE 조건]
        [GROUP BY 집계 기준 열 이름]
        [ORDER BY 정렬 기준 열 이름];
    
    

DML 후 COMMIT, ROLLBACK 사용

✅트랜잭션 제어 언어(TCL: Transaction Control Language)

트랜젝션 완료 후 수행 결과를 데이터베이스에 반영하거나, 변경 작업을 취소하고 이전의 상태로 돌아가게 하는 등 트랜잭션을 제어하는 언어

  • COMMIT : 트랜잭션이 성공적으로 수행되었음을 선언(작업 완료)
    => 트랜잭션 수행 결과 데이터베이스에 반영, 모든 savepoint 지워진다.

  • ROLLBACK : 트랜잭션을 수행하는 데 실패했음을 선언(작업 취소)
    => 트랜잭션 수행 이전(commit 이전)의 상태로 돌아간다.

  • SAVEPOINT : COMMIT 이전 저장 포인트 지정
    => ROLLBACK SAVEPOINT 세이브포인트명 을 통해 해당 지점으로 돌아갈 수 있다.


🕑DDL이란?

데이터 정의어(DDL: Data Definition Language)
새로운 데이터베이스를 구축하기 위해 스키마를 정의하거나 기존 스키마의 정의를 삭제 또는 수정하기 위해 사용하는 데이터 언어

  • CREATE : 테이블, 뷰 등 데이터베이스 객체 생성

    
    CREATE TABLE 테이블명
    	(열1 이름	열1 데이터타입	[제약 조건]		[기본값],
         열2 이름	열2 데이터타입	[제약 조건]		[기본값],
         .
         .
         .
         [FOREIGN KEY 열3 이름 REFERENCES 테이블명(참조하는 열 이름)]
         [CONSTRAINT 제약 조건 이름	제약 조건]);
    
    
  • ALTER : 테이블에 새로운 열 추가, 수정, 삭제

    
    # 새로운 열 추가
    ALTER TALE 테이블 명
    ADD (열1 이름	열1 데이터 타입	[기본값]...);
    # 기존 열 수정
    ALTER TABLE 테이블 명
    MODIFY(열1 이름	열1 데이터 타입	[기본값]...);
    # 기존 열 삭제
    ALTER TABLE 테이블 명
    DROP (열1 이름...);
      - ADD : 새로운 열 추가, 새로운 열의 기본값 정의
      - MODIFY : 기존 열 이름 수정, 기존 열 정의 수정
      - DROP : 열 삭제
      - READ ONLY : 읽기 전용 상태로 테이블 변경(<-> READ WRITE)
    
    
  • DROP : 테이블 삭제

    
    DROP TABLE 테이블명;
      - 테이블을 Recycle bin 으로 이동  복구 가능
      - 뒤에 purge를 붙여 purge절으로 지정하면 영구 삭제
      - 종속 객체 무효화 및 테이블의 객체 권한 제거
    
    

DELETE, DROP, TRUNCATE 차이

DELETE, DROP, TRUNCATE는 모두 데이터 삭제 방법이지만 복구 가능 여부, 삭제 후 상태가 각각 다르다.

DELETE DROP TRUNCATE
DML/ROLLBACK으로 복원 가능(O) DDL/ROLLBACK으로 복원 불가능(X)

Recycle bin에 버림

->flashback 복원 가능(O)

(cf. purge하면 영구 삭제)
DDL/ROLLBACK으로 복원 불가능(X)
테이블 내의 데이터만 바로 삭제

=>테이블 구조만 남음

데이터 + 테이블 구조 전체 삭제

=>아무것도 남지 않음

테이블을 전부 삭제한 후 구조를 다시 만듦

=>테이블 구조만 남음

데이터 삭제 시 보다 안전 데이터 삭제시 보다 신속

🕒제약조건이란?

제약 조건은 테이블 레벨에서 규칙을 강제 적용하여 DB의 일관성 및 무결성을 보장한다.

  • NOT NULL : 열에 null 값이 허용되지 않도록 보장
  • UNIQUE : 열에 중복된 값이 허용되지 않도록 보장
  • PRIMARY KEY : NOT NULL + UNIQUE
  • FOREIGN KEY : 해당 값이 참조 테이블 PK에 존재하도록 보장
  • CHECK : 각 행이 충족해야 하는 조건 정의

+) 제약 조건 위반 : 다른 테이블에서 FK로 사용되는 PK를 포함한 행은 삭제할 수 없다.
(미리 참조 무결성 제약 조건을 정의해놓으면 삭제 수행이 가능하다.)


🕔기타 객체 관리

데이터베이스 객체

  • 테이블(table) : 기본 저장 단위이며 행으로 구성된다.
  • 뷰(view) : 하나 이상의 테이블에 있는 데이터의 부분 집합
  • 시퀀스(sequence) : 자동으로 숫자 값 생성, 고유번호/일련번호 자동 생성(NEXTVAL, CURRVAL)
  • 색인(index) : 데이터 검색 쿼리 성능 향상 index
  • 동의어(synonym) : 데이터베이스 객체 이름 부여, 이름을 통해 쉽게 접근할 수 있도록 함
profile
어제 보다는 내일을, 내일 보다는 오늘을 🚀

0개의 댓글