Hyeok의 웹 개발 블로그

<2025.02.20> SQL의 기본 개념 (1~2주차) 본문

TIL/SQL

<2025.02.20> SQL의 기본 개념 (1~2주차)

Yhyeok 2025. 2. 20. 23:47

-오늘의 학습 내용

SQL의 기초에 대해 학습을 진행했습니다.

 - SQL 이란? 

 ●  데이터 베이스에게 데이터를 조해해줘!! 이런 데이터를 보고싶어 라고 말하는 것으로 이해했다.
    (SQL은 '코드'가 아니라, 데이터베이스에 요청을 하기 위한 '언어' 이므로, 작성 전에 어떤 요청을 할 지 생각해보는 것이 필요!!)

 

SQL 을 시작하기에 앞서, DBeaver 을 설치하고 설정을 진행했습니다.

 

- SQL 데이터를 조회해보기!

 

● SQL 기본적인 구조 인 select , from 을 사용했다.

- SELECT : 데이터를 가져오는 기본 명령어로, 데이터를 조회하는 모든 Query 에 사용됨
- FROM : 데이터를 가져올 테이블을 특정해주는 문법

 

이 두가지를 사용해서 DBeaver 에서  

  select *

  from food_orders 로 실행을  해보았습니다.

실행 한 결과, 이러한 표가 나왔습니다. 

여기서 select에 사용한 ' * ' 은 모든 컬럼을 가져온다는 것을 의미합니다.

여기서 * 을 사용하지않고 컬럼 부분에 원하는 것을 적어 조회할 수 있습니다.

ex) select restaurant_name

      from food_orders

그리고 컬럼에 별명을 정해줄 수 있는데 'as' 를 붙여 새로운 별명을 붙여줄 수 있습니다.

 

ex) select restaurant_name as res_name

      from food_orders

 

여기서 별명을 지을 때 유의 할 것이 있는데, 

- 컬럼에 별명을 붙일 때 2가지 사항
   1) 영어, 언더바가 있는 별명은 그냥 작성한다
   2) 특수문자나 한글이 들어가 있는 별명은 "~~~" 의 형식으로 붙여준다.

 

Where 절이란, 데이터를 찾을 때 필터링 해야 할 때 사용합니다.

  예를들어 20살인 사람만 찾을 때, where 절을 사용하면 됩니다.

ex) select *

      from food_orders

      where age=20

! 여기서 숫자 대신 문자를 넣고 싶으면 작은 따옴표('  ') 를 사용해야합니다.

 

● 비교연산자 , between, in, like

 

-비교연산자는 학교를 다닐 때 사용하던 부등호를 사용해서 하면 됩니다. 

 

- between 은 between A and B 의 형태이고 A와 B 의 사이의 값을 보여줍니다.

 

- in 은 포함하는 개념이고 in(a,b,c) 의 형태이고 a,b,c 의 경우를 보여줍니다.
 ex) age in(10,20,30) >>> 10세 20세 30세 인 경우

 

- like 는 같은건 아니지만 같은 글자로 시작하거나 같은 글자가 들어가는 거 찾을때
   마치 많은 사람이름중 김씨를 찾고 싶으면 like(김%) 이러면 김 떙떙 이 찾아지고
   like(%김) 이러면 떙땡김이 찾아진다.

 

● 여러개의 조건으로 필터링하는 경우

 - where 절에 여러 조건을 적용할 때 사용하는 것으로는 (and, or, not) 이 있습니다.

 

이와 같은 개념으로 

상품 준비시간이 20~30분 사이인, 한국음식점의 식당명과 고객번호 조회하기 를 풀어보면

 SELECT restaurant_name,
 customer_id
 from food_orders
 where food_preparation_time Between 20 and 30 and cuisine_type = 'korean'

 

이렇게 작성할 수 있습니다.

 

● SQL 을 통해 연산, 합계와 평균을 구할 수 있습니다.

 합계 : SUM

 평균 : AVG

 

● 전체 데이터의 개수를 구할 때는 
 데이터 개수 : count(컬럼) !컬럼명 대신 * , 1 을 사용할 수 있습니다.

 몇개의 값을 가지고 있는지 : distinct

 

최소값, 최대값 구할 때

 최소값 : min(컬럼)

 최대값 : max(컬럼)

 

●group by 로 범주별 연산 한번에 하기

 음식 종류별로 평균 음식 가격을 구하기 위해서는 where 절을 사용해 여러개의 쿼리를 작성하는 것은 

 번거로운 작업이기에, group by 를 사용해 카테고리 별로 계산을 할 수 있습니다.

 

ex) select 카테고리컬럼 (원하는 컬럼) , sum(계산 컬럼)

      from 

      group by 카테고리컬럼( 원하는 컬럼)

 

● order by로는 오름차순 또는 내림차순으로 정렬 할 수 있습니다

 

ex) select 카테고리컬럼(원하는컬럼 아무거나), sum(계산 컬럼),
     from
     group by 카테고리컬럼(원하는컬럼 아무거나)
     order by 정렬을 원하는 컬럼 (카테고리컬럼(원하는컬럼 아무거나), sum(계산 컬럼) 둘 다 가능)

 

오늘의 내용을 하여 한가지 과제를 풀어보았습니다.

Q. 음식 종류별 가장 높은 주문 금액과 가장 낮은 주문금액을 조회하고, 가장 낮은 주문금액 순으로 (내림차순) 정렬하기

 

A.   select cuisine_type, min(price) as min_price,max(price) as max_price

      from food_orders

      group by cuisine_type

      order by min(price) desc

 

 

-마무리 : 오늘은 SQL에 대해 기본적인 개념을 학습했습니다. 내일은 오늘 배운 내용을 복습으로 시작해서

               SQL에 대해 조금더 깊이있는 학습을 진행할 예정입니다.

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

<2025.02.21> SQL 3주차 강의  (0) 2025.02.21