SQL 개발일지 - 1

Joon Ho Moon·2021년 5월 4일
0

스파르타 코딩 클럽의 SQL 강의 1주차.

1주차엔 SQL을 실행하기 위한 기본적인 쿼리문을 배운다.

SQL은 'Structured Query Language'의 약자로,'체계적인 정보 요청 언어' 정도로 번역할 수 있을 것 같다.

그 개념을 간단하게 정의하자면,
기업에서 관리하는 데이터베이스에는 각종 정보가 체계적으로 정리되어 있는 차트, 즉 Table이 있고, 그 테이블에서 내가 원하는 정보를 가져오는 것을 Query (요청) 라고 한다. 요청할 수 있는 정보의 종류가 다양하고 많기 때문에, 자연스럽게 특정 정보를 가져오려면 컴퓨터에게 명령하는 데 쓰이는 언어도 다양화 될 수밖에 없고, 다양한 Query문이 생기게 되는데, 그 언어가 체계적으로 발전하여 SQL이 된 것이라고 이해하면 될 것이다.

스파르타 코딩 클럽의 수업방식은 스파르타 측에서 미리 준비한 데이터베이스를 가지고 SQL의 쿼리문을 직접 다양하게 써보고 적용하면서 다양한 경우에 어떤 쿼리문이 적절한지 파악해 나가는 식이다.

각종 쿼리문 개념 정리

1. 'Select'
'Select'문은 나에게 '--라는 어떤 정보를 보여줘' 라는 가장 포괄적인 Query이다. 수업을 듣는동안 본 모든 쿼리문은 'select'로 시작한 것으로 보아, 명령을 하기 위해 입을 떼는 행위라고 할 수 있을 정도로 필수적인 쿼리이다.

2. 'Where'
Select from '-----' 라고 하면 '----'라는 테이블에 있는 모든 정보를 가져오게 되는데, 그 중에서 특정 정보를 보고 싶을 때 적용하는 조건문이다. 다시 말해, 'Select from ----' 는 '----의 모든 정보를 보여줘' 라는 뜻으로 해석할 수 있다면,
'Select * from ----'
'Where 원하는 조건'
라고 두 문장을 동시에 적는다면, '---- 에서 모든 정보를 보여줘, 근데 그 정보는 원하는 조건을 반영해야돼' 라는 뜻으로 해석할 수 있을 것이다.

예시 -

Select * from orders
Where payment_method = 'kakaopay' 라는 코드는
'orders' 테이블에서 'payment_method'가 'kakaopay'인 모든 사람들의 정보를 가져오라는 뜻이다.

또한,

Select * from point_users
Where point >= 5000 라는 코드는
'point_users'라는 테이블에서 'point'가 5000점 이상인 사람들의 정보를 모두 가져오라는 뜻이다.

여기서 주의할 점은 Where절을 이용해서 여러가지 조건을 동시에 적용할 수 있다는 점이다.

조건들은 단순히 'and'로 연결해주면 된다. 예를 들어,
Select * from orders
Where course_titke = '웹개발 종합반' and payment_method = 'card'
라고 한다면, 주문 내역 중, 웹개발 종합반이면서, 결제수단을 카드로 선택한 사람들의 모든 정보를 볼 수 있게 된다.

여기서!

Where 절과 자주 사용하는 문법 정리

  1. '같지 않음'이라는 조건 표현 - '!=' 을 써준다.
    예)Select * from point_users
    Where payment_method != 'card'
    카드 이외 결제방법을 사용한 유저 정보 모두 가져오기.

  2. 범위를 나타내는 조건 표현 - 'between a and b'를 써준다.
    예) Select * from point_users
    Where point between 2000 and 3000
    포인트가 2000에서 3000 사이인 모든 유저 정보 가져오기.

  3. '포함'의 조건 표현 - 'in ()' 괄호 안에 들어있는 정보가 포함되어 있는 필드만 보여달라는 조건문이다.
    예) Select * from checkins
    Where week in (1,3)
    강의 시작 주차가 1 혹은 3인 유저 정보만 전부 가져오기.

  4. '패턴' (문자열규칙)을 조건으로 표현하기. Like 문으로 조건을 적용할 수 있다.
    'Where'과 'like'가 함께 사용되고, 'XXXX'가 뒤따라 나오면,
    한 필드 안에 있는 정보들 중 'XXXX'라는 패턴을 보이는 필드는 전부 가져오게 하는 것. '%'와 함께 사용하게 되는데, '%'는 내가 보고싶은 패턴인 'XXXX'앞, 뒤에 적게 되며, 'XXXX'앞이나 뒤에는 어떤 정보가 있어도 상관없다는 뜻이다.

예) Select * from users
Where email like '%daum.net'
이라고 입력하면, users 테이블에서 email이 daum.net이라는 패턴을 포함하는 모든 정보를 가져오게 되며, daum.net 앞에 어떤 정보가 놓여있든 상관없이 전부 추려서 가져온다. 다시 말하면, daum.net을 이용하는 모든 사람들의 이메일 주소를 가져올 수 있는 것.

  1. 일부 데이터만 가져오기. Limit.
    'limit'는 내가 제시한 조건에 해당하는 정보들 중, 몇 가지만 가져오라는 명령문으로써, 주로 큰 데이터베이스에서 가져올 정보의 양이 많을 때 유용하게 쓰인다.

예) Select * from orders
Where payment_method = 'kakaopay'
limit 5
'payment_method'가 카카오페이인 유저들 중에서 5명만 추려서 보여주라는 뜻.

  1. 중복 데이터는 제외하고 가져오기. Distinct.
    한 필드에 몇 가지의 정보가 있는지를 파악할 때 유용한 명령문.

예) Select distinct(payment_method) from orders
payment_method 중 어떤 종류의 결제 방법이 있었는지를 보려고 할 때 매우 유용하다.

  1. 내가 제시한 조건에 해당하는 정보의 개수를 세어주는 'count(*)'.

예) Select count(*) from orders
Where payment_method = 'kakaopay'
카카오페이로 결제를 한 모든 주문 내역의 수 = 카카오 페이로 결제한 유저들의 수를 보여다오.

예) 6번과 7번을 동시 적용해보자.
Select count(distinct(name)) from users
라는 쿼리문을 작성하면, 우선적으로 성씨 별로 유저들의 정보를 축약해서 보게 될 것이고, 그 숫자를 세게 되니까, 결국에는 나의 고객들 중에는 몇 가지의 성이 있는지를 셀 수 있게 되는 것이다.

소감

이렇게 스파르타 코딩클럽 1주차 SQL 강의를 들어보았는데, 생각보다 정말 쉽고 재미있었다. 쉬워서 재미가 있었던 건가.
4주차 강의까지 다 듣고 나서 복습 차원에서 정주행을 하는 입장이긴 하지만, 막힘없이 배울 수 있다는 점에 놀랐고, 이렇게 쉬운 거면 왜 진작 시작하지 않았나 하는 자책하는 마음도 조금 들었다.

시작이 반이라고, 앞으로 개발자 못지 않은 수준으로 머신러닝과 딥러닝까지 공부하려고 했던 초심을 잃지 않고 이렇게만 차근차근 익혀나갈 수 있으면 좋겠다.

profile
몽상가

0개의 댓글