select 컬럼리스트
| 5. 컬럼 지정(보고 싶은 열만 가져오기) > Projection
from 테이블
| 1. 테이블 지정
where 조건
| 2. 조건 지정(레코드에 대한 조건 - 개인조건) > Selection
group by 기준
| 3. (레코드)그룹을 나눈다.
having 조건
| 4. 조건 지정(그룹에 대한 조건 - 그룹조건 >> 집계함수에 대해 조건)
order by 정렬기준
| 6. 순서(정렬)
select * from tblcomedian;
select first, last, gender, height, weight, nick from tblcomedian;
-- tblcomedian 테이블에서 모든 컬럼을 조회
select * from tblcomedian;
-- 1. 몸무게가 60kg 이상이고, 키가 170cm 미만인 사람을 조회하시오.
SELECT *
FROM TBLCOMEDIAN
WHERE weight>=60 AND height<170;
-- 2. 몸무게가 70kg 이하인 여자만 조회하시오
SELECT *
FROM TBLCOMEDIAN
WHERE weight<=70 AND GENDER ='f';
-- and 사용
SELECT * FROM TBLINSA
WHERE BASICPAY >= 1000000 AND BASICPAY <= 1200000;
-- BETWEEN 사용
SELECT * FROM TBLINSA
WHERE BASICPAY BETWEEN 1000000 AND 1200000;
-- 문자열도 비교 가능
SELECT * FROM EMPLOYEES
WHERE FIRST_NAME BETWEEN 'J' AND 'L';
--개발부 + 총무부 직원 조회
-- or 사용
SELECT * FROM TBLINSA
WHERE BUSEO = '개발부' OR BUSEO = '총무부';
-- in 사용
SELECT * FROM TBLINSA
WHERE BUSEO IN ('개발부', '총무부');
-- 김oo 조회
SELECT * FROM TBLINSA WHERE name LIKE '김__';
SELECT * FROM TBLINSA WHERE name LIKE '_길_';
SELECT * FROM TBLINSA WHERE name LIKE '김%'; -- 김으로 시작하는 모든 문자
SELECT * FROM TBLINSA WHERE name LIKE '%길%'; -- 길이 포함된 모든 문자
-- 인구수가 기재된 나라
SELECT * FROM TBLCOUNTRY WHERE POPULATION IS NOT NULL; -- 더 많이 사용함
SELECT * FROM TBLCOUNTRY WHERE NOT POPULATION IS NULL;
-- 도서관 > 대여 테이블(컬럼 : 대여날짜, 반납날짜)
-- 아직 반납을 안한 사람은?
SELECT * FROM 도서대여 WHERE 반납날짜 IS NULL ;
-- 반납이 완료된 사람은?
SELECT * FROM 도서대여 WHERE 반납날짜 IS NOT NULL ;
SELECT
buseo,
count(*) AS 부서별인원수,
round(avg(basicpay)) AS 부서별평균급여,
sum(basicpay) AS 부서별지급액,
max(basicpay) AS 부서내최고급여,
min(basicpay) AS 부서내최저급여
FROM tblinsa
GROUP BY buseo;
-- 다중 그룹
SELECT
buseo, jikwi,
count(*)
FROM tblinsa
GROUP BY buseo, jikwi
ORDER BY buseo, jikwi;
-- tblInsa. 남/여자 직원수
SELECT
substr(ssn, 8, 1),
decode(substr(ssn, 8, 1), '1', '남자', '2', '여자') AS 성별,
count(*)
FROM tblinsa
GROUP BY substr(ssn, 8, 1);
WHERE 절 조건
SELECT --4. 각 그룹별 집계함수 실행
buseo,
round(avg(basicpay))
FROM tblinsa --1. 60명의 데이터를 가져온다.
WHERE basicpay >= 1500000 --2. 60명을 대상으로 조건을 검사한다.
GROUP BY buseo; --3. 2번을 통과한 사람들(27명) 대상으로 그룹을 짓는다.
HAVING 절 조건
SELECT --4. 그룹화된 부서와, 부서별 급여 평균
buseo,
round(avg(basicpay))
FROM tblinsa --1. 60명의 데이터를 가져온다.
GROUP BY buseo --2. 부서를 기준으로 그룹화한다.
HAVING round(avg(basicpay)) >= 1500000; --3. 집합에 대한 조건 > 집게 함수 조건
-- 부서 인원수가 10명이 넘는 부서
SELECT
buseo, count(*)
FROM tblinsa
GROUP BY buseo
HAVING count(*) >= 10;
-- 부서 과장/부장(where) 인원수가 3명이 넘는(having) 결과
SELECT
buseo, count(*)
FROM tblinsa
WHERE jikwi IN ('과장','부장')
GROUP BY buseo
HAVING count(*)>=3;
-- 1차 정렬
SELECT *
FROM TBLINSA
ORDER BY BUSEO ASC ;
-- 2차 정렬
SELECT *
FROM TBLINSA
ORDER BY BUSEO ASC , JIKWI DESC ;
-- 3차 정렬
SELECT *
FROM TBLINSA
ORDER BY BUSEO ASC , JIKWI DESC, BASICPAY DESC ;
-- 컬럼리스트의 컬럼 순서 > 유지보수에 취약하므로 비권장함
SELECT name, buseo, jikwi
FROM TBLINSA
ORDER BY 2; -->> 1 : name, 2 : buseo, 3 : jikwi
-- 가공된 값의 정렬
SELECT name, jikwi
FROM TBLINSA
ORDER BY CASE
WHEN JIKWI = '사원' THEN 1
WHEN JIKWI = '대리' THEN 2
WHEN JIKWI = '과장' THEN 3
WHEN JIKWI = '부장' THEN 4
END DESC ;
-- 가공된 값의 정렬 - alias 사용
SELECT name, jikwi,
CASE
WHEN JIKWI = '사원' THEN 1
WHEN JIKWI = '대리' THEN 2
WHEN JIKWI = '과장' THEN 3
WHEN JIKWI = '부장' THEN 4
END AS rank
FROM TBLINSA
ORDER BY rank DESC ;