조건문
GOOD 과 JOB이 같다면 HELLO 아니면 WORLD 로 출력
GOOD과 GOOD이 같아면 HELLO를 출력
오라클에서는 DECODE, CASEWHEN
MSSQL에서는 CASEWHEN
MYSQL에서는 IF, CASEWHEN을 사용
JOIN(교집합)
inner join은 교집합을 출력을 한다.
Customers와 orders를 join해보자.
설명: Orders에서 OrderID, Customers에서 CustomerName, Orders에서 OrderDate 를 출력할건데, 테이블 기준은 Orders
Customers가 Orders의 CustomerID가 Customers에 CustomerID와 같은 레코드만을 추출하여 옆에 붙이겠다.
그래서 SELECT 해서 나온 OrderID, CustomerName, OrderDate가 Result로 출력된 모습을 확인할 수 있다. 하지만 Result의 값들은 각각 다른 테이블에서 나왔다는 것을 명심하자.
UNION(합집합)
Customers테이블에서 Ctiy 행에 중복을 제거한 결과 총 69개의 도시가 있음.
Supplier테이블에도 City가 있다.
중복을 제거한 결과 Raw테이블과 중복이 없음을 확인할 수 있다.
Customers의 City와 Supplier의 City를 합쳐본다.
GROUP BY
어떤 특정 열을 기준으로 그룹화하여 다른 특정 열에 붙힌다.
위에서 햇던 것은 해봣던 구문들이고
count를 뺴버리면
하지만 우리는 나라 별로 몇 개의 값이 있는지 알고싶다!!!
위처럼 하면 서로 동 동떨어진 값이 나오게 된다.
Country가 germany 밖에 안나오는 이유는 SELECT를 해서 이미 그룹함수와 기준 열이 있어서 GROUB BY를 해서 그룹핑을 해줘야 한다.
이렇게 하면 그룹으로 묶여서 카운트가 된다.
여기서 어떤 조건을 더 주고 싶으면
HAVING
: 조건을 더 주고 싶을 때
나오는 빈도가 5이상인 CutomerID를 출력해달라.
EXIST/ ANY/ ALL
EXIST: 서브쿼리에 뒤에 SELECT문이 있으면 TRUE, 없으면 FALSE를 반환
ANY: 서브쿼리가 하나라도 만족을 하면 TRUE
ALL: 뒤에 값들이 모두 만족을 해야 TRUE
앞에 SELECT문이 있는데 뒤에 SELECT문이 또 있다.
위 세 개는 초급자가 하기 어렵다. 앞에 내용들을 모두 숙달한 다음에 다시 와서 공부해야 한다.
COMMENTS
: 주석
--는 주석으로 실행이 되지 않는 부분
'SQL' 카테고리의 다른 글
MySQL 환경설정(GroomIDE) (0) | 2023.08.09 |
---|---|
데이터베이스 이론 (0) | 2023.08.09 |
SQL로 함수 사용하기 (0) | 2023.08.09 |
CUSTOMER DATA2 (0) | 2023.08.08 |
PRODUCT DATA (0) | 2023.08.07 |