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;