[학습 DAY - 7]
GROUP BY로 그룹화
-. 열에서 같은 값을 가진 행끼리 묶어 그룹화 가능
-. DISTINCT와 같이 중복 제거 효과
- SELECT * FROM sample51;
- SELECT name FROM sample51 GROUP BY name;
HAVING 구로 조건 지정
-. 내부 처리 순서가 WHERE → GROUP BY → SELECT → ORDER BY 순이기 때문에 WHERE구 사용 불가 → HAVING구를 사용하여 조건식 지정
-. GROUP BY 뒤에 WHERE구와 같이 사용
복수열의 그룹화
-. GROUP BY에 지정하지 않은 열은 SELECT에 기술하면 안됨(어떤 값을 반환해야 할 지 모름)
결과값 정렬은 ORDER BY구로 지정하여 정렬
SELECT 명령어에 의한 데이터 질의로 상부가 아닌 하부의 부수적인 질의를 의미
DELETE의 WHERE 구에서 서브쿼리 사용하기
- 테이블의 최소값 삭제하기
DELETE FROM sample54 WHERE a = (SELECT MIN(a) FROM sample54);
→ 아래 테이블의 최소값 a=20 삭제
스칼라 값
-. SELECT 명령이 하나의 값만 반환하는 것을 스칼라 값
을 반환한다고 함(단일 행, 단일 열)
-. =
연산자를 사용하여 비교할 경우에는 스칼라 값끼리 비교
SELECT, SET 구에서 서브쿼리 사용하기
-. SELECT 구, UPDATE의 SET 구 등 다양한 구 안에서 지정 가능
-. SELECT 구에서 서브쿼리를 지정할 때는 스칼라 서브쿼리 필요
- SELECT (SELECT COUNT() FROM sample51) AS sq1, (SELECT COUNT() FROM sample54) AS sq2;
FROM 구에서 서브쿼리 사용하기
-. FROM 구에서도 서브쿼리 사용 가능
-. 서브쿼리 기술방법: 괄호로 SELECT 명령을 묶음
-. SELECT 구, SET 구에서는 스칼라 서브쿼리를 지정해야 하지만 FROM 구에 기술할 경우에는 스칼라 값을 반환하지 않아도 됨
-. SELECT 명령 안에 SELECT 명령이 들어있는 듯 한 구조를 네스티드(nested)구조 또는 중첩구조, 내포구조라고 부름
-. sq는 테이블의 별명으로, Sub Query
- 사용 예시
INSERT 명령과 서브쿼리
-. INSERT 명령과 서브쿼리 조합하여 사용 가능
-. INSERT 명령에는 VALUES 구의 일부로 서브쿼리를 사용하는 경우와, VALUES 구 대신 SELECT 명령을 사용하는 두 가지 방법이 있음
-. INSERT INTO ~~ VALUES(~~) or INSERT INTO ~~ SELECT ~~