[2023.11.22] SQL_비교연산자, 논리연산자

하은·2023년 11월 22일
0

- 비교연산자

  • A = B
    A와 B가 같은
  • A > B
    A가 B보다 큰 (초과)
  • A < B
    A가 B보다 작은 (미만)
  • A >= B
    A가 B보다 크거나 같은 (이상)
  • A <= B
    A가 B보다 작거나 같은 (이하)
  • A <> B
    A가 B보다 크거나 작은 (같지 않은)
  • A != B
    A와 B가 같지 않은

--

  • 예) 나이가 29세가 아닌 데이터 검색
    SELECT name, age FROM celab WHERE age != 29 ORDER BY age;
  • 예) 나이가 29세보다 크거나 같지 않은 데이터 검색
    SELECT name, age FROM celab WHERE age <> 29 ORDER BY age;

선택 데이터랑, 정렬하는 데이터를 다양하게 쓰기


논리연산자

  • AND
    조건을 모두 만족하는 경우 TRUE
  • OR
    하나의 조건이라도 만족하는 경우 TRUE
  • NOT
    조건을 만족하지 않는 경우 TRUE
  • BETWEEN
    조건값이 범위 사이에 있으면 TRUE
  • IN
    조건값이 목록에 있으면 TRUE
  • LIKE
    조건값이 패턴에 맞으면 TRUE

AND 문법

조건을 모두 만족하는 경우 TRUE

SELECT column1, column2, ...
FROM tablename
WHERE condition1 AND condition2 AND condition3 ... ;
여러개의 조건을 사용, 모두 만족해야함

  • 예) 나이가 29세이고 성별이 여성인 데이터 검색
    SELECT * FROM celab WHERE age=29 and sex='F';

OR 문법

- 하나의 조건이라도 만족하는 경우 TRUE

SELECT column1, column2, ...
FROM tablename
WHERE condition1 OR condition2 OR condition3 ... ;

  • 예) 나이가 25세보다 작거나 30세보다 큰 데이터 검색
    SELECT * FROM celab WHERE age < 25 or age > 30 ORDER BY age;
  • 예) 나이가 29세보다 작고 여자이거나, 30세보다 크고 남자인 데이터를 나이와 성별순으로 정렬해서 검색
    SELECT FROM celab WHERE age < 25 and sex = 'F') OR (age > 30 and sex = 'M') ORDER BY age, sex;

- NOT 문법

- 조건을 만족하지 못하는 경우 TRUE

SELECT column1, column2, ...
FROM tablename
WHERE NOT condition;

  • 예) 성별이 여자가 아닌 데이터 검색
    SELECT * FROM celeb WHERE NOT sex="F";
  • 예) 생일이 1990년 이후이면서 여자가 아니거나, 생일이 1979년 이전이면서 소속사가 안테나가 아닌 데이터 검색
    SELECT * FROM celeb WHERE (birthday > 19891231 AND NOT sex = 'F') OR (birthday < 19800101 AND NOT agency = '안테나');

- BETWEEN 문법

- 조건값이 범위 사이에 있으면 TRUE

SELECT column1, column2, ...
FROM tablename
WHERE column1 BETWEEN value1 and value2;

  • 예) 나이가 20세에서 40세 사이의 데이터 검색
    SELECT FROM celeb WHERE age BETWEEN 20 AND 40;
    = SELECT
    FROM celeb WHERE age >= 20 AND age <= 40;
  • 예) 생년월일이 1980년에서 1995 사이가 아니면서 여자이거나, 소속사가 YG엔터테인먼트이면서 나이가 20세에서 45세 사이가 아닌 데이터 검색
    SELECT * FROM celab WHERE ((NOT birthday BETWEEN 19800101 and 19951231) AND sex='F') OR (agency = 'YG엔터테인먼트' AND (NOT age BETWEEN 20 AND 45));

- IN 문법

- 목록 안에 조건이 존재하는 경우 TRUE

SELECT column1, column2, ...
FROM tablename
WHERE column IN (value1, value2, ...);

  • 예) 나이가 28세, 48세 중 하나인 데이터 검색
    SELECT FROM celab WHERE age IN (28, 48);
    = SELECT
    FROM celab WHERE age = 28 or age = 48;
  • 예) 소속사가 (나무엑터스, 안테나, 울림엔터테인먼트가 아니면서), (성별이 여자거나 나이가 45세 이상인) 데이터 검색
    SELECT * FROM celab WHERE NOT agency IN ('나무엑터스', '안테나', '울림엔터테인먼트') AND (sex='F' OR age >= 45);

- LIKE 문법

- 조건값이 패턴에 맞으면 TRUE

SELECT column1, column2, ...
FROM tablename
WHERE column LIKE pettern;

  • 예) 소속사 이름이 'YG엔터테인먼트'인 데이터 검색
    SELECT FROM celab WHERE agency LIKE 'YG엔터테인먼트';
    = SELECT
    FROM celab WHERE agency = 'YG엔터테인먼트';

  • 예) 'YG'로 시작하는 소속사 이름을 가진 데이터 검색
    SELECT * FROM celab WHERE agency LIKE 'YG%';

  • 예) '엔터테인먼트'로 끝나는 소속사 이름을 가진 데이터 검색
    SELECT * FROM celab WHERE agency LIKE '%엔터테인먼트';

  • 예) 직업명에 '가수'가 포함된 데이터 검색
    (시작, 끝, 중간포함 다 OK)
    SELECT * FROM celab WHERE job_title LIKE '%가수%';

  • 예) 소속사 이름의 두번째 글자(세번째 글자)가 G인 데이터를 검색
    SELECT * FROM celab WHERE agency LIKE '_G%' ; ('__G%');

  • 예) 직업명이 '가'로 시작하고 최소 2글자 이상인 데이터를 검색
    SELECT * FROM celab WHERE jobtitle LIKE '가%';

  • 예) 직업명이 '가'로 시작하고 최소 2글자(5글자) 이상인 데이터를 검색
    SELECT * FROM celab WHERE jobtitle LIKE '가%'; ('가____%');

  • 예) 직업명이 '영'로 시작하고 '모델'로 끝나는 데이터를 검색
    SELECT * FROM celab WHERE job_title LIKE '영%모델';

  • 예) 영화배우와 텔런트를 병행하는 연예인 검색
    SELECT * FROM celab WHERE job_title LIKE '%영화배우%' AND job_title LIKE '%텔런트%';

  • 예) 직업이 하나 이상인 연예인 중 영화배우 혹은 텔런트가 아닌 연예인 검색
    SELECT * FROM celab WHERE job_title LIKE '%,%'
    AND NOT (job_title LIKE '%영화배우%' OR job_title LIKE '%텔런트%) ;

  • 예) 성별이 남자거나 직업명이 '텔런트'로 끝나면서 최소 5글자 이상인 데이터 검색
    SELECT * FROM celab WHERE (sex = 'M') OR (job_title LIKE '%__텔런트');

  • 예) 나이가 30세 이상 50세 이하면서 개그맨이 아닌 데이터 조회
    SELECT FROM celab WHERE (age BETWEEN 30 AND 50) AND NOT job_title LIKE '%개그맨%';
    - ??? 왜 이건 안 되지?
    SELECT
    FROM celab WHERE (age BETWEEN 30 AND 50) AND (NOT job_title IN '개그맨');

  • 예) 아이유, 이미주, 송강, 이수현 중에 가수만 직업으로 가졌거나, 가수를 병행하지 않고 텔런트를 하는 사람을 찾으세요

0개의 댓글