개요
- SQL 문법 체득을 위해 sql-practice의 각 문제 풀이 과정을 기록함
출처
난이도
- EASY
스키마

목차
- 문제 #1
- 지문
- 난이도
- 현황
- 풀이
- 정답
- 개선할 점
- 문제 #2
- 지문
- 난이도
- 현황
- 풀이
- 정답
- 개선할 점
- 분석
- 문법
- 실행 순서
- 개선할 점
- 기타
문제 #1
- 지문
- Show first name, last name, and gender of patients whose gender is 'M'
- 현황
- COMPLETED
- 풀이
SELECT first_name, last_name, gender FROM patients
WHERE gender == 'M'
- 정답
SELECT
first_name,
last_name,
gender
FROM patients
WHERE gender = 'M';
- 개선할 점
- = (equals)
- 표준 SQL 동등 비교 연산자는 =
- MySQL / PostgreSQL / SQL server / Oracle에서 == 는 대부분 오류
- 이식성/표준성을 고려하여 비권장
- ; (semicolon)
- 스크립트 파일로 여러 쿼리 실행 및 배치/마이그레이션/리포트 자동화에서 실행 시 쿼리 종결 명확히 하는 습관이 실무 안정성을 높임
- 줄바꿈 및 들여쓰기
- 컬럼 추가/삭제 용이성 및 SQL 키워드 구조 파악 등 유지보수를 위해 포맷팅을 준수해야 함
- = (equals)
문제 #2
- 지문
- Show first name, last name of patients who does not have allergies. (null)
- 현황
- COMPLETED
- 풀이
SELECT
first_name,
last_name
FROM patients
WHERE allergies IS null;
- 정답
SELECT
first_name,
last_name
FROM patients
WHERE allergies IS NULL;
- 개선할 점
- NULL
- 실무에서는 예약어(키워드)는 대문자로 두는 컨벤션
- 리뷰 및 유지보수, 코드 스타일 통일 측면에서 용이
- 독자/리뷰어로 하여금 해당 코드가 값인지 키워드인지 즉시 인지 가능
- 특히 = NULL 은 SQL 3-valued loigc으로 인해 제대로 동작하지 않으므로 NULL 비교는 항상 IS / IS NOT 사용해야 함
- NULL
문제 #3
- 지문
- Show first name of patients that start with the letter 'C'
- 풀이
SELECT
first_name
FROM patients
WHERE first_name LIKE 'C%';
- 정답
-- Solutions (1/2)
SELECT
first_name
FROM
patients
WHERE
first_name LIKE 'C%';
-- Solutions (2/2)
SELECT first_name
FROM patients
WHERE substring(first_name, 1, 1) = 'C'
문제 #4
- 지문
- Show first name and last name of patients that weight within the range of 100 to 120 (inclusive)
- 풀이
SELECT
first_name,
last_name
FROM patients
WHERE weight >= 100 AND weight <= 120;
- 정답
-- Solutions (1/2)
SELECT
first_name,
last_name
FROM patients
WHERE weight BETWEEN 100 AND 120;
-- Solutions (2/2)
SELECT
first_name,
last_name
FROM patients
WHERE weight >= 100 AND weight <= 120;
문제 #5
- 지문
- Update the patients table for the allergies column. If the patient's allergies is null then replace it with 'NKA'
- 풀이
UPDATE
patients
SET allergies = 'NKA'
WHERE allergies IS NULL;
- 정답
UPDATE patients
SET allergies = 'NKA'
WHERE allergies IS NULL;
문제 #6
- 지문
- Show first name and last name concatinated into one column to show their full name.
- 풀이
select
CONCAT(first_name, ' ', last_name) AS full_name
FROM
patients;
- 정답
-- Solutions (1/2)
SELECT
CONCAT(first_name, ' ', last_name) AS full_name
FROM patients;
-- Solutions (2/2)
SELECT first_name || ' ' || last_name
FROM patients;
문제 #7
- 지문
- Show first name, last name, and the full province name of each patient.
- Example: 'Ontario' instead of 'ON'
- 풀이
select
patients.first_name,
patients.last_name,
province_names.province_name
FROM
patients
LEFT JOIN
province_names
ON patients.province_id = province_names.province_id;
- 정답
SELECT
first_name,
last_name,
province_name
FROM patients
JOIN province_names ON province_names.province_id = patients.province_id;
분석
- 문법
- SELECT
- 데이터베이스에서 데이터 조회 시 사용
- 특정 컬럼명 대신 *로써 모든 컬럼 조회 가능
- FROM
- 참조할 데이터베이스 가져오기
- WHERE
- 조회 조건을 설정함으로써 조회할 데이터 필터링
- -- ...(texts)...
- 단일 행 주석
- /* ...(texts)... */
- 다중 행 주석
- SELECT
- 실행 순서
- FROM
- 데이터베이스에서 데이터를 가져올 테이블 지정
- 해당 단계에서 조인 (Join) 연산 수행됨
- WHERE
- 지정 테이블에서 선택된 데이터에 대해 조건 적용하여 필터링
- 해당 단계에서 조건 만족 데이터만 선택됨
- GROUP BY
- 데이터 그룹화
- 같은 값을 가진 데이터들을 하나의 그룹으로 묶어 집계 함수 사용 가능하게 함
- HAVING
- 생성된 그룹에 대해 조건 적용
- 그룹화된 데이터 중 조건 만족하는 그룹만 선택됨
- SELECT
- 최종적으로 조회할 열을 지정
- ORDER BY
- 최종 결과 정렬
- 지정 열을 기준으로 오름차순 / 내림차순으로 정렬됨
- LIMIT (또는 ROWNUM)
- 최종 결과에서 반환할 행의 개수를 제한함
- Oracle에서는 ROWNUM 사용하여 결과 개수 조절 가능
- FROM
- 기타
- SQL은 대소문자 구별하지 않는 언어이나, 일반적으로 키워드는 가독성 향상을 위해 대문자 작성이 관례 → 쿼리 구조의 명확성 확보 및 의도 전달 용이
- 테이블명, 컬럼명 등 식별자는 대소문자 구분
- Oracle SQL에서는 기본적으로 식별자를 대문자로 변환하여 저장
- 식별자를 대소문자 혼합하여 사용 시 큰따옴표로 감싸야 함
- 주석은 SQL 쿼리 실행에 영향을 미치지 않으며, 코드의 특정 부분에 설명을 추가하여 가독성을 높이고 의도나 기능 설명을 통해 코드 이해에 도움을 줌
- 주석 내용은 간결하고 명확하게 작성해야 함
반응형
'Study > SQL' 카테고리의 다른 글
| [sql-practice] SQL 문제 풀이 (6) (0) | 2026.04.03 |
|---|---|
| [sql-practice] SQL 문제 풀이 (5) (0) | 2026.04.03 |
| [sql-practice] SQL 문제 풀이 (4) (0) | 2026.01.31 |
| [sql-practice] SQL 문제 풀이 (3) (0) | 2026.01.31 |
| [sql-practice] SQL 문제 풀이 (2) (0) | 2026.01.25 |