select count(컬럼명 (*가능)) from 테이블명 where ~ ;
select count(distinct 컬럼) from 테이블명;
select 컬럼명(*가능) from 테이블명
where group by 컬럼명1, 2 ,..
order by ...
# 예
select p.name, c.police_station
-> from police_station p, crime_status c
-> where p.name like concat("서울",c.police_station,"경찰서")
-> group by c.police_station, p.name;
update crime_status c, police_station p
-> set c.reference = p.name
-> where p.name like concat('서울',c.police_station,'경찰서');
UCASE 영문을 대문자로 반환 / LCASE 소문자
MID(string, start, length) 문자열 부분을 반환
• string : 원본 문자열 / length : 반환할 문자열 길이
• start : 문자열 반환 시작 위치. (첫글자는 1, 마지막글자는 -1)
LENGTH 문자열의 길이를 반환하는 함수 ''(0) / ' '(1) / NULL(NULL)
ROUND(number, decimals) 지정한 자리에서 숫자를 반올림
• decimals : 반올림할 소수점 위치(Option) 디폴트값有 0 / -1: 일 단위, -2: 십 단위 올림
NOW 현재 날짜 및 시간을 반환
select now();
select format(가격,0) from 테이블명 where round(가격,-2)>2000 #100원 단위 올림
< 또 다른 FORMAT vs ROUND 차이 >
: 하나의 SQL문(메인쿼리) 안에 또 다른 SQL문(서브쿼리) -> 종속적인 관계
• 단일 행 혹은 복수 행 비교 연산자와 함께 사용 가능
• subquery 에서는 order by 를 사용X
• 결과는 하나의 Column 이어야 한다.
select 컬럼1, (select 컬럼2 from 테이블명2 where 조건) from 테이블명1 where 조건;
• 서브쿼리 실행 결과가 데이터셋으로 나와야 되고, 하나의 테이블로 인지 후 join 등 테이블로 쓰임
• 메인쿼리에서는 인라인 뷰에서 조회한 Column 만 사용가능
<타입>
• Single Row - 하나의 열을 검색하는 서브쿼리
: 비교연산자와 사용되는 경우, 서브쿼리의 검색 결과는 한 개의 결과값을 가져야 한다.
• Multiple Row - 하나 이상의 열을 검색(반환)하는 서브쿼리
• Multiple Column(연관서브쿼리) - 하나 이상의 행을 검색하는 서브쿼리
select name from police_station p
-> where exists
-> (select police_station from crime_status c
where c.reference=p.name and case_number > 2000);
select name from celeb
-> where name = any (select host from snl_show);
select o.상호, o.상표, s.max_가격
-> from oil_price o, (select 상표, max(가격) as max_가격 from oil_price group by 상표) s
-> where o.상표 = s.상표 and o.가격 = s.max_가격;
select 이름, 주유소, 주유일 from refueling
-> where 주유소 in (select 상호 from oil_price
where 가격 > (select avg(가격) from oil_price));
select r.이름, o.상호 , o.상표 , r.금액, o.가격 from oil_price o,
-> (select 이름, 주유소, 금액 from refueling where 금액>100000) r
-> where o.상호 = r.주유소;