언어/SQL 29

SQL_집합 연산자

집합 연산자 - SQL문에서 SELECT문을 통해 데이터를 조회한 결과를 하나의 집합과 같이 다룰 수 있는 집합 연산자 사용 가능 - 두개 이상의 SELECT문의 결과 값을 연결할 때 사용 [UNION 사용 예시] SLECT empno, ename, sal, deptno FROM emp WHERE deptno = 10 UNION SELECT empno, ename, sal, deptno FROM emp WHERE deptno = 20; - 10번 부서에 근무하는 사원과 20번 부서에 근무하는 사원 정보가 합쳐서 출력 - 주의할 점은 집합 연산자로 두 개의 SELECT문의 결과 값을 연결할 때 각 SELECT문이 출력하려는 열 개수와 각 열의 자료형이 순서별로 일치해야 함 [MINUS 사용 예시] SELE..

언어/SQL 2022.06.24

CROSS JOIN, INNER JOIN, NATURAL JOIN, USING, ON

CROSS JOIN Cartesian Product 값을 얻을때 사용 한다. -- 아래 SQL문장을 실행해 보자 SELECT ename FROM emp CROSS JOIN dept INNER JOIN 일반 조인시 ,(콤마)를 생략하고 INNER JOIN을 추가하고, WHERE절 대신 ON절을 사용하면 된다. INNER는 생략 가능 하다. 아래 두 조인의 결과 값은 같다. -- INNER JOIN을 사용한 문장 SELECT e.empno, e.ename FROM dept d INNER JOIN emp e ON d.deptno=e.deptno; -- 일반적인 SQL 문장 SELECT e.empno, e.ename FROM dept d , emp e WHERE d.deptno=e.deptno; NATURAL ..

언어/SQL 2022.06.14

Outer Join (LEFT, RIGHT, FULL OUTER JOIN)

Outer Join Equi Join은 조인을 생성하려는 두 개의 테이블의 한쪽 컬럼에서 값이 없다면 테이터를 반환하지 못한다. 동일 조건에서 조인 조건을 만족하는 값이 없는 행들을 조회하기 위해 Outer Join을 사용 한다. Outer Join 연산자는 "(+)" 이다. 조인시 값이 없는 조인측에 "(+)"를 위치 시킨다. Outer Join 연산자는 표현식의 한 편에만 올 수 있다. 💊 Equi Join과 Outer Join의 비교 -- Equi Join 으로 부서 번호를 조회하는 예제 SELECT DISTINCT(e.deptno), d.deptno, d.dname FROM emp e, dept d WHERE e.deptno = d.deptno; DEPTNO DEPTNO ------ -------..

언어/SQL 2022.06.14

Equi Join, Non_Equi Join, Self Join

조인(Join) 둘 이상의 테이블을 연결하여 데이터를 검색하는 방법 이다. 보통 둘 이상의 행들의 공통된 값 Primary Key 및 Foreign Key 값을 사용하여 조인 한다. 두 개의 테이블을 SELECT문장 안에서 조인 하려면 적어도 하나의 컬럼이 그 두 테이블 사이에서 공유 되어야 한다. 🌱 Join 방법과 방식 조인의 방법 : Equi Join (등가 조인, 내부조인) , Non-Equi Join , Self Join , Outer Join 조인의 방식 : Nested Loop Join, Sort Merge Join, Hash Join 🌱 Equi Join 가장 일반적으로 사용하는 Equality Condition(=)에 의한 조인이다 Equi join의 성능을 높이기 위해서는 Index 기..

언어/SQL 2022.06.14

UNION, INTERSECT, MINUS 연산자

UNION과 UNION ALL의 차이는 정렬작업의 수행 여부이다. UNION은 중복을 제거해야 하기 때문에 정렬작업을 수행하므로 성능이 저하된다. UNION, MINUS, INTERSECT는 전체범위를 모두 액세스 하는 정렬작업을 수행하기 때문에 부분범위처리가 불가능하다. UNION : 합집합 UNION은 두 테이블의 결합을 나타내며, 결합시키는 두 테이블의 중복되지 않은 값들을 반환 한다. 💊 부서번호를 조회하는 UNION 예제 SELECT deptno FROM emp UNION SELECT deptno FROM dept; DEPTNO -------- 10 20 30 40 UNION ALL : 중복을 포함하는 합집합 UNION과 같으나 두 테이블의 중복되는 값 까지 반환 한다. 💊 부서번호를 조회하는 ..

언어/SQL 2022.06.14

서브쿼리

Subquery는 다른 하나의 SQL 문장의 절에 NESTEDED된 SELECT 문장 이다. SELECT, UPDATE, DELETE, INSERT와 같은 DML문과 CREATE TABLE 또는 VIEW의 WHERE절이나 HAVING절에서 사용 된다. 보통 Subquery는 Main Query 이전에 한 번 실행된다. Subquery는 괄호로 묶어야 한다. 단일 행 연산자(=, >, >=, =, ALL (SELECT sal FROM emp WHERE job='SALESMAN'); ENAME SAL ---------- -------- CLARK 2450 BLAKE 2850 KING 5000 🌱 EXISTS 연산자 EXISTS 연산자는 Subquery 데이터가 존재하는가를 체크해 존재 여부(TRUE,FALS..

언어/SQL 2022.06.14

NVL, NVL2, NULLIF

NVL NVL 함수는 NULL 값을 다른 값으로 바꿀 때 사용하며, 모든 데이터 타입에 적용이 가능하다. 💊 매니저가 없는 값을 0으로 바꾸어서 출력하는 예제 SELECT empno, NVL(mgr, 0) mgr FROM emp WHERE deptno = 10; EMPNO MGR ------- ------- 7782 7839 7839 0 7934 7782 NVL2 NVL2라는 함수는 NVL함수의 DECODE 함수의 개념을 합쳤다고 생각하면 쉽습니다. NVL2(expr, expr1, expr2) expr의 값이 NULL이 아닐 경우에는 expr1의 값을 반환 하고, NULL일 경우에는 expr2의 값을 반환 한다. 💊 매니저가 있는경우 1을 없는경우 0을 출력하는 예제 SELECT empno, NVL2(m..

언어/SQL 2022.06.14

DECODE, CASE

DECODE와 CASE 함수는 SQL 문장에서 조건에 해당하는 값을 추출하고자 할 때 주로 사용한다 DECODE DECODE 함수는 조건에 따라 데이터를 다른 값이나 컬럼값으로 추출 할 수 있다. DECODE(VALUE, IF1, THEN1, IF2, THEN2...) 형태로 사용 할 수 있다. VALUE 값이 IF1일 경우에 THEN1 값을 반환하고, VALUE 값이 IF2일 경우에는 THEN2 값을 반환한다. DECODE 함수 안에 DECODE함수를 중첩으로 사용 할 수 있다. 💊 부서번호가 10이면 ACCOUNTING, 20이면 RESEARCH, 30이면 SALES 나머지는 OPERATIONS를 출력하는 예제 -- 부서번호가 10이면 ACCOUNTING, 20이면 RESEARCH, 30이면 SALE..

언어/SQL 2022.06.14

집계함수 (COUNT, MAX, MIN, AVG, SUM, STDDEV)

집계 함수란 여러행 또는 테이블 전체 행으로부터 하나의 결과값을 반환하는 함수이다. GROUP BY절을 이용하여 그룹 당 하나의 결과로 그룹화 할 수 있다. HAVING절을 사용하여 집계함수를 이용한 조건 비교를 할 수 있다. MIN, MAX 함수는 모든 자료형에 사용 할 수 있다. 일반적으로 가장 많이 사용하는 집계함수에는AVG(평균), COUNT(개수), MAX(최대값), MIN(최소값), SUM(합계) 등이 있다. COUNT 갯수, 행의 수(NULL값 제외) -- 검색된 행의 총 수 4개를 반환. 즉 4개의 부서가 존재한다. SELECT COUNT(deptno) FROM dept; COUNT(DEPTNO) ------------- 4 MAX 최대값 -- sal 컬럼값 중에서 제일 큰값을 반환. 즉 ..

언어/SQL 2022.06.14

변환 함수(TO_CHAR, TO_DATE, TO_NUMBER)

TO_CHAR TO_CHAR 함수는 DATE형, NUMBER형을 문자 타입으로 변환하는 함수이다. TO_CHAR(number), TO_CHAR(number, format), TO_CHAR(date, format) 형식으로 사용할 수 있다. 🍳 Number Format의 변환 예제 NUMBER 타입의 데이터를 아래와 같이 특정 형식의 문자 타입으로 변환 할 수 있다. -- 콤마 예제 SELECT TO_CHAR(12345678,'999,999,999') comma FROM DUAL; -- 소숫점 예제 SELECT TO_CHAR(123.45678,'999,999,999.99') period FROM DUAL; -- $ 표시 예제 SELECT TO_CHAR(12345678,'$999,999,999') dolla..

언어/SQL 2022.06.14