SQL - 1주차(Select, where)

최문성·2021년 12월 23일
0

SQL 강의내용 정리

목록 보기
1/4
post-thumbnail

1). SQL 기초 개념

  • 데이터베이스란?
    : 여러 사람들이 같이 사용할 목적으로 데이터를 담는 통으로 이해.
    통상적으로, 모든 데이터베이스는 'C.R.U.D'에 해당하는 기능을 지원
    (4가지 기능 중, Read에 대해 집중적으로 공부)

    C (Create): 데이터의 생성을 의미합니다
    R (Read): 저장된 데이터를 읽어오는 것을 의미해요
    U (Update): 저장된 데이터를 변경!
    D (Delete): 저장된 데이터를 삭제하는 것을 의미해요

  • SQL이란?
    : Structured Query Language의 약자, 데이터베이스에 요청 (Query)을 날려서 원하는 데이터를 가져오는 것을 도와주는 언어.

  • SQL과 데이터베이스의 관계(쿼리문?)
    : 쿼리(Query)문이란? 쿼리는 질의를 의미. 데이터베이스에 명령을 내리는 것을 의미.

    ex). Select 쿼리문 = 데이터베이스에서 '데이터를 선택해서 가져오겠다'는 의미

  • 테이블(Table) & 필드(Field)
    테이블 → 데이터가 담긴 시트를 의미
    필드 → 테이블에 구성되어 있는 각각의 카테고리(속성)

2). Select, Where 쿼리문(절)의 의미

  • Select (필드) from (테이블) 쿼리문 해석
    1) 어떤 테이블에서 2) 어떤 필드의 데이터를 가져올지로 구성

  • where 절
    Select 쿼리문 중, 조건을 걸어줄 때 사용 (= 엑셀의 'if' 와 유사)

1개 이상의 조건들을 나열할 때, 쉼표로 구분하여 쿼리문 작성, 전체 조건을 모두 불러올 땐 '*' 활용한다.
SELECT를 단독으로 사용하기보다 FROM 쿼리와 함께 사용하는 경우가 많다.

3). Select, Where 쿼리문 실전 예시

  • 예시 1). orders 테이블에서 결제수단이 카카오페이인 데이터만 가져오세요
select * from orders
where payment_method = "kakaopay";

❖ Error 주의 : 문자열을 인식시킬땐 ""를 꼭 사용

Tip. 여러가지 조건을 넣어줄 땐, and 를 사용해라!

select * from orders
where course_title = "앱개발 종합반" and payment_method = "kakaopay";
  • 예시 2). Point_users 테이블에서 포인트 5000점 이상인 데이터만 가져다줘
select * from point_users
where point >=5000;

4). Where 절과 자주쓰이는 문법

같지 않음(!=) / 범위(between, and) / 포함(in) / 패턴(like) / 일부 데이터(limit) / 중복(distinct) / 숫자(count)

  • 같지 않음(!=) 예시

    Q. '웹개발 종합반'을 제외한 주문데이터를 보여주세요

select * from orders
where course_title != "웹개발 종합반";

  • 범위(between, and) 예시

    Q. 7월 13일, 7월 14일의 주문데이터만 보여주세요

select * from orders
where created_at between "2010-07-13" and "2010-07-15";

  • 포함(in) 예시

    Q. 1, 3주차 사람들의 '오늘의 다짐' 데이터만 보여주세요

select * from checkins
where week in(1, 3);

  • 패턴(like, 문자열 규칙) 예시
    → 특정 문자가 반복되는 경우 활용 가능

    Q. 다음 (daum) 이메일을 사용하는 유저만 보여주세요

select * from users
where email like '%daum.net';

'%'는 어떠한 문자가 와도 상관없다는 뜻 (=엑셀의 *와 동일)

Q. 이메일이 s로 시작하고 com로 끝나면서 성이 이씨인 유저만 추출

select * from users
where email like 's%com' and name ="이**";

  • 일부 데이터(limit) 예시
    → 시간 절약상 일부 데이만 보고 싶을 때

    Q. 카카오페이 결제수단을 사용한 5명의 유저를 보여줘

select * from orders
where payment_method ="kakaopay"
limit = 5;

  • 중복(distinct) 예시
    → 중복 데이터는 제외하고 가져오기

    Q. 총 결제수단이 몇 가지가 있는지 확인해주세요 (중복제거)

 select distinct(payment_method) from orders;

출력하고 싶은 필드에 distinct를 씌어주는 느낌으로 접근


  • 숫자(count) 예시

    Q. Orders 테이블에 데이터가 몇개나 들어 있나요?

select count(*) from orders;

  • 위 내용들을 토대로 응용 문제

    Q. Gmail을 사용하는 2020/07/12~13에 가입한 유저를 추출

select * from users
where created_at between "2020-07-12" and "2020-07-14"
and email like '%gmail%';
profile
코딩하는 마케터로 거듭나기

0개의 댓글