목차
원하는 행만 출력하기(필터링, WHERE)
- 행에 필터링 주고 싶을 때는 WHERE 문법을 사용합니다.
- 테이블 모든 데이터 출력
- 원하는 행만 필터링
-
SELECT * FROM 테이블명 WHERE 조건식
- 조건식 예시 : 컬럼명 = "값"
- 예시
- product 테이블에서 카테고리가 가구인 행만 출력
-
SELECT * FROM product WHERE 카테고리="가구"
-
- product 테이블에서 가격이 5000인 행만 출력
-
SELECT * FROM product WHERE 가격=5000
-
- 참고
- 문자 타입 자료 표현할 땐 " " 나 ' ' 로 묶어주기 (문자 타입 데이터만 " ", ' ' 로 표시!)
- 숫자 타입 자료 표현은 그냥 숫자만 표시
- 테이블명이나 데이터베이스명도 그냥 이름만 표시
- product 테이블에서 카테고리가 가구인 행만 출력
-
- 조건식 여러 개 사용하여 필터링하기 (AND / OR 써서 조건식 붙이기)
- SELECT * FROM 테이블명 WHERE 조건식1 AND 조건식2 AND (조건식3 OR 조건식4) AND 조건식5 .....
- 어떤 것을 먼저 연산할지는 ( ) 를 통해 지정해 줄 수 있습니다.
- , (쉼표)를 사용하지 않고 AND/OR을 사용합니다.
- 예시
- 가격이 5000이면서 카테고리가 "가구"인 행 출력하기
-
SELECT * FROM product WHERE 가격=5000 AND 카테고리="가구"
-
- 가격이 5000이거나 카테고리가 "가구"인 행 출력하기
-
SELECT * FROM product WHERE 가격=5000 OR 카테고리="가구"
-
- 가격이 5000이면서 카테고리가 "가구"인 행 출력하기
- SELECT * FROM 테이블명 WHERE 조건식1 AND 조건식2 AND (조건식3 OR 조건식4) AND 조건식5 .....
WHERE 조건식
= , !=, >, <, >=, <= (비교연산자)
- = , !=, >, <, >=, <= (비교연산자)
- 참고 : 문자에도 부등호 사용 가능합니다. ('가' < '나' , '나' < '다' , 'a' < 'b' )
- 상품명이 ㅅ보다 큰 값 출력해보기
-
SELECT * FROM product WHERE 상품명>"ㅅ"
-
- 상품명이 ㅅ보다 큰 값 출력해보기
- 참고 : 문자에도 부등호 사용 가능합니다. ('가' < '나' , '나' < '다' , 'a' < 'b' )
BETWEEN AND
- BETWEEN ~ AND ~ 연산자
- BETWEEN ~ AND ~ 는 양쪽 두 값을 포함합니다. (즉, 이상 이하)
- 가격이 5000부터 8000원 사이인 행 출력하기
-
SELECT * FROM product WHERE 가격 BETWEEN 5000 AND 8000
-
NOT
- NOT
- 조건식 앞에 붙일 수 있는 NOT 연산자
- 해당 조건식을 제외해 주는 것
- 가격이 5000원이 아닌 행 출력하기
-
SELECT * FROM product WHERE NOT 가격=5000;
- WHERE 가격!=5000 으로 해줘도 상관없습니다.
-
IN
- IN
- IN 을 사용하지 않을 경우 (OR 로 일일히 처리)
- 카테고리가 신발, 가전, 식품인 데이터 출력하기 (OR로 처리)
-
SELECT * FROM product WHERE 카테고리="신발" OR 카테고리="가전" OR 카테고리="식품"
-
- 카테고리가 신발, 가전, 식품인 데이터 출력하기 (OR로 처리)
- IN으로 표현하기
-
SELECT * FROM 테이블명 WHERE 컬럼명 IN (값, 값, 값)
- 카테고리가 신발, 가전, 식품인 데이터 출력하기
-
SELECT * FROM product WHERE 카테고리 IN ("신발","가전","식품")
-
-
- 여러 개의 IN을 AND로 묶어주기
- 카테고리가 신발, 가전, 식품 중에 있고, 가격이 3000,4000,8000 중에 있는 데이터 출력하기
-
SELECT * FROM product WHERE 카테고리 IN ("신발","가전","식품") AND 가격 IN (3000,4000,5000)
-
- 카테고리가 신발, 가전, 식품 중에 있고, 가격이 3000,4000,8000 중에 있는 데이터 출력하기
- IN 을 사용하지 않을 경우 (OR 로 일일히 처리)
LIKE
- LIKE
- %
-
SELECT * FROM 테이블명 WHERE 컬럼명 LIKE '%특정단어%'
- 아무문자 + 특정단어 + 아무문자 를 찾아주는 것
- (LIKE + '% %' 기억하기)
- %는 아무 문자(와일드카드)라는 뜻임
- 0자~무한
- %가 좋다고 막 쓰면 성능저하가 발생할 수 있습니다. %를 앞에 붙이면 검색할 때 index활용을 하지 못하게 됩니다.
- LIKE, %는 VARCHAR()컬럼에 주로 사용합니다.
- CHAR() 컬럼에 사용할 때는 주의가 필요합니다. CHAR()의 경우 무조건 공백으로 나머지 자리를 채우게 됩니다. 따라서 아래와 같이 가죽소파라고 저장된 데이터가 있다고 하면은 가죽소파_ _ 로 저장되기 때문에 단순히 "%소파"로 검색하면 검색결과가 나오지 않게 됩니다.
- 공백도 문자이기 때문
- CHAR() 컬럼에 사용할 때는 주의가 필요합니다. CHAR()의 경우 무조건 공백으로 나머지 자리를 채우게 됩니다. 따라서 아래와 같이 가죽소파라고 저장된 데이터가 있다고 하면은 가죽소파_ _ 로 저장되기 때문에 단순히 "%소파"로 검색하면 검색결과가 나오지 않게 됩니다.
-
- _ (밑줄)
-
SELECT * FROM 테이블명 WHERE 컬럼명 LIKE '_특정단어_'
- 아무문자(1글자) + 특정단어 + 아무문자(1글자) 를 찾아주는 것
- (LIKE + "_ _ " 기억하기)
- _는 아무 문자(와일드카드)라는 뜻임
- %는 0자부터 무한을 의미하지만 _ 는 단순히 1글자의 아무 문자를 의미합니다.
-
- %
- 예시
- 소파로 끝나는 단어 찾기
-
SELECT * FROM product WHERE 상품명 LIKE "%소파"
-
- 레드로 시작하는 단어 찾기
-
SELECT * FROM product WHERE 상품명 LIKE "레드%"
-
- 소파앞 한글자 있는 단어 찾기 _소파("_"가 1개)
-
SELECT * FROM product WHERE 상품명 LIKE "_소파"
-
- 소파앞 두글자 있는 단어 찾기 __소파("_"가 2개)
-
SELECT * FROM product WHERE 상품명 LIKE "__소파"
-
- 복잡한 검색도 가능
-
SELECT * FROM product WHERE 상품명 LIKE "%퍼%니%"
-
- 소파로 끝나는 단어 찾기
IS NULL / IS NOT NULL
- IS NULL / IS NOT NULL
- NULL을 비교할 때는 = 를 이용하면 안됩니다.
- IS NULL 이나 IS NOT NULL을 이용해야 합니다.
- 고객 테이블에서 나이가 이미 입력된 고객의 고객이름을 검색해보기
-
SELECT 고객이름 FROM 고객 WHERE 나이 IS NOT NULL
-
예제
- 재고가 20이하인 상품들을 상품명 가나다 순으로 출력하기
-
SELECT * FROM product WHERE 재고<=20 ORDER BY 상품명 asc
- (ORDER BY는 가장 마지막에 사용. 필터링하고 정렬하는 것이 올바른 순서)
-
- 가격이 3000원 미만이거나 6000원 초과인 상품들 출력하기
-
SELECT * FROM product WHERE 가격<3000 OR 가격>6000
-
- 카테고리가 옷이 아닌 것들 중 가격이 5천원인 상품들만 출력하기
-
SELECT * FROM product WHERE NOT 카테고리="옷" AND 가격=5000
-
SELECT * FROM product WHERE 카테고리!="옷" AND 가격=5000
-
- 상품명이 셔츠, 반팔티, 운동화가 아닌 상품들만 출력하기
-
SELECT * FROM product WHERE NOT 상품명 IN ("셔츠","반팔티","운동화")
-
- "Green"으로 시작해서 "chair"로 끝나는 상품명 검색하기
-
SELECT * FROM product WHERE 상품명 LIKE "Green%chair"
-
- 상품명에 '소파'가 들어있거나 'chair'가 들어있는 모든 상품 검색하기
-
SELECT * FROM product WHERE 상품명 LIKE "%소파%" OR 상품명 LIKE "%chair%"
-
- 상품명에 '소파'가 들어있는데 '나무'는 들어있지 않은 모든 상품을 검색해보기
-
SELECT * FROM product WHERE 상품명 LIKE "%소파%" AND NOT 상품명 LIKE "%나무%"
-
출처
'Database > MySQL' 카테고리의 다른 글
컬럼 출력시 사칙연산 넣기 / 문자,숫자 다루는 함수 (1) | 2024.02.29 |
---|---|
MIN, MAX, AVG, SUM, COUNT 집계함수로 통계내기 (0) | 2024.02.28 |
데이터 출력 / 정렬 (SELECT / ORDER BY) (0) | 2024.02.27 |
(데이터베이스)테이블 생성,삭제(Data Type) / 데이터 삽입, 수정, 삭제 (0) | 2024.02.27 |
My SQL 설치 (1) | 2024.02.27 |