지금은마라톤중

멋사 AI스쿨_SQL_TIL (1) 본문

멋쟁이사자처럼/SQL

멋사 AI스쿨_SQL_TIL (1)

달리는중 2023. 1. 13. 17:38

 

2023.01.13 

python만 공부하다가 처음으로 SQL을 배웠다. 

파이썬을 어느정도 알고 배워서 그런지 이해를 좀 더 쉬웠던 것 같다.

수업 중 파이썬의 문법이 SQL에서 적용이 가능한지에 대해 궁금한 부분이 많았다.

 

 


내용정리

 

● 데이터와 데이터 베이스(DB)

- 데이터란 컴퓨터 안에 기록된 문자, 숫자를 말한다.

- 이런 데이터들의 집합이 데이터베이스이다.

 

● 데이터베이스 관리시스템)(DBMS : 데이터베이스를 효율적으로 관리하는 소프트웨어

 

● 관계형 모델

: 데이터를 표 형태로 구조적으로 관리하는 모델

- 관계형 데이터베이스(RDB)

RDB기반의 데이터베이스관리시스템이 RDBMS

- RDBMS 소프트웨어로는 Oracle, DB2, SQL Server PostgreSQL, MySQL, SQLite 등

 

● SQL : 관계형 모델을 관리하는 언어

- 정보를 저장, 업데이트,. 제거 및 검색을 할 수 있음

- 데이터베이스 성능을 유지하고 관리하는 것에도 사용

 

● Google BigQuery

: 머신러닝, 지리정보 분석, 비즈니스 인텔리전스와 같은 기본 제공 기능으로 데이터를 관리하고 분석할 수 있게 해주는 완전 관리형 엔터프라이즈 데이터 웨어하우스

🙌🏻Tips
실제 회사에서도 빅쿼리 사용해서 데이터 쫙 모아줌.

(예를 들어 당근마켓이 이렇게 사용하고 있는데요. 서버가 수십대이고, 그 서버에서 모이는 데이터를 전부 빅쿼리로 조회할 수 있도록 모아줌. 이렇게 데이터가 모이는 곳을 데이터 웨어하우스라고 함) 
=> 조회는 누구나 가능합니다. 디자이너도 가능하고, 마케터도 가능

- BigQuery에서는 한글이 안된다

    -> 영어만 사용하자

 

함수

● as : 변수명을 변경해줄 때 사용,  필드명, 테이블명 둘 다 가능

   ex) name as product_name, from `thelook_ecommerce.prducts` as a

 

● limit : 갯수 제한을 줄 때  사용, 

   ex) limit 5 ; 

 

● distinct : 중복 제거할 때 사용

   ex) select distinct country, city 

# 500개로 갯수 제한을 줌
select *
from `thelook_ecommerce.products`
limit 500;

 #국가와 시티를 중복 제거함.
select distinct country, city   
from `thelook_ecommerce.users`;

 

● where : 조건문 

   ex) where id = 2427 ;     #id 가 2427인 것만 조회

select * 
from `thelook_ecommerce.users`
where age <= 20 
or age >= 60;

select * 
from `thelook_ecommerce.users`
where (country = 'Japan' or country = 'Brasil')
and age >= 60

 

🙌🏻Tips
한 SELECT 문이 작동할 때, 파이썬 처럼 위에서부터 한 줄씩 실행되는 게 아니라 모두 한 번에 작동!
그래서 product_profit_rate를 만들 때, product_profit 이라는 컬럼이 존재하는게 아니라 아직 만들어지지 않은 컬럼으로 인식됩니다.
그래서 한 SELECT 안에서는 다른 컬럼의 값을 가져오거나 쓸 수 없습니다!

 

🙌🏻Tips
대부분 데이터베이스가 연산처리가 느려서, 아주 간단한 연산 또는 짧은 연산만 디비에서 처리하고 나머지는 
서버(python이나 JS 등등)에서 SELECT로 값을 불러와서 연산처리를 해주는 게 보통 방식입니다

 

* SQL은 대소문자 등 문법이 좀 느슨한 편이다. 그래서 들여쓰기를 하거나 가독성이 좋게 하는 것이 중요하다.

 

● between : 사이를 출력, 양쪽 경계값도 다 포함

   ex) between 20 and 30 : 20과 30 사이를 출력

 

in : 안에 포함된 것을 출력, ()를 사용

select * from `thelook_ecommerce.users`
where country in ('United States', 'Brasil', 'Korea', 'Japan');

●like

  - % : 문자열 조건을 제시

  - ___: 문자 수를 제시

 # 성 중간에 a가 들어가는 사람 찾음
select *
from `thelook_ecommerce.users`
where first_name like '%a%';

# 성이 총 5글자인데 Da로 시작하는 사람 찾음 
select distinct first_name
from `thelook_ecommerce.users`
where first_name like 'Da___';

● IS NULL : SQL에서 널값을 찾을 때 사용

select *
from `thelook_ecommerce.order_items`
where delivered_at IS NULL
and shipped_at IS NOT NULL

 

● count : 갯수를 세는 집계 함수

   ex) select count(distinct name)

 

● sum : 합계를 구하는 함수

   ex) select sum(retail_price)

 

● avg : 평균을 구하는 함수

   ex) select avg(cost)

 

● max : 최댓값 구하는 함수

● min : 최솟값 구하는 함수

● variance : 분산 구하는 함수

select count(id) 
from `thelook_ecommerce.users`;

select count(distinct city) 
from `thelook_ecommerce.users`;

select sum(retail_price)
from `thelook_ecommerce.products`;

select avg(cost)
from `thelook_ecommerce.products`;

select max(cost), max(retail_price)
from `thelook_ecommerce.products`;

select min(cost), min(retail_price)
from `thelook_ecommerce.products`;

select variance(retail_price)
from `thelook_ecommerce.products`;

select stddev(retail_price)
from `thelook_ecommerce.products`;

 

● GROUP BY : 특정 항목을 기준으로 그룹화하여 조회할 수 있음

 


 

'멋쟁이사자처럼 > SQL' 카테고리의 다른 글

멋사 AI스쿨_SQL_TIL (6)  (0) 2023.02.07
멋사 AI스쿨_SQL_TIL (5)  (0) 2023.02.02
멋사 AI스쿨_SQL_TIL (4)  (0) 2023.02.02
멋사 AI스쿨_SQL_TIL (3)  (0) 2023.01.25
멋사 AI스쿨_SQL_TIL (2)  (0) 2023.01.20
Comments