728x90
반응형
Select 연산자
비교 연산자
= 같음
!= 같지 않음
<> 같지 않음 (ISO 표준)
> 초과(크다)
>= 이상(같거나 크다)
< 미만(작다)
<= 이하(같거나 작다)
논리 연산자
AND 앞에 있는 조건과 뒤에 있는 조건이 모두 참 값
OR 앞에 있는 조건이나 뒤에 있는 조건 중 하나라도 참 값
NOT 뒤에 있는 조건의 결과를 반대로 변경 (참 값일 경우, 거짓 값으로 변경)
범위 연산자
A BETWEEN B AND A와 B 사이의 값 ( A와 B를 모두 포함, A <= Value <= B )
집합 연산자
IN (A, B, C …) 범위 내의 값을 하나라도 만족 ( A OR B OR C … )
NOT IN (A, B, C …) 범위 내의 값을 하나라도 만족X
속성 연산자
IS NULL NULL 값을 갖는 데이터
IS NOT NULL NULL 값을 갖지 않는 데이터
속성확인 연산자
LIKE ‘패턴 문자열’ 패턴 문자열을 만족하는 값
_ 한 글자
% 모든 문자
값의 존재 여부 확인 연산자
EXIST 서브쿼리의 값이 있을 경우 반환함
NOT EXIST 서브쿼리의 값이 없는 경우 반환함
<연습1>
1) 조건이 문자열인 경우
select * from usertbl where name = '김경호';
2) 조건이 상수인 경우
select * from usertbl where birthyear= 1987;
3) 조건 두개를 모두 만족하는 데이터를 출력할 때 and
select userid, name from usertbl where birthyear >= 1970 and height >= 182;
4) 조건 두개 중에 하나라도 만족하는 데이터를 출력할 때 or
select userid, name from usertbl where birthyear >= 1970 or height >= 182;
5) between 사용
select userid, name from usertbl where height between 180 and 183;
6) 여러개를 만족하는 데이터 출력 in
select userid, name, addr from usertbl where addr in('경남','전남', '경북','전북');
7) 제외하고 출력 not in
select userid, name, addr from usertbl where addr not in('경남');
8) 포함하는(포함하지 않는) 문자 출력 like
-- like와 %구문은 통상 검색할 때 이런 형태로 많이 쓰인다.
-- 한 글자에 대한 것은 _(언더바)로써 대체하여 검색한다.
select userid, name, addr from usertbl where name like('김%');
select userid, name, addr from usertbl where name not like('김%');
select userid, name, addr from usertbl where name like '_종신';
9) null인 경우 is null이며, null이 아닌 경우는 is not null
select userid, name, addr from usertbl where name is null;
select userid, name, addr from usertbl where name is not null;
ORDER BY 절
정렬
1) 오름차순 정렬 asc
select * from usertbl order by mdate (asc);
2) 내림차순 desc
select * from usertbl order by mdate desc;
3) 여러개 컬럼 정렬
select * from usertbl order by height desc,name asc;
집계 함수와 Group by, having절
. MySQL : from -> where -> select -> group by -> having -> order by
. Oracle : from -> where -> group by -> having -> select -> order by
집계함수
. sum()은 합계를 구한다.
. avg()은 평균을 구한다.
. min()은 최소값을 구한다
. max()은 최대값을 구한다.
. count()은 행의 개수를 구한다.
. count(distinct 칼럼이름)은 행의 유일한 개수를 구한다.
<연습2>
userid별로 구매한 건수를 userid오름차순으로 출력하라?
select userid as '사용자 아이디', sum(amount) as '구매한 건수'
from buytbl
group by userid
order by userid;
<연습3> 사용자 아이디 별 평균 구매 건수를 내림 차순으로 출력하라
select userid as '사용자아이디', avg(amount) as '평균 구매 건수'
from buytbl
group by userid
order by avg(amount) desc;
HAVING절
where절과 비슷하지만 집계함수에 대하여 조건을 제한하는 경우 having 절을 사용합니다.
<연습 4>총 구매액이 1000만원 초과인 사람의 사용자 아이디와 총 구매액을 사용자 아이디 별로 구하는데 총 구매액 내림차순으로 출력하라
select userid as '사용자 아이디', sum(price*amount) as '총 구매액'
from buytbl
group by userid
having sum(price*amount) >= 1000
order by sum(price*amount) desc;
Error Code: 1111. Invalid use of group function 0.000 sec
집계함수는 where절과 같이 사용하는 것이 불가능함
WITH ROLLUP 절
분류 별로 합계 및 그 총합을 구하고 싶을 때 사용함
<연습 5> groupname별로 소합계를 내어주는 with rollup 사용하기
select groupname, sum(price*amount) as '총 구매액'
from buytbl
group by groupname
with rollup;
728x90
반응형
'Database > mysql' 카테고리의 다른 글
[MYSQL / Database] Join 조인 연산 (0) | 2023.04.18 |
---|---|
[MYSQL /Database] Mysql 잠금(lock)- Read lock, Write lock,dead lock (0) | 2023.04.17 |
[ MYSQL / Database] READ UNCOMMITTED, COMMITTED, REPEATABLE READ (0) | 2023.04.17 |
댓글