Q. 데이터 베이스는 왜 필요할까?
A : 많은 양의 데이터를 효과적으로 저장/수정/사용하기 위해서는 데이터베이스가 필요.
1. 데이터 베이스의 기초 개념
- 데이터를 잘 꺼내오기 위해서 쓰는 것. 여러 사람들이 같이 사용할 목적으로 데이터를 담는 통
- 모든 데이터베이스는 CRUD에 해당하는 기능을 지원.
C (Create): 데이터의 생성
R (Read): 저장된 데이터를 읽기
U (Update): 저장된 데이터를 변경
D (Delete): 저장된 데이터를 삭제
2. SQL이란 무엇일까?
Structured Query Language의 약자로, 데이터베이스에 요청 (Query)을 날려서 원하는 데이터를 가져오는 것을 도와주는 언어이다. 데이터를 읽어오는 과정인 "R (Read)"를 편하게 만들고, 데이터를 손쉽고 깔끔하게 정리/분석하는 기능도 지원한다.
데이터를 가져오는 명령어를 작성하는 것을 'SQL 쿼리를 작성한다' 라고 한다.
3. 필수 프로그램 설치
DBeaver (다운로드 링크)
4. 문법 살펴보기(select, where)
데이터가 담겨져 있는 표 = 테이블, 항목 하나하나 = 필드
SQL 쿼리를 작성하는 입력창이 없다면, 좌측 상단 양피지 모양을 클릭해서 New Script 하기
- 데이터베이스 테이블 보기 : show tables;
- 테이블의 데이터 가져오기 : select * from orders(테이블명);
- 테이블의 특정 필드만 가져오기 : select created_at, course_title(필드명) from orders;
- Where 절
Select 쿼리문으로 가져올 데이터에 조건을 걸어주는 것! 필요한 데이터만 뽑아낼 수 있다.
-- 예1) orders 테이블에서 결제수단이 카카오페이인 데이터만 가져와줘!
select * from orders
where payment_method = "kakaopay";
-여러 조건을 걸어주기 위해서는 and
-- 예2) orders 테이블에서 주문한 강의가 앱개발 종합반이면서, 결제수단이 카드인 데이터만 가져와줘!
select * from orders
where course_title = "앱개발 종합반" and payment_method = "kakaopay";
-'같지 않음' 조건 걸어보기 !=
'!=' 에서 ! (느낌표)는 부정 (not)을 의미한다. '='는 같음을 의미하니, '!='는 같지 않음을 의미
-- 예3) '웹개발 종합반'을 제외하고 주문데이터를 보고 싶어졌어요.
select * from orders
where course_title != "앱개발 종합반";
-'포함' 조건 걸어보기
'포함' 조건은 in 으로 걸 수 있다.
-- 예4) 1, 3주차 사람들의 '오늘의 다짐' 데이터만 보고 싶어졌어요.
select * from checkins
where week in (1, 3);
-'범위' 조건 걸어보기
'범위' 조건은 between 으로 걸 수 있다.
-- 예5) 7월 13일, 7월 14일의 주문데이터만 보고 싶어졌어요.
select * from orders
where created_at between "2020-07-13" and "2020-07-15";
-'패턴' (문자열 규칙) 조건 걸어보기
'패턴' 조건은 like 으로 걸 수 있다.
-- 예6) 다음 (daum) 이메일을 사용하는 유저만 보고 싶어졌어요.
select * from users
where email like '%daum.net';
-- Like는 패턴으로 조건을 거는 문법으로, 사용법이 아주 다양하다.
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로 끝나는 모든 데이터
-- 그때그때 필요한 것을 찾아서 쓰면 된다('how to use like in sql' 구글링!)
- 일부 데이터만 가져오기: Limit
Lmit을 써주고 몇 개 출력할지 숫자를 적어주면 끝! 데이터 양이 많은 테이블을 간단히 확인할 때 유용하다
-- 예7) orders 테이블에서 결제수단이 카카오페이인 데이터 5개만 출력해서 보고싶어
select * from orders
where payment_method = "kakaopay"
limit 5;
- 중복 데이터는 제외하고 가져오기: Distinct
-- 예8) 결제수단으로 어떤게 있는지 알고싶어
select distinct(payment_method) from orders;
- 몇 개인지 숫자 세보기: Count
-- 예10) orders 테이블에 데이터가 몇 개 들어있는지 궁금해요!
select count(*) from orders
-[응용] Distinct와 Count를 같이 써보기
회원 분들의 성(family name)씨가 몇개인지 궁금하다면?
select count(distinct(name)) from users;
'기술 > BE' 카테고리의 다른 글
[SQL] Subquery, With, 문자열, Case (1) | 2023.11.26 |
---|---|
[SQL] Join, Union (0) | 2023.11.26 |
[SQL] Group by, Order by, 별칭(Alias) (1) | 2023.11.26 |