sql('Structured Query Language')은 문과 직장인들 사이에서 되게 유명한(?)..
유명하다기보다는 다들 한번쯤은 들어보고 나도 해볼까? 하는 언어라고 알고 있다.
그래서 혹시 sql을 활용해보고 싶은데, 혹은 실무에서 활용하면 좋을 것 같은데 엄두가 안나는 사람이 있다면
이 글을 참고하면 기초적인건 알아갈 수 있을 것 같다.
❗️글을 읽기전..
* 쿼리란? 데이터를 뽑기 위해 작성한 코드라고 이해하면 됨.
* 이 글에서 한국어로 쓰는부분을 여러분들이 사용할 칼럼,테이블명 등으로 바꾸면 됨
1. Select
가장 기본적인 쿼리의 구조는 "select * from 테이블이름" 이라고 보면 된다.
이 쿼리를 쉽게 풀어서 말하자면 = 테이블에서 *(전체 칼럼)을 고른다. 라는 의미이다.
여러분이 테이블에 어떤 데이터들이 있는지 한번 확인해보고 싶다면 이 쿼리에서 테이블이름만 바꾸면 된다.
🚨 주의 🚨 여러분이 데이터를 뽑고자 하는 그 테이블은 무조건 어떤 '데이터 베이스' 에 담겨있으므로,
USE 데이터베이스명;
SELECT * FROM 테이블명;
이렇게 쓰던지, 아니면
SELECT * FROM 데이터베이스명.테이블명;
이런 식으로 내가 어떤 데이터베이스에서 테이블을 가져올건지를 명시해줘야 한다.
한번 슥 테이블을 확인했다면 특정 칼럼을 가져오고 싶을 것이다. 그럴 때는,
SELECT 칼럼A,칼럼B FROM 데이터베이스명.테이블명;
이런식으로 아까 그 * 자리에 원하는 칼럼명을 ,(콤마)로 연결해서 쓰면 된다.
2. Where
단순히 칼럼만 선택해서 가져오면 참 좋겠지만.. 실무에서 그럴일은 잘 없다.
예를 들어, 8월 한달의 데이터가 필요하다던지.. 성별이 여자에 해당하는 데이터만 뽑아야 한다던지 등등
여러 조건에 따라 데이터를 필터링 해서 봐야 하는 경우가 대부분이다.
그럴 때 필요한 것이 바로 where이다.
SELECT * FROM 데이터베이스명.테이블명 WHERE 조건;
🧐 첫번째, "8월 한 달 동안의 사용자 데이터 전체를 뽑아주세요" 라는 요청이 들어온다고 가정해보자.
날짜 칼럼: "log_Date"
SELECT * FROM 데이터베이스명.테이블명 WHERE log_Date BETWEEN "2023-08-01" AND "2023-08-31";
between이라는 문법은 데이터가 특정 범위안에 속할 수 있을 때 사용한다.
🧐 두번째, "8월 한 달 동안의 데이터 중에서 성별은 여자이고, 회원가입 여부가 Y인 사용자 데이터를 뽑아주세요" 라는 요청이 들어온다고 가정해보자.
성별 칼럼 : "sex" -> male,female
회원가입 여부 칼럼: "Is_user" -> Y,N
SELECT * FROM 데이터베이스명.테이블명 WHERE log_Date BETWEEN "2023-08-01" AND "2023-08-31 AND sex = ''female" AND Is_user ="Y";
두번째 요청에서는 필요한 조건이 총 세개이다.
1) 8월 이라는 날짜 기간. 2) 성별은 여자 3) 회원가입 여부 = Y
그래서 where 절에서는 AND라는 문법을 사용해 해당 조건들을 연결했다.
3. Order by
order by는 말 그대로 order, 즉 데이터를 정렬해서 보기 위해 사용하는 문법이다.
숫자 데이터에 보통 많이 사용하고, 문자에도 쓸 수는 있다.
a,b,c. ㄱ,ㄴ,ㄷ 이런 오름차순(ASC)이 기본으로 적용되는데 order by 칼럼명 DESC
이렇게 내림차순(DESC) 조건을 주면 c,b,a. ㄷ,ㄴ,ㄱ 순으로 정렬해서 볼 수 있다.
아까 썼던 쿼리에 적용해보자면,
SELECT * FROM 데이터베이스명.테이블명 WHERE log_Date BETWEEN "2023-08-01" AND "2023-08-31 AND sex = ''female" AND Is_user ="Y" ORDER BY log_Date DESC;
여기서 쿼리의 결과는 날짜를 기준으로 내림차순 정렬되기 때문에, 8월 31일 > 8월 1일까지 역으로 데이터가 출력될 것이다.
order by는 쿼리 맨 마지막에 쓴다.
4. Group by
이거만 알면 진짜 다 알았다. (는 거짓말)
기본적인건 할 수 있다. group by는 데이터에 그룹을 지어서 보고 싶을 때 사용한다.
🧐 "8월 한 달 동안의 데이터 중에서 성별에 따라 데이터 갯수가 얼마나 되는지 데이터를 뽑아주세요" 라는 요청이 들어온다고 가정해보자.
SELECT sex,count(*) AS total_count FROM 데이터베이스명.테이블명 WHERE log_Date BETWEEN "2023-08-01" AND "2023-08-31" GROUP BY sex;
GROUP BY뒤에 그룹을 지을 수 있는, 즉 카테고리가 만들어질 수 있는 칼럼명을 쓰고
sex와 count(*) 을 셀렉트했다.
??? count(*)이라는건 칼럼에 없는데???
가상의 칼럼이라고 생각하면 된다. group by를 사용함으로써, 생길 수 있었던 가상의 칼럼인건데
흠.. 진짜 칼럼이 테이블에 생기는건 아니고 데이터 추출 결과에만 나타나는 칼럼이다.
보이는 그대로 카운팅을 해주는 거다.
count(*) 뒤에 AS 라는 문법은 데이터에 별명을 지어주는 거다.
칼럼을 더 많이 뽑고 쿼리가 복잡해지면, 일일히 칼럼이름을 쓰기 귀찮기도 하고
이렇게 가상의 칼럼을 만들게 될때 해당 데이터가 무엇인지 쉽게 파악하기 위해 사용한다.
😈 흐흐.. 이건 시작에 불과해요
누군가가 이 글을 읽고 어? sql 짱 쉽네 라고 생각했다면 축하드린다.
sql을 당신도 어느 정도는 잘 활용할 가능성을 지녔다는 뜻이기 때문이다!
그치만 이건 시작에 불과하다..
다음에 시간 날때 좀 더 어려운 버전으로 활용도 높은 쿼리를 들고 올테니..
이 글이 유용했다면 공감을 눌러주세요ㅎㅎ ❤️
'기획자의 하드스킬모음' 카테고리의 다른 글
[javascript] querySelector(),querySelectorAll() (0) | 2023.12.18 |
---|---|
🧐 초보자 깃허브 사용법(+ 기본적인 용어설명) (0) | 2023.10.06 |
문과 직장인 5일만에 sqld 개발자 자격증 취득하는 방법 (0) | 2023.07.24 |
MYSQL 공부 2일차 (0) | 2022.10.04 |
[패스트캠퍼스]SQL로 시작하는 데이터 분석 첫걸음 : SQL 강의 2주차 학습일지 (0) | 2022.08.15 |