✅ 성별이 남자이고, 주소가 서울인 회원
SELECT * FROM copang_main.member
WHERE gender = 'm'
AND address LIKE '서울%';

✅ 성별이 남자이고, 주소가 서울이고, 나이가 25세 이상 29세 이하인 회원
SELECT * FROM copang_main.member
WHERE gender = 'm'
AND address LIKE '서울%'
AND age BETWEEN 25 AND 29;

✅ 봄(3~5월) 또느 가을(9~11월)에 가입한 회원
SELECT * FROM copang_main.member
WHERE MONTH(sign_up_day) BETWEEN 3 AND 5
OR MONTH(sign_up_day) BETWEEN 9 AND 11;
✅ 남자 회원 중 키가 180 이상이고, 여자 회원 중 키가 170 이상인 회원
SELECT * FROM copang_main.member
WHERE (gender = 'm' AND height >= 180)
OR (gender = 'f' AND height >= 170);
AND와 OR을 섞어서 사용할 경우 먼저 사용될 조건을 괄호()로 감싸준다.AND가 OR보다 우선순위가 더 높다.SELECT id, email, age, sign_up_day FROM copang_main.member
WHERE age LIKE '2_'
AND MONTH(sign_up_day) = '7';
LIKE : 문자열 패턴 매칭 조건을 걸기 위해 사용되는 키워드% : 임의의 길이를 가진 문자열(0자도 포함)_ : 한 자리의 문자두 가지 주의사항이 있다.

SELECT * FROM copang_main.test WHERE sentence LIKE '%\%%';

어떤 문자가 그것에 부여된 특정한 의미, 기능으로 해석되는 게 아니라 단순한 문자 하나로 해석 되도록 하는 것을 이스케이핑이라고 한다.
MySQL에서 이스케이핑을 하는 방법은 해당 문자 앞에 역슬래쉬(\)를 붙여주는 것이다.
SELECT * FROM copang_main.test WHERE sentence LIKE '%\'%'

SELECT * FROM copang_main.test WHERE sentence LIKE '%\_%'

SELECT * FROM copang_main.test WHERE sentence LIKE '%\"%\"%'

SELECT * FROM copang_main.test WHERE sentence LIKE BINARY '%g%'

BINARY를 붙이는 건 단지 알파벳 비교 뿐만 아니라 대소문자 구분까지 할 수 있도록 문자열을 비교하라는 뜻이다.
SELECT * FROM copang_main.test WHERE sentence LIKE BINARY '%G%'

SQL에서의 정렬은 row들을 특정 컬럼을 기준으로 순서대로 출력하는 것을 의미한다.
✅ height 컬럼 기준으로 정렬
SELECT * FROM copang_main.member
ORDER BY height;
SELECT * FROM copang_main.member
ORDER BY height ASC;
ORDER : 순서BY : ~에 의해ASC : 오름차순 정렬 (ascending)SELECT * FROM copang_main.member
ORDER BY height DESC;
DESC : 내림차순 정렬 (descending)✅ 남자 회원들의 몸무게가 70kg 이상인 사람들을 조회 후 정렬
SELECT * FROM copang_main.member
WHERE gender = 'm' AND weight >= 70
ORDER BY height ASC;

✅ 가입년도 기준으로 가장 최근에 가입한 사람부터 내림차순 정렬, 같은 년도 가입한 사람들은 이메일 기준으로 오름차순 정렬
SELECT email, sign_up_day FROM copang_main.member
ORDER BY YEAR(sign_up_day) DESC, email ASC;
ORDER BY : 이름을 먼저 쓴 컬럼을 우선으로 정렬이 차례대로 수행된다.
순서의 법칙을 지키지 않으면 SQL문을 실행했을 때 에러가 발생한다.
자세한 사항은 https://dev.mysql.com/doc/refman/8.0/en/select.html 를 참고하길 바란다.
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
정렬 기준의 데이터 타입이 숫자형(INT), 문자열형(TEXT)인 경우에 따라 정렬 결과가 달라진다는 것이다.
INT 타입의 경우 숫자의 크고 작음을 기준으로 정렬이 수행된다.

TEXT 타입의 경우 숫자의 대소가 아니라 한 문자, 한 문자씩 문자 순서를 비교해서 정렬이 수행된다.

따라서 숫자값이 담긴 컬럼을 정렬 기준으로 할 때는 그 컬럼의 데이터 타입이 숫자형인지, 문자열형인지에 주의한다.
이미 TEXT 타입인 컬럼의 숫자값들을 INT 숫자형 타입으로 보고 정렬할 수는 없을까 ❓
이걸 하기 위해 CAST라는 함수를 사용해야 한다.
CAST : 데이터 타입을 바꿀 때 사용된다.SELECT * FROM copang_main.member
ORDER BY CAST(data AS signed) ASC;
위의 SQL문을 실행하면 TEXT 타입의 값이 INT 타입의 값일 떄와 같은 결과가 나타난다.
만약 소수점이 포함되어 있다면 signed 대신 decimal을 적어주면 된다.