본문 바로가기
마음의 양식/공부를 하자

SQL문법 정리 : SHOW, SELECT, WHERE

by 김알람 2023. 4. 8.
728x90
반응형

국비지원으로 SQL 수업을 들었다. 마지막까지 완료했는데 수강을 100% 완료하기 위해선 문법 정리를 블로그에 포스팅한 후에 URL을 붙여야 하는 페이지가 있어서 약식으로 정리를 한다. 자세한 것은 이 포스트 이후에 진행할 예정이다. 

 

글을 읽기 전에 말해 둘 건 나는 수업에서 Dbeaver라는 프로그램을 받아서 사용했고, 사용한 데이터베이스는 스파르타코딩클럽 수업에서 제공해 줬다. SQL 문법이라고 하며 크게 아래와 같이 나눌 수 있는데, 

 

C(Create): 데이터의 생성
R (Read): 저장된 데이터를 읽기
U (Update): 저장된 데이터를 변경
D (Delete): 저장된 데이터를 삭제 중에서

스파르타코딩클럽(팀 스파르타)의 SQL 강의에서는 Read(읽기)에 관한 것만 가르치고 있다. 따라서 데이터를 직접 조작해야 하는 프로그래머보다는 이미 수집된 데이터를 가공해서 통찰하는 기획 or 마케팅 직무의 사람들에게 유용한 강의다. 

 

 

들어가기에 앞서

1. 앞으로 진행되는 설명은 Mysql에 최적화된 설명이다.

2. SQL에서는 대문자와 소문자를 구별하지 않는다. 

3. 줄 바꿈을 할 때는 Enter, 적은 코드를 가동해서 결과물을 출력할 때는 Ctrl + Enter를 사용한다.

4. 원래 코드의 끝에는 ;를 사용해 종결하는데, Dbeaver가 그런 건지 Mysql이 그런 건지 ;를 사용하지 않아도 돼서 이제부터 나올 코드들의 끝에는 ;가 붙어 있지 않다

 

 

테이블과 필드의 데이터를 출력하기

💡 결과물을 출력할 때는 Ctrl + Enter

 

1. 모든 테이블을 출력 

show tables

 

2. 하나의 테이블의 모든 데이터 가져오기 

#앞에 #을 붙이면 주석처리가 됨. *은 SQL에서 전체의 의미임
select * from 테이블이름

 

Select, Where 절 등 문법 연습해보기

💡 Where 절은 Select 쿼리 문으로 가져올 데이터에 조건을 걸어준다

 

SQL 문법

select : 필드 데이터를 가져온다

select * from orders

ex2) orders 테이블의 특정 필드를 출력 

#select created_at, course_title from orders --created_at, course_title 은 필드의 id임
select select created_at, course_title from orders --created_at, course_title
from orders

ex1) orders 테이블 전체를 출력

select * from orders

 

  • where : select에 조건을 걸어준다
    select * from orders
    where payment_mothod = 'kakaopay'
    
    /*payment_mothod는 필드의 id
    그리고 kakaopay는 문자열이기 때문에 ''로 감싸준다. 
    숫자의 경우 ''사용하지 않음 */
    
    ex2) orders 테이블에서 결제 수단이 kakaopay가 아닌 데이터만 출력
  • select * from orders where payment_mothod
  • != 'kakaopay' /*!=는 같지 않음의 뜻 = 는 같음의 뜻 >= 는 이상의 뜻
  • ex1) orders 테이블에서 결제 수단이 kakaopay인 데이터만 출력

 

  • like: ‘패턴’(문자열 규칙) 조건
    select * from users
    where email like '%gmail.com'
    
    --%는 %의 내용이 무엇이든 상관하지 않는다는 뜻.
    
    /*따라서 '%gmail.com'은 gmail.com 앞에 무슨 문자가 들어가든 상관없이 
    끝이 gamil.com으로 끝나는 데이터를 찾는 다는 뜻 
    'a%gmail.com'이면 a로 시작해서 gmail.com 으로 끝나는 데이터가 조건이라는 뜻*/
    
  • ex1) gmail.com을 이용하는 유저 데이터 출력

 

  • between: ~부터 ~까지의 ‘범위’ 조건
    select * from point_users
    where point between 20000 and 30000
    
    --숫자는 ''로 감싸지 않는다.
    
    데이터가 숫자인지 문자 인지 알고 싶으면 필드에 숫자가 있는지 확인하면 된다.
  • 아래 [그림]의 테이블에서 point 필드에 숫자 그림(123)이 있는 걸로 숫자와 문자 구분 가능
  • ex1) 포인트가 20000에서 30000 사이의 유저 데이터 출력

 

  • in: '포함’ 조건
    select * from checkins
    where week in (1,3)
    
    --이유는 모르겠지만 in 은 포함되는 조건을 ()로 감싸줘야 되나 봄
    
    이유는 모르겠지만 in 은 포함되는 조건을 ()로 감싸줘야 되나 봄

 

  • limit: 출력하는 개수에 조건을 걸어줌
    select * from orders
    where payment_method = 'kakaopay'
    limit 5
    
    데이터의 양이 많으면 가져오는데 많은 시간이 걸림. 이렇게 많은 양의 데이터들을 다룰 때 limit을 자주 사용함.
  • ex1) orders 테이블에서 결제수단이 카카오페이인 유저 데이터를 5개만 보고 싶어.

 

  • distinct: 중복을 제거하고 출력함
    select distinct(payment_method) from orders
    
  • ex1) 우리 고객들이 사용하는 결제 수단의 종류를 알고 싶어.

 

  • count: 숫자를 세 줌
    select count(distinct(payment_method)) from orders
    
  • ex1) 우리 고객들이 사용하는 결제 수단의 종류 개수를 알고 싶어.
728x90
반응형

댓글