본문 바로가기

Cerificate/SQLD

[SQLD] 2과목 1장 SQL 기본 요약 - WHERE (구 DML ~ WHERE절 / 2024 개정사항 반영)

728x90
반응형

※ 이전글1: 2023.02.27 - [Cerificate/SQLD] - [SQLD] 2과목 1장 SQL 기본 요약 - 관계형 데이터베이스, SELECT문 (구 관계형 데이터베이스~DDL / 2024 개정사항 반영)

※ 이전글2: 2023.03.02 - [Cerificate/SQLD] - [SQLD] 2과목 1장 SQL 기본 요약 - 함수, GROUP BY, JOIN (구 함수~JOIN + SQL 노랭이 오답 / 2024 개정사항 반영)

  2024년에 SQLD가 개정됨에 따라 이기적 강의 영상을 기반으로 수정하는 작업을 진행 중이다. 기존에는 관계형 데이터베이스, SELECT 이후 WHERE절로 들어왔다. 그러나 변경사항을 반영한 새 강의에서는 함수 파트를 짚고 WHERE로 넘어왔다. 따라서 위에 게시된 2개 링크를 잘 활용해 공부해나가도록 하자. (2024.03.02 작성.)

  본격적으로 SQLD 공부 시작한 지 일주일 정도 된 듯한데 아직 머릿속이 뿌옇다. 개념들이 뒤죽박죽 섞여 있는 상태라 불안하지만 아무것도 없는 것보다는 낫다. 다행인 것은 어렵다는 생각은 들지 않는다는 것이다. 패기일지 만용일지 모르겠으나 충분히 해볼 만하다고 생각한다. 그럼 오늘도 힘내서 SQLD 2과목, 'SQL 기본 및 활용'에 해당하는 Data On Air의 내용을 정리해보도록 하겠다. 

 

Index

     


     *필독!  2024년도 개정사항에 따르면 DML, TCL은 2과목의 마지막 파트, 관리구문으로 변경되었다. 따라서 아래에 있는 WHERE 파트를 먼저 학습하고 이 부분은 추후 2과목 3장을 다룬 포스트를 보면서 공부하는 것을 권장한다. 

    ※ 2과목 3장: 2023.03.05 - [Cerificate/SQLD] - [SQLD] 2과목 3장 관리 구문 - DML, TCL, DDL, DCL (구 SQL 최적화 기본 원리 / 2024 개정사항 반영) (終)

    3절 DML

    • DML (DATA MANIPULATION LANGUAGE) : 테이블에 원하는 자료들을 입력, 수정, 삭제, 조회하는 명령어

    1. INSERT

    • 입력방법 
      • 1) INSERT INTO 테이블명 (COLUMN_LIST)VALUES (COLUMN_LIST에 넣을 VALUE_LIST);
      • 2) INSERT INTO 테이블명VALUES (전체 COLUMN에 넣을 VALUE_LIST);
    • 한 번에 한 건만 입력됨.

    2. UPDATE

    • 데이터 수정.
    • 형식 : UPDATE 테이블명 SET 수정되어야 할 칼럼명 = 수정되기를 원하는 새로운 값;

    3. DELETE

    • 데이터 삭제
    • 형식 : DELETE [FROM] 삭제를 원하는 정보가 들어있는 테이블명;
    • DDL (CREATE, ALTER, RENAME, DROP) ▷ 작업 즉시 (AUTO COMMIT) 완료.
    • DML (INSERT, UPDATE, DELETE, SELECT) ▷ COMMIT 명령어를 입력 후 TRANSACTION 종료.

    4. SELECT

    • 자료 조회
    • DISTINCT : 중복된 데이터 제외
    • WILDCARD 사용 : 애스터리스크(*) ▷ 모두 조회 | % ▷ 0개 이상의 특정 문자 | - ▷ 한 글자 
    • ALIAS 부여 : 별명 사용.

    5. 산술 연산자와 합성 연산자

    • 산술 연산자
      •  NUMBER와 DATE 자료형에 적용됨.
      • (), *, /, +, - 의 우선순위
    • 합성 (CONCATENATION) 연산자
      • 문자와 문자를 연결
      • ORACLE : 2개의 수직 바(||)
        ex) SELECT PLAYER_NAME || '선수,' || HEIGHT || 'cm,' || WEIGHT || 'kg' 체격정보 FROM PLAYER;
      • SQL SERVER : + 표시
        ex) SELECT PLAYER_NAME +'선수, '+ HEIGHT +'cm, '+ WEIGHT +'kg'체격정보 FROM PLAYER;

    DML Samples.txt
    0.00MB

     

    4절 TCL

    1. 트랜잭션 개요

    • 트랜잭션 (TRANSACTION) 
      • 데이터베이스의 논리적 연산단위.
      • 밀접히 관련되어 분리될 수 없는 한 개 이상의 데이터베이스 조작.
      • 하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함됨.
      • ALL OR NOTHING
      • 커밋 (COMMIT) : 옳게 입력된 데이터를 데이터베이스에 반영시키는 것.
      • 롤백 (ROLLBACK) :  트랜잭션 시작 이전의 상태로 되돌리는 것.
      • 저장점 (SAVEPOINT) 
      • TCL (TRANSACTION CONTROL LANGUAGE)
      • 트랜잭션의 특성

    트랜잭션의 특성 (Data On Air)

    2. COMMIT

    • INSERT, UPDATE, DELETE 문장 사용 후, 작업이 완료되었음을 데이터베이스에 알려 주기 위해 사용.
    • 트랜잭션 이전의 데이터 상태
      • - 메모리 BUFFER에만 영향을 받았기 때문에 데이터의 변경 이전 상태로 복구 가능.
      • - 현재 사용자는 SELECT 문장으로 결과를 확인 가능.
      • - 다른 사용자는 현재 사용자가 수행한 명령의 결과를 열람 불가.
      • - 변경된 행은 잠금 (LOCKING)이 설정되어 다른 사용자가 변경 불가.
    • COMMIT 이후의 데이터 상태
      • 데이터의 변경 사항이 데이터베이스에 반영.
      • - 이전 데이터는 영원히 상실.
      • - 모든 사용자가 결과를 볼 수 있음.
      • - 관련된 행에 대한 잠금(LOCKING)이 풀리고, 다른 사용자들이 행 조작 가능.
    • SQL Server는 기본적으로 AUTO COMMIT 모드.
    • SQL Server에서의 트랜잭션
      • 1) AUTO COMMIT SQL Server의 기본 방식 ▷ DML, DDL을 수행할 때마다 DBMS가 트랜잭션을 컨트롤.
      • 2) 암시적 트랜잭션 ▷ 트랜잭션의 시작은 DBMS가 처리, 끝은 사용자가 명시적으로 COMMIT or ROLLBACK.
      • 3) 명시적 트랜잭션 ▷ 트랜잭션의 시작과 끝을 모두 사용자가 명시적으로 지정.

    3. ROLLBACK

    • 변경 사항 취소.
    • 데이터가 이전 상태로 복구되며 관련된 행에 대한 잠금(LOCKING)이 풀리고 다른 사용자에 의한 데이터 변경 가능.
    • COMMIT과 ROLLBACK 효과
      • - 데이터 무결성 보장 
      • - 영구적인 변경을 하기 전에 데이터의 변경 사항 확인 가능 
      • - 논리적으로 연관된 작업을 그룹핑하여 처리 가능

    4. SAVEPOINT

    • 저장점 (SAVEPOINT) 정의 ▷ 현 시점에서 SAVEPOINT까지 트랜잭션의 일부만 롤백 가능. 
    • 복수의 저장점을 정의할 수 있으며, 동일이름으로 저장점을 정의했을 때는 나중에 정의한 저장점이 유효.
    • 저장점 정의 : SAVEPOINT SVPT1;
    • 저장점까지 롤백 : ROLLBACK TO SVPT1; or  (SQL Server) ROLLBACK TRANSACTION SVTR1;

    5. Review!

    • COMMIT과 ROLLBACK을 실행하지 않아도 자동으로 트랜잭션이 종료되는 경우
      • (ORACLE) 
      • - CREATE, ALTER, DROP, RENAME, TRUNCATE TABLE 등 DDL 문장을 실행하면 그 전후 시점에 자동으로 커밋된다. 
      • - DML 문장 이후에 커밋 없이 DDL 문장이 실행되면 DDL 수행 전에 자동으로 커밋된다.
      • - 데이터베이스를 정상적으로 접속을 종료하면 자동으로 트랜잭션이 커밋된다.
      • - 애플리케이션의 이상 종료로 데이터베이스와의 접속이 단절되었을 때는 트랜잭션이 자동으로 롤백.
      • (SQL Server - AUTO COMMIT이 기본)
      • - 애플리케이션의 이상 종료로 데이터베이스 (인스턴스)와의 접속이 단절되었을 때, 트랜잭션 자동 롤백.

    TCL Samples.txt
    0.00MB


    5절 WHERE절

      2024년도 SQLD 이기적 강의 영상의 순서는 SELECT문 - 함수 - WHERE 임을 거듭 밝힌다. 

    1. WHERE 조건절 개요

    • 원하는 자료를 조회하기 위해 SQL 문장에 WHERE 절을 이용하여 자료 제한.
    • WHERE절은 조회하려는 데이터에 특정 조건을 부여할 목적으로 사용하므로 FROM 절 뒤에 위치.
    • 형식 
      • SELECT [DISTINCT/ALL] 칼럼명 [ALIAS명] FROM 테이블명 WHERE 조건식;
      • 칼럼(Column)명 (대개 조건식의 좌측에 위치) - 비교 연산자 - 문자, 숫자, 표현식 (보통 조건식의 우측에 위치) - 비교 칼럼명 (JOIN 사용시)

    2. 연산자의 종류

    연산자의 종류1 (Data On Air)
    연산자의 종류2 (Data On Air)

    • 연산자 우선 순위
      • 1) 괄호로 묶은 연산이 제일 먼저
      • 2) 연산자 중에는 부정 연산자(NOT)가 먼저 처리
      • 3) 비교 연산자(=,>,>=,<,<=), SQL 비교 연산자(BETWEEN a AND b, IN (list), LIKE, IS NULL) 처리
      • 4) 논리 연산자 중에서는 AND, OR의 순.

    3. 비교 연산자 

    • >, >=, <, <=, = 등
    • 문자 유형간 비교

    문자 유형간 비교 (Data On Air)

    4. SQL 연산자

    • LIKE 사용 시의 와일드카드 활용.
      • %: 모든 문자 찾음. (예. '김%', 김으로 시작하는 모든 문자)
      • _: 언더바가 들어간 만큼의 문자 찾음. (예. '김_', 김으로 시작하는 외자 이름 찾음.)
    • SQL 문장에서 사용하도록 기본적으로 예약되어 있는 연산자. 다음 4유형은 모든 데이터 타입에 대한 연산 가능.

    SQL 연산자 (Data On Air)

    5. 논리 연산자

    • 여러 개의 조건들을 논리적으로 연결시키기 위해서 사용되는 연산자
    • AND, OR

    6. 부정 연산자

    • NOT (IS NULL ↔ IS NOT NULL, 예. WHERE 컬럼명 IS NOT NULL...)
    • 비교 연산자, SQL 비교 연산자에 대한 부정 표현

    부정 연산자 (Data On Air)


    7. ROWNUM & TOP

    1) ROWNUM

    • ROWNUM : 칼럼과 비슷한 성격의 Pseudo Column. | SQL 처리 결과 집합의 각 행에 대해 임시로 부여되는 일련번호. | 원하는 만큼의 행만 가져오고 싶을 때, WHERE절에서 행의 개수를 제한하는 목적으로 사용.
    • 형식
      • - SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM = 1; (행 1건)
      •  - SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM <= N; (여러 행)
    • 테이블 내의 고유키나 인덱스 값 생성 가능.

    2) TOP절

    • 결과 집합으로 출력되는 행의 수를 제한 (SQL Server)
    • 형식 : TOP (Expression) [PERCENT] [WITH TIES]
      • - Expression : 반환할 행의 수
      • - PERCENT : 쿼리 결과 집합에서 처음 Expression%의 행만 반환.
      • - WITH TIES : ORDER BY 절이 지정된 경우에만 사용 가능. TOP N(PERCENT)의 마지막 행과 같은 값이 있다면, 추가 행이 출력됨.

      TOP-N은 2과목 2장으로 범위가 변경되어 위치를 수정하였다. 아래 링크에서 확인할 수 있다.

     

    [SQLD] 2과목 1장 SQL 기본 요약 - 표준조인 + 2과목 2장 SQL 활용 요약 - 서브쿼리 (구 표준 조인~서브

    ※ 이전글1: 2023.03.02 - [Cerificate/SQLD] - [SQLD] 2과목 1장 SQL 기본 요약 - 함수, GROUP BY, JOIN (구 함수~JOIN + SQL 노랭이 오답 / 2024 개정사항 반영) ※ 이전글2: 대부분의 독자가 알고 있드시 2024년 SQLD가 개

    fromitot.tistory.com


    참고

    • Data On Air

    • 23.02.28 이론 작성 시작.
    • 23.03.01 이론 작성 완료.
    • 24.03.02 2024 SQLD 이기적 강의 내용 반영.
    728x90
    반응형