ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQLD 요약] II. SQL 기본 및 활용 - 01. SQL 기본 (3) - DML
    자격증/SQLD (SQL 개발자) 2021. 5. 1. 13:33
    728x90
    반응형

     

     

    SQLD 요약 / SQL Developer 요약

    🔑 DML/ 데이터입력/ INSERT/ Nologging/ 데이터수정/ UPDATE/ 조건문/ WHERE/

           데이터삭제/ DELETE/ TRUNCATE/ 데이터조회/ SELECT/ ORDER BY/ ASC/ DESC/ INDEX/ DISTINCT/ ALIAS

     

     

    II. SQL 기본 및 활용

       01. SQL 기본

              [1] 관계형 데이터베이스

              [2] SQL 종류

              [3] DDL (Data Definition Language)

              [4] DML (Data Manipulation Language)

     

     



     

    01. SQL 기본

     

    [3] DML (Data Manipulation Language)

    • DML: 테이블에서 데이터를 입력, 수정, 삭제, 조회하기 위한 SQL문
    • 조건문WHERE절로 조건문을 생성하여 원하는 조건을 검색한 다음, 데이터 수정 or 삭제 or 조회를 수행한다.
    테이블에 데이터 입력 입력된 데이터값 수정 테이블 행(데이터) 삭제 입력된 데이터를 조회
    INSERT INTO ~ VALUES ~~ UPDATE ~ SET ~~ DELETE FROM ~ SELECT ~ FROM ~~

     

     


     

     

    (1) INSERT 문 | 데이터 입력

    # (1) INSERT문
    INSERT INTO table (col1, col2, ...) VALUES (ex1, ex2, ...);
    INSERT INTO STUDENT (stdno, stdname) VALUES (1001, 'Lee');
    
    # (2) SELECT문 이용
    # STUDENT 테이블의 모든 데이터를 조회 >> STUDENT_TEST 테이블에 입력
    INSERT INTO STUDENT_TEST
    	SELECT * FROM STUDENT;
        
    # (3) Nologging 옵션 사용
    ALTER TABLE STUDENT NOLOGGING;
    INSERT 문 SELECT 문으로 입력 Nologging 사용
    테이블명-칼럼명-데이터 순서로 입력 데이터를 조회하여 바로 테이블로 삽입 로그파일 기록 최소화 → 성능 향상
    - 모든 칼럼에 대해 데이터 삽입하는 경우:
      칼럼명 생략 가능
    - 문자열 입력하는 경우: 작은 따옴표 사용
    - 데이터 파일에 저장되는 것이 아님
      → 저장하려면 TCL문 Commit 실행
    - 다른 테이블에서 SELECT 문으로
      데이터를 조회하여, 해당 테이블로 삽입
    - 입력되는 테이블은 사전에
      생성되어 있어야 함

    - 데이터베이스에 데이터 입력
      → 로그파일에 정보 기록됨
    - Nologging 옵션: 로그파일 기록 최소화
      → Buffer Cache 메모리 영역을 생략
      → 데이터 입력 시 성능 향상↑

     


     

     

    (2) UPDATE 문 | 데이터 수정

    # 원하는 조건으로 데이터를 검색하여, 해당 데이터를 수정한다.
    UPDATE Table
    	SET col1 = new_data
        WHERE col2 = value;
        
    # 예시
    UPDATE STUDENT			# 수정되는 테이블: STUDENT
    	SET stdname = 'Kim'	# stdname 칼럼의 값을 'Kim'으로 수정
        WHERE stdno = 1001;	# stdno 칼럼의 값이 1001인 행을 검색

     

    • WHERE절에서 원하는 조건으로 데이터 검색 → 해당 데이터 값을 수정

    • 조건문이 있으면 → WHERE절에서 검색된 행 수만큼 수정됨
    • 조건문이 없으면 → 모든 데이터가 수정됨

     


     

     

    (3) DELETE 문 | 데이터 삭제

    # 원하는 조건을 검색하여, 해당되는 행을 삭제한다.
    DELETE FROM Table
    	WHERE col = value;
        
    # 예시
    DELETE FROM STUDENT		# 데이터 삭제되는 테이블: STUDENT
    	WHERE stdno = 1010;	# stdno 칼럼의 값이 1010인 행을 삭제
        
        
    # 테이블 공간 초기화: TRUNCATE
    TRUNCATE TABLE STUDENT;

     

    • WHERE절에서 원하는 조건으로 검색 → 해당되는 행을 삭제
    • 조건문이 없으면 → 테이블의 모든 데이터가 삭제됨

    • DELETE문은 "삭제 여부"만 표시함 → 용량 초기화 X → 테이블 용량 감소 X
    • TRUNCATE문은 테이블의 데이터 삭제 & 용량 초기화 O → 테이블 용량 감소 O
      - 테이블 구조는 삭제하지 않음
      - 테이블의 데이터를 모두 삭제한 후 테이블 공간을 초기화함

     


     

     

    (4) SELECT 문 | 데이터 조회

    SELECT문 사용 정렬: ORDER BY 정렬 회피: INDEX 중복제거 및 별칭지정
    - SELECT columns
      FROM table;
    - WHERE: 조건문 지정
    - ORDER BY column;
    - 오름차순: ASC
    - 내림차순: DESC
    - 기본키가 인덱스인 경우
    - 자동으로 오름차순 index 생성
    - 중복제거: Distinct
    - 별칭지정: Alias

     

    • SELECT문: 특정 칼럼 or 행만 조회
      - SELECT columns: 칼럼 지정
      - FROM table: 테이블 지정
      - WHERE ~~: 행 지정
    # SELECT문으로 테이블에 입력된 데이터를 조회한다.
    SELECT col1
    	FROM table
        WHERE col2 = value;
        
    
    # STUDENT 테이블의 모든 칼럼, 모든 행을 조회
    SELECT * FROM STUDENT;
    
    
    # STUDENT 테이블의 모든 행에서, stdno와 stdname 칼럼만 조회
    SELECT stdno, stdname FROM STUDENT;
    
    
    # STUDENT 테이블의 모든 행에서 stdname 칼럼을 조회하고,
    # stdname 칼럼 뒤에 문자열 '님'을 결합하여 출력
    SELECT stdname || '님' FROM STUDENT;

     

     

    • ORDER BY: SELECT문에서 같이 사용하여, 데이터를 오름차순 or 내림차순으로 정렬하여 출력
      - 정렬 시점: 모든 실행이 끝난 후, 데이터를 출력하기 바로 전 시점
      - 데이터베이스 메모리를 많이 사용함 → 대량 데이터를 정렬하면 성능 저하 발생

      -
      특별한 지정이 없으면 오름차순으로 정렬함
      - 오름차순: ASC
      - 내림차순: DESC
    # 예시: stdname으로 오름차순 & stdno로 내림차순 정렬
    SELECT * FROM STUDENT
    	ORDER BY stdname, stdno DESC;

     

     

    • INDEX: 정렬은 데이터베이스에 부하를 주므로, 인덱스를 사용하여 ORDER BY 정렬 회피
      - 예시: STUDENT 테이블에서 기본키는 "stdno" → 기본키 기준으로 오름차순 인덱스가 자동 생성됨

     

    • DISTINCT (중복 제거): 칼럼명 앞에 지정하여 중복된 데이터를 제거하고, 한 번만 조회함
    • ALIAS (별칭 지정): 테이블명, 칼럼명이 너무 긴 경우에 별칭을 지정하여, 간략하게 지징함
    # Distinct: 중복 제거
    SELECT DISTINCT stdname FROM STUDENT	# stdname의 값이 중복되는 데이터를 제거하고
    	ORDER BY stdno;		# stdno을 기준으로 정렬하여 출력
        
    # Alias: 별칭 지정 
    SELECT stdname AS "이름"		# stdname 칼럼명을 "이름"으로 출력되게 함
    	FROM STUDENT s			# STUDENT 테이블명 대신 "s"를 사용함
    	WHERE s.stdno = 1001;		# "s"를 테이블명 처럼 사용하여 조건문 지정

     


     

    참고도서: SQL 개발자 이론서+기출문제_이기적, 2020

     

     

    728x90
    반응형