SQLD 공부 2일차

2025. 5. 31. 06:11·SQL

BEGIN TRANSACTION (= BEGIN TRAN)

  • BEGIN TRANSACTION으로 트랜잭션을 시작하고, COMMIT TRANSACTION 또는 ROLLBACK TRANSACTION으로 종료한다.
  • ROLLBACK을 수행하면 가장 처음 BEGIN TRANSACTION을 실행한 시점까지 모든 작업이 취소된다.
  • ROLLBACK은 아직 COMMIT되지 않은 상위 트랜잭션 전체에 영향을 준다.

SAVEPOINT(저장점)

  • 트랜잭션 전체를 롤백하지 않고, 특정 지점까지만 되돌리고 싶을 때 사용한다.
  • SAVEPOINT를 지정해두면 해당 시점 이후의 작업만 부분적으로 롤백할 수 있다.

Oracle

SAVEPOINT save_name;

...

ROLLBACK TO save_name;

SQL Server

SAVE TRANSACTION save_name;

...

ROLLBACK TRANSACTION save_name;

WHERE절

WHERE절은 특정 조건에 맞는 데이터만 조회할 때 사용한다.

조건식 구성 요소

  • 컬럼명
  • 비교 연산자
  • 문자 / 숫자 / 표현식
  • 비교 대상 컬럼

연산자 우선순위

  1. 괄호 ()
  2. 부정 연산자 NOT
  3. 비교 연산자
    • =, >, >=, <, <=
    • BETWEEN a AND b
    • IN (list)
    • LIKE
    • IS NULL
  4. 논리 연산자
    • AND
    • OR

AND가 OR보다 우선순위가 높다.

자주 사용하는 비교 연산자

연산자의미

!= 같지 않다
^= 같지 않다(SQL Server)
<> 같지 않다
NOT 컬럼명 = 값 값과 같지 않다
NOT 컬럼명 > 값 값보다 크지 않다
BETWEEN a AND b a 이상 b 이하
IN (list) 리스트 중 하나와 일치
LIKE 패턴 검색
IS NULL NULL 여부 확인

NULL의 연산

  • NULL과의 연산 결과는 NULL이다.
  • NULL과의 비교 연산 결과는 FALSE이다.
  • NULL은 값이 존재하지 않는 상태이므로 크고 작음을 비교할 수 없다.

예시

SELECT NULL + 10; -- 결과: NULL
SELECT *
FROM MEMBER
WHERE NAME = NULL; -- 조회되지 않음

NULL 비교는 반드시 IS NULL 또는 IS NOT NULL을 사용해야 한다.

WHERE NAME IS NULL

빈 문자열 처리 (Oracle vs SQL Server)

다음과 같이 빈 문자열을 저장했다고 가정하자.

INSERT INTO 테이블명
VALUES ('999', '', '2015-11-11');

Oracle과 SQL Server는 빈 문자열('')을 다르게 처리한다.

구분OracleSQL Server

'' 저장 자동으로 NULL 처리 실제 빈 문자열로 저장
WHERE 컬럼 = '' IS NULL과 동일하게 동작 그대로 빈 문자열 비교
NOT NULL 컬럼에 '' 저장 오류 발생 (NULL 처리됨) 저장 가능

Oracle

Oracle에서는 빈 문자열 ''을 NULL로 처리한다.

WHERE 컬럼 IS NULL

와 동일한 의미로 동작한다.

SQL Server

SQL Server에서는 빈 문자열이 실제 데이터로 저장된다.

WHERE 컬럼 = ''

처럼 조회해야 한다.

'SQL' 카테고리의 다른 글

[프로그래머스] 조건에 맞는 사원 정보 조회하기  (0) 2026.05.15
SQL CASE문 정리  (0) 2026.05.14
SQLD 공부 1일차  (0) 2025.05.29
'SQL' 카테고리의 다른 글
  • [프로그래머스] 조건에 맞는 사원 정보 조회하기
  • SQL CASE문 정리
  • SQLD 공부 1일차
JK-LEE98
JK-LEE98
백엔드 개발자
  • JK-LEE98
    JK-LEE98
    JK-LEE98
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • 나의 지식 공유 (4)
      • SQL (4)
      • PS (10)
      • BackEnd (32)
        • Java (3)
        • Spring (4)
        • 내일배움캠프 (20)
        • 프로그래머스 데브코스 (5)
      • 건강한 나 되기🍀 (10)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
JK-LEE98
SQLD 공부 2일차
상단으로

티스토리툴바