Database/SQLD 30

[SQLD] 4-04. 그룹 함수 2024.03.03

그룹 함수 데이터를 GROUP BY 하여 나타낼 수 있는 데이터를 구하는 함수 역할에 따라 구분 ➡ ① 집계 함수 ② 소계(총계) 함수 집계 함수 COUNT, SUM, AVG, MAX, MIN 등 소계 (총계) 함수 ROLLUP, CUBE, GROUPING SETS 등 소계 함수 ROLLUP 소그룹 간의 소계 및 층계를 계산하는 함수 ROLLUP (A) - A로 그룹핑 - 총합계 ROLLUP (A, B) - A, B로 그룹핑 - A로 그룹핑 - 총합계 ROLLUP (A, B, C) - A, B, C로 그룹핑 - A, B로 그룹핑 - A로 그룹핑 - 총합계 CUBE 소그룹 간의 소계 및 총계를 다차원적으로 계산할 수 있는 함수 GROUP BY가 일방향으로 그룹핑하며 소계를 집계 ↔ CUBE는 조합할 수 있..

[SQLD] 4-03. 집합 연산자 2024.03.03

집합 연산자는 각 쿼리의 결과 집합을 가지고 연산을 하는 명령어 UNION ALL 각 쿼리의 결과 집합의 합집합 (중복된 행도 그대로 출력) UNION 각 쿼리의 결과 집합의 합집합 (중복된 행은 한 줄로 출력) INTERSECT 각 쿼리의 결과 집합의 교집합 (중복된 행은 한 줄로 출력) MINUS / EXCEPT 앞에 있는 쿼리의 결과 집합에서 뒤에 있는 쿼리의 결과 집합을 뺀 차집합 (중복된 행은 한 줄로 출력) UNION ALL / UNION UNION ALL QUERY 1의 결과와 QUERY 2의 결과를 그대로 합하는 것 중복된 행도 그대로 출력 SELECT * FROM RUNNING_MAN UNION ALL SELECT * FROM INFINITE_CHALLENGE; UNION QUERY 1의..

[SQLD] 4-02. 뷰 (View) 2024.03.03

뷰 (View) 특정 SELECT 문에 이름을 붙여서 재사용이 가능하도록 저장해놓은 오브젝트 SQL에서 테이블처럼 사용할 수 있음 인라인 뷰를 뷰로 정의한다고 가정하면 쿼리 작성시 인라인 뷰가 들어갈 위치에 뷰 이름만 기술하면 됨 뷰 생성 CREATE OR REPLACE VIEW 뷰 이름 AS SELECT 칼럼1, 칼럼2, 칼럼3 ··· FROM 테이블 뷰 삭제 DROP VIEW 뷰 이름 💡 뷰는 가상 테이블 ➡ 실제 데이터를 저장하지X 데이터를 조회해오는 SELECT문만 가지고 있음 뷰의 특징 보안성 : 보안이 필요한 컬럼을 가진 테이블일 경우 해당 컬럼을 제외한 별도의 뷰를 생성하여 제공함으로써 보안을 유지할 수 있음 독립성 : 테이블 스키마가 변경되었을 경우 애플리케이션은 변경하지 않고 관련 뷰만 ..

[SQLD] 4-01. 서브쿼리 (Subquery) 2024.03.03

서브쿼리 (Subquery) 하나의 쿼리 안에 존재하는 또 다른 쿼리 위치에 따라 나눌 수 있음 SELECT 절 스칼라 서브쿼리 (Scalar Subquery) FROM 절 인라인 뷰 (Inline View) WHERE 절, HAVING 절 중첩 서브쿼리 (Nested Subquery) 스칼라 서브쿼리 (Scarlar Subquery) 주로 SELECT 절에 위치하지만 컬럼이 올 수 있는 대부분 위치에 사용할 수 있음 컬럼 대신 사용하므로 반드시 하나의 값만을 반환해야 함 -- 에러 발생 SELECT M.PRODUCT CODE, (SELECT S.PRODUCT_NAME, S.PRICE FROM PRODUCT S WHERE S.PRODUCT_CODE = M.PRODUCT_CODE) AS PRODUCT_IN..

[SQLD] 3-08. STANDARD JOIN 2024.03.03

RDBMS에는 여러 벤더가 존재 EX) Oracle, SQL Server(MSSQL), MySQL, MariaDB, PostgreSQL 등 벤더마다 SQL 문법에 차이가 너무 클 경우 호환성 이슈가 발생 표준이 되는 ANSI SQL 을 지정함 STANDARD JOIN은 ANSI SQL중 하나 INNER JOIN JOIN 조건에 충족하는 데이터만 출력되는 방식 JOIN 조건을 ON 절을 사용하여 작성 SELECT A.PRODUCT_CODE, A.PRODUCT_NAME, B.MEMBER_ID, B.CONTENT, B.REG_DATE FROM PRODUCT A INNER JOIN PRODUCT_PREVIEW B ON A.PRODUCT_CODE = B.PRODUCT_CODE; OUTER JOIN JOIN 조건에..

[SQLD] 3-07. JOIN 2024.03.03

JOIN 이란? 각기 다른 테이블을 한 번에 보여줄 때 쓰이는 쿼리 EQUI JOIN Equal (=) 조건으로 JOIN하는 방식 가장 흔히 볼 수 있는 JOIN의 방식 EX) 무소음 무선 마우스 (PRODUCT_CODE = '100001')의 리뷰 조회 SELECT A.PRODUCT_CODE, A.PRODUCT_NAME, B.MEMBER_ID, B.CONTENT, B.REG_DATE FROM PRODUCT A, PRDOUCT_REVIEW B WHERE A.PRODUCT_CODE = B.PRODUCT_CODE; AND A.PRODUCT_CODE = '100001'; Non EQUI JOIN Equal (=) 조건이 아닌 다른 조건 (BETWEEN, >, >=,

[SQLD] 3-06. ORDER BY 절 2024.03.03

ORDER BY ORDER BY 절 + 기준이 되는 컬럼 (1개 이상) [+ 옵션] ORDER BY 절을 사용하여 SELECT한 데이터를 정렬 할 수 있음 ORDER BY 절을 따로 명시하지 않으면 데이터는 임의의 순서대로 출력됨 SELECT 문의 논리적 수행 순서 ORDER BY 절은 SELECT 문에서 논리적으로 맨 마지막에 수행됨 SELECT 절 다음에 수행되기 때문에 SELECT 절에서 정의한 ALAS를 사용할 수 있음 ORDER BY 절의 옵션은 각 컬럼 다음에 하나씩 붙여서 작성해야 함 1) ASC (ASCENDING) : 오름차순 2) DESC (DESCENDING) : 내림차순 * 옵션 생략시 ASC가 DEFAULT ORDER BY 와 NULL 정렬의 기준이 되는 컬럼에 NULL 데이터가 ..

[SQLD] 3-05. GROUP BY, HAVING 절 2024.03.03

GROUP BY 데이터를 그룹별로 묶을 수 있도록 해주는 절 GROUP BY + 그룹핑의 기준이 되는 컬럼 기준이 되는 컬럼은 하나 이상이 될 수 있음 집계 함수 데이터를 그룹별로 나누면 그룹별로 집계 데이터를 도출하는 것이 가능해짐 COUNT(*) 전체 ROW를 COUNT하여 반환 COUNT(컬럼) 컬럼값이 NULL인 ROW를 제외하고 COUNT하여 반환 COUNT(DISTINCT 컬럼) 컬럼값이 NULL이 아닌 ROW에서 중복을 제거한 COUNT를 반환 SUM(컬럼) 컬럼값들의 합계를 반환 AVG(컬럼) 컬럼값들의 평균을 반환 MIN(컬럼) 컬럼값들의 최솟값을 반환 MAX(컬럼) 컬럼값들의 최댓값을 반환 HAVING GROUP BY 절을 사용할 때 WHERE 절처럼 사용하는 조건절 데이터를 그룹핑한 ..

[SQLD] 3-04. WHERE 절 2024.03.03

WHERE 절 INSERT를 제외한 DML문을 수행할 때 원하는 데이터만 골라 수행할 수 있도록 해주는 구문 조건식에서 컬럼명은 일반적으로 좌측에 위치하지만 우측에 위치해도 정상적으로 동작함 SELECT 컬럼명1, 컬러명2 ⋯ FROM 테이블명 WHERE 조건절; UPDATE 테이블명 SET 컬럼명 = 새로운 데이터 WHERE 조건절; DELETE FROM 테이블명 WHERE 조건절; 비교 연산자 연산자 의미 예시 = 같음 WHERE COL = 10 = 크거나 같음 WHERE CO >= 10 문자형 칼럼을 비교 조건으로 사용하려면 우측 상수값을 인용부호 (' ') 로 감싸주어야 함 -- Error 발생 SELECT first_name, last_name, email FROM member WHERE fir..

[SQLD] 3-03. 함수(6) - CASE 2024.03.03

CASE 함수와 성격이 같기는 하지만 표현 방식이 함수라기 보다는 구문에 가까움 '~이면 ~이고, ~이면 ~이다' 식으로 표현되는 구문 필요에 따라 각 CASE를 여러개 로 늘릴 수 있음 Oracle의 DECODE 함수와 같은 기능을 함 CASE WHEN SUBWAY_LINE = '1' THEN 'BLUE' WHEN SUBWAY_LINE = '2' THEN 'GREEN' WHEN SUBWAY_LINE = '3' THEN 'ORANGE' [ELSE 'GRAY'] END 동일한 대상에 대한 조건 + EQUAL 비교일 경우 CASE와 WHEN 사이에 대상을 뺄 수 있음 이경우 WHEN 과 THEN 사이에 상수만 작성가능 CASE SUBWAY_LINE WHEN '1' THEN 'BLUE' WHEN '2' THE..