USE 데이터베이스이름
SELECT 컬럼 FROM 테이블이름
SELECT
로 원하는 필드를 지정하면 해당 row 값들을 확인할 수 있다. 만약 모든 컬럼을 확인하고 싶다면 *
와일드카드를 사용하면 된다.
WHERE
는 데이터 조회에 조건을 걸어준다.
SELECT * FROM member
WHERE name = "김코딩";
비교 연산자 =, >, >=, <, <=, (같지 않음) <>, !=, ^=
를 사용하여 조건을 형성할 수 있다. 날짜인 DATE 타입도 비교 연산자로 연산이 가능하다.
SELECT * FROM member
WHERE gender <> 'm'
시작 키워드, 끝나는 키워드, 또는 키워드 포함 여부에 따라 데이터를 조회할 수도 있다.
SELECT * FROM member
WHERE address LIKE '서울%' #서울로 시작하는 모든 문자열
#'%키워드%' 해당 문자열이 포함되어있는 데이터
#'%키워드' 해당 문자열로 끝나는 데이터
문자열 매칭 조건을 쓸 때 _
를 사용하면 글자수도 지정할 수 있다.
SELECT * FROM member
WHERE email LIKE `c_____@%'
#c뒤에 다섯글자
BETWEEN ~ AND ~
를 사용하면 조건 범위를 지정할 수 있다. 만약 나이가 30에서 39세 사이의 데이터만 조회하고 싶으면 아래와 같이 작성한다.
SELECT * FROM member
WHERE age BETWEEN 30 AND 39;
# age 컬럼 값이 30이상 39이하인 모든 데이터 조회
NOT
을 붙이면 해당 age가 아닌 데이터만 조회된다.
SELECT * FROM member
WHERE age NOT BETWEEN 30 AND 39;
BETWEEN AND
구문처럼 연속 된 범위 말고 특정한 값들 중에서 해당하는 값이 있는 row만 추려야할 때는 IN
을 사용한다.
SELECT * FROM member
WHERE age in (20,30)
# age
AND
와 OR
을 사용해 조건을 여러개 설정할 수도 있다.
SELECT * FROM member
WHERE gender = 'm'
AND address LIKE '서울%'
AND age BETWEEN 25 and 29;
#AND와 OR조건을 함께 사용할 때는 괄호로 묶어준다.
SELECT * FROM member
WHERE (gender ='m' AND height >= 180)
OR (gender ='f' AND height >= 170);
AND와 OR 조건을 쓸때에는 아래와 같이 쓰지 않도록 유의한다.
SELECT * FROM member
WHERE id =2 or 3; // 틀린 표현
SELECT * FROM member
WHERE id IN (2,3) // 올바른 표현
SELECT * FROM member
WHERE id =2 or id = 3; // 올바른 표현
날짜를 나타내는 DATE 타입도 조건으로 나타낼 수 있다.
SELECT * FROM member
WHERE sign_up_day > '2019-01-01' #2019/1/1 이후 날짜
DATE 타입은 YEAR(), MONTH(), DAYOFMONTH()
함수를 이용해 연도, 월, 일을 추출할 수 있다.
SELECT * FROM member
WHERE YEAR(birthday) = '1992' #연도가 1992인 row 조회
SELECT * FROM member
WHERE MONTH(birthday) IN (6,7,8) #월이 6월, 7월, 8월인 row 조회
SELECT * FROM member
WHERE DAYOFMONTH(birthday) BETWEEN 15 AND 31 #15일에서 31일 사이인 row 조회
DATEDIFF(a,b)
주어진 날짜간 차이도 계산 가능하다
SELECT birthday, DATEDIFF(CURDATE(), birthday) FROM member
#CURDATE()는 오늘 날짜를 구하는 함수이다.
#birthday에서 오늘까지 몇일이나 지났는지를 카운트 해서 알려준다.
DATE_ADD(), DATE_SUB()
함수를 이용해 주어진 날짜에 더하고 빼는 것도 가능하다.
SELECT birthday, DATE_ADD(birthday,INTERVAL 300 DAY) FROM member
#생일에서 300일 지난 값
SELECT birthday, DATE_SUB(birthday,INTERVAL 300 DAY) FROM member
#생일에서 300일 이전 값
조건절에 null을 사용할 때에는 비교연산자 대신 is
또는 is not
을 사용한다.
SELECT *
FROM 테이블_이름
WHERE 특성_1 IS NULL
ORDER BY
를 사용하면 데이터를 정렬할 수 있다.
SELECT * FROM member
ORDER BY height;
#오름차순이 디폴트, 내침차순은 컬럼 뒤에 DESC를 추가한다.
정렬기준은 여러개를 넣을 수 있다. 작성 순서에 따라 우선순위가 부여된다.
SELECT * FROM member
ORDER BY YEAR(sign_up_day) DESC, email ASC;
#sign_up_day기준으로 먼저 정렬하고 중복값이 있으면 email로 정렬한다.
만약 조건절과 정렬을 함께 사용할 때에는 조건절이 무조건 정렬보다 앞에 와야한다.
SELECT * FROM member
WHERE gender = 'm'
ORDER BY height
정렬을 할 때 숫자는 숫자 크기 대로 정렬되지만 데이터 타입이 문자인 숫자의 경우 자리수 별로 비교하여 정렬한다 예를들어 문자인 숫자 19,120,230을 오름차순 정렬 하면 120 > 19 > 230 처럼 정렬된다. 텍스트 타입을 숫자형 데이터처럼 오름차순 하고 싶다면 CAST(컬럼 As signed)
라는 함수를 사용한다. signed는 양수와 음수를 포함한 모든 정수를 나타내는 데이터 타입이다.
SELECT * FROM member
ORDER BY CAST(height As signed)
limit
을 이용해 데이터 일부만 추려볼 수도 있다.
SELECT * FROM member
ORDER BY sign_up_day DESC
LIMIT 10 # 10개만 추려보기
# 시작점을 정하고 싶을 땐 시작점과 보여줄 개수를 기입하면 된다.
# LIMIT 시작점, 보여줄개수 => LIMIT 8, 2 (8번째부터 2개만 보여줘라)
# ROW는 0번째부터 시작한다.