USE zerobase;
SELECT column1, column2, ... FROM tablename WHERE condition1 AND condition2 AND condition3 ... ;
AND 예제 1
나이가 29세이고 성별이 여성인 데이터 검색
SELECT * FROM celeb WHERE age=29 AND sex='F' ;
AND 예제 2
성별이 남자이고 나이가 40세 보다 큰 데이터를 이름의 역순으로 정렬하여 검색 (desc 빼먹음)
SELECT * FROM celeb WHERE sex='M' AND age > 40 ORDER BY name;
SELECT column1, column2, ... FROM tablename WHERE condition1 OR condition2 OR condition3 ... ;
OR 예제 1
나이가 25세보다 작거나 30세보다 큰 데이터 검색
SELECT * FROM celeb WHERE age < 25 OR age>30 ORDER BY age;
OR 예제 2 - 1
나이가 29세 보다 작고 여자이거나, 나이가 30세 보다 크고 남자인 데이터를 나이와 성별 순으로 정렬하여 검색
OR 예제 2 - 2
SELECT * FROM celeb WHERE age < 29 AND sex='F';
SELECT * FROM celeb WHERE age > 30 AND sex='M';
SELECT * FROM celeb WHERE (age < 29 AND sex='F') OR (age > 30 AND sex='M');
SELECT * FROM celeb WHERE (age < 29 AND sex='F') OR (age > 30 AND sex='M') ORDER BY age, sex;
OR 예제 3 - 1
YG엔터테이먼트 소속이거나 나무엑터스 소속인 연예인 중, 나이가 30세 보다 작은 데이터를 검색
OR 예제 3 - 2
SELECT * FROM celeb WHERE agency='YG엔터테인먼트' OR agency='나무엑터스';
SELECT * FROM celeb WHERE agency='YG엔터테인먼트' OR agency='나무엑터스' AND age < 30;
SELECT * FROM celeb WHERE (agency='YG엔터테인먼트' OR agency='나무엑터스') # 괄호 추가 AND age < 30;
SELECT column1, column2, ... FROM tablename WHERE NOT condition;
NOT 예제 1
성별이 여자가 아닌 데이터 검색
SELECT * FROM celeb WHERE NOT sex='F';
NOT 예제 2 - 1
소속사가 YG엔터테이먼트이면서 남자가 아니거나 직업이 가수이면서 소속사가 YG엔터테이먼트가 아닌 데이터 검색
SELECT * FROM celeb WHERE agency='YG엔터테인먼트';
SELECT * FROM celeb WHERE agency='YG엔터테인먼트' AND NOT sex='M';
SELECT * FROM celeb WHERE job_title='가수';
SELECT * FROM celeb WHERE job_title='가수' AND NOT agency='YG엔터테인먼트';
SELECT * FROM celeb WHERE (agency='YG엔터테인먼트' AND NOT sex='M') OR (job_title='가수' AND NOT agency='YG엔터테인먼트');
NOT 예제 3 - 1
생일이 1990년 이후이면서 여자가 아니거나, 생일이 1979년 이전이면서 소속사가 안테나가 아닌 데이터 검색
NOT 예제 3 - 2
SELECT * FROM celeb WHERE birthday > 19891231;
SELECT * FROM celeb WHERE birthday > 19891231 AND NOT sex='F';
SELECT * FROM celeb WHERE birthday < 19800101;
SELECT * FROM celeb WHERE birthday < 19800101 AND NOT agency = '안테나';
SELECT * FROM celeb WHERE (birthday > 19891231 AND NOT sex='F') OR (birthday < 19800101 AND NOT agency = '안테나');
SELECT column1, column2, ... FROM tablename WHERE column1 BETWEEN value1 AND value2;
BETWEEN 예제 1 - 1
나이가 20세에서 40세 사이의 데이터 검색
SELECT * FROM celeb WHERE age BETWEEN 20 AND 40;
BETWEEN 예제 1 - 2
나이가 20세에서 40세 사이의 데이터 검색
SELECT * FROM celeb WHERE age >= 20 AND age <= 40;
BETWEEN 예제 2 - 1
생년월일이 1980년에서 1995년 사이가 아니면서 여자이거나,
소속사가 YG엔터테이먼트이면서 나이가 20세에서 45세 사이가 아닌 데이터 검색
BETWEEN 예제 2 - 2
SELECT * FROM celeb WHERE birthday BETWEEN 19800101 AND 19951231;
SELECT * FROM celeb WHERE NOT birthday BETWEEN 19800101 AND 19951231;
SELECT * FROM celeb WHERE NOT birthday BETWEEN 19800101 AND 19951231 AND sex='F';
SELECT * FROM celeb WHERE agency = 'YG엔터테인먼트';
SELECT * FROM celeb WHERE agency = 'YG엔터테인먼트' AND NOT age BETWEEN 20 AND 45;
SELECT * FROM celeb WHERE (NOT birthday BETWEEN 19800101 AND 19951231 AND sex='F') OR (agency = 'YG엔터테인먼트' AND NOT age BETWEEN 20 AND 45);
SELECT column1, column2, ... FROM tablename WHERE column IN (value1, value2, ...);
IN 예제 1 - 1
나이가 28세, 48세 중 하나인 데이터 검색
SELECT * FROM celeb WHERE age IN (28, 48);
IN 예제 1 - 2
나이가 28세, 48세 중 하나인 데이터 검색
SELECT * FROM celeb WHERE age=28 OR age=48;
IN 예제 2 - 1
소속사가 나무엑터스, 안테나, 울림엔터테이먼트가 아니면서, 성별이 여자거나 나이가 45세 이상인 데이터 검색
IN 예제 2 - 2
SELECT * FROM celeb WHERE agency IN ('나무엑터스', '안테나', '울림엔터테인먼트');
SELECT * FROM celeb WHERE NOT agency IN ('나무엑터스', '안테나', '울림엔터테인먼트');
SELECT * FROM celeb WHERE NOT agency IN ('나무엑터스', '안테나', '울림엔터테인먼트') AND sex='F';
소속사가 나무엑터스, 안테나, 울림엔터테이먼트가 아니면서, 나이가 45세 이상
SELECT * FROM celeb WHERE NOT agency IN ('나무엑터스', '안테나', '울림엔터테인먼트') AND age >= 45;
SELECT * FROM celeb WHERE NOT agency IN ('나무엑터스', '안테나', '울림엔터테인먼트') AND sex='F' OR age >= 45;
SELECT * FROM celeb WHERE NOT agency IN ('나무엑터스', '안테나', '울림엔터테인먼트') AND (sex='F' OR age >= 45);
SELECT column1, column2, ... FROM tablename WHERE column LIKE pattern;
LIKE 예제 1 - 1
소속사 이름이 ‘YG엔터테이먼트’ 인 데이터를 검색
SELECT * FROM celeb WHERE agency LIKE 'YG엔터테인먼트';
SELECT * FROM celeb WHERE agency = 'YG엔터테인먼트';
LIKE 예제 2 'YG%'
‘YG’로 시작하는 소속사 이름을 가진 데이터를 검색
SELECT * FROM celeb WHERE agency LIKE 'YG%';
SELECT * FROM celeb WHERE agency LIKE '%엔터테인먼트';
LIKE 예제 4 '%가수%'
직업명에 ‘가수’가 포함된 데이터를 검색
SELECT * FROM celeb WHERE job_title LIKE '%가수%';
LIKE 예제 5 '_G%'
소속사 이름의 두번째 글자가 G인 데이터를 검색
SELECT * FROM celeb WHERE agency LIKE '_G%';
LIKE 예제 6 '가_%'
직업명이 ‘가' 로 시작하고 최소 2글자 이상인 데이터 검색
SELECT * FROM celeb WHERE job_title LIKE '가_%';
LIKE 예제 7 '가____%'
직업명이 '가' 로 시작하고 최소 5글자 이상인 데이터 검색
SELECT * FROM celeb WHERE job_title LIKE '가____%';
LIKE 예제 8 '영%모델'
직업명이 ‘영'으로 시작하고 '모델’로 끝나는 데이터 검색
SELECT * FROM celeb WHERE job_title LIKE '영%모델';
LIKE 예제 9
영화배우와 텔런트를 병행하는 연예인 검색
SELECT * FROM celeb WHERE job_title LIKE '%영화배우%' AND job_title LIKE '%탤런트%;
LIKE 예제 10 - 1
직업이 하나 이상인 연예인 중 영화배우 혹은 텔런트가 아닌 연예인 검색
SELECT * FROM celeb WHERE job_title LIKE '%,%';
SELECT * FROM celeb WHERE job_title LIKE '%영화배우%' OR job_title LIKE '%탤런트%';
SELECT * FROM celeb WHERE NOT (job_title LIKE '%영화배우%' OR job_title LIKE '%탤런트%');
SELECT * FROM celeb WHERE job_title LIKE '%,%' AND NOT (job_title LIKE '%영화배우%' OR job_title LIKE '%탤런트%');
위 글은 제로베이스 데이터 취업 스쿨의 강의자료를 참고하여 작성되었습니다.