코딩공부/데이터베이스, SQL

엑셀보다 쉬운 SQL 1주차

정해인3 2023. 4. 25. 15:17

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'

 

문자열: 대소문자 상관없이 가능, 되도록 원본과 동일하게
 
AND: 
OR: 또는
 
(1)원하는 테이블 (2)조건
 
 
연습문제
1)
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'