-
[SQLD 요약] II. SQL 기본 및 활용 - 01. SQL 기본 (4) - WHERE & GROUP자격증/SQLD (SQL 개발자) 2021. 5. 3. 13:28728x90반응형
SQLD 요약 / SQL Developer 요약
🔑 WHERE/ 연산자/ LIKE/ 와일드카드/ BETWEEN/ IN/ NULL/ GROUP BY/ HAVING/ 집계함수
II. SQL 기본 및 활용
01. SQL 기본
[1] 관계형 데이터베이스
[2] SQL 종류
[3] DDL (Data Definition Language)
[4] DML (Data Manipulation Language)
[5] WHERE문 사용
[6] GROUP 연산
[7] SELECT문 실행 순서
01. SQL 기본
[5] WHERE문
(1) WHERE문 | 조건을 지정하기 위함
- WHERE문이 사용하는 연산자: 비교/ 부정비교/ 논리/ SQL/ 부정SQL 연산자
비교 연산자 부정 비교 연산자 = 같은 것을 조회 ! = 같지 않은 것을 조회 < 작은 것 ^ = 같지 않은 것 < = 작거나 같은 것 < > 같지 않은 것 > 큰 것 NOT 칼럼명 = 같지 않은 것 > = 크거나 같은 것 NOT 칼럼명 > 같지 않은 것 논리 연산자 AND 조건을 모두 만족해야 TRUE OR 조건중 하나만 만족해도 TRUE NOT 반대로 바꿈: TRUE → FALSE / TRUE → FALSE SQL 연산자 부정 SQL 연산자 LIKE '%비교문자열%' 비교문자열 조회 NOT BETWEEN A AND B A와 B 사이에 해댱되지 않는 값 BETWEEN A AND B A와 B 사이의 값 조회 NOT IN (list) list 값과 불일치한 값 조회 IN (list) list 값 중 하나만 일치해도 조회 IS NOT NULL NULL값 아닌 것 조회 IS NULL NULL값 조회
(2) LIKE, BETWEEN, IN
- LIKE문: 와일드카드(%, _)를 사용하여 데이터 조회
와일드카드 예시 조회하는 데이터 % WHERE stdname LIKE 'Lee%'; 'Lee'로 시작하는 모든 데이터를 조회 WHERE stdname LIKE '%Yoon'; 'Yoon'으로 끝나는 모든 데이터를 조회 WHERE stdname LIKE '%Seo%'; 중간에 'Seo'가 있는 모든 데이터를 조회 WHERE stdname LIKE 'Lee'; 와일드카드%를 사용하지 않으면 '='와 같음 _ (underscore) WHERE stdno LIKE '1_'; '1'로 시작하고, 그 뒤에 문자 1개만 더 있는 데이터를 조회 - BETWEEN문: 지정된 범위에 있는 값을 조회
BETWEEN문 예시 조회하는 데이터 BETWEEN A AND B WHERE stdno BETWEEN 10 AND 20; 10이상 20이하 사이의 값을 조회 NOT BETWEEN A AND B WHERE stdno NOT BETWEEN 10 AND 20; 10미만 20초과인 값을 조회 - IN문: OR의 의미를 가짐 → 리스트 내에서 1개의 조건만 만족해도 조회
예시 조회하는 데이터 SELECT * FROM STUDENT
WHERE stdname IN ('Lee', 'Kim');stdname이 'Lee'이거나, 'Kim'인 데이터를 조회 SELECT * FROM STUDENT
WHERE (stdname, stdgrade) IN (('Lee', 3), ('Kim', 4));여러 칼럼에 대한 조건 지정: 칼럼명에 대응되도록 입력함
stdname, stdgrade 칼럼 2개에 대한 조건을 지정함
(3) NULL값 | 모르는 값 or 없는 값
- NULL값 조회
NULL 특징 NULL값 조회 - 모르는 값 & 값의 부재를 의미함 - IS NULL : NULL인 데이터를 조회 - NULL에 숫자 or 날짜를 더하면 → NULL - IS NOT NULL : NULL이 아닌 데이터를 조회 - NULL과 어떤 값을 비교하면 → '알 수 없음' 반환 - NULL 관련 함수: NVL, NVL2, NULLIF, COALESCE
NULL 함수 예시 조회하는 데이터 NVL : NULL이면 다른 값으로 바꿈 NVL(stdno, 0) stdno칼럼이 NULL이면 0으로 바꿈 NVL2 : NVL + DECODE 합친 기능 NVL2(stdno, 1, 0) stdno칼럼이 NULL이면 0, 아니면 1 NULLIF : 두개의 값이 같으면 NULL NULLIF(stdno, deptno) stdno, deptno 같으면 NULL, 다르면 stdno COALESCE : NULL이 아닌 최초의 값 COALESCE(exp1, exp2, exp3, ...) exp1이 NULL이 아니면 exp1, 그렇지 않으면 뒤로.. # (1) NULL값과 산술연산하면 결과는 NULL SELELCT (13/null)*2 FROM DUAL; # (2) COALESCE 예시: 결과값 2 SELECT COALESCE(NULL, '2', '1') FROM DUAL;
[6] GROUP 연산
(1) GROUP | 테이블에서 일부만 그룹화하여 집계함
- GROUP BY: 테이블에서 소규모 행을 그룹화 → 합계, 평균, 최댓값, 최솟값 등을 계산
- HAVING: GROUP BY에서 사용하는 조건절
- 조건절 주의: HAVING은 GROUP BY 내에서 조건 적용함
- 만약 WHERE절로 사용하면, GROUP BY 밖에서 조건을 적용
→ 조건을 충족하지 못하는 데이터는 GROUP BY 대상에서 제외됨
(2) 집계함수
- 집계함수 종류: COUNT, SUM, AVG, MAX, MIN, STDDEV, VARIAN
- COUNT(*) : NULL값을 포함한 모든 행의 수
- COUNT(col) : 해당 칼럼에서 NULL값을 제외한 행의 수
집계함수 기능 집계함수 기능 COUNT() 행 수 MAX(), MIN() 최댓값, 최솟값 SUM() 합계 STDDEV() 표준편차 AVG() 평균 VARIAN() 분산 [7] SELECT문 실행 순서 | FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY
- 사용 예제들
# (1) 학과별, 학년별 장학금 평균 계산 SELECT deptno, stdgrade, AVG(stdschol) FROM STUDENT GROUP BY deptno, stdgrade; # (2) 학과별 장학금 합계가 1000 이상인 학과 SELECT deptno, SUM(stdscol) FROM STUDENT GROUP BY deptno HAVING SUM(stdschol) >= 1000; # (3) 학번 1000 ~ 1500 번의 학과별 장학금 합계 SELECT deptno, SUM(stdschol) FROM STUDENT WHERE stdno BETWEEN 1000 AND 1500 GROUP BY deptno;
참고도서: SQL 개발자 이론서+기출문제_이기적, 2020
728x90반응형'자격증 > SQLD (SQL 개발자)' 카테고리의 다른 글
[SQLD 요약] II. SQL 기본 및 활용 - 01. SQL 기본 (6) - DCL & TCL (1) 2021.05.05 [SQLD 요약] II. SQL 기본 및 활용 - 01. SQL 기본 (5) - DECODE, CASE, ROWNUM, ROWID, WITH (0) 2021.05.04 [SQLD 요약] II. SQL 기본 및 활용 - 01. SQL 기본 (3) - DML (0) 2021.05.01 [SQLD 요약] II. SQL 기본 및 활용 - 01. SQL 기본 (2) - DDL (0) 2021.04.30 [SQLD 요약] II. SQL 기본 및 활용 - 01. SQL 기본 (1) - 관계형 데이터베이스와 SQL (1) 2021.04.28