본문 바로가기

SQL

(23)
SQLD 시험 대비 - SQL 활용편(3) 윈도우 함수 : 행과 행간의 관계를 정의하거나 행과 행간을 비교, 연산하는 함수( 분석 함수, 순위 함수) 순위 관련 함수( 그룹 내 ) : - Rank : 동일한 값에 대해서는 동일한 순위를 부여 (1,2,2,4) 그다음 순위 건너 뜀 - 동일 순위 처리가능 - Dense_Rank : 동일한 값에 대해 동일한 순위 부여, 그 다음 순위 건너뛰지 않는다. (1,2,2,3) - 순차적 - Row_Number : 동일한 값이라도 고유한 순위 부여 (1,2,3,4) 집계 관련 함수 - Sum : 파티션 별 윈도우의 합 구할 수 있다. ex_ e,g 같은 매니저를 두고 있는 사원들의 월급 합 Select Sum(sal) over (Partition By MGR) as Mgr_sum from emp; - Max,..
SQLD 시험 대비 - SQL 활용편(2) 계층형 질의 : 테이블에 계층형 데이터가 존재하는 경우 데이터를 조회하기 위해 사용 ex_팀장과 사원 Start With : 계층 구조 전개의 시작 위치 지정 Connect By : 다음에 전개될 자식 데이터 지정 Prior : Connect By 절에 사용되며 현재 읽은 칼럼을 지정한다. Prior 자식 = 부모 형태를 사용하면 계층 구조의 부모 데이터에서 자식 데이터( 부모 -> 자식 ) 방향으로 전개하는 순 방향 전개를 한다. 역 방향 전개 Nocycle : 동일한 데이터가 전개 되지 않음. Order Siblings By : 형제 노드간의 정렬 수행 -> 값이 같은 복수의 raw이 있을 때 ~ 기준으로 정렬 Where : 모든 전개를 수행한 후에 지정된 조건을 만족하는 데이터만 추출한다.(필터링)..
SQLD 시험 대비 - SQL 활용편(1) SQL 기본에서 익힌 것을 복습하고 기본에서 익힌 것을 활용하여 더 복합적인 것을 배운다. 집합 연산자 : 두 개 이상의 테이블에서 조인을 사용하지 않고 연관된 데이터를 조회할 때 사용 Select 절의 컬럼 수가 동일 하고 Select 절의 동일 위치에 존재하는 칼럼의 데이터 타입이 상호 호환될 때 사용 가능 일반 집합 연산자 : 1. UNION : 합집합 ( 중복 행 1개로 정렬) 2. UNION ALL : 합집합 ( 중복 행도 표시 ) 정렬 x 3. INTERSECT : 교집합 (중복 행 1개로) 4. MINUS : 차집합( 중복 행 1개로 ) 5. CROSS JOIN: 곱집합 (PRODUCT) ALIAS는 처음 테이블, 정렬은 마지막 테이블 기준 순수 집합 연산자 : 관계형 DB를 새롭게 구현 1..
SQLD 시험 대비 - SQL 기본 (3) 다중행 집계 함수 1. 여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 함수이다. 2. GROUP BY 절은 행들을 소 그룹화 한다. 3. Select , Having, Order By 절에 사용가능 - All : Default 옵션, 생략 가능 - Distinct : 같은 값을 하나의 데이터로 간주 옵션 Count(*) : Null 포함 행의 수 Count(표현식) : Null 제외 행의 수 Sum, Avg : Null 제외 합계, 평균 연산 Stddev: 표준편차 Varian : 분산 Max , Min : 최댓값, 최솟값 Group By, Having절의 특징 1. Group By 절을 통해 고 소 그룹별 기준을 정한 후 Select 절에 집계함수를 사용한다. 2. 집계 함수의 통계정보는..
SQLD 시험 대비 - SQL 기본 (2) 연산자의 종류 - BETWEEN a AND b : a와 b 사이값 출력 - IN (list) 리스트에 있는 값중 어느 하나라도 일치 - IS NULL : NULL 값인 경우 (Oracle은 Varcher2 빈 문자열을 Null로 판단) - IS NOT NULL : Null이 아닌경우 - NOT IN (List) : list의 값과 일치하지않는다. - Like '비교 문자열' : 비교 문자열과 형태가 일치 Select Exam_Name 시험명 From Exam where Name = 'A'; 이름이 A인사람 찾기 where Name In ('A','B') 이름이 A,B인 사람 찾기 where Height Between 180 And 190 ; 키가 180~190인사람 찾기 where Position is ..
SQLD 시험 대비 - SQL 기본 (1) 기본적인 단어의 복습과 암기를 하도록 하겠다. DB : 특정 기업이나 조직 또는 개인이 필요에 의해 데이터를 일정한 형태로 저장해 놓은 것을 의미한다. DBMS: 효율적인 데이터 관리뿐만 아니라 예기치 못한 사건으로 인한 데이터의 손상을 피하고, 필요한 데이터를 복 구하기 위 한 강력한 기능의 SW SQL : 관계형 DB에서 데이터 정의 , 조작, 제어를 위해 사용하는 언어 - DML(Data Manipulation Language) : SELECT, INSERT, DELETE, UPDATE - DDL(Data Definition Language) : CREATE, DROP, ALTER, RENAME - DCL(Data Control Language) : REVOKE, GRANT - TCL(Transac..
SQLD 시험 대비 - 데이터 모델과 성능 (3) 로우 체이닝 : 로우의 길이가 너무 길어서 데이터 블록 하나에 데이터가 모두 저장되지 않고 두 개 이상의 블록에 걸쳐 하나의 로우가 저장되어 있는 형태 -> 1:1로 테이블 분리해 조회 성능 향상 로우 마이그레이션: 데이터 블록에서 수정이 발생하면 수정된 데이터를 해당 데이터 블록에서 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장하는 방식 로우 체이닝과 로우 마이그레이션이 발생하여 많은 블록에 데이터가 저장되면 DB 메모리에서 디스크 I/O가 발생할 때, 많은 디스크 I/O가 발생하여 성능 저하발생 트랜잭션을 분석하여 적절하게 1:1 관계로 분리함으로써 성능 향상이 가능하도록 해야 한다. PK에 의해 테이블을 분할하는 방법(파티셔닝) (파티셔닝: 1개 테이블에 많은 데이터가 저장될 때 논리적으로는 1..
SQLD 시험 대비 - 데이터 모델과 성능 (2) 3. 반 정규화 적용 ( 테이블, 칼럼, 관계 ) 3-1 테이블 반 정규화 테이블 병합( 1:1 관계 , 1:M관계, 슈퍼 / 서브타입) 1. 1:1관계를 통합하여 성능 향상 2. 1:M관계를 통합하여 성능향상 3. 슈퍼/서브 관계를 통합하여 성능향상 ( 슈퍼: 공통부분/ 서브: 공통으로부터 상속받아 다른 엔터티와 차이나는 특성) 테이블 분할( 수직분할, 수평분할) 1. 수직분할: 칼럼 단위 테이블을 디스크(I/O) 를 분산처리하기 위해 테이블을 1:1로 분리하여 성능향상 2. 수평분할 :로우 단위로 집중 발생되는 트랜잭션을 분석하여 디스크(I/O) 및 데이터 접근의 효율성을 높여 성능을 향상 하기 위해 로우 단위로 테이블을 쪼갬. 테이블 추가 1. 중복 : 다른 업무이거나 서버가 다른 경우 동일한 테이..

반응형