분류 전체보기(91)
-
[SQL] 표준 SQL의 조인 연산 - FROM절 JOIN, 재귀 JOIN
FROM절 조인은 WHERE절 조인과 다르게 Inner Join, Natural join, Outer join, Cross join이 모두 가능하다. 재귀 JOIN은 순환적 관계를 이용해, 한 테이블에 적용하는 조인이다. 가장 대표적으로 직원 직원의 상급자를 검색하는 쿼리가 있다. SQL 조인 SQL FROM절 조인 여기서 자연조인(Natural join)은 두 테이블의 동일명 컬럼을 등가조인 해주는 연산이고, 외부 조인(Outer Join)은 조인에서 한쪽의 데이터가 없는 값까지 출력해 주는 연산, Cross join은 카티션 프로덕트 연산자이다. FROM절 조인은 대표적으로 using을 사용하거나 on을 사용하는 방법이 있는데 using은 두 테이블에서 똑같은 이름의 컬럼을 기준으로 조인할 때만 사용..
2023.09.02 -
[SQL] 표준 SQL의 조인 연산 - WHERE절 조인
표준 SQL에서는 WHERE절 조인과 FROM절 조인을 사용한다. 조인연산은 '관계형데이터베이스'를 다룰 때 핵식적인 역할을 하는 개념이기 때문에 더 주의 깊게 공부를 해야겠다는 생각이 든다. 표준 SQL 조인 WHERE절 조인 기본적으로 where절 조인에서는 INNER JOIN만 가능하다. 예제1 SELECT o.orderNo, o.status, count(d.orderNo) '상품수', sum(d.priceEach*d.quantity) FROM s_orders o, s_orderdetails d WHERE o.orderNo = d.orderNo AND o.status 'Cancelled' GROUP BY d.orderNo ORDER BY count(d.orderNo) DESC, sum(d.price..
2023.09.01 -
[SQL] sql tip - count함수를 활용하여 NULL값 처리하기
count함수는 집계함수의 한 종류이다. 집계함수(sum, min, mas 등)은 NULL값의 데이터는 무시하고 집계하는 특성이 있지만, count의 경우엔 NULL까지 포함해서 집계할수 있다. SELECT SUM(NUM), AVG(NUM), MAX(NUM), MIN(NUM) AS SUM_NUM FROM ( SELECT NULL AS NUM FROM DUAL UNION ALL SELECT 10 AS NUM FROM DUAL UNION ALL SELECT 20 AS NUM FROM DUAL UNION ALL SELECT 30 AS NUM FROM DUAL UNION ALL SELECT 40 AS NUM FROM DUAL ) 여기서 각각의 집계함수는 NULL값은 무시한채로 집계한 것을 알수있다. 또한, or..
2023.09.01 -
[SQL] DML 다중 테이블 검색문 - 집합 연산자
SQL 집합 연산자에서는 수학에서 집합을 공부했다면, 쉽게 이해할수 있는 연산자이다. 하지만 수학에서의 집합과 사용 방법이나 특징에서 조금 더 숙지해야할 내용이 있는데 그 부분들을 정리해 보려고 한다. SQL DML - 집합 연산자 UNION VS UNION ALL 기본적으로 둘 다 합집합 연산자이지만 차이점이 존재한다. 우선은 union은 합집합할 두 SELECT 문을 각각 정렬하고 중복된 데이터를 한 번 빼서 출력한다. 즉, 수학에서 우리가 알고 있는 합집합 연산에 가깝다. 반면에 union all은 중복된 집합을 한번 빼지 않는다. 그렇기에 합집합할 테이블을 각각 정렬할 필요도 없어진다. UNION 연산 결과의 테이블 명과 정렬 SELECT email '이메일/고객', concat(firstName..
2023.08.31 -
SQL 반정규화 정리
SQL에서 반정규화란 정규화의 반대되는 표현이다. SQL 반정규화 보통 정규화는 하나의 테이블을 쪼갬으로써 조회를 함에 있어서 성능을 올리기 위해 사용한다. 반대로 반정규화는 필요에 의해 데이터를 중복하여 성능을 향상시키기 위한 기법인데, 이때 중복을 하다보니 데이터 무결성이 깨질수도 있다는 위험이 존재한다. 하지만 지나치게 정규화 된 데이터는 디스크 I/O량이 많아 성능이 저하되거나 많은 조인 연산으로 계산량이 증가하여 선능이 감소할수 있다. 이를 방지하기 위해 사용할수 있는 하나의 선택지가 반정규화인것이다. 반정규화 절차 반정규화는 치명적인 오류가 생길수 있어 난이도 높은 데이터 모델링 기술이라고 볼 수 있다. 반정규화의 절차를 보면, 1. 반정규화 대상 조사 2. 다른 방법 유도 검토 3. 반정규화..
2023.08.31 -
[SQL] 정규표현식 함수 REGEXP_SUBSTR()의 이해
REGEXP_SUBSTR()의 이해를 위해 예시를 들자면, dmurphy@classicmodelcars.com 이라는 이메일에서 dmurphy 부분과 classicmodelcars 부분을 추출하는 코드를 짜보면, 여기서 [^@]+는 @이 아닌 문자가 1개 이상 있는 문자열을 뜻한다. SELECT REGEXP_SUBSTR(email, '[^@]+') -- 결과 : dmurphy SELECT REGEXP_SUBSTR(REGEXP_SUBSTR(email, '[^@]+',1,2), '[^\\.]+') -- 결과 : classicmodelcars 첫번째 코드는 뒤의 파라미터 값이 없기 때문에 가장 먼저 등장하는 문자열인 dmurphy가 출력된다. 두번째 코드에서는 1, 2의 파라미터 값이 입력했는데 이는 첫번째에..
2023.08.30