mysql 기초 수업은 데이터리안 강사님들의 라이브 강의, 인프런 인강을 통해 진행되었습니다.
- SQL 이론, 실습 참고하기 좋은 사이트: w3school (가입 없이 이용할 수 있습니다)
SQL문법 리마인드, 새로 배운 내용 정리
<미리 보는 SQL문 구조>
SELECT 컬럼명1, SUM(컬럼명2) AS 바꿀 이름명 -- as는 생략이 가능하다
FROM 테이블명
WHERE 조건부여 -- WHERE를 쓰고 싶다면 여기에
GROUP BY 그룹핑할 컬럼명
HAVING 그룹바이 조건
ORDER BY (정렬기준 컬럼명) DESC -- 컬럼명 대신 "as로 설정한 이름"을 사용할 수 있다
LIMIT n -- n개만큼 select해올 수 있다
[ ( WHERE + 컬럼명 ) + 문법 ]
- IN ("A", "B", "C") : ()안의 값과 일치하는지 확인 -- or을 남발하는 걸 막아준다
- BETWEEN 3 AND 10 : ex) 3부터 10사이
- LIKE "%r%" | LIKE "B_____" : %와 _ 는와일드카드
- NOT LIKE : 특정 문자를 가지지 않는 검색
- IS NULL | IS NOT NULL : null값 또는 null값이 아닌 것 가져오기
- <>, != '조건' : 둘 다 같지 않다는 뜻으로 사용 가능
- 와일드카드
%: 글자수를 모를때 활용 (access에서는 *이었음)
_ : 글자수 지정 가능 (access에서는 ? 였음)
예시) '_a*' : 두번째 글자가 a인 모든 값 / 'L%E' l로 시작해서 e로 끝나는 모든 값
- 진짜 % 기호를 찾고 싶을땐 이스케이프코드 활용 : '30\%' 검색
[ 정렬할때 ]
오름차순: ORDER BY 컬럼명 (ASC) -- 생략한 경우는 asc라고 보면 됨.
내림차순: ORDER BY 컬럼명 DESC
여러 기준으로 정렬할때: ORDER BY 컬럼명1, 컬럼명2 DESC
[ 값을 몇 개만 가져올지 설정하기 ]
LIMIT 가져올 개수
- 주로 MAX, MIN과 함께 쓰며 가장 큰 값 TOP 3등 불러올때 활용한다.
SELECT와 함께 사용하는 문법
[가져올 때 +,-,*,/ 연산 가능]
select count() as total, count(sex) as sex_notnull, count() - count(sex) as sex_null
from penguins
[ 중복된 값을 가져오지 않을때 ]
SELECT DISTINCT 컬렴명
[문자열 자르는 SUBSTRING 함수]
LEFT('12345678', 4) -> 1234
RIGHT('12345678', 4) -> 5678
SUBSTR( 문자열, 시작위치, (길이) )
예시: SUBSTR( '12345678', 4, 2) -> 45
길이는 생략가능하다. 생략하면 시작위치부터 끝까지 가져온다.
[숫자 관련 함수]
CEIL(값): 올림
FLOOR(값): 내림
ROUND(값, 몇번째 자리까지 나타낼지) : 반올림
예) ROUND (23.12456, 4) -> 23.1246
[기술통계 함수]
엑셀과 유사하다
SUM, AVG, MAX, MIN, COUNT 등
[주의할 점]
COUNT(컬럼명)은 null값을 카운트하지 않는다
COUNT(*)은 다른 컬럼명에 데이터가 다 채워져 있으면 개수를 다 센다.
AVG함수를 사용했을때 공백값이 제거되어 의도했던 값이 나오지 않을 수 있으므로 주의
예시) student table
name | country | score |
Amy | USA | 90 |
Bobby | UK | 70 |
Cassandra | FRANCE | 80 |
Dana | KOREA | |
Emily | SPAIN |
SELECT COUNT(*) -> 5
SELECT COUNT(score) -> 3
SELECT AVG(score) => sum(score) / count(score) => 80점
만약 어떤 이유로 공백을 0점으로 보고 전체 평균을 내야 한다면 48점
[ 서브 쿼리 예시 ]
SELECT *
FROM station
WHERE lat > (
SELECT lat
FROM station
WHERE name = '서울북부지방법원')