✅ 1차 시험 (6월 23일 월요일)
DML 전체 훑어보기
- DML (Data Manipulation Language, 데이터 조작어): 데이터를 조회(
SELECT), 추가(INSERT), 수정(UPDATE), 삭제(DELETE)하는 명령어들을 총칭합니다. 시험 전반에 걸쳐 가장 기본이 되는 개념.
📖 3장. SQL 기본 문법
3-1. DML + 서브쿼리 (⭐⭐)
- DML:
SELECT,INSERT,UPDATE,DELETE4가지 명령어의 기본 사용법을 완벽히 숙지해야 합니다. - 서브쿼리 (Subquery): 쿼리문 안에 또 다른 쿼리문이 들어가는 것입니다. '괄호()' 안에 작성하며, 바깥쪽 메인 쿼리가 실행되기 전에 한 번 실행됩니다.
- 사용 위치:
WHERE,SELECT,FROM,HAVING절 등 다양한 곳에서 사용됩니다. - 핵심: "어떤 조건"을 다른 테이블이나 복잡한 계산을 통해 가져와야 할 때 주로 사용됩니다.
- 예시: '개발부'에 속한 모든 직원을 조회하시오. (직원 테이블과 부서 테이블이 분리된 경우)
-- '개발부'의 부서 ID를 서브쿼리로 먼저 찾고, -- 그 ID를 조건으로 직원 테이블을 조회 SELECT * FROM employees WHERE department_id = (SELECT id FROM departments WHERE name = '개발부');
- 사용 위치:
3-2. SELECT문
SELECT: 테이블에서 데이터를 조회하는 가장 기본적인 명령어입니다.ORDER BY절: 결과를 특정 열(column)을 기준으로 정렬할 때 사용합니다.ASC: 오름차순 (기본값, 생략 가능)DESC: 내림차순- 예시: 직원들을 급여(salary)가 높은 순서대로 조회
SELECT name, salary FROM employees ORDER BY salary DESC;
GROUP BY절: 특정 열을 기준으로 그룹화하여 집계 함수(통계)를 적용할 때 사용합니다.- 짝꿍 함수:
COUNT()(개수),SUM()(합계),AVG()(평균),MAX()(최대값),MIN()(최소값) - 예시: 각 부서별 직원 수를 조회
SELECT department_id, COUNT(*) AS '직원 수' FROM employees GROUP BY department_id;
- 짝꿍 함수:
3-3. 데이터 변경을 위한 SQL문
INSERT: 테이블에 새로운 행(row)을 추가합니다.INSERT INTO 테이블명 (열1, 열2) VALUES (값1, 값2);
UPDATE: 기존 행의 데이터를 수정합니다.UPDATE 테이블명 SET 열1 = 값1 WHERE 조건;- 주의:
WHERE절을 빠뜨리면 모든 행이 수정되므로 반드시 포함해야 합니다.
DELETE: 기존 행을 삭제합니다.DELETE FROM 테이블명 WHERE 조건;- 주의:
WHERE절을 빠뜨리면 모든 행이 삭제되므로 반드시 포함해야 합니다.
- 대용량 테이블의 삭제:
DELETE는 한 행씩 삭제하고 로그를 남겨서 매우 느립니다.TRUNCATE는 테이블 구조만 남기고 모든 데이터를 한 번에 삭제하여 훨씬 빠릅니다. (단, 복구가 거의 불가능)- 차이점:
DELETE는 DML(롤백 가능),TRUNCATE는 DDL(롤백 불가)
📖 4장. SQL 고급 문법
4-1. MySQL 데이터 형식 & 형변환 (❗ 형변환 꼭 나옴! ❗)
- MySQL 데이터 형식 (나올 수 있음):
- 숫자:
INT(정수),DECIMAL(고정소수점, 금액 등),FLOAT(부동소수점) - 문자열:
VARCHAR(가변길이 문자열),TEXT(긴 텍스트) - 날짜/시간:
DATE(날짜),DATETIME(날짜와 시간),TIMESTAMP(타임스탬프)
- 숫자:
- 데이터 형변환 (Data Type Conversion):
- 암시적 형변환: MySQL이 알아서 타입을 바꿔 계산 (
SELECT '100' + 200;-> 300) - 명시적 형변환: 개발자가 함수를 사용해 직접 타입을 변경.
CAST와CONVERT함수가 핵심! - 예시: 문자열 '2023-06-23'을 날짜 타입으로 변환
SELECT CAST('2023-06-23' AS DATE); -- 또는 SELECT CONVERT('2023-06-23', DATE);
- 암시적 형변환: MySQL이 알아서 타입을 바꿔 계산 (
4-2. 조인 (내부 조인만 나옴)
- 조인(JOIN): 두 개 이상의 테이블을 특정 조건(공통된 열)을 기준으로 연결하여 하나의 결과처럼 보여주는 기능입니다.
- 내부 조인 (INNER JOIN): 두 테이블에 모두 공통으로 존재하는 데이터만 합쳐서 보여줍니다. (교집합)
- 예시: 직원 정보와 부서 정보를 합쳐서 조회
SELECT e.name, d.name FROM employees AS e INNER JOIN departments AS d ON e.department_id = d.id; -- employees 테이블의 department_id와 departments 테이블의 id가 일치하는 행만 결합
- 예시: 직원 정보와 부서 정보를 합쳐서 조회
📖 5장. 가상의 테이블 : 뷰(VIEW)
- 뷰의 개념:
- 실제 데이터를 저장하지 않는 가상의 테이블입니다.
- 자주 사용하거나 복잡한
SELECT쿼리문을 '뷰'라는 이름으로 저장해두고, 진짜 테이블처럼 간단히 조회할 수 있게 만든 것입니다. - 장점: 보안(중요한 데이터 숨김), 편의성(복잡한 쿼리 단순화)
- 뷰의 실제 작동:
- 뷰는 데이터를 가지고 있지 않습니다.
- 사용자가 뷰를 조회(
SELECT * FROM my_view;)하면, 그 순간 데이터베이스는 뷰에 저장된 원래의SELECT쿼리문을 실행하여 결과를 보여줍니다. 즉, 실시간으로 원본 테이블의 데이터를 가져옵니다.
✅ 3번째 시험 범위
📖 7장. 스토어드 프로시저
- 스토어드 프로시저 (Stored Procedure):
- 여러 SQL 쿼리문들을 하나로 묶어 데이터베이스에 저장해두고, 필요할 때마다 함수처럼 호출해서 사용하는 기능입니다.
- 장점: 성능 향상(미리 컴파일), 보안 강화, 재사용성 증가.
- 스토어드 함수 (Stored Function)와 커서 (Cursor):
- 함수: 프로시저와 비슷하지만, 반드시 하나의 값을 반환(return)해야 하며
SELECT문 안에서 직접 사용 가능합니다. - 커서: 결과 집합(여러 행)을 한 행씩 순회하며 처리할 때 사용하는 포인터입니다. 프로시저나 함수 내에서 복잡한 로직을 처리할 때 사용됩니다.
- 함수: 프로시저와 비슷하지만, 반드시 하나의 값을 반환(return)해야 하며
- 트리거 (Trigger):
- 테이블에
INSERT,UPDATE,DELETE같은 이벤트가 발생했을 때 자동으로 실행되도록 설정된 프로시저입니다. - 예시: '주문' 테이블에 새 주문이
INSERT되면, '재고' 테이블의 수량을 자동으로UPDATE하는 트리거.
- 테이블에
✅ 4번째 시험 범위
📖 6장. 인덱스 (Index)
- 인덱스의 개념:
- 책의 '찾아보기'와 같은 역할입니다.
- 테이블의 특정 열(column)에 인덱스를 생성하면, 해당 열을 조건으로 데이터를 검색(
SELECT의WHERE절)할 때 조회 속도를 획기적으로 향상시킵니다.
- 장단점:
- 장점:
SELECT쿼리의 성능을 크게 개선합니다. - 단점:
INSERT,UPDATE,DELETE시 인덱스도 함께 수정해야 하므로 데이터 변경 속도는 오히려 느려질 수 있습니다.- 인덱스를 저장할 추가적인 공간이 필요합니다.
- 장점:
'SQL' 카테고리의 다른 글
| 세번째 시험준비 (0) | 2025.06.30 |
|---|---|
| SQL 공부 (2번째)/+ 문제 (0) | 2025.06.23 |
| *두 번째 시험 예상 문제 (0) | 2025.06.20 |
| 공부용 시험문제 (0) | 2025.06.18 |
| 6/18 SQL 시험 범위 요약표 (0) | 2025.06.16 |