Sub Query 서브 쿼리
- 서브 쿼리에 대해 잘 정리해놓은 글 link
- 서브 쿼리는 부모 쿼리 안에 작성하는 내부 쿼리를 말합니다.
()로 묶어서 서브 쿼리를 작성해줄 수 있습니다. - 예제
SELECT A.* FROM (SELECT NAME FROM OCCUPATIONS) as A
- 서브 쿼리의 종류
- 중첩 서브 쿼리
WHERE구문 안에 작성하는 서브 쿼리
- 인라인 뷰
FROM구문 안에 작성하는 서브 쿼리
- 스칼라 서브 쿼리
SELECT구문 안에 작성하는 서브 쿼리
- 중첩 서브 쿼리
- 보통 일반적
join연산이 서브쿼리보다 성능이 좋다고 알려져있다고 합니다.joinvsSub Query연산 성능 차이에 대해 설명한 글 link
- 서브 쿼리 사용 시 주의 점
()을 사용하여 감싸서 사용해야 합니다.ORDER BY를 사용하지 못한다고 합니다.
- 서브 쿼리가 사용되는 절 참고한 link
- SELECT
- FROM
- WHERE
- HAVING
- ORDER BY
- INSERT 절의 VALUES
- UPDATE 절의 SET
Control Flow Function 제어문
Control Flow Function에 대해 잘 정리해놓은 글 link
MySQL에서 사용하는
Control Flow Function에는 아래와 같이 4가지가 있다고 합니다.CASE operator
- 예시
SELECT CompanyName, CASE Country WHEN 'USA' THEN 'North America' WHEN 'Canada' THEN 'North America' WHEN 'Brazil' THEN 'South America' WHEN 'Japan' THEN 'Asia' WHEN 'Singapore' THEN 'Asia' WHEN 'Australia' THEN 'Australia' ELSE 'Europe' END AS Continent FROM Suppliers ORDER BY CompanyName;
- 예시
IF/ELSE construct
IF(expr1,expr2,expr3):expr1이 참이면expr2반환, 거짓이면expr3반환- 예시
SELECT ProductName, UnitPrice, IF(UnitPrice>=20, 'High Price', 'Low Price') AS "Price Level" FROM Products;
IFNULL
IFNULL(expr1,expr2):expr1이NULL이 아니면expr1반환,NULL이면expr2반환- 예시
SELECT FirstName, LastName, IFNULL(ReportsTo, 'Is CEO') FROM Employees;
NULLIF
NULLIF(expr1,expr2): 만약expr1 = expr2가 참이면NULL반환, 거짓이면expr1반환- 예시
SELECT CompanyName, Fax, NULLIF(IF(Fax='', 'No Fax', 'Got Fax'), 'No Fax') AS Note FROM Customers;
처리된 각 행의 값을 반환해주는 기능을 가지고 있습니다.
각 조건에 따른 결과를 반환 해 줍니다.
SELECT,WHERE,ORDER BY,GROUP BY절에서 사용할 수 있습니다.Variable Assignment 변수 처리
SQL의
SET에 대한 정보 참고 글 linkMySQL Variable Assignment에 대해 정리해놓은 글 link
@의 의미
SET @rownum:=0; SELECT @rownum:=@rownum+1, CRE_DTM FROM TB_API_ACCESS_LOG;여기서는 쉽게 변수라고 생각하면 된다고 합니다. 행이 바뀔 때마다 1씩 증가시키며 주로 행 번호를 부여하기 위해서 사용하는 변수라고 할 수 있습니다.
해당 내용을 질문한 글 link
변수 선언 예시
msrp변수 내 가장 큰 값을@msrp변수로 저장SELECT @msrp:=MAX(msrp) FROM products;msrp변수 값이 위에서 지정한@msrp값과 동일한 경우를 출력하는 코드SELECT productCode, productName, productLine, msrp FROM products WHERE msrp = @msrp;만약 하나의 변수에 선언하려는 값이 여러개일 경우에는 마지막 행의 값 하나만을 저장합니다.
'Data Analysis > MySQL' 카테고리의 다른 글
| [MySQL] HackerRank SQL 연습 문제 정답 정리 (0) | 2021.07.18 |
|---|---|
| [MySQL] Basic 난이도 문제 정답 정리 (0) | 2021.07.17 |
| [MySQL] Weather Observation Station 문제 풀이 (0) | 2021.07.15 |
| [MySQL] SQL 연습 및 정리 프로젝트 (0) | 2021.07.15 |