0. Null
- 값이 없음 (0, 빈 문자열 ❌)
- ✅ Null과 연산하면 결과도 Null 임
표) Null 표현
더보기
| 표현 | 결과 |
| NULL = 1 | NULL |
| 10 / NULL | NULL |
| NULL AND TRUE | NULL |
| NULL OR TRUE | TRUE |
| NOT NULL | NULL |
표) Null 함수
더보기
SELECT IFNULL(salary, 0) FROM emp;
SELECT COALESCE(col1, col2, 0) FROM table1;
SELECT salary / NULLIF(bonus, 0);
SELECT * FROM emp WHERE salary IS NULL; # ⚠️ = NULL 사용불가
SELECT * FROM emp WHERE salary IS NOT NULL;
| 함수 | 설명 | 특징 |
| IFNULL(a,b) | NULL이면 b 반환 | 2개 값 |
| COALESCE(a,b,c) | NULL 아닌 첫 값 반환 | 여러 값 |
| NULLIF(a,b) | 같으면 NULL | 비교용 |
| IS NULL | NULL 여부 확인 | 조건 |
| ISNULL(a) | NULL이면 1 | 함수 |
1. DML
- 테이블에 저장된 데이터를 조회, 생성, 수정, 삭제하는 명령어
종류
| 구분 | 정의 | 기본 문법 | 특징 |
| SELECT | 데이터 조회 | SELECT 컬럼 FROM 테이블 | 조건, 정렬, 그룹, 페이징 가능 |
| INSERT | 데이터 삽입 | INSERT INTO 테이블 VALUES() | 새 행 추가 |
| UPDATE | 데이터 수정 | UPDATE 테이블 SET 컬럼=값 WHERE 조건 | ⚠️ 조건 없으면 전체 수정 |
| DELETE | 데이터 삭제 | DELETE FROM 테이블 WHERE 조건 | ⚠️ 조건 없으면 전체 삭제 |
select) 컬럼 키워드
더보기
| 항목 | 설명 | 예시 |
| 전체 조회 | 모든 컬럼 조회 | SELECT * FROM emp; |
| 특정 컬럼 | 지정 컬럼 조회 | SELECT name, salary FROM emp; |
| 별칭 | 컬럼 이름 변경 | SELECT salary AS pay FROM emp; |
| 연산 | 산술 계산 가능 | SELECT salary*12 FROM emp; |
| CASE | 조건 분기 |
CASE WHEN salary>5000 THEN 'HIGH' END
|
| NULL 처리 | NULL 대체 | IFNULL(salary,0) |
select) 테이블 키워드
더보기
| 항목 | 설명 | 예시 |
| 기본 조회 | 테이블 지정 | FROM emp |
| DUAL | 계산 전용 (MySQL 생략 가능) | SELECT 1+1; |
select) 조건식 키워드
더보기
| 구분 | 키워드 | 예시 |
| 비교 | =, >, <, <= | salary > 3000 |
| 논리 | AND, OR, NOT | A AND B |
| 목록 | IN |
dept IN ('HR','IT')
|
| 범위 | BETWEEN |
salary BETWEEN 3000 AND 5000
|
| 패턴 | LIKE | name LIKE 'A%' |
| NULL 확인 | IS NULL | col IS NULL |
select) like 와일드카드
더보기
| 와일드카드 | 의미 | 예시 | 설명 |
| % | 0개 이상의 문자열 | LIKE 'A%' | A로 시작 |
| _ | 정확히 1개의 문자 | LIKE 'A_' | A + 한 글자 |
select) 그룹화 키워드
더보기
| 항목 | 설명 | 예시 |
| 그룹 | GROUP BY |
GROUP BY dept
|
| 집계 | COUNT, SUM, AVG | COUNT(*) |
| 그룹 조건 | HAVING |
HAVING COUNT(*)>3
|
select) 정렬 키워드
더보기
| 옵션 | 설명 | 예시 |
| ASC | 오름차순 (기본) |
ORDER BY salary ASC
|
| DESC | 내림차순 |
ORDER BY salary DESC
|
select) 페이징 키워드
더보기
| 문법 | 설명 | 예시 |
| LIMIT n | 상위 n개 | LIMIT 10 |
| LIMIT n OFFSET m | m개 건너뛰고 n개 |
LIMIT 10 OFFSET 20
|
insert) usage
더보기
| 구분 | 설명 | 예시 |
| 전체 컬럼 삽입 | 모든 컬럼 순서대로 입력 |
INSERT INTO emp VALUES (1,'Kim',3000);
|
| 일부 컬럼 삽입 | 컬럼 지정 |
INSERT INTO emp(name,salary) VALUES ('Kim',3000);
|
| 여러 행 삽입 | 한 번에 여러 데이터 |
INSERT INTO emp VALUES (1,'A',1000),(2,'B',2000);
|
| SELECT 결과 삽입 | 조회 결과를 삽입 |
INSERT INTO emp2 SELECT * FROM emp;
|
| AUTO_INCREMENT | 자동 증가 컬럼 | ID 생략 가능 |
update) usage
더보기
| 구분 | 설명 | 예시 |
| 단일 컬럼 수정 | 한 컬럼 변경 |
UPDATE emp SET salary=4000 WHERE id=1;
|
| 다중 컬럼 수정 | 여러 컬럼 변경 |
UPDATE emp SET salary=4000, dept='HR' WHERE id=1;
|
| 전체 수정 | WHERE 생략 | ⚠️ UPDATE emp SET salary=0; |
| 연산 가능 | 기존 값 기반 수정 | SET salary=salary*1.1 |
delete) usage
더보기
| 구분 | 설명 | 예시 |
| 조건 삭제 | 특정 행 삭제 | DELETE FROM emp WHERE id=1; |
| 전체 삭제 | WHERE 생략 | ⚠️ DELETE FROM emp; |
| 부분 삭제 | 조건식 활용 |
DELETE FROM emp WHERE salary<2000;
|
검색 순서
- from → where → group by → having → select → order by → keep (or skip)
'Database > Mysql' 카테고리의 다른 글
| [MySQL][SQL] 6. Join (0) | 2026.03.04 |
|---|---|
| [MySQL][SQL] 2-2. DML: Inner Function (Single Row) (0) | 2026.03.04 |
| [MySQL][SQL] 1. DDL (0) | 2026.03.03 |
| [Real MySQL] 4-2. 아키텍쳐: InnoDB 스토리지 엔진 아키텍쳐 (2) (6) | 2025.06.08 |
| [업무에 바로 쓰는 SQL 튜닝] 5. 악성 SQL 튜닝으로 전문가 되기 (0) | 2025.03.19 |