✔ 나이가 29세가 아닌 데이터 검색
SELECT name, age FROM testtable WHERE age != 29 ORDER BY age;
✔ 남자이고 나이가 40보다 큰 데이터를 이름의 역순으로 정렬하여 조회
SELECT * FROM testtable WHERE sex='M' AND age>40 ORDER BY name DESC;
✔ 나이가 29세 보다 작고 여자이거나, 나이가 30세 보다 크고 남자인 데이터를 나이와 성별 순으로 정렬하여 조회
SELECT * FROM testtable WHERE (age<29 AND sex='F') OR (age>30 AND SEX='M')
ORDER BY age, sex;
✔ 생일이 1990년 이후이면서 여자가 아니거나, 생일이 1979년 이전이면서 소속사가 안테나가 아닌 데이터 조회
SELECT * FROM testtable
WHERE (birthday > 19891231 AND NOT sex='F')
OR (birthday < '1980-01-01' AND NOT agency ='안테나');
-> date 타입은 19891231 처럼 숫자로만 쓰거나 '1980-01-01'처럼 문자로 쓰면됨
between X and Y 형태로 쓰면됨
X와 Y 모두 포함한 범위이다( X <= SSS <= Y )
✔ 생년월일이 1980년에서 1995년 사이가 아니면서 여자이거나, 소속사가 YG엔터테이먼트면서 나이가 20세에서 45세 사이가 아닌 데이터 조회
SELECT * FROM testtable
WHERE (NOT birthday BETWEEN 19800101 AND 19951231 AND sex='F')
OR (agency='YG엔터테이먼트' AND NOT age BETWEEN 20 AND 45);
컬럼명 in ('a', 'b', 'c') 형태로 쓴다.
a, b, c 중에 있으면 true이다.
✔ 소속사가 나무엑터스, 안테나, 울림엔터테이먼트가 아니면서, 성별이 여자거나 나이가 45세 이상인 데이터 조회
SELECT * FROM testtable
WHERE NOT agency IN ('나무엑터스', '안테나', '울림엔터테이먼트')
AND (sex='F' OR age>=45);
✔ 'YG'로 시작하는 소속사 이름을 가진 데이터 조회
SELECT * FROM testtable WHERE agency LIKE 'YG%';
✔ '엔터테이먼트'로 끝나는 소속사 이름을 가진 데이터 조회
SELECT * FROM testtable WHERE agency LIKE '%엔터테이먼트';
✔ 직업명에 '가수'가 포함된 데이터 조회
SELECT * FROM testtable WHERE job_title LIKE '%가수%';
✔ 소속사 이름의 두번째 글자가 G인 데이터를 조회
SELECT * FROM testtable WHERE agency LIKE '_G%';
✔ 직업명이 '가'로 시작하고 최소 5글자 이상인 데이터 조회
SELECT * FROM testtable WHERE job_title LIKE '가____%';
✔ 직업명이 '영'으로 시작하고 '모델'로 끝나는 데이터 조회
SELECT * FROM testtable WHERE job_title LIKE '영%모델';
✔ 영화배우와 텔런트를 병행하는 연예인 검색
SELECT * FROM testtable
WHERE job_title LIKE '%영화배우%' AND job_title LIKE '%텔런트%';
✔ 직업이 두개 이상인 연예인 중 영화배우 혹은 텔런트가 아닌 연예인 조회
SELECT * FROM testtable
WHERE job_title LIKE '%,%'
AND NOT (job_title LIKE '%영화배우%' OR job_title LIKE '%텔런트%');
NULL은 값이 없음(결측치)을 나타낸다.
NULL과 공백(' ')은 다른 것이다. 공백은 공백이라는 값이 있는 것이다.
NULL값이 있을 때 컬럼 끼리(가로방향)는 연산이 불가능하고 (NULL출력), 행 끼리(세로방향)는 연산이 가능하다.(NULL빼고 계산)
'WHERE column IS NULL' 또는 'WHERE column IS NOT NULL' 사용
✔ jokic 테이블에서 lose 칼럼이 NULL인 row들 조회
SELECT * FROM jokic WHERE lose IS NULL;
✔ jokic 테이블에서 lose 칼럼이 NULL이 아닌(값이 있는) row들 조회
SELECT * FROM jokic WHERE lose IS NOT NULL;
✔ NULL이 아닌 첫번째 값 출력
SELECT COALESCE(1, NULL); -- 1 리턴
SELECT COALESCE(NULL, 2, 3); -- 2 리턴
SELECT COALESCE(NULL, NULL, 3); -- 3 리턴
✔ NULL값을 대체
SELECT COALESCE(ppp, 0) -- ppp컬럼의 NULL값을 0으로 대체
FROM tablename