SELECT : 테이블의 데이터를 조회할 때 사용하는 구문이다.* : asterisk, 각 row의 모든 column들의 값을 보여달라는 의미이다.FROM : '~부터', 어느 테이블에서부터 데이터를 조회할 것인지를 나타낸다.WHERE : 특정 조건을 만족하는 row들만 조회한다.SELECT * FROM copang_main.member;

SELECT email, age, address FROM copang_main.member;

특정 조건을 만족하는 row들만 보려면 어떻게 할까 ❓
SELECT * FROM copang_main.member WHERE email = 'taehos@hanmail.net';

세미콜론(;)을 작성해줘야 한다. 문법 상 세미콜론이 하나의 SQL문을 종결하는 단위이기 때문이다.공백이나 개행(줄바꿈)을 자유롭게 넣을 수 있다.예약어라고 한다. 예약어는 대문자로 써주고(가독성을 위해), 나머지 부분은 소문자로 작성한다.데이터베이스.테이블;를 사용한다.USE 데이터베이스는 어떤 데이터베이스를 사용하겠다고 확실하게 정의하는 것이다. 그럼 그 이후로는 SELECT * FROM 테이블;로 작성해도 된다.✅ 나이가 27살 이상인 회원만 조회
SELECT * FROM copang_main.member WHERE age >= 27;

✅ 나이가 30대(30~39세)인 회원만 조회
SELECT * FROM copang_main.member WHERE age BETWEEN 30 AND 39;
BETWEEN A AND B : A부터 B까지 (구간)✅ 나이가 30대인 회원만 제외하고 조회
SELECT * FROM copang_main.member WHERE age NOT BETWEEN 30 AND 39;
NOT : 부정을 나타내므로 ~이 아닌 것을 의미한다.✅ 2019년 1월 1일 이후로 가입한 사람을 조회
SELECT * FROM copang_main.member WHERE sign_up_day > '2019-01-01';

✅ 2018년도에 가입한 회원 조회
SELECT * FROM copang_main.member WHERE sign_up_day BETWEEN '2018-01-01' AND '2018-12-31';
'' 또는 "" 안에 들어가는 값은 보통 문자열을 표현할 때 사용한다. 다만 DATE 나 DATETIME 과 같은 시간관련 함수에서는 문자열 형태로 써준다.
✅ 주소가 서울인 회원들 조회
SELECT * FROM copang_main.member WHERE address LIKE '서울%';
LIKE : 표현 값이 서울% 처럼 생긴 값을 조회한다.서울% : 문자열의 첫 부분은 서울로 시작하고, 그 뒤는 임의의 길이를 가진 문자열을 의미한다.
SELECT * FROM copang_main.member WHERE address LIKE '%고양시%';
%고양시% : 고양시라는 단어 앞 뒤로 임의의 길이를 가진 문자열을 의미한다.
SELECT * FROM copang_main.member WHERE gender != 'm';
SELECT * FROM copang_main.member WHERE gender <> 'm';
SELECT * FROM copang_main.member WHERE age IN (20, 30);

SELECT * FROM copang_main.member WHERE email LIKE 'c_____@%';

c 뒤에 언더바가 5개 있는 상태이다. c로 시작하고, 그 뒤에 다섯글자, 그리고 @ 하나, 그 뒤에 임의의 길이를 가진 문자열을 나타낸다.
✅ 1992년에 태어난 회원들만 조회
SELECT * FROM copang_main.member WHERE YEAR(birthday) = '1992';
✅ 여름(6, 7, 8)월에 가입한 회원들만 조회
SELECT * FROM copang_main.member WHERE MONTH(sign_up_day) IN(6, 7, 8);
✅ 각 달의 후반부(15~31일)에 가입했던 회원들만 조회
SELECT * FROM copang_main.member WHERE DAYOFMONTH(sign_up_day) BETWEEN 15 AND 31;
DAYOFMONTH 함수는 날짜값에서 일만 뽑아낼 수 있다.
DATEDIFF 함수로 날짜 간의 차이를 구할 수 있다.DATEDIFF(날짜 a, 날짜 b) = 날짜 a - 날짜 b✅ 각 회원이 가입한 일자가 2019년 1월 1일을 기준으로 몇 일 이후인지
SELECT email, sign_up_day, DATEDIFF(sign_up_day, '2019-01-01') FROM copang_main.member;

꼭 테이블에 있던 컬럼이 아니더라도 조화할 때 새로운 컬럼을 붙여서 볼 수도 있다.
✅ 오늘 날짜를 기준으로 살펴보기
오늘 날짜를 구하는 함수는 CURDATE() 함수이다.
SELECT email, sign_up_day, CURDATE(), DATEDIFF(sign_up_day, CURDATE()) FROM copang_main.member;

✅ 회원들이 몇 살일 때 가입했는지
(가입일 - 생일) / 365를 하면 알 수 있다.
SELECT email, sign_up_day, DATEDIFF(sign_up_day, birthday) / 365 FROM copang_main.member;

DATE_ADD() : 날짜 더하는 함수DATE_SUB() : 날짜 빼는 함수✅ 가입일 기준으로 300일 이후 날짜
SELECT email, sign_up_day, DATE_ADD(sign_up_day, INTERVAL 300 DAY) FROM copang_main.member;
✅ 가입일 기준으로 250일 이전 날짜
SELECT email, sign_up_day, DATE_SUB(sign_up_day, INTERVAL 250 DAY) FROM copang_main.member;
날짜뿐만 아니라 시간까지 포함하는 컬럼이라면 DATETIME이라는 데이터 타입을 사용해야 한다.
그러나 문제는 어떤 테이블에는 날짜와 시간이 상당히 큰 숫자값으로 적혀있는 경우들이 있다는 것이다. 이것 또한 날짜와 시간을 나타내는 값으로 이러한 형식의 날짜시간 값을 UNIX Timestalmp라고 한다.
UNIX Timestalmp은 특정 날짜의 특정 시간을 1970년 1월 1일을 기준으로 총 몇 초가 지났는지를 나타낸 값이다.
✅ DATE 타입(sign_up_day)의 값을 UNIX Timestamp로 바꾸기
SELECT email, sign_up_day, UNIX_TIMESTAMP(sign_up_day) FROM copang_main.member;
UNIX_TIMESTAMP(sign_up_day)를 사용한다.

✅ UNIX Timestapm를 DATE 타입으로 바꾸기
SELECT email, sign_up_day, FROM_UNIXTIME(UNIX_TIMESTAMP(sign_up_day)) FROM copang_main.member;
FROM_UNIXTIME(UNIX_TIMESTAMP())를 사용한다.
