0. 복습
DBMS
- 데이터베이스 관리 시스템
- DB에 존재하는 데이터를 관리하는 환경을 제공하는 프로그램
RDBMS
- 관계형 데이터베이스 관리 시스템
- 데이터를 테이블 형태로 저장해 놓는 데이터베이스
SQL
- DBMS의 데이터를 관리하기 위해 설계된 언어
SELECT
: 데이터를 조회할 때 사용
SELECT 컬럼명1, ... FROM 테이블명;
1) ORDER BY
- ORDER BY 컬럼명 [ASC or DESC];
2) DISTINCT : 중복제거
자료형
- 문자형 : char / varchar2
- 숫자형 : number
- 날짜 : date
연산자
1) 최우선 연산자 : ()소괄호 연산
2) 산술 연산자 : +, -, *, /
3) 연결 연산자 : 하나의 문자로 연결 a || b
4) 관계 연산자(비교 연산자) >, <, >=, <=, =, <>(!=)
5) SQL 연산자
6) 논리 연산자
WHRER절
- SELECT 문과 같이 사용
- 조건에 맞는 행을 찾을 때 사용
SELECT 컬럼명
FROM 테이블명
WHERE 조건
1. 연산자
1) SQL 연산자
: SQL에만 존재하는 연산자
(1) LIKE 연산자
- 문자열 패턴을 검색하는데 사용하는 연산자
(문자열이 부분 일치하는지)
- %(~아무거나), _(자릿수)
(2) BETWEEN a AND b
(3) IN(a, b, c, ...)
(4) IS NULL / IS NOT NULL
- NULL : "데이터가 없음"을 나타냄
- NULL에 숫자 등 다른 타입과 연산을 하면 => NULL
- NULL과 어떤 값과 비쇼하면 => "알수 없음" 반환
(5) 관계연산자 ANY(a, b, c, ...)
: a, b, c 중 아무거나 만족하면
(6) 관계연산자 ALL(a, b, c, ...)
: a, b, c 를 전부 만족한다면
2) 논리 연산자
: 여러개의 조건을 연결할 때 사용
- A AND B : A와 B 둘다 만족하는 경우
- A OR B : A와 B 둘 중 하나라도 만족하는 경우
- NOT A : A조건에 만족하지 않은 경우
2. NULL 관련 함수
1) NVL()
- NVL(컬럼명, 값)
해당 컬럼의 NULL값 대신 다른 값으로 변경 후 조회
2) NVL2()
- NVL2(컬럼명, NULL이 아닐 때 값, NULL일 때 값)
- NULL일때의 값, NULL이 아닐 때 값을 각각 설정
- NVL + DECODE 합친 기능
3) NULLIF()
- 두개의 값이 같으면 NULL
- NULLIF(컬럼1, 컬럼2)
- 행마다 컬럼1과 컬럼2의 값이 같으면 NULL, 다르면 컬럼1
4) COALESCE()
- NULL이 아닌 최초의 값
- COALESCE(값1, 값2, 값3, ...)
- 값1이 NULL이 아니면 값1 그렇지 않으면 뒤로 ~
3. DECODE & CASE문
: 특정 조건에 따라 원하는 값으로 조회할 때 사용
1) DECODE
- if문 구현
- DECODE(컬럼명, 조건1, 결과1, 조건2, 결과2, ..., 기본값)
- 특정 하나의 컬럼의 조건에 따른 조회 가능
2) CASE문
- 조건문 구현(관계(비교)연산자 사용 가능)
- CASE문 구성 : CASE ~ WHEN ~ THEN ~ ELSE
[CASE문 구조]
SELECT
CASE
WHEN 조건1 THEN 결과
WHEN 조건2 THEN 결과
...
ELSE 모든 조건에 맞지 않을 경우
END
FROM 테이블명;
- WHEN : 조건
- THEN : 조건이 참이면 실행
- ELSE : 모든 조건이 거짓이면 실행
4. 집계함수
집계함수 기능
============================
COUNT() 행의 개수
SUM() 합계
AVG() 평균
MAX() 최대값
MIN() 최소값
- 집계함수의 결과 행은 1개가 나온다 !!
- ** 주의사항 : NULL은 포함시키지 않는다, WHERE 절에 사용 불가 !!
- COUNT(*) : NULL을 포함한 모든 행의 개수
- COUNT(컬럼명) : 해당 컬럼에서 NULL 값을 제외한 행의 개수
5. 그룹 연산
1) GROUP BY 절
- 특정 컬럼에 있는 값을 그룹으로 묶어서 데이터를 집계한다
ex) 부서별 평균 급여, 팀별 평균 키, ... (~별, ~마다)
- SELECT문에서 사용하며 위치는 WHERE절 다음, ORDER BY 위에 작성
SELECT 컬럼
FROM 테이블
WHERE 조건
GROUP BY 컬럼명
ORDER BY 컬럼명
2) HAVING절
: GROUP BY절 다음에 작성하면서,
GROUP BY에 조건을 설정할 때 사용
- WHERE VS HAVING
- WHERE : 행에 조건을 걸 때 사용
- HAVING : GROUP BY로 나눈 그룹에 조건을 적용
** SQL 실행 순서
FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY