SQL - 총정리

2023. 3. 2. 16:38language/SQL

1주차_1 - DB(데이터베이스) & SQL

 

-DB(데이터베이스)

   👉 여러 사람들이 같이 사용할 목적으로 데이터를 담는 통

   👉 통상적으로, 모든 데이터베이스는 CRUD에 해당하는 기능을 지원
          C (Create): 데이터의 생성을 의미
          R (Read): 저장된 데이터를 읽어오는 것을 의미
          U (Update): 저장된 데이터를 변경하는 것을 의미
          D (Delete): 저장된 데이터를 삭제하는 것을 의미

 

 

-SQL(Structured Query Language) 

   👉 데이터베이스에 요청(Query)를 날려서 원하는 데이터를 가져오는 것을 도와주는 언어

   👉 장점: 데이터를 읽어오는 과정인 Read를 매우 편하게 만들어줌
                  데이터를 손쉽고 깔끔하게 정리/분석하는 기능도 지원

 

 

1주차_2 - Select & Where

-Select 쿼리문
   👉 쿼리(Query)문: 데이터베이스에 명령을 내리는 것을 의미
   👉 Select 쿼리문: 데이터베이스에서 '데이터를 선택해서 가져오겠다'는 의미
   👉 Select 쿼리문 구성: 1) 어떤 테이블에서 2) 어떤 필드의 데이터를 가져올지 로 구성


-Where 절
   👉 Select 쿼리문으로 가져올 데이터에 조건을 걸어주는 것을 의미


-Select, Where 절 등 문법
   👉 select 쿼리문에 where 절 함께 사용
          ex) select * from orders
                where payment_method = 'kakaopay'
   👉 where 절과 자주 같이 쓰이는 문법
          - '같지 않음' ex) -> !=
          - '범위' ex) -> between '1' and '5'
          - '포함' ex) -> in(1, 5)
          - '패턴' ex) -> like 'a'
          * like의 다양한 사용법
          - where email like 'a%': email 필드값이 a로 시작하는 모든 데이터
          - where email like '%a' email 필드값이 a로 끝나는 모든 데이터
          - where email like '%co%' email 필드값에 co를 포함하는 모든 데이터
          - where email like 'a%o' email 필드값이 a로 시작하고 o로 끝나는 모든 데이터

 


-그 외 유용한 기능
   👉 limit: 테이블에 있는 일부 데이터만 가져오는 기능
          ex) select * from orders 
                where payment_method = "kakaopay"
                limit 5
   👉 distinct: 중복 데이터 제외 후 가져오는 기능
          ex) select distinct(payment_method) from orders
   👉 count: 데이터의 숫자를 세는 기능
          ex) select count(*) from orders

 

 

2주차 - Group by & Order by

 


-Group by
   👉 동일한 범주를 갖는 데이터를 하나로 묶어서, 범주별 통계를 내주는 것을 의미
   👉 ex) select name, count(*) from users
               group by name
   👉 쿼리가 실행되는 순서: from → group by → select
   👉 Group by 기능
          - 동일한 범주의 개수 구하기
             ex) select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명
                   group by 범주별로 세어주고 싶은 필드명
          - 동일한 범주에서의 최솟값 구하기
             ex) select 범주가 담긴 필드명, min(최솟값을 알고 싶은 필드명) from 테이블명
                   group by 범주가 담긴 필드명
          - 동일한 범주에서의 최댓값 구하기
             ex) select 범주가 담긴 필드명, max(최댓값을 알고 싶은 필드명) from 테이블명
                   group by 범주가 담긴 필드명
          - 동일한 범주의 평균 구하기
             ex) select 범주가 담긴 필드명, avg(평균값을 알고 싶은 필드명) from 테이블명
                   group by 범주가 담긴 필드명
          - 동일한 범주의 합계 구하기
             ex) select 범주가 담긴 필드명, sum(합계를 알고 싶은 필드명) from 테이블명
                   group by 범주가 담긴 필드명


-Order by
   👉 출력된 데이터를 정렬해 주는 것을 의미
   👉 오름차순 정렬 -> ex) select name, count(*) from users
                                           group by name
                                           order by count(*) asc
                                           *'asc'생략 가능(오름차순이 기본값이기 때문)
   👉 내림차순 정렬 -> ex) select name, count(*) from users
                                           group by name
                                           order by count(*) desc
   👉 쿼리가 실행되는 순서: from → group by → select → order by


-그 외 유용한 문법
   👉 Alias: 쿼리가 길어지면 헷갈릴 수 있기 때문에 혼동을 최소화하고 

                   원하는 이름으로 결과를 출력하기 위해 사용

 

 

3주차 - Join & Union

 

 

-Join
   👉 두 테이블의 공통된 정보 (key값)를 기준으로 테이블을 연결해서 한 테이블처럼 보는 것을 의미
   👉 'Left Join'과 'Inner Join'이 있음.
   👉 Inner Join
          - 교집합의 개념과 유사하다.
          - A, B 테이블이 있다고 가정했을 경우, 두 테이블에 공통적으로 만족되는 값이 있을 경우만 조회됨.

   👉 Left Outer Join
         - Outer Join에 포함되는 개념으로 쿼리 작성시 'Outer'는 생략 가능함. ex) Left Outer Join -> Left Join
         - 기준 테이블에서 Join대상 테이블에 공통되는 값이 없을 경우 'Null'값으로 조회하여 출력함.
            즉, 기준이 되는 테이블의 값들은 모두 출력되며 Join대상 테이블의 값이 있을 경우 값이 출력되고 
            없을 시 Null값이 출력된다.


-Union
   👉 Join과 Union의 공통점과 차이점
         - 공통점: 테이블끼리의 데이터를 연결함.
         - 차이점: 연결하는 방법이 다름.
   👉 Join은 테이블끼리 옆으로 연결되고, Union은 기준 테이블의 아래에 연결됨.
   👉 'Union'과 'Union All' 차이점
         - Union: 테이블간에 중복되는 데이터 값을 삭제 후 연결함.
         - Union All: 중복되는 값도 포함해서 모두 연결함.

 

 

4주차 - Subquery
   👉 Subquery는 Select절, From절, Where절에 쓰일 수 있지만 가장 많이 쓰이는 것은 From절에서의 사용임.
   👉 Inline View
         -From절에서 사용되는 Subquery를 말함. 
         -실제 테이블 대신에 서브쿼리의 결과를 테이블처럼 사용함.

'language > SQL' 카테고리의 다른 글

SQL - 4주 차(Subquery etc.)  (0) 2023.03.02
SQL - 3주 차(Join, Union etc.)  (0) 2023.03.02
SQL - 2주 차(Group by, Order by etc.)  (0) 2023.03.02
SQL - 1주 차(DB, SQL, Select, Where etc.)  (0) 2023.03.02