본문 바로가기

SQL

[SQL] 문법 한 줄 정리

count

select count(*) from 테이블명; --전체 행 (맨 윗줄의 애트리뷰트명도 포함)
SELECT COUNT(컬럼) FROM 테이블; --값이 있는 컬럼 개수

min, max

select max(컬럼), min(컬럼)
from 테이블;

--해당 컬럼의 max값, min값을 뽑아

sum, avg

select sum(월급), avg(월급)
from 테이블
where job = "saleman';

--직업이 saleman인 사람들의 월급의 합, 평균을 보여줘

like

select 컬럼명
from 테이블
where 컬럼 like 'A%'; --A로 시작하는거
                     like '%A'; --A로 끝나는거
                     like '%A%'; --A를 포함하는거
                     like 'A_'; --A로 시작하는 두글자
                     like '[^A]'; --첫문자가 A가 아닌 모든 문자열
                     like '[ABC]' or '[A-C]'; --첫번째 문자가 A, B, C 셋중 하나인거

in

select 컬럼명1, 컬럼2, 컬럼3
from 테이블명
where 컬럼명1 in ('컬럼값', '컬럼값'); 
//컬럼1에서 여기 적힌 컬럼값을 가진 행을 보여줘

where 컬럼명 not in ('컬럼', '컬럼');
--저 컬럼을 가진 행을 제외하고 보여줘

BETWEEN

SELECT * 
FROM [테이블명]
WHERE [칼럼명] BETWEEN [조건1] AND [조건2];

--컬럼이 조건1과 조건2 사이에 있는 값을 보여줘

Aliases (별칭)

--테이블에 별칭 짓기 (c.custid 이런식으로 customer을 c로 간편하게 부르기 가능)
select * from customer as c;

--컬럼에 별칭 짓기 (지어진 별칭으로 출력 가능)
select saleamount2023 as sales2023 from book;
select a+b as c from account; //이렇게도 가능!

INNER JOIN(내부 조인)

: 두 테이블을 연결할 때 가장 많이 사용하는 것, 그냥 조인이라고 하면 내부 조인을 의미

select 컬럼
from 테이블1 inner join 테이블2 on 조인 조건
where 검색 조건;

🔼 이때 inner join을 join이라고 써도 OK

조인 조건은 테이블1.custid = 테이블2.custid 이런걸 의미

OUTER JOIN(외부 조인)

: left, right, full 세 가지 종류가 있음

left - 왼쪽 테이블의 모든 값 출력되는 조인

right - 오른쪽 테이블의 모든 값 출력되는 조인

full - 왼쪽 또는 오른쪽 테이블의 모든 값이 출력되는 조

SELECT 컬럼
FROM 테이블1(=LEFT 테이블)
    <LEFT | RIGHT | FULL> OUTER JOIN 테이블2(=RIGHT 테이블)
     ON <조인 조건>;

--<LEFT | RIGHT | FULL> 세개 중 골라서 사용하면 됨

SELF JOIN(자체 조인)

select 컬럼
from 테이블 as A
    inner join 테이블 as B;

--자기 자신을 자신과 조인

UNION

테이블1

name sale txn_date
Los Angeles 1500 Jan-05-2018
San Diego 250 Jan-07-2018
Los Angeles 300 Jan-08-2018
Boston 700 Jan-08-2018

테이블2

txn_date sales
Jan-07-2018 250
Jan-10-2018 535
Jan-11-2018 320
Jan-12-2018 750
select txn_date from 테이블1
union
select txn_date from 테이블2;

--두 테이블에 존재하는 같은 컬럼의 모든 값을 볼 수 있다.
--이때 중복된 값은 하나로 합쳐져서 한번만 보임

결과

txn_date
Jan-05-2018
Jan-07-2018
Jan-08-2018
Jan-10-2018
Jan-11-2018
Jan-12-2018

union all

위의 문법에서 union대신 union all을 한다면?

중복된 값이 하나만 보이는게 아닌 그냥 전부 다 보여준다.

txn_date
Jan-05-2018
Jan-07-2018
Jan-08-2018
Jan-08-2018
Jan-07-2018
Jan-10-2018
Jan-11-2018
Jan-12-2018

GROUP BY

: 중복되지 않은 정보를 보여주는

select 컬럼
from 테이블
group by 컬럼;

--해당 컬럼에 대한 정보를 출력

HAVING

: group by의 where문 → group 함수를 포함해야한다.

case

--형식
case 컬럼
    when 조건1 then 값1
    when 조건2 then 값2
    else 값3
end;
--예시
select student, score = 
    case student
    when 90~100 then 'A'
    when 80~89 then 'B'
    when 70~79 then 'C'
    else 'D'
    end;

'SQL' 카테고리의 다른 글

SQL 문법(1)  (0) 2023.03.29