SQL

SQL 기초

열심히 해 2024. 8. 23. 17:51
  • SELECT : 데이터를 가져오는 기본 명령어로, 데이터를 조회하는 모든 Query 에 사용됨
  • FROM : 데이터를 가져올 테이블을 특정해주는 문법
  • *: 모든 컬럼을 가져와준다는 의미. 또는 특정 컬럼명을 넣어 사용 가능.
    select *
    from order_id
    select date, customer_name
     from order_id
  • 컬럼에 별명(alias)  주기 : 원하는 컬럼만 뽑았지만, 평소에 사용하는 명칭과 다를 때가 있습니다. 이럴 때 컬럼 명에 별명을 지정하여 변경할 수 있습니다.
    - 방법1 : 컬럼1 as 별명1
    - 방법2 : 컬럼2 별명2

select restaurant_name as "식당 이름", addr address

from food_orders

 

 

 

WHERE절 사용 : 조건을 준다. from 다음에 필터링 조건을 적는다.

SELECT *

FROM customers

WHERE gender='male'

 

 

 

비교연산자의 종류             비교연산자 의미                                                 예시

=   같다 age=21
                  gender=’female’
<> 같지 않다 (다르다) age<>21
    gender<>’female’
> 크다 age>21
>= 크거나 같다 age>=21
< 작다 age<21
<= 작거나 같다 age<=21

 

 

BETWEEN : A 와 B 사이

  • 기본 문법 : between a and b
  • 예시 : 나이가 10 과 20 사이(10과 20 포함)
  • where age between 10 and 20

 

 

  • IN : ‘포함’ 하는 조건 주기
    • 기본 문법 : in (A, B, C)
    • 예시1 : 나이가 15, 21, 31 세인 경우
    • age in (15, 21, 31)
    • 예시2 : 음식 종류가 한식, 일식인 경우
    • cuisine_type in ('Korean', 'Japanese')

 

 

  • LIKE : 완전히 똑같지는 않지만, 비슷한 값을 조건으로 주기
    • 특정한 문자로 시작하는 경우 (%: 어떤 값이 와도 된다는 의미)
      • 기본 문법 : like ‘시작문자**%**’
      • 예시 : ‘김’ 으로 시작하는 이름
      • name like '김%'
    • 특정한 문자를 포함하는 경우
      • 기본 문법 : like%포함문자%
      • 예시 : 식당 이름에 ‘Next’ 를 포함하는 경우
      • restaurant_name like '%Next%'
    • 특정한 문자로 끝나는 경우
      • 기본 문법 : like ‘**%**끝나는문자’
      • 예시 : ‘임’ 으로 끝나는 이름
      • name like '%임'

 

 

 

논리연산자

and 그리고
age>20 and gender=’female’ → 나이가 20세 이상이고, 여성
or 또는
age>20 or gender=’female’ → 나이가 20세 이상이거나, 여성
not 아닌 (= '<>')
not gender=’female’ → 여성이 아닌
  • 에러가 발생했을 경우: '왜 에러가 났는가'에 집중,  '에러 메시지를 읽어보는 것’
  • 연산자 
    + 더하기
    - 빼기
    * 곱하기
    / 나누기

 

 

 

 

 함수

  • 합계 : SUM(컬럼)
  • 평균 : AVG(컬럼)
  • 데이터 갯수 : COUNT(컬럼)  컬럼명 대신 '1' 혹은 '*' 사용하여 모든 데이터의 갯수 파악 가능
    +   몇 개의 값을 가지고 있는지 구할 때 : DISTINCT


    select
     count(1) as total_pay, count(distinct pay_type) as count_of_pay_type

    from payments


    -> total_pay에는 payments의 데이터 갯수(행의 수), 
        count_of_pay_type에는 payments 안에 저장된 지불 종류의 갯수
        distinct는 중복을 없앤다는 의미.

  • 최솟값 : MIN(컬럼)
  • 최댓값 : MAX(컬럼)

 

 

 

 

  • Group by : 범주별 계산, "group by 범주형 컬럼"을 적어주는 것으로 적용 가능.

SELECT pay_type,

               max(date) recent_date

from payments

group by pay_type

-> 지불 방식 별로 최근 결제일을 나타냄.

 

 

 

 

 

  • Order by : 조회된 결과를 정렬. "Order by 정렬을 원하는 칼럼"을 적어주는 것으로 적용 가능,
    기본은 오름차순, 내림차순은 desc 추가

select cuisine_type,

           sum(price) sum_of_price

from food_orders

group by cuisine_type

order by sum(price) desc

->

1. food_orders 에서 cuisine_type,  sum(price) sum_of_price을 가져옴.

2. cuisine_type별로 묶고 합계 금액 sum(price) sum_of_price 을 계산하여 내림차순으로 정렬 order by sum(price) desc

 

order by name, gender  / order by gender, name

 

전자는 name으로 정렬 후 gender로 정렬, 후자는 성별로 정렬 후 이름으로 정렬.
+ order by gender desc, name라면 남성 전체를 이름 순으로 정렬 후, 여성 전체를 이름 순으로 정렬.

 

 

 

'SQL' 카테고리의 다른 글

DB, RDB, DBMS, RDBMS  (1) 2024.12.09
WITH절 - CTE 구문 만들기.  (0) 2024.11.11
기본키(pk), 외래키(fk) 동시 적용  (1) 2024.10.04
SQL - DDL, DML  (0) 2024.10.02
SQL 기초2  (0) 2024.08.25