FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY
테이블에 입력된 데이터를 조회하기 위해서 사용되며, 특징 컬럼/행 만 조회 가능문법
① SELECT : 모든 컬럼을 출력(''은 모든 컬럼을 의미)
② FROM 테이블명 : 테이블을 지정
③ WHERE 조건 : FROM에서 지정한 테이블의 조회 조건을 지정
① SELECT 컬럼1, 컬럼2 FROM 테이블 명;
-> 해당 테이블에서 컬럼 1,2만 출력
② SELECT * FROM 테이블 명;
-> 해당 테이블의 모든 컬럼과 행을 조회
③ SELECT 컬럼 1 :: '문자' FROM 테이블 명;
-> 해당 테이블의 모든 행에서 컬럼 1을 조회
- 단, 컬럼 1 뒤에 '문자'에 들어간 단어를 결합 / 컬럼 1 문자
① ASCII(문자) : 문자/숫자를 ASCII 코드 값으로 변환
-> ex) CHR(65) -> A
② LOWER(문자열) : 문자열을 소문자로 반환
-> ex) LOWER('JENNIE') -> jennie
③ UPPER(문자열) : 문자열을 대문자로 변환
-> ex) UPPER('jennie') -> JENNIE
④ LTRIM(문자열, 지정 문자) : 왼쪽에서 지정된 문자를 삭제
-> ex) LTRIM('JENNIE') -> JENNIE
⑤ RTRIM(문자열, 지정 문자) : 오른쪽에서 지정된 문자를 삭제
-> ex) RTRIM('JENNIE') -> JENNIE
⑥ TRIM(문자열, 지정 문자) : 왼쪽 및 오른쪽에서 지정된 문자 삭제
-> ex) TRIM('JENNIE') -> JENNIE
⑦ SUBSTR(문자열, m, n) : 문자열 m번째 위치부터 n개를 자름
-> ex) SUBSTR('블랙핑크제니', 3, 2) -> 핑크
⑧ LENGTH(문자열) : 공백 포함 문자열의 길이를 알려줌
-> ex) LENGTH('JENNIE') -> 6
⑨ REPLACE(문자열, 찾는 문자열, [변경할 문자열]) : 변경할 문자 미입력시 없앰.
-> ex) REPLACE('블랙핑크제니', '제니', '지수') -> 블랙핑크지수
⑩ LPAD(문자열, 길이, 문자) : 문자열이 설정한 길이가 될 때 까지 왼쪽을 특정문자로 채우는 함수
-> ex) LPAD('JENNIE', 10, 'V') -> VVVVJENNIE
① ABS(숫자) : 절대값 변환
-> ex) ABS(-1) -> 1
② SIGN(숫자) : 양수, 음수, 0을 구분
-> ex) SIGN(-n) -> -1, SIGN(n) -> 1
③ ROUND(숫자, m) : 소수점 m자리에서 반올림(m의 기본 값은 0)
-> ex) ROUND(17.5) -> 18
④ TRUNC(숫자, m) : 소수점 m자리에서 절삭(m의 기본 값은 0)
-> ex) TRUNC(18.5) -> 18
⑤ CEIL(숫자) : 숫자보다 크거나 같은 최소의 정수 반환
-> ex) CEIL(17.5) -> 18
⑥ FLOOR(숫자) : 숫자보다 작거나 같은 최대의 정수 반환
-> ex) FLOOR(17.5) -> 17
⑦ MOD(숫자 1, 숫자 2) : 숫자 1을 숫자 2로 나눈 나머지를 계산
-> ex) MOD(15, 7) -> 1
① SYSDATE : 오늘의 날짜를 날짜 타입으로 변환
② EXTRACT(YEAR FROM SYSDATE) : 날짜에서 년, 월, 일 조회
③ ADD_MONTHS(날짜 데이터, 특정 개월 수) : 날짜데이터에서 특정 개월 수를 더한 날짜를 반환해주는 함수
-> ex) ADD_MONTHS(DATE '2022-01-31', 1) -> 2022-02-28
1/12 : 하루를 12 등분 한 값
-> 24등분을 12롷 나누면 1은 2시간
① 명시적 형변환 : 변환함수를 사용하여 데이터 유형 변환을 명시적으로 나타냄
② 암시적 형변환 : 데이터베이스가 내부적으로 알아서 데이터 유형을 변환함
쓰이는 함수
ⓐ TO_NUMBER(문자열) : 문자열을 숫자형으로 변환해주는 함수
-> TO_NUMBER('1234') -> 1234
ⓑ TO_CHAT(숫자 or 날짜) : 숫자나 날짜형의 데이터를 포멧 형식의 문자형으로 변환해주는 함수
-> TO_CHAT(1234) -> '1234'
ⓒ TO_DATE(문자열, 포맷) : 포맷 형식의 문자형의 데이터를 날짜형으로 변환해주는 함수
-> TO_DATE('20210602', 'YYYYMMDD') -> 2021-06-02
① NVL(인수1, 인수2) : 인수1이 NULL일 경우 인수2 반환, 아니면 인수1을 반환
-> ex) NVL(REVIEW_SCORE, 0), 컬럼 데이터가 NULL일 경우 0 반환, 널이 아닐 경우 컬럼 값 반환
② NULLIF(인수1, 인수2) : 인수1 == 인수2 이면 NULL을 반환, 아니면 인수1을 반환
③ COALESCE(인수1, 인수2, 인수3 ...) : NULL이 아닌 최초의 인수 반환
④ NVL2(인수1, 인수2, 인수3) : 인수1이 NULL이 아니면 인수2 반환, NULL인 경우 인수3 반환
조건을 WHERE구에 사용, 조건이 참이면 THEN 반환, 거짓이면 ELSE 반환
구조CASE(expression) WHEN condition_1 THEN result_1 WHEN condition_2 THEN result_2 ... ELSE result END
원하는 자료만을 검색하기 위한 조건문, 집계함수를 사용할 수 없다.
연산자 종류
| 비교연산자 | 비교연산자 |
|---|---|
| = | 같음 |
| < | 작음 |
| <= | 작거나 같음 |
| > | 큼 |
| >= | 크거나 같음 |
| 부정비교자 | 부정비교자 |
|---|---|
| != | 같지 않음 |
| ^= | 같지 않음 |
| <> | 같지 않음 |
| not 컬럼명 = | 같지 않음 |
| not 컬럼명 > | 크지 않음 |
① BETWEEN A AND B : A와 B의 범위에 있는 값을 조회
-> Wherer col between 1 and 10
② LIKE '비교문자열' : 비교문자여을 조회 / % : 어떤 문자를 포함한 모든 것을 조회 / (underscore) : 한개인 단일 문자를 의미
-> Where col like '%탄소년%'/ Where col like '방소%'
③ IN(LIST) : LIST 값 중 하나만 일치해도 조회 / OR의 의미를 가지고 있어서 하나의 조건만 만족해도 조회
-> Where col in(1,3,5)
④ ISNULL : NULL 값을 조회 / NULL 값은 모르는 값, 값의 부재를 의미
-> ex) Where col is null
① NOT BETWEEN A AND B : A와 B 사이에 해당되지 않은 값
-> ex) Where col not between 1 and 10
② NOT IN(LIST) : LIST와 불일치한 것을 조회
-> ex) Where col not in(1,3,5)
③ IS NOT NULL : NULL 값이 아닌 것을 조회
-> ex) Where col is not null
① AND : 조건을 모두 만족해야 TRUE 반환
-> ex) Where col > 1 and col < 10
② OR : 조건 중 하나만 만족해도 TRUE 반환
-> ex) Where col = 1 or col = 10
③ NOT : TRUE/FALSE의 결과 값을 반대로 출력
-> ex) Where not col > 10
테이블에서 소규모 행을 그룹화하여 합계/평균/최댓값/최솟값을 계산, NULL 데이터도 집계에 포함
집계 함수
① COUNT(*) : 테이블의 모든 행을 셉니다.
② COUNT(컬럼) : 해당 컬럼에서 NULL이 아닌 값만 셉니다.
③ COUNT(DISTINCT 컬럼) : 특정 열의 중복된 값을 제외하고 고유한 값의 개수
④ SUM(컬럼)/AVG(컬럼)/MIN(컬럼)/MAX(컬럼) : 합계/평균/최솟값/최댓값을 반환
GROUP BY에 조건절을 사용하기 위한 조건문
WHERE 절에 조건문을 사용하게 된다면 조건 충족을 하지 못하는 데이터들은 GROUP BY 대상에서 제외됨
결과를 특정 열을 기준으로 "오름차순" 또는 "내림차순"으로 정렬하는데 사용
- ASC : 오름차순 *Default값
- DESC : 내림차순
여러 개의 릴레이션을 사용하여 새로운 릴레이션을 만드는 과정
① EQUI JOIN(등가)
- 조인의 가장 기본으로 두 개의 테이블 간에 일치하는 것을 조인
- "="을 사용하여 두 개의 테이블을 연결
②-① NON EQUI JOIN(비등가)- 정확하게 일치하지 않는 것을 조인
- ">", "<", ">=", "<=" 사용
②-② STANDARD JOIN- ANSI/ISO 표준 SQL에서 규정
① INNER JOIN- JOIN 조건에서 동일한 값이 있는 행만 반환(ON으로 테이블 연결)
② OUTER JOIN- 두 개의 테이블 간에 EQUI JOIN을 조회하고 한 쪽 테이블에만 있는 데이터도 포함시켜서 조회(동일한 값이 없는 행도 반환)
1) LEFT OUTER JOIN
- 두 테이블에서 같은 것을 조회하고 좌측 테이블 데이터를 포함해서 조회
- 우측 값에서 좌측과 같은 데이터가 없는 경우 NULL
2) RIGHT OUTER JOIN- 두 테이블에서 같은 것을 조회하고 우측 테이블 데이터를 포함해서 조회
- 좌측 테이블의 NULL인 행도 조회
3) NATURAL JOIN- 두 개에 테이블에 공통인 행만 남기는 것
- ON절 사용 불가
4) CROSS JOIN- 조인 조건구 없이 두 개의 테이블을 하나로 조인