데이터 분석

mysql4

강청색 2023. 12. 18. 00:41

JOIN

두 개 이상 테이블에서 SQL 질의

-- 여러 테이블을 결합해 질의해서 결과 집합을 도출해 낸다.

 

조인 다이어그램

일반 조인 : SQL 문에서는 주로 동등조인을 사용함

외부 조인 : FROM 절에 조인 종류를 적고 ON을 이용해 조인조건을 명시함

명령 문법 설명
일반조인 SELECT <속성들>
FROM 테이블1, 테이블2
WHERE <조인조건> AND <검색조건>
SQL 문에는 주로 동등조인을 사용함
두가지 문법  중 하나를 사용할 수 있음
SELECT <속성들>
FROM 테이블1 INNER JOIN 테이블2 ON <조인조건>
WHERE <검색조건>
외부조인 SELECT <속성들>
FROM 테이블1 {LEFR |RIGHT|FULL [OUTER]} JOIN
테이블 2 ON <조인조건>
WHERE <검색조건>
외부조인은 FROM 절에 조인 종류를 적고 ON을 이용해 조인조건을 명시함

 

일반조인 / Inner 조인

-- 기준 테이블과 중복되는 데이터 추출, SQL문에서 주로 동등조인 사용

예시)

SELECT *

FROM Custmer, Orders;

 

일반조인 / 동등 조인과 조건

-- 조건문과 정렬을 함께 사용해보자

예시)

SELECT * 

FROM Customer, Orders

WHERE Customer.custid =Orders.custid;

 

외부 조인

-- 외부조인은 상대 테이블과 결합된 집합이 됨

예시)

SELECT Customer.name, saleprice

FROM Customer LEFT OUTER JOIN Orders

ON Customer.custid = Orders.custid;

 

CROSS JOIN

-- 상호 조인이라고 불리며, 테이블의 모든 행등과 조인 대상 테이블의 모든 행을 조인시키는 기능

예시)

SELECT <속성들>

FROM 테이블1 CROSS JOIN

테이블2 ON <조인조건>

WHERE <검색조건>

 

집합 연산자

두개의 SELECT문의 결과에 대해 합집합, 교집합, 차집합을 구하는 연산자이다.

-- 결합하는 SELECT문의 결과는 열의 수나 각각의 데이터형이 똑같아야 한다.

연산자 설명
Table1 UNION Table2 Table1과 Table2의 합집합
Table1 MINUS Table2 Table1과 Table2의 차집합
Table1 INTERSECT Table2 Table1과 Table2의 교집합
Mysql에는 MINUS, INTERSECT 연산자 지원이 안되고, IN과 NOT IN 연산자로 구현할 수 있다.

 

합집합 UNION

-- SELECT문을 UNION으로 연결하면 중복되는 데이터를 정리한 후 가져온다

예시)

SELECT name

FROM Customer

WHERE address LIKE '대한민국%'

UNION

SELECT name

FROM Customer

WHERE custid IN (SELECT custid FROM Orders);

 

MINUS 연산자

-- Mysql에는 MINUS 연산자 지원이 안되고  NOT IN 연산자로 구현할 수 있다.

 

INTERSECT 연산자

-- INTERSECT 연산자 지원이 안되고 IN 서브쿼리로 사용 가능하다.

 

다중행 연산자

다중행 연산자란?

-- 메인쿼리와 서브쿼리 사이에 다중행 변환 값에 대한 비교를 수행한다.

-- 비교연산자(<,>,=,<>)와 결합해 사용

 

다중행 연산자 소개

연산자  설명
IN 서브쿼리 반환 값에서 연산 조건에 해당하는 값이 있으면 참이다.
ANY, SOME 서브쿼리 반환 값에서 조건과 각각의 값을 비교하여 하나 이상을 만족하면 참이다
ALL 값을 서브쿼리에 의해 리턴되는 모든 값과 조건값을 비교하여 모든 값을 만족해야 참이다
EXISTS 서브쿼리의 반환 결과 중에서 메인 쿼리 비교 조건이 만족하는 값이 하나라도 존재하면 참이다.
ANY : OR 개념과 유사, ALL : AND 개념과 유사

IN 연산자

-- 서브쿼리가 리턴하는 행 중에서 어느 하나라도 만족하는 경우에 결과를 반환

 

ALL 연산자

-- 서브쿼리에 의해 반환되는 모든 값과 메인쿼리와 조건값을 비교하여 모든 값을 만족해야 참이다

 

EXISTS 연산자

-- 양쪽 쿼리 SELECT 조건에 맞는 튜플이 존재하면 결과에 포함시킨다

-- 서브쿼리의 어떤 행이 조건에 만족하면 참이 된다

-- NOT EXISTS는 부속질의문의 모든 행이 조건에 만족하지 않을 때만 참이다.

 

ANY 연산자

-- ANY 어떤 값과 일치한다라는 의미의 연산자이다

-- 서브 쿼리에 의해 구해진 값 중 아무 값과 비교하고 싶은 경우에만 사용한다.

 

 

'데이터 분석' 카테고리의 다른 글

mysql6  (1) 2023.12.20
mysql5  (0) 2023.12.19
mysql-3  (0) 2023.12.14
mysql 개념2  (0) 2023.12.13
mysql 개념  (0) 2023.12.13