본문 바로가기
728x90

전체 글143

[SQLD 2-2-6] SQL 활용 - 계층형 질의와 셀프 조인 계층형 질의 (Hierarchical Query)- 테이블에 계층형 데이터가 존재하는 경우 데이터를 조회하기 위해 계층형 질의를 사용- 계층형 데이터란 동일 테이블에 계층적으로 상위와 하위 데이터가 포함된 데이터를 말한다.  예를 들어, 사원 테이블에서는 사원들 사이에 상위 사원(관리자)과 하위 사원 관계가 존재하고 조직 테이블에서는 조직들 사이에 상위 조직과 하위 조직 관계가 존재한다.  엔티티를 순환관계 데이터 모델로 설계할 경우 계층형 데이터가 발생한다.순환관계 데이터 모델의 예로는 조직, 사원, 메뉴 등이 있다. Oracle 계층형 질의- START WITH 절은 계층 구조 전개의 시작위치를 지정하는 구문. 즉, 루트 데이터를 지정한다.(액세스) - CONNECT BY 절은 다음에 전개될 자식 데.. 2024. 6. 14.
[SQLD 2-2-5] SQL 활용 - Top N 쿼리 TOP N QUERY- 페이징 처리를 효과적으로 수행하기 위해 사용- 전체 결과에서 특정 N개 추출예) 성적 상위자 3명 TOP-N 행 추출 방법1. ROWNUM2. RANK3. FETCH # ROWNUM- 출력된 데이터 기준으로 행 번호 부여- 절대적인 행 번호가 아닌 가상의 번호이므로 특정 행을 지정할 수 없음(= 연산 불가)- 첫번째 행이 증가한 이후 할당되므로 '>' 연산 사용 불가(0 은 가능) # 예) 상위 3개의 급여를 가진 직원을 선택할 시SELECT *FROM ( SELECT ROWNUM, name, salary FROM employees ORDER BY salary DESC)WHERE ROWNUM  ROWNUM은 정렬된 결과에 번호를 매기기 전에 번호를 할당하므로, 서브.. 2024. 6. 13.
[SQLD 2-2-4] SQL 활용 - 윈도우 함수 윈도우 함수 (WINDOW FUNCTION)- 서로 다른 행의 비교나 연산을 위해 만든 함수- GROUP BY 를 쓰지 않고 그룹 연산 가능- LAG, LEAD, SUM, AVG, MIN, MAX, COUNT, RANK # 문법SELECT 윈도우함수([대상]) OVER ([PARTITION BY 컬럼][ORDER BY 컬럼 ASC|DESC][ROWS|RANGE BETWEEN A AND B]); - PARTITON BY 절 : 출력할 총 데이터 수 변화 없이 그룹연산 수행할 GROUP BY 컬럼 - ORDER BY 절 : RANK의 경우 필수(정렬 컬럼 및 정렬 순서에 따라 순위 변화), SUM,AVG,MIN,MAX,COUNT 등은 누적값 출력 시 사용 - ROWS|RANGE BETWEEN A AND B .. 2024. 6. 12.
[SQLD 2-2-3] SQL 활용 - 그룹 함수 그룹 함수- 숫자함수 중 여러값을 전달하여 하나의 요약값을 출력하는 다중행 함수- 수학/통계 함수들(기술통계 함수)- GROUP BY 절에 의해 그룹별 연산 결과를 리턴 함- 반드시 한 컬럼만 전달- NULL은 무시하고 연산COUNT- 행의 수를 세는 함수- 대상 컬럼은 * 또는 단 하나의 컬럼만 전달 가능(* 사용 시 모든 컬럼의 값이 널일 때만 COUNT 제외)- 문자, 숫자, 날짜 컬럼 모두 전달 가능- 행의 수를 세는 경우 NOT NULL 컬럼을 찾아 세는 것이 좋음(PK 컬럼)# 문법COUNT(대상)# 예제각 컬럼의 COUNT 결과SELECT COUNT(*), COUNT(EMPNO), COUNT(COMM)FROM EMP; COUNT(*)COUNT(EMPNO)COUNT(COMM)114144 널을 .. 2024. 5. 29.
[SQLD 2-2-2] SQL 활용 - 집합 연산자 집합 연산자- SELECT 문 결과를 하나의 집합으로 간주, 그 집합에 대한 합집합, 교집합, 차집합 연산- SELCT 문과 SELECT 문 사이에 집합 연산자 정의- 두 집합의 컬럼이 동일하게 구성되어야 함(각 컬럼의 데이터 타입과 순서 일치 필요)- 전체 집합의 데이터 타입과 컬럼명은 첫번째 집합에 의해 결정됨# 집합 연산자 사용 시 주의 사항1. 두 집합의 컬럼 수 일치2. 두 집합의 컬럼 순서 일치3. 두 집합의 각 컬럼의 데이터 타입 일치4. 각 컬럼의 사이즈는 달라도 됨합집합- 두 집합의 총 합(전체) 출력- UNION 과 UNION ALL 사용 가능 1) UNION- 중복된 데이터는 한 번만 출력- 중복된 데이터를 제거하기 위해 내부적으로 정렬 수행- 중복된 데이터가 없을 경우는 UNION .. 2024. 5. 27.
[SQLD 2-2-1] SQL 활용 - 서브쿼리 서브쿼리 (Sub Query) - 하나의 SQL문 안에 포함되어있는 또 다른 SQL문을 말한다.- 반드시 괄호로 묶어야 함 - 서브쿼리는 메인쿼리의 컬럼을 모두 사용할 수 있지만, 메인쿼리는 서브쿼리의 컬럼을 사용할 수 없다.  - 서브쿼리는 서브쿼리 레벨과 상관없이 항상 메인쿼리 레벨로 결과 집합이 생성된다. # 서브쿼리 사용 가능한 곳- SELECT 절- FROM W절- WHERE - HAVING 절- ORDER BY 절- 기타 DML(INSERT, DELETE, UPDATE)- GROUP BY 절 사용 불가 서브쿼리 종류1. 동작하는 방식에 따라2. 위치에 따라1) 스칼라 서브쿼리- SELECT 에 사용하는 서브쿼리- 서브쿼리의 결과를 마치 하나의 컬럼처럼 사용하기 위해 주로 사용- 각 행마다 스칼.. 2024. 5. 23.
[SQLD 2-1-8] SQL 기본 - 표준 조인 1. FROM 절 조인 형태- ANSI/ISO SQL에서 표시하는 FROM 절의 조인 형태는 다음과 같다.- INNER JOIN : 조인의 디폴트 옵션으로 조인 조건을 만족하는 행들만 반환 (생략 가능, CROSS, OUTER JOIN과 함께 사용 못함)- NATURAL JOIN : INNER JOIN의 하위개념, 두 테이블간 동일한 이름을 갖는 모든 컬럼에 대해 EQUI JOIN을 수행한다.- USING 조건절- ON 조건절- CROSS JOIN- OUTER JOIN2. INNER JOIN- INNER JOIN은 OUTER JOIN과 대비해 내부 조인이라고 하며, 조인 조건을 만족하는 행들을 반환한다.- 전통적인 방식의 조인 문법에서는 WHERE 절에 기술하던 조인 조건을 FROM 절에 정의하겠다는 표.. 2024. 5. 23.
[SQLD 2-1-7] SQL 기본 - 조인 1. JOIN 개요- 두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것- 관계형 데이터베이스의 가장 큰 장점이면서 대표적인 핵심 기능- 일반적인 경우 행들은 기본키(PK)나 외래키(FK) 값의 연관에 의해 JOIN이 성립된다. 하지만 어떤 경우에는 이러한 관계가 없어도 논리적인 값들의 연관만으로 JOIN이 성립 가능하다. # 주의할 점- FROM 절에 여러 테이블이 나열되더라도 SQL에서 데이터를 처리할 때는 단 두 개의 집합 간에만 조인이 일어난다는 것이다.- FROM 절에 A, B, C 테이블이 나열되었더라도 특정 2개의 테이블만 먼저 조인 처리되고, 2개의 테이블이 조인되어서 처리된 새로운 데이터 집합과 남은 한 개의 테이블이 다음 차례로 조인되는 것이다.- 예를 들어 A, B, C.. 2024. 5. 20.
[SQLD 2-1-6] SQL 기본 - ORDER BY 절 1. ORDER BY 정렬 - 조회된 데이터들을 다양한 목적에 맞게 특정 컬럼을 기준으로 정렬하여 출력하는데 사용  - 컬럼명 대신에 SELECT 절에서 사용한 ALIAS 명이나 컬럼 순서를 나타내는 정수도 사용 가능- 별도로 정렬 방식을 지정하지 않으면 기본적으로 오름차순이 적용되며, SQL 문장의 제일 마지막에 위치한다.- 숫자형 데이터 타입은 오름차순으로 정렬했을 경우 가장 작은 값부터 출력- 날짜형 데이터 타입은 오름차순으로 정렬했을 경우 가장 빠른 날짜 값이 먼저 출력- Oracle 에서는 NULL 값을 가장 큰 값으로 간주, 오름차순 정렬 시 가장 마지막에, 내림차순으로 정렬시 가장 먼저 위치- SQL Server 에서는 NULL 값을 가장 작은값으로 간주, 오름차순 정렬 시 가장 먼저 위치#.. 2024. 5. 19.
728x90