이 글은 제가 개발을 하며 알게 된 내용, 느낀 점 등을 기록하고자 쓰는 글입니다. '스파르타코딩클럽'의 '엑셀보다 쉬운 SQL' 강의를 듣고 배우고 있습니다. 내용에 대한 반박과 피드백은 늘 감사히 받겠습니다.
[수업 목표]
- 데이터베이스(DB)와 SQL이 왜 필요한가?
- DB에서 데이터를 가져오는 기초적인 문법인 select와 where문 이해하기
- 자주 사용되는 유용한 문법 익히기
1. 데이터베이스와 SQL이 왜 필요한가?
데이터가 적으면 혼자 엑셀 시트에 정리하는 것이 어렵지 않을 것이다. 하지만 데이터가 많아지면 엑셀 시트가 느려지고, 데이터가 복잡해져 알아보기 힘들것이다. 그래서 사용하는 것이 데이터베이스! 데이터베이스는에 모든 데이터를 정리하면 다음과 같은 장점이 있다.
1) 필요한 데이터만 불러와 작업할 수 있어 속도가 빨라짐
2) 충돌이 생겼을 경우 에러를 띄우는 기능을 추가해 충돌로 생기는 문제가 사라짐
쉽게 말하자면 데이터베이스는 데이터를 담는 통인데 데이터를 잘 정리해서 담기 때문에 CRUD하기 좋다.
C (Create) : 데이터 생성하기
R (Read) : 저장된 데이터 읽어오기
U (Update) : 저장된 데이터 변경하기
D (Delete) : 저장된 데이터 삭제하기
(이 강의에서는 저장된 데이터를 읽어오는 기능만 배움)
SQL (Structured Query Language) : 데이터베이스의 요청(Query)을 날려서 원하는 데이터를 가져오는 것을 도와주는 언어
SQL을 쓰면 데이터를 읽어오고 정리/분석하기가 매우 편해진다!!
(+ 데이터를 가져오는 명령어를 작성하는 것을 'SQL 쿼리를 작성한다'라고 한다고 함)
2. select, where문 이해하기
시작에 앞서, 0주차때 설치했던 DBeaver을 열고 'SQL 편집기 열기'(왼쪽 위에 양피지 종이처럼 생긴 아이콘)을 눌러 새 스크립트를 열어준다. 왼쪽에 보면 0주차 때 받았던 sparta 데이터들이 보인다.
ㄴ DBeaver에서 새 스크립트 열기
Select 쿼리문의 개념
쿼리문이란? 쿼리는 질의를 의미함. 데이터베이스에 명령을 내리는 것.
여기서 Select 쿼리문은, 데이터베이스에서 '데이터를 선택해서 가져오겠다'는 의미
ex) Select 쿼리문을 통해 'orders 테이블의 created_at 필드를 가져와줘! 라고 명령을 내릴 수 있음
스파르타 데이터베이스의 테이블 보기
show tables
다음 코드와 같이 show tables를 입력하면 테이블이 나온다!
checkins, courses...등 여러 필드명이 보인다
select * from orders
다음 코드와 같이 입력하면 orders 테이블의 데이터가 나온다.
은 모든 데이터를 의미하며, 특정 필드만 가져오고 싶으면 대신 필드명을 써주면 된다.
ex) select created_at from orders
orders 테이블 중 created_at 데이터만 출력된다
select 말고 'DESCRIBE 테이블명' 명령어를 통해서도 테이블 안에 어떤 필드가 있는 지 확인할 수 있다.
Where문 이해하기
Where절은 Select 쿼리문으로 가져올 데이터에 조건을 걸어주는 것을 의미한다.
ex) orders 테이블에서 결제수단이 카카오페이인 데이터만 가져와줘! >> '결제수단이 카카오페이'라는 조건을 걺.
select * from orders
where course_title = '웹개발 종합반'
다음 코드와 같이 입력하면 다음과 같이 강의 이름이 '웹개발 종합반'인 데이터만 나온다.
(이 때!! 문자열은 반드시 ' ' 안에 써줘야한다. 해보니까 " " 안에 써도 되긴 하더라...숫자는 그냥 써도 됨)
ㄴ where문 예시
조건을 더 걸고 싶으면 뒤에 and를 붙여서 쓰면 된다.
select * from orders
where course_title = '웹개발 종합반'
and payment_method = 'kakaopay'
ㄴ 웹개발 종합반이면서 결제수단이 kakaopay인 사람들
👉 쿼리 작성하는 방법 정리!
- show tables로 어떤 테이블이 있는지 살펴보기
- 제일 원하는 정보가 있을 것 같은 테이블에 select * from 테이블명 쿼리 날려보기
- 원하는 정보가 없으면 다른 테이블에도 2)를 해보기
- 테이블을 찾았다! 조건을 걸 필드를 찾기
- select * from 테이블명 where 조건 이렇게 쿼리 완성!
Where절과 자주 같이 쓰는 문법 써보기
- 같지 않음 !=
- 범위 between
- 포함 in ( )
- 패턴 like
총 4개의 문법을 배웠다. 하나하나 예시를 들어 복습해보겠다.
'같지 않음' 조건 걸기
'같지 않음' 조건은 !=로 걸 수 있다.
ex) 웹개발 종합반을 제외한 데이터를 보고싶어요. 어떻게 해야 할까요?
select * from orders
where course_title != '웹개발 종합반'
다음 코드와 같이 입력하면 '웹개발 종합반'을 제외한 데이터가 출력된다.
'범위' 조건 걸기
'범위' 조건은 between으로 걸 수 있다.
ex) 7월 13일, 7월 14일의 주문데이터만 보고 싶어졌어요. 어떻게 해야 할까요?
select * from orders
where created_at between '2020-07-13' and '2020-07-15'
다음 코드와 같이 입력하면 2020.07.13~2020.07.14의 데이터만 출력된다.
'포함' 조건 걸기
'포함' 조건은 in으로 걸 수 있다.
ex) 1, 3주차 사람들의 '오늘의 다짐' 데이터만 보고 싶어졌어요.
select * from checkins
where week in (1,3)
다음 코드와 같이 입력하면 1,3주차 사람들의 데이터만 출력된다.
'패턴' (문자열 규칙) 조건 걸기
'패턴' 조건은 like로 걸 수 있다.
ex) 다음 (daum) 이메일을 사용하는 유저만 보고 싶어졌어요. 어떻게 하죠?
패턴 조건은 다양한 사용법이 있다. like 와 %을 이용해서 써보자.
select * from users
where email like '%daum.net'
다음 코드와 같이 입력하면 다음 이메일을 사용하는 유저의 데이터가 출력된다.
이 때, %는 앞에서 무슨 문자열이 나오든 상관없다는 뜻이다.
쉽게 말하면, %daum.net은 앞에 어떤 문자열이 있든, daum.net으로 끝나는 모든 데이터를 지칭한다. 이러한 %의 특성을 이용해서 여러 방법으로 쓸 수 있다.
- where email like 'a%': email 필드값이 a로 시작하는 모든 데이터
- where email like '%a' email 필드값이 a로 끝나는 모든 데이터
- where email like '%co%' email 필드값에 co를 포함하는 모든 데이터
- where email like 'a%o' email 필드값이 a로 시작하고 o로 끝나는 모든 데이터
이 외 유용한 문법 배워보기
일부 데이터만 가져오기 : Limit
테이블에 어떤 데이터가 들어있나 잠깐 보려고 들어왔는데, 데이터를 다 불러오느라 시간이 오래 걸리면 힘들것이다.
그럴 경우를 대비해, 일부 데이터만 가져오는 limit이라는 기능이 있다.
select * from orders
where payment_method = 'kakaopay'
limit 5
상위 5개만 출력된다
중복 데이터는 제외하고 가져오기 : Distinct
ex) 고객이 사용한 결제수단이 어떤 종류가 있을지 궁금할 때 어떻게 할까?
select distinct(payment_method) from orders
몇 개인지 숫자 세보기 : Count
ex) orders 테이블에 데이터에 몇 개 들어있는지 궁금할 때 어떻게 할까?
select count(*) from orders
Distinct와 Count 같이 쓰기
ex) 스파르타 회원들의 성씨가 몇개인지 궁금하다. 어떻게 할까?
select count(DISTINCT(name)) from users
👉 참고한 내용
스파르타코딩클럽 '엑셀보다 쉬운 SQL' 1주차 강의 & 강의자료
'Database' 카테고리의 다른 글
[SQL] 서브쿼리(Subquery), with절, case문 등 유용한 문법 활용하기 (0) | 2023.08.13 |
---|---|
[SQL] Join 기능 (left join/inner join)과 Union 기능 활용하기 (0) | 2023.08.13 |
[SQL] Group by, Order by 기능 활용하기 (0) | 2023.08.13 |