sql
PLAYER 테이블에서 평균 키보다 작은 선수 검색 시
SELECT * FROM PLAYER
WHERE HEIGHT < (SELECT AVG(HEIGHT) FROM PLAYER); ->SUB 쿼리문 사용하여 WHERE에 적용
포지션별 평균키와 전체평균키
SELECT "POSIION", AVG(HEIGHT),(SELECT AVG(HEIGHT) FROM PLAYER) FROM PLAYER
GROUP BY "POSITION";
-- 깔끔하게 정리하기 CASE문 변경
SELECT
AVG(CASE "POSITION" WHEN 'GK' THEN HEIGHT END) AS GK,
AVG(CASE "POSITION" WHEN 'DF' THEN HEIGHT END) AS DF,
AVG(CASE "POSITION" WHEN 'FW' THEN HEIGHT END) AS FW,
AVG(CASE "POSITION" WHEN 'MF' THEN HEIGHT END) AS MF,
AVG(HEIGHT) AS "전체 평균"
FROM PLAYER;
ROUND(AVG(CASE "POSITION" WHEN 'GK' THEN HEIGHT END),2) AS GK ->소숫점두째자리까지만 나오도록.. ROUND
from 테이블이름
[WHERE] 그룹화하기 이전의 조건식
GROUP BY 그룹화에 사용할 컬럼명 ->뭉칠 중심이 될 컬럼
[HAVING] 그룹화 후에 그룹화 결과값을 사용하는 조건식
[ORDER BY] 정렬 컬럼
SELECT DISTINCT CATEGORY
FROM TBL_PRODUCT
ORDER BY CATEGORY ASC;
SELECT 조회 결과(여러개의 행)가 다른 DML 명령어에 쓰일 수 있음
조건이 2개일때 ()안에 한개의 조건을 먼저 넣고, FROM의 테이블로 만듬. 그 이후 WHERE 절 사용
SELECT 서브 쿼리는 JOIN으로 대체할 수 있음 (때에 따라..)
-서브쿼리 - 실행할때마다 SELECT 조회부터 시작하기에 검색 횟수가 많음
SELECT TP.*
FROM TBL_PRODUCT tp
WHERE PCODE IN --2) 조건식 연산
--('CJBAb12g','APLE5kg','DOWON123a');
(SELECT PCODE FROM TBL_BUY tb WHERE CUSTOMID = 'twice'); --1) 조건식 연산
1) WHERE에서 쓰는 서브쿼리: TWICE가 구매한 상품 정보
SELECT TP.* --> 검색하고서 조건에서 걸러냄
FROM TBL_BUY tb , TBL_PRODUCT tp
WHERE TP.PCODE =TB.PCODE --일치한 것만 찾아냄으로써 중복을 없앰 --1) 크로스 연산
AND TB.CUSTOMID = 'twice'; --2) 조건식 연산
2) SELECT와 함께 쓰이는 서브쿼리
SELECT 컬럼1, 컬럼2 FROM (SELECT...)
WHERE 컬럼명 1= 값(SELECT 결과)
TP. ->테이블. 가능
PARSER OPTIMIZER ROW_SOURCE SQL_ENGINE
GENERATOR
문법오류검사, 총비용계산 실행가능 코드로 변경 실행
코드로 변경 실행계획 생성
SELECT /*+ INDEX(테이블명 PK명)*/ 컬럼명1, 컬럼명2 ... FROM 테이블명
-> PK에는 자동으로 인덱스가 생성되어 있음
->일반적인 컬럼은 ORDER BY로 정렬
SELECT /*+ INDEX_DESC(PLAYER PLAYER_PK) */* FROM PLAYER;