1. Select 쿼리문
쿼리(Query)문이란 데이터베이스에 명령을 내리는 것을 의미한다.
여기서 Select 쿼리문은, 데이터베이스에서 '데이터를 선택해서 가져오겠다'는 의미이다.
Select 쿼리문은 1) 어떤 테이블에서 2) 어떤 필드의 데이터를 가져올지 로 구성된다.
2. 데이터베이스
만약 데이터베이스의 테이블을 보고싶을 경우,
show tables;
입력 시, 아래와 같은 결과가 나온다.

위의 테이블 중에서 orders 테이블의 데이터를 가져오고 싶을 경우,
select * from orders;
입력 시,

이와 같은 결과가 나온다.
만약 orders 테이블의 특정 필드만 가져오고 싶을 경우에는
select created_at, course_title, payment_method, email from orders;
입력 시,

이와 같은 결과가 나온다.
3. Where 절
Where 절은, Select 쿼리문으로 가져올 데이터에 조건을 걸어주는 것을 의미한다.
예를 들어, orders 테이블에서 결제수단이 카카오페이인 데이터만 가져오고 싶을 경우, orders 테이블에서 주문한 강의가 앱개발 종합반이면서, 결제수단이 카드인 데이터만 가져오고 싶을 경우 등이 있다.
Select 쿼리문에 Where 절 함께 사용하는 코드는
select * from orders
where payment_method = "kakaopay";
입력 시,

이와 같이 patment_method 가 kakaopay 인 경우만 가져올 수 있다.
여려 조건을 걸고 싶은 경우에는
select * from orders
where course_title = "앱개발 종합반" and payment_method = "kakaopay";
입력 시,

course_title 이 앱개발 종합반이고, payment_method 가 kakaopay 인 데이터만 가져올 수 있다.
Where 절과 자주 같이쓰는 문법에는 '같지 않음' 이 있는데, 이 조건을 걸기 위해서는
select * from orders
where course_title != "웹개발 종합반";
'!=' 을 사용할 경우,

corse_title 이 앱개발 종합반인 데이터만 볼 수 있다.
또 다른 문법은 '범위'가 있는데,
select * from orders
where created_at between "2020-07-13" and "2020-07-15";
'Where ~~ between ~~' 을 사용할 경우,

created_at 이 7월 13일 부터 15일 까지의 데이터를 볼 수 있다.
'포함' 문법은
select * from checkins
where week in (1, 3);
'in' 으로 조건을 걸 경우,

checkins 테이블에서 week 가 1인 경우와 3인 경우를 모두 볼 수 있다.
다음은 문자열에 조건을 걸고 싶을 경우, '패턴' 을 사용하면 된다.
select * from users
where email like '%daum.net';
입력 시,

users 테이블에서 email 이 daum.net 으로 끝나는 데이터만 볼 수 있다. (이 문법은 꼭! 기억하기)
Like 는 패턴으로 조건을 거는 문법인데, 사용법이 매우 다양하다.
▼ email 필드값이 a로 시작하는 모든 데이터
where email like 'a%';
▼ email 필드값이 a로 끝나는 모든 데이터
where email like '%a';
▼ email 필드값에 co를 포함하는 모든 데이터
where email like '%co%';
▼ email 필드값이 a로 시작하고 o로 끝나는 모든 데이터
where email like 'a%o';
[퀴즈] 결제수단이 CARD가 아닌 주문데이터만 추출해보기
payment_method 가 CARD 가 '아닌' 데이터만 추출하는 것 이므로,
select * from orders
where payment_method != 'CARD';
입력 시,

payment_method 가 CARD 가 아닌 경우만 출력된다.
[퀴즈] 20000~30000 포인트 보유하고 있는 유저만 추출해보기
'범위' 조건은 between 을 사용해야 하므로,
select * from point_users
where point between 20000 and 30000
입력 시,

이와 같이 point 가 20000~30000인 데이터만 출력된다.
[퀴즈] 이메일이 s로 시작하고 com로 끝나는 유저만 추출해보기
select * from users
where email like 's%com';
Like에서 's%com' 을 사용하면,

이와 같이 출력된다.
4. 이외 유용한 문법
1) 일부 데이터만 가져오기 : Limit
select * from orders
where payment_method = "kakaopay"
limit 5;
입력 시,

payment_method 가 kakaopay 인 5개인 일부 데이터만 출력할 수 있다.
2) 중복 데이터 제외하기 : Distinct
select distinct(payment_method) from orders;
입력 시,

이렇게 4개의 결제수단이 있다는 걸 알 수 있다.
3) 몇 개인지 숫자 세보기 : Count
select count(*) from orders;
입력 시,

orders 의 갯수를 알 수 있다.
5. 퀴즈 풀어보기
1) 성이 남씨인 유저의 이메일만 추출하기
select email from users
where name = "남**";

2) Gmail을 사용하는 2020/07/12~13에 가입한 유저를 추출하기
select * from users
where created_at between "2020-07-12" and "2020-07-14"
and email like "%gmail.com";

3) Gmail을 사용하는 2020/07/12~13에 가입한 유저의 수를 세기
select count(*) from users
where created_at between "2020-07-12" and "2020-07-14"
and email like "%gmail.com";

이상 끝 ٩( ᐛ )و
'스파르타 코딩클럽 > SQL' 카테고리의 다른 글
[스파르타 코딩 클럽] SQL 4주차 개발일지 (0) | 2021.07.19 |
---|---|
[스파르타 코딩 클럽] SQL 3주차 개발일지 (0) | 2021.07.05 |
[스파르타 코딩 클럽] SQL 2주차 개발일지 (0) | 2021.06.28 |