[내일배움단] 엑셀보다 쉬운 SQL - SQL 문법 정리

2022. 7. 13. 15:14SQL 종합반

DML(Data Manipulation Language)

  • insert
    • 테이블에 데이터 삽입

               insert into orders values

  • update
    • 데이터 내용 수정

               update 테이블 set 칼럼 = '값' where 조건

  • delete
    • 데이터 삭제 

               delete from 테이블  where 조건

  • select
    • 모든 컬럼 조회
      select * from orders
    • 필요한 컬럼 조회
      select user_id,payment_method name from orders
      • select 문법 순서
        1. select
        2. from
        3. where
          • 컬럼 조회의 조건
            select * from orders where payment_method = 'kakaopay';
          • and, or 조건
            select * from orders course_title ='앱개발 종합반' and(or) payment_method='kakaopay';
          • like 조건
            % 로 표현
            select * from orders where email = '%@naver.com';
        4. group by
          • 특정 칼럼 기준의 데이터 그룹핑
          • select payment_method,count(*) from orders group by payment_method
        5. having
        6. order by
          • 특정 칼럼 기준으로 정렬
          • asc : 오름차순 
          • desc : 내림차순 
            select * from orders order by update_at desc;

                            *쿼리의 실행 순서 = from => where => group by => having => select => order by

                     

*Distinct     = 중복행을 제거

                          select distinct(user_id) from checkins

*Alias           = 칼럼에 별칭을 주고 조회

                          select pu.payment_method, avg(point) as avg from point_users pu

*Subquery = 하나의 SQL 쿼리 안에 또다른 SQL 쿼리가 있는 것을 의미   

더보기

select c.course_id,
          count(DISTINCT(user_id)) as cnt_checkins,
       (
       select count(*) from orders o 
       where o.course_id = c.course_id 
       group by o.course_id
       )
from checkins c
group by c.course_id

*with절        = 깔끔하게 쿼리 정리

더보기

with table1 as(
select enrolled_id,count(enrolled_id)as done_cnt from enrolleds_detail 
where done = 1
GROUP by enrolled_id
  ),table2 as(
select enrolled_id,count(*) as total_cnt from enrolleds_detail 
group by enrolled_id
  ) 
select a.enrolled_id,done_cnt,total_cnt,round((done_cnt/total_cnt),2)as ratio from table1 a
inner join table2 b on a.enrolled_id = b.enrolled_id

*Join            = 두 테이블의 공통된 정보 (key값)를 기준으로 테이블을 연결해서 한 테이블처럼 보는 것           

더보기

select * from users u 
inner join orders o on u.user_id = o.user_id


DDL(Data Definition Language)

  • create
  • alter
  • drop
  • truncate
  • rename

DCL(Data Control Language)

  • grant
  • revoke

TCL(Transaction Control Language)

  • commit
  • rollback
  • savepoint