정보처리기사 CBT
종목 메뉴

개념 한 쪽

정보처리기사 SQL 문법 — 내장 SQL·커서·NULL 비교

SQL 문법 개념에서는 프로그램 안에 SQL을 넣어 쓰는 내장 SQL(Embedded SQL)의 규칙, 커서의 사용 순서, NULL 값 비교 구문이 반복해서 출제된다. 명령어와 키워드의 짝을 정확히 외워 두는 것이 득점의 핵심이다.

2026-10-15 기준 · 정보처리기사 대시보드

이 개념을 문제로 확인하고 싶으면 이 개념 문제 10개 풀기 회원용

가입 없이 오늘의 10문제 바로 풀기 →

시험에 이렇게 나온다

출제기준 단원 「SQL 문법」의 공개 문제 3개를 묻는 꼴별로 나누면 이렇습니다.

묻는 꼴문제 수무엇을 묻나
커서 사용 순서 판단1FETCH 실행 앞에 어떤 선언·열기 작업이 필요한지
내장 SQL 설명 옳고 그름 판정1호스트변수명·데이터형 관련 설명의 옳고 그름 판단
NULL 비교 구문 선택1WHERE에서 NULL 여부를 검사할 올바른 구문 고르기

뜻

내장 SQL(Embedded SQL)은 C나 Java 같은 일반 프로그래밍 언어 안에 SQL 문을 직접 넣어서 사용하는 방식이다. 이때 프로그램 변수를 호스트 변수라고 부르는데, 호스트 변수와 데이터베이스 필드의 데이터 타입은 일치해야 하며 불일치 시 오류가 발생한다. 반면 이름은 달라야 하는 것이 아니다. 호스트 변수명과 데이터베이스 필드명이 같아도 문법적으로 문제가 없고, 둘이 같을 경우에는 호스트 변수의 값이 우선으로 해석된다. 그래서 '호스트 변수와 필드명은 반드시 달라야 한다'는 설명은 틀린 설명이다.

내장 SQL에서 여러 행을 순차적으로 가져올 때는 커서(Cursor)를 쓴다. 커서는 DECLARE CURSOR로 선언한 뒤 OPEN으로 열어야 비로소 FETCH로 행을 가져올 수 있다. 즉 프로그램에 EXEC SQL FETCH 문이 나타나려면 그 앞에 반드시 DECLARE CURSOR와 OPEN이 먼저 나와야 한다.

NULL 비교도 정해진 구문이 있다. NULL은 값이 없음을 뜻하므로 =, != 같은 일반 비교 연산자로 판별할 수 없다. NULL 여부를 검사하려면 반드시 IS NULL 또는 IS NOT NULL 구문을 사용해야 하며, 'DON'T NULL' 같은 표기는 존재하지 않는 문법이다. 명령어와 키워드의 짝으로는 UPDATE ... SET, INSERT ... INTO, DELETE ... FROM, CREATE VIEW ... AS가 모두 올바른 표준 짝이고, CREATE VIEW에 TO를 붙이는 것은 부적절하다.

예제

'내장 SQL에 대한 설명으로 옳지 않은 것은?' 꼴에서는 '호스트 변수와 DB 필드명은 동일하면 안 된다', '호스트 변수와 필드의 타입은 일치하지 않아도 된다' 같은 보기가 오답으로 나온다. 이름은 같아도 되고(충돌 시 호스트 변수 우선), 타입은 반드시 일치해야 한다는 두 규칙을 대비해서 외우면 된다. 커서 문제는 'FETCH 전에 반드시 선행해야 할 명령 = DECLARE CURSOR + OPEN'으로 묻는 것이 일반적이다. NULL 문제는 '전화번호가 Null 값이 아닌 학생명을 검색' 같은 상황에서 IS NOT NULL을 고르는 형태로 자주 나온다.

대표 기출 3문항

삽입(embedded) SQL 문이 포함된 응용 프로그램에서 프로그램의 중간에 ‘EXEC SQL FETCH C1.....'과 같은 문장이 포함되어 있다면, 이 문장이 나타나기 전에 반드시 먼저 나타나야 되는 삽입 SQL명령어들로 구성된 것은?

  1. DECLARE CURSOR
  2. DECLARE CURSOR, OPEN
  3. DECLARE CURSOR, OPEN, PREPARE
  4. DECLARE CURSOR, OPEN, PREPARE, EXECUTE
정답과 해설 보기

정답 ② · 삽입 SQL에서 FETCH 문 실행 전에 선행해야 할 명령어 조합을 묻는 문제이다. 커서를 사용해 행을 하나씩 가져오려면 먼저 DECLARE CURSOR로 커서를 정의하고 OPEN으로 커서를 활성화해야 FETCH가 가능하다.

커서(Cursor)를 사용하여 행을 순차적으로 가져오려면 DECLARE CURSOR로 커서를 선언하고, OPEN으로 커서를 연 후 FETCH해야 한다.

회사원이라는 테이블에서 사원명을 찾을 때, 연락번호가 Null 값이 아닌 사원명을 모두 찾을 때의 SQL 질의로 옳은 것은?

  1. SELECT 사원명 FROM 회사원 WHERE 연락번호 !=NULL;
  2. SELECT 사원명 FROM 회사원 WHERE 연락번호 <> NULL;
  3. SELECT 사원명 FROM 회사원 WHERE 연락번호 IS NOT NULL;
  4. SELECT 사원명 FROM 회사원 WHERE 연락번호 DON'T NULL;
정답과 해설 보기

정답 ③ · Null 값이 아닌 조건을 검사하는 올바른 SQL 문법을 묻는 문제이다. SQL에서 Null은 값이 없음을 의미하므로 비교 연산자로 검사할 수 없고, 반드시 IS NULL 또는 IS NOT NULL 구문을 사용해야 한다.

SQL에서 Null 값은 비교 연산자 대신 IS NOT NULL 구문을 사용하여 검사해야 한다.

Embedded-SQL의 설명으로 옳지 않은 것은?

  1. 응용 프로그램 내에 데이터를 정의하거나 질의하는 SQL 문장을 내포하여 프로그램이 실행될 때 함께 실행되도록 한다.
  2. Host Program의 컴파일시 선행처리기에 의해 내장 SQL문은 분리되어 컴파일된다.
  3. 호스트 변수와 데이터베이스 필드의 이름은 같아도 된다.
  4. 내장 SQL 문의 호스트 변수의 데이터 타입은 이에 대응하는 데이터베이스 필드의 SQL 데이터 타입과 일치하지 않아도 된다.
정답과 해설 보기

정답 ④ · Embedded SQL에 대한 옳지 않은 설명을 고르는 문제이다. Embedded SQL은 응용 프로그램 안에 SQL 문을 내포하여 프로그램 실행 시 함께 수행되도록 하는 기법으로, 호스트 프로그램 컴파일 시 선행처리기에 의해 내장 SQL문이 분리되어 번역된다.

내장 SQL의 호스트 변수와 DB 필드 타입은 일치해야 하며, 일치하지 않아도 된다는 설명은 옳지 않다.

자주 묻는 물음

내장 SQL에서 호스트 변수와 데이터베이스 필드명이 같아도 되나요?
같아도 됩니다. 이름이 같아도 문법상 문제가 없으며, 둘이 같을 경우 호스트 변수의 값이 우선 적용됩니다. 다만 호스트 변수와 DB 필드의 데이터 타입은 일치해야 하고, 불일치 시 오류가 발생합니다.
FETCH 문을 쓰기 전에 반드시 먼저 실행해야 할 명령은 무엇인가요?
DECLARE CURSOR로 커서를 선언하고 OPEN으로 커서를 여는 두 단계입니다. 이 둘이 선행되어야 FETCH로 행을 순차적으로 가져올 수 있습니다.
NULL 값인지 검사할 때 쓰는 구문은 무엇인가요?
IS NULL, IS NOT NULL입니다. NULL은 =, != 같은 비교 연산자로 판별할 수 없으므로 반드시 IS 절을 사용해야 합니다.
이 개념 문제 10개 풀기 회원용

정보처리기사 풀이 세트에서 이 개념의 문제 10개를 바로 풀어 보세요.