규칙을 만드세요
SQL에서 조건을 생성할 수도 있습니다.
IF 함수를 사용하면 기본적으로 다음과 같이 구성된 조건을 만들 수 있습니다.
IF(조건식, 참일 때 값, 거짓일 때 값)
IF 절은 주로 SELECT 절에서 사용되며 결과 값을 새로운 컬럼으로 반환합니다.
예를 들어 mypokemon 테이블 이름과
공격력이 50 이상이면 강, 아니면 약으로 표시된 attack_class를 가져오려면 다음과 같이 작성합니다.
SELECT name, IF(attack >= 50, 'strong', 'weak') AS attack_class
FROM mypokemon;
이런 식으로 Attack >= 50이 true이면 강한 것으로 표시되고 그렇지 않으면 약한 것으로 표시됩니다.
데이터가 NULL인지 확인하는 것이 매우 중요하죠?
NULL 값을 다른 값으로 채우려면 IFNULL 함수사용할 수 있습니다.
IFNULL((컬럼 이름), NULL일 때 값)
NULL 행에서 해당 열 값이 NULL로 설정되면 값이 반환됩니다.
예를 들어 이름 열과 이름 열에 NULL 값이 있는 경우 결과는 unknown으로 작성됩니다.
full_name으로 가져오려면 다음을 작성하십시오.
SELECT name, IFNULL(name, 'unknown') AS full_name
FROM mypokemon;
사례
CASE 함수데이터를 분리하는 데 사용할 수 있습니다.
두 가지 형태로 표현할 수 있습니다.
처음에는 조건식에 열 이름 포함방법보지마.
CASE
WHEN 조건식1 THEN 결과값1
WHEN 조건식2 THEN 결과값2
ELSE 결과값3
END
두 번째는 열 이름을 먼저 빼는 방법보지마.
CASE (컬럼 이름)
WHEN 조건값1 THEN 결과값1
WHEN 조건값2 THEN 결과값2
ELSE 결과값3
END
ELSE는 생략할 수 있으며 그렇지 않으면 NULL 값이 반환됩니다.
예를 들어볼까요?
이름과 공격력은 attack_class로 구분하겠습니다.
공격력이 100 이상이면 매우 강하고, 60 이상 100 미만이면 강하고, 그렇지 않으면 이렇게 쓴다.
SELECT name,
CASE
WHEN attack >= 100 THEN 'very strong'
WHEN attack >= 60 THEN 'strong'
ELSE 'weak'
END AS attack_class
FROM mypokemon;
연결하다
연결하다문자 그대로 테이블을 결합하는 데 사용되는 키워드입니다.
생각할 수 있는 가장 기본적인 JOIN 방법은 내부 연결 쉽다 겹치다이렇게 상상하시면 됩니다
SELECT (컬럼 이름)
FROM (테이블 A 이름)
INNER JOIN (테이블 B 이름)
ON (테이블 A 이름).(컬럼 A 이름) = (테이블 B 이름).(컬럼 B 이름)
WHERE 조건식;
이와 같이 일반적인 열을 기준으로 조건을 설정하여 조인할 수 있습니다.
더 쉽게 쓰는 방법도 있습니다.
SELECT (컬럼 이름)
FROM (테이블 A 이름), (테이블 B 이름)
WHERE (테이블 A 이름).(컬럼 A 이름) = (테이블 B 이름).(컬럼 B 이름)
AND (조건식)
FROM 절에 테이블 이름을 나란히 놓고 WHERE 절에 조건을 넣을 수도 있습니다.
다음에 왼쪽 외부 링크수업 오른쪽 외부 조인나는 이것을 가지고있다.
LEFT OUTER JOIN은 왼쪽 테이블을 기준으로 발행되며, 오른쪽 테이블에 없는 데이터는 NULL로 표시된다.
RIGHT OUTER JOIN으로 테이블을 오른쪽에서 왼쪽으로 옮기면 결국 LEFT OUTER JOIN이 된다.
LEFT OUTER JOIN을 주로 사용한다고 합니다!
SELECT (컬럼 이름)
FROM (테이블 A 이름)
LEFT JOIN / RIGHT JOIN (테이블 B 이름)
ON (테이블 A 이름).(컬럼 A 이름) = (테이블 B 이름).(컬럼 B 이름) WHERE 조건식;
LEFT OUTER JOIN 및 RIGHT OUTER JOIN은 ON 절에 공통 열을 포함하여 유사한 방식으로 조인됩니다.
두 테이블의 모든 값을 합산하려면 어떻게 해야 합니까?
불행히도 MySQL에는 OUTER JOIN 키워드가 없습니다.
왼쪽 조인 및 오른쪽 조인 노동 조합연결해야 한다고 합니다.
이렇게 하면 LEFT JOIN과 RIGHT JOIN의 결과가 중복을 제외하고 결합되어 표시됩니다.
SELECT (컬럼 이름)
FROM (테이블 A 이름)
LEFT JOIN (테이블 B 이름)
ON (테이블 A 이름).(컬럼 A 이름) = (테이블 B 이름).(컬럼 B 이름)
SELECT (컬럼 이름)
FROM (테이블 A 이름)
RIGHT JOIN (테이블 B 이름)
ON (테이블 A 이름).(컬럼 A 이름) = (테이블 B 이름).(컬럼 B 이름);
노동 조합수업 유니온 올은 노동 조합조작으로서 이것은 의미합니다.
Query 1과 Query 2의 결과가 합쳐져 표시된다고 할 수 있습니다.
둘의 차이점은 무엇입니까?
UNION은 중복 값을 제외하고 UNION ALL도 중복 값을 표시합니다.
가입하세요동일한 테이블의 값을 결합하는 데 사용됩니다.
컴퓨터/전자기기 > 데스크탑/노트북 > 삼성/애플/LG
이와 같이 계층 구조가 존재하는 경우 SELF JOIN을 사용하여 계층 구조를 즉시 표시합니다.
SELECT (컬럼 이름)
FROM (테이블 A 이름) AS t1
INNER JOIN (테이블 A 이름) AS t2
ON t1.(컬럼 A 이름) = t2.(컬럼 A 이름)
WHERE 조건식;
w3schools에서 JOIN의 몇 가지 예를 살펴보겠습니다!
먼저 주문 ID, 직원 이름(이름, 성), 주문 날짜를 추출해 봅시다.
SELECT O.OrderID, CONCAT(E.FirstName, ' ', E.LastName) Name, O.OrderDate
FROM Orders O, Employees E
WHERE O.EmployeeID = E.EmployeeID
직원 ID를 기반으로 주문 테이블과 직원 테이블을 INNER JOIN합니다.
필요한 데이터를 추출하는 예입니다.
별도의 직원 이름은 CONCAT 함수를 사용하여 단일 열로 결합되었습니다.
위의 코드를 실행하면 다음과 같은 결과가 나타납니다.
다음으로 주문 내역이 없는 고객에게서 고객 ID와 고객 이름을 추출합니다.
SELECT C.CustomerID, C.CustomerName
FROM Customers C LEFT OUTER JOIN Orders O ON C.CustomerID = O.CustomerID
WHERE OrderID IS NULL
고객이 완전히 나와 주문 테이블에 해당 고객이 없을 때 주문 내역이 없다고 고객이 판단해야 하기 때문입니다.
이것은 Customers 테이블을 기반으로 하는 LEFT OUTER JOIN의 예입니다.
위의 코드를 실행하면 다음과 같은 결과가 나타납니다.
SELF JOIN의 예를 보자.
SELECT A.EmployeeID, A.LastName, A.FirstName,
B.EmployeeID BossID, B.LastName BossLN, B.FirstName BossFN
FROM Employees A, Employees B
WHERE A.EmployeeID = B.EmployeeID + 1
직원 테이블에서 직원 번호 1이 직원의 직속 관리자보다 작다고 가정합니다.
사원번호와 이름, 사원번호와 관리자를 출력하는 예입니다.
위의 코드를 실행하면 다음과 같은 결과가 나타납니다.
예를 들어보면 이해가 더 쉽죠?
자유롭게 JOIN을 할 수 있다면 그 분야에서 SQL을 잘한다고 인정받는다고 합니다!
저도 열심히 연습할게요