1.BETWEEN AND, IN
숫자와 같이 연속적인 값에 조건문을 걸 때
SELECT userName, height FROM userTBL WHERE height>=180 AND height <=182;
SELECT userName, height FROM userTBL WHERE height BETWEEN 180 AND 182;
와 같이 적을 수 있다(180이상 182이하의 키 출력)
그러나 이산적인 정수 값에 조건문을 걸 때에는
SELECT userName, height FROM userTBL WHERE addr ='경남' OR addr='충남' OR addr='경북';
SELECT userName, height FROM userTBL WHERE addr IN('경남','충남','경북');
2.LIKE,any(some),all
조건문에서 문자열 내용 검색을 할 때에 일정부분 아무 데이터 상관없이 검색을 할 필요가 있다.
이때 한글자면 _, 여러문자면 %를 LIKE연산자와 함께 써서 조회를 한다.
SELECT userName, height FROM userTBL WHERE userName LIKE '김%';
SELECT userName, height FROM userTBL WHERE userName LIKE '_경규';
서브쿼리를 통해 더 복잡한 구조를 짤 수 있다.
SELECT userName, height FROM userTBL WHERE height>(SELECT height FROM userTBL where addr = '경기');
경기 지역에 있는 사람들의 키를 기준으로 더 큰 데이터를 출력하는 문장이다.
그러나 만약 경기 지역에 키가 다양하다면 기준을 잡을 수 없기에 에러가 뜬다.
SELECT userName, height FROM userTBL WHERE height> any (SELECT height FROM userTBL where addr = '경기');
따라서 any(some),all연산자가 등장한다.
any(some)과 같은 경우에는 경기 지역의 모든 키 하나하나가 기준이 되어 그 중 아무거라도 넘기만 한다면 출력을 한다.
SELECT userName, height FROM userTBL WHERE height> all (SELECT height FROM userTBL where addr = '경기');
all과 같은 경우에는 모든 키들을 뛰어넘어야만 출력이 가능하다.
3.ORDER BY
정렬 또한 가능하다. 오름 차순 기준으로 기본적으로 정렬을 한다. 뒤에 DESC를 붙여주면 내림차순 정렬이다.
select username,mdate from usertbl order by mdate;
select username,mdate from usertbl order by mdate DESC;
4.DISTINCT
select DISTINCT addr from usertbl order by addr
중복되는 데이터들 중 하나만 출력을 해준다. 따라서 종류가 뭐있는지 확인할 수 있습니다.
5.LIMIT
상위 열부터 몇개까지 출력을 할건지 제한하는 연산자 입니다.
select name from usertbl limit 5; --5개까지
시작 열을 지정해 중간부터 출력도 가능합니다.
select username,mdate from usertbl limit 3,5; --3번쨰 부터 5개의 열을 출력 == limit 5 offset 3
6.GROUP BY, HAVING,WITH ROLLUP
데이터들을 계산하기 쉽게 집계함수가 존재한다.
AVG():평균을 구한다.
MIN():최솟값을 구한다.
MAX():최댓값을 구한다.
COUNT():행의 개수를 센다.
COUNT(DISTINCT):중복 뺴고 행의 개수를 센다.
STDEV():표준편차를 구한다.
VAR_SAMP:분산을 구한다.
집계함수만 사용하고 출력하면 상관없지만 같은 행의 다른 데이터와 함꼐 출력을 할때에는 group by함수를 써야한다.
집계함수는 같은 그룹의 데이터들끼리 연산을 하고 그 값을 한번만 출력하기 떄문에 같은 그룹의 데이터를 하나로 묶어 출력해야한다.
따라서
SELECT name, AVG(kimbap_count)
FROM table_name
GROUP BY name;
와 같이 만들 수 있다.
여기에 그룹화 해서 만들어진 값에 where문과 같이 조건문을 걸 수 있는데 그것이 바로 having 절이다.
SELECT name, AVG(kimbap_count)
FROM table_name
GROUP BY name HAVING AVG(kimbap_count)>10;
이렇게 하면 집계함수 계산결과 10개 초과인 데이터들을 보여준다.
여기에서 또 그룹화된 데이터 끼리 계산 결과 중간중간 합쳐서 보여줄수도 있다.
SELECT name, AVG(kimbap_count)
FROM table_name
GROUP BY name WITH ROLLUP;
'과거의 유산들 > 데이터베이스' 카테고리의 다른 글
데이터베이스(윈도우 함수, 피벗,with,cte) (0) | 2023.11.09 |
---|---|
데이터베이스(데이터 삽입,수정,삭제) (1) | 2023.10.30 |
데이터베이스 (외래키 , 백업) (1) | 2023.10.11 |
데이터베이스(인덱스,뷰,스토어드 프리시저,트리거 훑어보기) (0) | 2023.09.25 |
데이터베이스 (기초용어,query) (0) | 2023.09.15 |