ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MySQL] 문법 총정리
    데이터 공부하기 2022. 8. 29. 23:33

    [1주차 문법 정리]

    Where Where 절은, Select 쿼리문으로 가져올 데이터에 조건을 걸어주는 것을 의미해요. select * from orders where payment_method = "kakaopay"; 예1) orders 테이블에서 결제수단이 카카오페이인 데이터만 가져와줘!
    예2) point_users 테이블에서 포인트가 5000점 이상인 데이터만 가져와줘!
    예3) orders 테이블에서 주문한 강의가 앱개발 종합반이면서, 결제수단이 카드인 데이터만 가져와줘!
    != 같지 않음 select * from orders where payment_method != 'CARD'; 결제수단이 CARD가 아닌 주문데이터만 추출
    between 범위 select * from orders where created_at between "2020-07-13" and "2020-07-15"; 7월 13일, 7월 14일의 주문데이터만 보고 싶어
    in 포함 select * from checkins where week in (1, 3); 1, 3주차 사람들의 '오늘의 다짐' 데이터만 보고 싶어
    like 패턴 select * from users where email like '%daum.net';  
    % 패턴 조건걸기
    • 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 일부 데이터만 가져오기 select * from orders where payment_method = "kakaopay" limit 5;  
    Distinct 중복 데이터는 제외하고 가져오기 select distinct(payment_method) from orders; Distinct와 Count를 같이 써보기:
    • select distinct(name) from users;
    Count 몇 개인지 숫자 세보기 select count(*) from orders

    [2주차 문법 정리]

    Group by select name, count(*) fromusers group by name; 위 쿼리가 실행되는 순서: from → group by → select 성씨별로 몇 명이 회원이 있는지 구하려고 where 절을 사용해서 수십개의 쿼리를 작성하는 것은 너무 비효율적입니다. 이 문제를 Group by를 사용
    Min SELECT week, min(likes) fromcheckins c 
    group by week 
      동일한 범주 특정 필드의 최솟값은 min(필드명)을 사용해서 해요
    Max SELECT week, max(likes) from checkins c 
    group by week 
       
    Avg SELECT week, avg(likes) from checkins c 
    group by week 
    소수점 반올림시!
    Round( *, 소수점 갯수)
     - 그냥 반올림 시 '0'
     
    Sum SELECT week, sum(likes) from checkins c 
    group by week 
       
    Order by select name, count(*) from users group by name order by count(*);

       
    desc select name, count(*) from users group by name order by count(*); desc   내림차순 정렬시 마지막에 desc(descending)
    asc select name, count(*) from users group by name order by count(*); asc   오름차순 (할필요 없음, 기본이 오름차순이라..)
    Alias 쿼리가 점점 길어지면서 종종 헷갈리는 일이 생길 수 있습니다. 그래서 SQL은 Alias라는 별칭 기능을 지원 as ~ OO로 해당 필드명을 수정할 수 있음

    o.course_title을 orders 테이블의 course_title로 별칭을 붙힘

     

    [3주차 문법 정리]

    Ratio 비율 A/B SELECTcount(pu.point_user_id), 
      count(u.user_id), 
      count(pu.point_user_id) / count(u.user_id) as ratio
     
    Ratio + round 반올림 적용 round(  count(pu.point_user_id) / count(u.user_id)) as ratio  

    [4주차 문법 정리]

    SUBSTRING_INDEX 이메일 주소에서 @앞의 아이디만 가져오거나, @뒤의 이메일 도메인을 가져오고 싶을때 @앞에 아이디만
    select user_id, email, SUBSTRING_INDEX(email, '@', 1) from users

    @뒤의 이메일만
    select user_id, email, SUBSTRING_INDEX(email, '@', -1) from users
    SUBSTRING
    orders 테이블에서 created_at을 날짜까지만 출력하고 싶을때 select order_no, created_at, substring(created_at,1,10) as date from orders

    *1 = 시작 포인트
    *10 = 짜르고 싶은 포인트

    '데이터 공부하기' 카테고리의 다른 글

    [MySQL] 실전 유용 문법 - Case  (0) 2022.08.29
    [MySQL] 실전 유용 문법 - 문자열  (0) 2022.08.29
    [MySQL] 'with 절' in Subquery  (0) 2022.08.29
    [MySQL] 수업 4주차 - Subquery  (0) 2022.08.29
    [MySQL] 수업 3주차 - Join  (0) 2022.08.08
Designed by Tistory.