
논리연산자를 사용할 때는 (괄호)를 잘 사용해야 한다.
WHERE를 사용할 때, 조건 여러가지를 중첩해서 사용하려고 하면 AND,OR을 사용하게 된다. 그러나 조건들을 잘 묶어주지 않으면 SQL에서는 WHERE 이후에 논리연산자가 나오게 되면 논리연산자 앞에서 조건을 마무리 한다.
where 직업 = '아나운서' or '승무원' #아나운서인 경우만 확인
where 직업 = ('아나운서' or '승무원') # 아나운서 or 승무원 확인
where 조건1 and 직업 = '아나운서' or '승무원' # 조건 1과 아나운서만 확인.
where (조건1 and (직업 = '아나운서' or '승무원')) # 이렇게 묶어주는 버릇을 들여라.
시간을 포현하는 방식은 다양하다, 날짜형으로 표현하기도 하고, 문자형으로 날짜를 표현하기도 한다. 또한 년도,월,일,시간등...어디까지 표현할 것인지도 사용자의 마음이다. 따라서 각각의 상황에 맞춰 함수를 사용해야 한다.
| 함수 | 설명/형식 |
|---|---|
| DATE() | 시간 정보가 없는 날짜 / 'YYYY-MM-DD' |
| TIME() | 날짜 정보가 없는 시간 /'HH:MM:SS' |
| DATETIME() | 날짜 및 시간 정보 / 'YYYY-MM-DD HH:MM:SS' |
| TIMESTAMP() | 범위가 있는 날짜 및 시간정 정보 / '1970-01-01 00:00:01' UTC에서 '2038-01-19 03:14:07' UTC까지 |
또한 다양한 형식으로 바꿔주기 위해서
date_format(date칼럼,'원하는 형식')
2024-04-01(월)-18:45:14
| 구분기호 | 역할 | 구분기호 | 역할 | - |
|---|---|---|---|---|
| %Y | 2024 | %y | 24 | 년 |
| %M | April | %b | apr | 월 |
| %m | 04 | %c | 4 | 월 |
| %d | 01 | %e | 1 | 일 |
| %W | Monday | %a | Mon | 요일 |
| %I | 06 | %H | 18 | 시 |
| %i | 45 | %S | 14 | 분/초 |
| %T | hh:mm:SS | %r | hh:mm:ss AM,PM |
오라클에서는 TO_CHAR를 사용한다. 참고정도로 알아두자.
| 구분기호 | 역할 | 구분기호 | 역할 |
|---|---|---|---|
| CC | 세기 | YYYY/YYY/YY/Y | 년도 |
| YEAR | 문자 년도 | BC or AD | BC/AD |
| Q | 분기 | MM | 두 자리 월 |
| MONTH | 월 | MON | 1 |
| DAY | 요일 이름 | DY | 요일 약어 |
이외에도 다양한 것들을 표현하는 문자들이 있지만, 사용하면서 알아보고, 필요할 때 찾자.
distinct를 사용할 때 집계함수를 사용할 때는 집계함수 뒤에 괄호 안에 distinct를 넣어서 사용해야 한다.
select 칼럼, count(distinct 칼럼)
# count distinct 칼럼 XXX
from 테이블
between 숫자1 and 숫자2
left 함수는 문자열을 받아서 왼쪽부터 원하는 길이 만큼 자르는 함수다.
오른쪽 부터는 right, 원하는 부분은 substring이 있다.
left(문자열,길이)
right(문자열,길이)
substr(문자열,시작위치,길이)
찾고싶은 문자열이 일치하면 입력한 순서의 인덱스를 출력하고, 찾지 못했다면 0 출력
INSTR('문자열','찾고싶은 문자열',시작위치,순서)
IFNULL 함수는 해당 칼럼 값이 NULL을 반환할 때, 다른 값으로 출력할 수 있도록 한다.
기본 구조
SELECT IFNULL(Column명, "Null일 경우 대체 값") FROM 테이블명;
이미 예약어가 존재하는 칼럼명을 설정하고 싶다면 백틱(`:1 왼쪽에 있는)을 사용하여 지정한다.
join을 간단하게 방법으로 USING절을 사용할 수 있다. USING절은 테이블1과 테이블2에 있는 key들을 묶어줄 수 있다.
using문법
SELECT 칼럼1, 칼럼2
FROM 테이블1 as a INNER JOIN 테이블2 as b
USING (key칼럼1, key칼럼2)