본문 바로가기
Database

[MariaDB] 연산자

by qoth_0 2023. 11. 22.
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
  • CONVERT
    • 문자열을 날짜/시간으로 변환하는 데 사용
    • SELECT CONVERT(’20200101’, DATE); ⇒ 2020-01-01

  • DATE_FORMAT
    • DATE_FORMAT 함수는 날짜/시간 타입의 데이터를 지정된 형식의 문자열로 변환
    • 가장 많이 사용
    • DATE_FORMAT(date, format)
      • ex)SELECT DATE_FORMAT(’2020-01-01 17:12:00’, ‘%Y-%m-%d’); ⇒ 2020-01-01
      • SELECT *FROM post where DATE_FORMAT(created_time, ‘%Y-%m-%d’) = ‘2023-11-17’

  • 프로그래머스 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’
  • 오늘 날짜 관련 함수
    • 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
반응형

'Database' 카테고리의 다른 글

[MariaDB] 흐름제어  (0) 2023.11.22
[MariaDB] 제약조건  (0) 2023.11.22
[MariaDB] 데이터타입  (0) 2023.11.22
[MariaDB] DML  (1) 2023.11.22
[MariaDB] DDL  (1) 2023.11.22