포스트

LG CNS 부트캠프 학습일지 20일차

학습 내용

  • SELECT 구문 연습
  • SQL 함수 연습

개요

정보처리기사 문제를 볼 때 데이터베이스 관련 문제를 보면 지레 겁먹었는데, 데이터베이스 명령어를 직접 작성해보니 생각보다는 어렵지 않았다. MySQL을 기반으로 실습을 하고 있다. 하지만 데이터베이스 제공자마다 구문과 함수가 조금씩 달라서 주의를 할 필요가 있다고 한다.

SELECT 구문 연습

1
2
3
SELECT EMP_NAME
FROM employee
WHERE SALARY = '3000000';

큰 틀에서 SELECT, FROM, WHERE은 이렇게 사용한다.

LIKE

문자열 패턴으로 데이터를 필터링할 때 사용한다. 정규표현식을 사용하는 것과 같다. 참고로 정규표현식을 사용해서 필터링하는 구문은 따로 있다. 다음은 직원의 주소 문자열에 ‘전주’ 문자열이 들어간 데이터를 필터링하는 명령어다. 사실 이것만으로는 직원의 주소가 전주라는 것을 보장할 수는 없지만 대충 이런 느낌으로 사용한다. %는 하나 이상의 문자를 의미하고 _는 단일 문자를 의미한다.

1
2
3
SELECT EMP_NAME
FROM employee
WHERE EMP_ADDRESS LIKE '%전주%';

IS NULL

IN

SQL 함수 연습

함수를 하나하나 설명하는 것은 의미가 없을 것 같다. 사실 함수 이름을 이해한다면 그 함수가 무엇을 하는지는 바로 알 수 있다.

INSTR(), SUBSTRING(), SUBSTRING_INDEX()

문자열을 다루는 함수들이다. 가장 눈에 띄는 차이점은 문자의 위치가 0이 아니라 1부터 시작한다는 것이다. 예를 들어 Hello World에서 W의 위치는 6이 아니라 7이다.

1
2
3
4
5
6
7
8
SELECT INSTR('example@email.com', '@');
-- 8

SELECT SUBSTRING('Hello World', 1, 5);
-- Hello

SELECT SUBSTRING_INDEX('Hello World', ' ', 2);
-- World

REPEAT(), REPLACE()

이름 그대로 이해하자.

LPAD(), RPAD()

좌우에 특정 문자를 추가한다.

LTRIM(), RTRIM()

좌우의 공백을 제거한다.

NOW(), SYSDATE(), CURDATE(), CURTIME()

날짜와 관련된 함수다. NOW()SYSDATE()2026-06-16 00:00:00의 형태로 데이터를 표시한다. 사실 이것도 데이터베이스 제공자에 따라서 조금씩 다르다.

YEAR(), MONTH(), DAY()

문자료 표현된 날짜 데이터에서 연월일을 추출해내려면 -를 구분자로 해서 문자열을 나누는 작업을 해야한다. 만약 데이터를 그렇게 다뤄야했다면 개발자로서 꽤 고통스러웠을 것이다. 하지만 다행히도 MySQL에서는 YEAR(), MONTH(), DAY() 함수들을 제공한다. 날짜 자료형을 매개변수로 받는다.

ADDDATE(), SUBDATE()

놀랍게도(?) 날짜 자료형은 정수 자료형으로 다룰 수도 있다. 2026-06-16 날짜 자료형에 1을 더하면 어떻게 될까. 20260617로 표시된다. 그리고 이걸 다시 날짜 자료형으로 형변환을 하면 2026-06-17로 표시된다. 그러면 ADDDATE()SUBDATE()가 굳이 필요하지 않을 것이다.

만약 2025-09-30에 1을 더하면 어떻게 될까? 9월 31일은 없다. 덧셈 자체는 문제없이 될 것이다. 20250931 하지만 이것을 다시 날짜 자료형으로 변환하면 NULL이 반환된다.

때문에 안전하게 날짜를 더하고 빼려면 ADDDATE()SUBDATE()를 사용해야 한다.

DAYOFWEEK(), WEEKDAY(), DAYNAME()

DAYOFWEEK()WEEKDAY()는 너무 헷갈린다. 자주 사용하면 외워지겟지만 어차피 찾아보면서 사용하게 될 것 같다. DAYNAME()는 매개변수로 주어진 날짜의 요일 이름을 알려준다. 편의기능이다.

조건문

IF() CASE

1
2
SELECT IF(LENGTH('Hello World') = '11', 'A'. 'B');
-- A
1
2
3
4
5
SELECT CASE GENDER
	WHEN 'MALE' THEN 1
	WHEN 'FEMALE' THEN 2
	ELSE 0
	END AS '';

결론

실습을 하면서 익숙해져야 겠다. 사실 SQL도 사람이 사용하는 언어라서 일반적인 다른 프로그램 언어와 크게 다르지 않는데, 개인 프로젝트로도 접할 일이 많이 없다보니 어색한 것이다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

Comments powered by Disqus.