SQL

SQL 조건문

Bordercolli 2023. 8. 9. 16:37
728x90

조건문 

GOOD 과 JOB이 같다면 HELLO 아니면 WORLD 로 출력

 

GOOD과 GOOD이 같아면 HELLO를 출력

 

오라클에서는 DECODE, CASEWHEN

MSSQL에서는 CASEWHEN

MYSQL에서는 IF, CASEWHEN을 사용

 

 

JOIN(교집합)

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