MYSQL

[SQL] SQL문 정리

yunseohhe 2024. 7. 19. 19:09

안녕하세요.

오늘은 SQL문을 찾아 보기 쉽게 정리한 글입니다.

SQL을 사용하기 전에 한번씩 읽고 사용하시면 좋을 것 같습니다.

 

SQL이란?

  • 데이터베이스와 대화하기 위한 언어입니다.
  • 질의(query)라고 생각하시면 쉽습니다.

 

SELECT / FROM 문

  • '어느 테이블에서 데이터를 가져올까?'라는 사항이라고 생각하면 쉽습니다.
  • SQL을 사용하기 위해서는 항상 Select/from문을 가지고 와야 됩니다.
  • 밑에 코드를 해석해보면 "food_orders 테이블에서 모든자료(*)를 가져올꺼야" 입니다.
select *
from food_orders

 

WHERE 절

  • 특정 조건을 필터링 해야할 때 필요합니다.
  • 밑에 코드를 해석해보면 "food_orders 테이블에서 cuisine_type이 Korean의 모든자료(*)를 가져올꺼야" 입니다.
select *
from food_orders
where cuisine_type='Korean'

 ( cf : 테이블이 위에 Korean처럼 대문자가 있을경우 꼭 대문자로 써야된다는 점!!)

 

BETWEEN문

  • 'A와B사이' 값의 자료를 보고싶을 때 사용합니다.
  • 밑에 코드를 해석해보면 "food_orders 테이블에서 가격이 20,000원에서 30,000원 사이의 자료를 가져올꺼야" 입니다.
select *
from food_orders
where price between 20000 and 30000

 

IN문

  • '포함'하는 조건을 주고싶을 때 사용합니다.
  • 밑에 코드를 해석해보면 "customers 테이블에서 나이가 15, 21, 31살인 사람의 자료를 가져올꺼야" 입니다.
select *
from customers
where age in (15, 21, 31)

 

LIKE문

  • 완전히 똑같지는 않지만, 비슷한 값을 조건을 주고싶을 때 사용합니다.
  • like%끝나는문자’
  • like ‘시작문자 %
  • like %포함문자%
  • 밑에 코드를 해석해보면 "customers 테이블에서 이름이 '~~임'으로 끝나는 이름을 가진 고객의 자료를 가져올꺼야" 입니다.
select *
from customers
where name like '%임'

 

GROUP BY절

  • 여러번의 질의(query) 없이, 카테고리를 지정하여 카테고리별로 확인하고 싶을 때  사용합니다.
  • 밑에 코드를 보면 "음식점별 주문 금액 최댓값 조회한 값" 입니다.
select restaurant_name,
       max(price) "최대 주문금액"
from food_orders
group by restaurant_name
  • 밑에 코드는 기본 구조입니다.
select 카테고리컬럼(원하는컬럼 아무거나),
       sum(계산 컬럼),
from 테이블명
group by 카테고리컬럼(원하는컬럼 아무거나)

  ( 사용하기 전에 구조를 한번씩 생각하고 사용하는게 좋겠죠?!)

  • 하나 더 알려드리면, 일일이 적는 것보다 '1, 2' 숫자로 select의 몇 번째 컬럼을 카테고리별로 묶어줄 수도 있습니다.
  • 밑에는 "카테고리컬럼1과 카테고리컬럼2"만 묶어준 것입니다.
select 카테고리컬럼1, 카테고리컬럼2, 카테고리컬럼3
from 테이블명
group by 1, 2

 

ORDER BY절

  • 정렬하기 위해 사용하는 절입니다.
  • 조건을 준 다음에 항상 맨 마지막에 사용합니다.
  • 밑에 코드가 기본 구조입니다.
select 카테고리컬럼(원하는컬럼 아무거나),
       sum(계산 컬럼),
from
group by 카테고리컬럼(원하는컬럼 아무거나)
order by 정렬을 원하는 컬럼 (카테고리컬럼(원하는컬럼 아무거나), sum(계산 컬럼) 둘 다 가능)
  • 정렬의 종류

 

 

Subquery문

  • 여러 번의 연산을 한 번의 SQL문으로 작성할 때 사용합니다.
  • Sub라는 명칭에서 유추할 수 있듯이, query안에 sub로 들어간 구문이라고 생각하면 쉽습니다.
  • 여러가지 구조
select column1, special_column
from
    ( /* subquery */
    select column1, column2 special_column
    from table1
    ) a
select column1, column2
from table1
where column1 = (select col1 from table2)

 

Join문

  • 여러 테이블에서 데이터를 불러올 때 사용합니다.
  • 엑셀의 'Vlookup'과 유사하고 동일한 원리를 가집니다.
  • A LEFT JOIN  B : 공통 컬럼을 기준으로, B의 테이블에 값이 없더라도 A의 데이터가 모두 조회되는 경우
  • A INNER JOIN  B : B : 공통 컬럼을 기준으로, 두 테이블 모두에 있는 값만 조회되는 경우

  • 기본 구조
-- LEFT JOIN
select 조회 할 컬럼
from 테이블1 a left join 테이블2 b on a.공통컬럼명=b.공통컬럼명

-- INNER JOIN
select 조회 할 컬럼
from 테이블1 a inner join 테이블2 b on a.공통컬럼명=b.공통컬럼명

 

 

 


SQL문 사용하기 전에 항상 생각!!

  • SQL문이 배운 순간에는 쉬울 지 몰라도 막상 사용하려고 하면 어떻게 구조를 짜야될지 모르는 순간이 오는데 항상 사용하기 전에 "어떤 테이블에서 자료를 가져올 지, 어떤 조건을 지정할 지, 어떤 그룹별로 찾아볼지, 어떤 정렬을 줄 지"등 생각을 해보고 사용하는 것이 좋습니다.

'MYSQL' 카테고리의 다른 글

[MYSQL] 명령어 모음  (0) 2024.10.17
[SQL] SQL 함수 정리  (1) 2024.07.20