Database
[MariaDB] 연산자
qoth_0
2023. 11. 22. 09:58
728x90
반응형
비교 연산자
- =
→ select *from post where id = 1;
- ! =, <> (같지않음)
→ select *from post where id != 1;
→ select *from post where id <> 1;
- <, < =, >, > =
→ select * from author where age > 3;
- IS NULL, IS NOT NULL (is 대신 =는 불가능)
- BETWEEN min AND max
- 피연산자의 값이 min 값보다 크거나 max보다 작으면 참을 반환 (이상, 이하-min,max값 포함)
- IN(), NOT IN()
→ select * from post where id not in(1,2,3);
논리 연산자
- AND
- &&도 가능
- SELECT * from author where name = ‘홍길동’ AND age=20;
→ 이름이 홍길동이고, 나이가 20인 사람을 조회 (두 조건이 모두 참이어야 함)
- OR
- ||
- select * from author where name= ‘홍길동’ or age = 20;
→ 이름이 홍길동이거나 나이가 20인 사람을 조회 (한 조건만 참이어도 됨)
- NOT
- !
실습
- author 테이블의 id가 1, 2, 4는 아닌 데이터 조회(NOT IN 사용)
select * from author where id not in(1, 2, 4);

- post 테이블의 id가 2~4까지의 데이터 조회
- between 활용
select * from post where id between 2 and 4;
- and 조건 활용
select * from post where id > 1 and id < 5;
- or 조건 활용
select * from post where not (id < 2 or id > 4);
검색 패턴
- LIKE
- 특정 패턴을 포함하는 데이터만을 검색하기 위한 와일드카드 문자
- 일반적으로 %와 함께 사용됨
- SELECT * FROM author WHERE name LIKE ‘동%’; - 동으로 시작하는 문
- SELECT * FROM author WHERE name LIKE ‘%동’; - 동으로 끝나는 문자
- SELECT * FROM author WHERE name LIKE ‘%동%’; - 동이 들어가는 문자
- NOT LIKE
- REGEXP
- 정규표현식을 토대로 패턴 연산 수행
- SELECT * FROM author WHERE name REGEXP ‘[a-z]’; - a~z까지를 포함한 문자
- SELECT * FROM author WHERE name REGEXP ‘[가-힣]’; - 한글이 들어있는 문자
- NOT REGEXP
강사님이 정규표현식 잘하면 임팩트 있따 햇음 저번 vi 마냥ㅋㅋㅋㅋ
퍼포먼스 보여줄수있다고
타입 변환 함수
- CAST
- CAST(a AS type)
- a값을 type으로 변환
- 보통 정수 값을 DATE 타입으로 변환하는데 사용
- SELECT CAST(20200101 AS DATE); ⇒ 2020-01-01
- DATE_FORMAT
- DATE_FORMAT 함수는 날짜/시간 타입의 데이터를 지정된 형식의 문자열로 변환
- 가장 많이 사용
- 프로그래머스 sql 문제 풀이(data타입 변환 관련 - 조건에 맞는 도서 리스트 출력하기)
- 2021 출판 중 인문 카테고리
- 출판일 오름차순 정렬
- DATE FORMAT 형식 맞춰서 출력
-- 방법 1 (DATE_FORMAT)
SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE FROM BOOK WHERE CATEGORY = '인문' AND DATE_FORMAT(PUBLISHED_DATE, '%Y') = '2021' ORDER BY PUBLISHED_DATE;
-- 방법 2 (LIKE)
SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE FROM BOOK WHERE CATEGORY = '인문' AND PUBLISHED_DATE LIKE '2021%' ORDER BY PUBLISHED_DATE;
-- 방법 3 (BETWEEN)
SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE FROM BOOK WHERE CATEGORY = '인문' AND PUBLISHED_DATE BETWEEN '2021-01-01' AND '2021-12-31' ORDER BY PUBLISHED_DATE;
CAST, CONVERT 사용 시 유의사항
- 최신버전
- CAST(’123’ as INT) 방식으로 int 사용 가능
- CAST(’123’ as signed)방식으로 signed(또는 unsigned)사용 가능
- 구버전
- CAST(’123’ as signed)방식으로 signed(또는 unsigned)만 사용 가능 -코테할때 구버전일 경우가 많으니 알아두기
오류 발생 실행 성공 - 여기서 signed는 부호있는 정수, 즉, 음수/양수 모두 포함
- unsigned는 부호없는 정수로서 0이상 양수를 의미
특정 날짜, 기간 조회
- 날짜 데이터 조회하는 방식 중 많이 사용 하는 방식
- DATE_FORMAT(date, format)을 활용한 조회
- Y, mm, dd, H, i, s (대소문자 구분)
- LIKE를 사용하여 문자열 형식으로 조회
- SELECT * FROM post WHERE create_time like ‘2023%’;
- BETWEEN 연산자
- 특정 날짜 범위를 지정하여 데이터를 검색
- WHERE create_time BETWEEN ‘2021-01-01’ AND ‘2023-11-17’;
- 날짜 비교 연산자
- WHERE created_time ≥ ‘2021-01-01’ AND created_time ≤ ‘2023-11-17’
- DATE_FORMAT(date, format)을 활용한 조회
- 오늘 날짜 관련 함수
- now() → 매번 y-m-d를 하드코딩하지 말고 now로 활용가능
SELECT * FROM post where DATE_FORMAT(created_time, '%Y-%m-%d') = DATE_FORMAT(now(), '%Y-%m-%d');
날짜 강제 수정 후 조회한 것
어느 조직에서든 전문가가 아닌채로 버티는 게 얼마나 비참한지
차라리 전문지식을 쌓아서 전문가가 되기 위해 노력하는게 낫겟다 싶으셧다고 하심
나도 그래서 퇴사하고 펴입을 한고지ㅣㅇㅇ
몬가 다시 마음을 잡게 된당
Uploaded by N2T
728x90
반응형