엑셀보다 쉬운 SQL 1주차
SQL - 구조가 단순, 다양한 조합으로 다양한 결과 -> 재미있다!
실무에서는 이미 설계된 DB에서 직접 데이터를 꺼내는 일을 주로 한다
수업의 목표: 반복된 실습으로 원리 익히기
DB 사용의 목적: 방대한 양의 정보를 저장/방대한 정보에서 원하는 데이터를 사용 가능
CRUD: create, read, update, delete
DBeaver 사용
데이터베이스 연결: 좌측 상단 플러그 모양 아이콘 클릭
SQL 편집기 열기: 좌측 상단의 양피지 모양 아이콘 클릭
SQL문 실행: SQL편집기에서 우클릭->실행->SQL문 실행 / Ctrl + Enter
Query: 질의를 의미, 데이터베이스에 명령을 내리는 것
SQL문: DB에 명령을 내리기 위한 언어
Select Query문: 데이터를 선택해서 가져오겠다/ 어떤 테이블에서 어떤 필드의 데이터를 가져올지
테이블
필드
row=행=튜플
1)스파르타 데이터베이스의 테이블 보기
show tables;
2)orders테이블의 데이터 가져오기
select * from orders;
*: 모든 속성 선택
3)orders 테이블의 특정 필드만 가져오기
select created_at, course_title, payment_method, email from orders;
1-4강
Where절: Select문으로 가져올 데이터에 조건을 걸어주는 것
1)orders 테이블에서 결제수단이 카카오페이인 데이터만 가져오기
select * from orders
WHERE payment_method = 'kakaopay'
'kakaopay'에는 따옴표가 필수, 문자열에 필요/ 따옴표가 없는 것들은 속성명 등을 지칭
SQL문은 가독성이 좋게 작성할 것
2)point_users 테이블에서 포인트가 5000점 이상인 데이터만 가져오기
select * from point_users pu
WHERE point >= 5000
3)orders 테이블에서 주문한 강의가 앱개발 종합반이면서, 결제수단이 카드인 데이터만 가져오기
select * from orders
WHERE course_title = '앱개발 종합반' AND payment_method = 'CARD'
select * from point_users
WHERE point > 20000
2)
select * from users
WHERE name = '황**'
추가학습
와일드 카드
%: 모든 문자, 글자 수 제한 없음
_: 모든 문자, 한 글자
[]: [bd]의 경우 b 또는 d
^: [^bd]의 경우 b 또는 d가 미포함된 것
-: [b-d]의 경우 b, c, d 중 하나라도 포함된 것
3)
select * from orders
WHERE course_title = '웹개발 종합반' AND payment_method = 'CARD'
작성시 팁
1)show tables로 어떤 테이블이 있는지 살펴보기
2)제일 원하는 정보가 있을 것 같은 테이블에 select * from (테이블명) 쿼리 사용하기
3)원하는 정보가 없으면 -> 다른 테이블에도 2)를 해보기
4)테이블을 찾았을 때 -> 조건을 걸 필드를 찾기
5) select * from (테이블명) where (조건) 쿼리 완성!
WHERE절과 자주 사용되는 문법
1)같지 않다: !=
2)범위: btetween
select * from orders
WHERE created_at BETWEEN '2020-07-13' AND '2020-07-15'
3)포함: in
select * from checkins
where week in (1,3)
4)패턴: like
select * from users u
where email like '%daum.net'
와일드카드 %
연습문제
1)
select * from orders
WHERE payment_method != 'CARD'
2)
select * from point_users
WHERE point BETWEEN 20000 AND 30000
3)
select * from users
WHERE email LIKE 's%com'
4)
select * from users
WHERE email LIKE 's%com' AND name = '이**'
이외의 유용한 문법들
1)limit: 제한
select * from orders
where payment_method = "kakaopay"
limit 5;
2)Distict: 중복제거
select distinct(payment_method) from orders;
3)count: 개수 세기
select count(*) from orders
응용
select count(distinct(name)) from users
1-5
에러 메세지 해석하기
1) 에러 메세지에서 언급하는 부분 살펴보기
2) 에러 메세지에서 언급하는 부분 지워보기
1-6
퀴즈 풀어보기
1)
select email FROM users
WHERE name = '남**'
2)
select * FROM users
WHERE email LIKE '%gmail.com' AND created_at BETWEEN '2020-07-12' AND '2020-07-14'
패턴은 LIKE문 사용
원하는 날짜 범위에 +1 해주기!
3)
select COUNT(*) FROM users
WHERE email LIKE '%gmail.com' AND created_at BETWEEN '2020-07-12' AND '2020-07-14
'
숙제-퀴즈
select * FROM orders
WHERE email LIKE '%naver.com' AND course_title = '웹개발 종합반' AND payment_method = 'kakaopay'