231027 TIL #227 SQL #2 WHERE문

김춘복·2023년 10월 27일
0

TIL : Today I Learned

목록 보기
227/543
post-custom-banner

Today I Learned

오늘은 SQL 책 2장을 이어서 학습했다.


WHERE문

DB에서 데이터를 가져올 때 특정 조건에 일치한 레코드만 가져온다.

사용 방법

SELECT 컬럼명
FROM 테이블명
WHRER 조건;

컬럼명을 테이블명에서 조건에 맞게 가져온다.

  • ex)
SELECT customer_name
FROM customer
WHERE membertype_id = 2;

결과

연산자

  • 비교 연산자
연산자사용법의미
=a = ba와 b는 같다
<=>a <=> ba와 b는 같다(NULL 대응)
!=a != ba와 b는 다르다
<>a <> ba와 b는 다르다
<a < ba는 b보다 크다
>a > ba는 b보다 작다
<=a <= ba는 b 이하다
>=a >= ba는 b 이상이다
membertype_id 	  = 	 2
좌변				연산자 	우변
결과는 1(TRUE), 0(FALSE), NULL
  • 연산자 좌우 공백은 넣든 안넣든 상관없다.
  • ex2)
SELECT product_name AS 상품명
FROM product
WHERE price >= 100;

결과

데이터형

데이터 종류데이터형데이터 작성법
문자열CHAR, VARCHAR, TEXT'A', "ab421", '가나다'
정수INT, TINYINT123456, 673
실수DOUBLE, FLOAT, DECIMAL3.14, 158.0000
날짜시각DATE, DATETIME'2023-10-27', '2024/01/01', '2024-01-01 01:23:45'
부울형BOOLEAN1(TRUE), 0(FALSE)
위도경도GEOMETRY'POINT(139.721251 35.689607)'
  • int, double 같은 수치형은 그대로 적는다.

  • 문자열이나 날짜시각은 '이나 "를 감싸서 적는다. '이 일반적이다.

  • boolean형은 IS나 IS NOT을 사용한다. IS TRUE or IS NOT TRUE.

NULL

어떤 데이터도 가지지 않은 상태. 무기입 상태

  • 단, 문자열은 길이가 0인 데이터('')를 입력할 수 있는데 이는 null과는 다르다.

  • IS NULL, IS NOT NULL을 써서 where문의 조건으로 사용한다.

  • <=> 이외의 연산자로 null을 비교하면 어떤 결과든 null이 된다.

  • <=>로 비교하면 NULL <=> NULL만 1이고 다른 값은 0이다.

문자열 검색

  • 문자열 검색은 = 나 !=로 일치여부를 검색할 수 있다.

  • 다만, = 'A'로 검색할경우 'A'뿐만 아니라 'a', 'A '까지 대소문자도 가리지않고 끝의 공백까지 무시되어 같이 검색된다.

  • BINARY : BINARY를 사용하면 대소문자와 끝의 공백을 가리고 완전히 일치하는 결과만 검색한다.
    ex)

SELECT * FROM product
WHERE name = BINARY 'A';
  • LIKE : LIKE를 %와 사용하면 일부분만 일치하는지 여부를 판정할 수 있다.
    % : %가 있는 곳에 0문자 이상의 임의의 문자가 있다는 뜻.
    _ : _가 있는 곳에 임의의 1문자가 있다는 뜻.

ex)

SELECT * FROM product
WHERE product_name LIKE '약용%';

  • \ : 이스케이프
    문자열 안에 '%'와 '_'를 검색하려면 앞에 \로 이스케이프 시켜야한다.
    ex)
SELECT * FROM product
WHERE product_name LIKE '%100\%%';
이스케이프의미
\%문자열 %
_문자열 _
\문자열 \
\'문자열 '
\"문자열 "
\n줄바꿈 문자
\t탭 문자
\b백스페이스 문자
\r복귀 줄바꿈 문자

대소 비교

  • 날짜나 문자열도 비교 연산자를 사용해 대소 비교가 가능하다

ex)

SELECT * FROM customer
WHERE birthday < '1990-01-01';
SELECT * FROM customer
WHERE name > 'A';
profile
Backend Dev / Data Engineer
post-custom-banner

0개의 댓글