📌 오늘 학습한 주제
- SQL 기초
SELECT 문법 구조 및 컬럼 별칭(Alias), 중복 제거(DISTINCT)
WHERE 절 조건 필터링: 비교/논리 연산자, BETWEEN ~ AND, IN, 패턴 매칭(LIKE)
- NULL 데이터 처리 함수 (
IFNULL, NULLIF, IS NULL, IS NOT NULL)
- 문자열 연결 함수 (
CONCAT) 및 대학 학사 데이터베이스 실습 워크북 풀이
💡 오늘 배운 것 — 나만의 언어로
① 오늘의 목표
- 관계형 데이터베이스(MySQL)의 기본 조회 구문인
SELECT문의 구조를 이해하고, 다양한 조건절 연산자와 NULL 처리 함수를 활용하여 원하는 데이터를 정확하게 추출하기
② 학습할 내용
- 기본 조회 및 컬럼 가공:
SELECT, FROM 절을 통해 데이터를 조회하고, AS를 이용한 별칭 부여와 DISTINCT를 통한 중복 컬럼 제거를 익혔다.
- NULL 처리 함수: 연산 시 NULL이 포함되면 결과가 NULL이 되는 문제를 방지하기 위해
IFNULL(BONUS_PCT, 0)을 사용하여 연봉 계산을 처리하고, IS NULL / IS NOT NULL로 조건 분기를 처리했다.
- 다양한 WHERE 절 필터링:
- 범위 검색:
BETWEEN 3500000 AND 5500000
- 다중 목록 일치:
IN ('60', '90')
- 패턴 매칭: 와일드카드
_(단일 문자), %(다중 문자) 및 이스케이프 문자(\)를 활용한 LIKE '___\_%' 구문 실습
- 문자열 결합:
CONCAT() 함수를 사용하여 여러 컬럼과 문자열 리터럴을 조합해 읽기 쉬운 출력 메시지를 생성했다.
💻 오늘 핵심 코드
1. 연봉 계산 및 NULL 처리 & 문자열 결합
SELECT EMP_NAME,
SALARY,
(SALARY + (SALARY * IFNULL(BONUS_PCT, 0))) * 12 AS `(연봉)`
FROM employee;
SELECT CONCAT(EMP_NAME, '님의 급여는 ', SALARY, '(원)입니다.') AS `급여 정보`
FROM employee;
2. 조건절(WHERE) 다양한 연산자 활용
SELECT EMP_NAME, SALARY, JOB_ID
FROM employee
WHERE SALARY BETWEEN 3500000 AND 5500000;
SELECT *
FROM employee
WHERE EMAIL LIKE '___\_%';
SELECT *
FROM employee
WHERE DEPT_ID IN ('60', '90');
3. 학사 데이터베이스 워크북 실습 쿼리
SELECT s.STUDENT_NAME
FROM tb_department d, tb_student s
WHERE s.DEPARTMENT_NO = d.DEPARTMENT_NO
AND d.DEPARTMENT_NAME = '국어국문학과'
AND s.ABSENCE_YN = 'Y'
AND (
s.STUDENT_SSN LIKE '______-2%'
OR s.STUDENT_SSN LIKE '______-4%'
);
SELECT DEPARTMENT_NAME, CATEGORY
FROM tb_department
WHERE CAPACITY BETWEEN 20 AND 30;
SELECT a.STUDENT_NO, a.STUDENT_NAME, a.STUDENT_SSN
FROM tb_student a
WHERE a.ABSENCE_YN = 'N'
AND a.STUDENT_ADDRESS LIKE '%전주%'
AND a.ENTRANCE_DATE LIKE '2002-%';
🛠️ 실습 / 결과물 & 참고 자료
③ 실습 / 결과물
- 강의 실습코드: MySQL
lgcns 데이터베이스의 employee, tb_department, tb_student 테이블을 대상으로 기본 SELECT문, 연산자(BETWEEN, IN, LIKE), 조인 및 조건절 필터링 워크북 문제 10문항 풀이 완료.
④ 참고 자료
🔍 문제와 해결
- 막힌 부분: 주민번호 뒷자리나 특수문자(
_)가 포함된 이메일 계정을 검색할 때 와일드카드 _가 모든 단일 문자와 매핑되어 원치 않는 결과가 포함되는 현상 점검.
- 해결 방법: 특수기호 자체를 문자로 인식시키기 위해 이스케이프 문자(
\_)를 사용하고, 주민번호 패턴 매칭 시 LIKE '______-2%' 형식으로 자릿수를 엄격하게 지정하여 정확한 데이터만 추출함.
🎯 다음에 할 일