SQLD 22

SQLD 개념정리 (계층형 질의, 셀프조인)

셀프 조인 - 나 자신을 JOIN -> 이 때 두 컬럼 다 Alias 반드시 사용해야 식별 가능. - 한 테이블 내에서 두 컬럼이 연관 관계가 있다. 계층형 질의 - 테이블에 계층형 데이터가 존재하는 경우의 데이터를 조회하기 위해 사용 -> 계층형 데이터 : 동일 테이블에 계층적으로 상/하위 데이터가 포함된 데이터 ex) 사원 테이블의 사원들 사이에 "하위 사원"과 "상위 사원(관리자)"의 관계 - 엔티티를 순환관계 데이터 모델로 설계할 경우 계층형 데이터가 됨 - SQL Server에서의 계층형 질의문은 CTE(Common Table Expression)를 재귀 호출함으로써 계층 구조를 전개한다. - SQL Server에서의 계층형 질의문은 앵커 멤버를 실행하여 기본 결과 집합을 만들고, 이후 재귀 멤..

SQLD 2023.11.07

SQLD 개념정리 (집합 연산자)

집합 연산자 - 두개 이상의 테이블에서 JOIN을 사용하지 않고, 연관된 데이터를 조회하는 방법 - 집합 연산자는 2개 이상의 질의 결과를 하나의 결과로 만듦. * 집합 연산자를 사용하기 위한 제약조건 * - SELECT절의 컬럼 수가 동일 - SELECT절의 동일 위치 데이터 타입이 상호 호환 가능해야 함( 동일할 필요는 없음 ) 집합 연산자 종료 - UNION : 합집합, 중복된 행은 하나로 표시 (중복 제거) - UNION ALL : 합집합, 중복된 행도 전부 표시 (전부 표시) - INTERSECT : 교집합, 중복된 행은 하나로 표시 (중복 제거) - EXCEPT : 차집합, 중복된 행은 하나로 표시 (중복 제거)

SQLD 2023.11.07

SQLD 개념정리 (GROUP BY, HAVING, ORDER BY, WITH THIS)

GROUP BY - 여러 행들으로 구성된 그룹이 모여서 그룹당 하나의 결과를 돌려주는 “다중행 함수” - GROUP BY 절은 행들을 소그룹화한다. - SELECT, HAVING, ORDER BY 절에서 사용 가능 - 데이터들을 작은 그룹으로 분류하여 소그룹에 대한 통계정보를 얻을 때 사용 - ROLLUP이나 CUBE에 의한 소계가 계산된 결과에는 GROUPING(EXPR)=1이 표시됨 - 그 외의 결과에는 GROUPING(EXPR)=0이 표시된다. HAVING - WHERE 절과의 차이는 1) GROUP BY 뒤에 온다는 것 (앞에 사용해도 에러는 발생하지 않음) 2) 집계함수를 사용 가능(WHERE은 사용 불가) - WHERE 절 조건변경은 출력되는 레코드 개수가 변경되고, 결과 데이터 값이 변경될 ..

SQLD 2023.11.06

SQLD 개념정리 (NULL, NULL 관련 함수)

NULL - NULL 값은 아직 정의되지 않은 값으로 0 또는 공백과 다르다. 0은 숫자이고 공백은 하나의 문자이다. - 테이블을 생성할 때, NOT NULL 또는 PRIMARY KEY로 정의되지 않은 모든 데이터 유형은 NULL 값을 포함할 수 있다. - NULL 값을 포함하는 연산의 경우 결과 값도 NULL 값이다. 모르는 데이터에 숫자를 더하거나 빼도 결과는 마찬가지로 모르는 데이터인 것과 같다. ex) 10 + NULL = NULL; - 결과값을 NULL이 아닌 다른 값을 얻고자 할때 NVL(Oracle) / ISNULL(MSSQL) 함수를 사용한다. NULL 값의 대상이 숫자 유형 데이터인 경우는 주로 0으로, 문자 유형 데이터인 경우는 블랭크보다는 'X'같이 해당 시스템에서 의미 없는 문자로 ..

SQLD 2023.11.06

SQLD 개념정리 (JOIN)

JOIN - 두개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것 ** EQUI JOIN ** - 두개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하는 경우에 사용되는 방법 - 대부분 PK FK의 관계를 기반으로 한다. 그러나 반드시 PK FK의 관계로만 EQUI JOIN이 성립하는 것은 아니다. ** Non EQUI JOIN ** - 두개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하지 않는 경우에 사용한다. - Non EQUI JOIN의 경우에는 "=" 연산자가 아닌 다른(Between, >, >=,

SQLD 2023.11.05

SQLD 개념정리 (함수)

함수 - 내장 함수 : 함수는 입력되는 값이 많아도 출력은 하나만 됨 (M : 1) 숫자형 함수 날짜형 함수 집계함수 - 여러 행들의 그룹이 모여서 그룹 당, 단 하나의 결과를 돌려주는 다중행 함수중 하나 - GROUP BY 절은 행들을 소그룹화 한다. - SELECT절, HAVING절, ORDER BY 절에 사용할 수 있다. GROUP BY - ROLLUP 이나 CUBE에 의한 소계가 계산된 결과에는 GROUPING(EXPR) = 1이 표시됨 - 그 외의 결과에는 0이 표시된다. HAVING - HAVING 절은 WHERE 절과 비슷하지만 그룹을 나타내는 결과 집합의 행에 조건이 적용된다. ORDER BY - ORDER BY 절은 SQL 문장으로 조회된 데이터들을 다양한 목적에 맞게 특정 칼럼을 기준으..

SQLD 2023.11.05

SQLD 개념정리 (관계형 데이터베이스 개요, DML, TCL)

INSERT INSERT INTO 테이블명 (COLUMN_LIST) VALUES (COLUMN_LIST에 넣을 VALUE_LIST); INSERT INTO 테이블명 VALUES(전체 COLUMN에 넣을 VALUE_LIST) UPDATE UPDATE 테이블명 SET 수정되어야 할 칼럼명 = 수정되기를 원하는 새로운 값; DELETE DELETE FROM 삭제를 원하는 정보가 들어있는 테이블명 WHERE 조건절; - 사용자 Commit SELECT SELECT 칼럼명 FROM 테이블; TCL(Transaction Control Language) - 커밋(COMMIT) : 올바르게 반영된 데이터를 데이터베이스에 반영시키는 것, Oracle은 DML문장 수행 후 사용자가 임의로 COMMIT 또는 ROLLBACK..

SQLD 2023.11.01

SQLD 개념정리 (관계형 데이터베이스 개요, DDL)

데이터 베이스 - 특정 기업이나 조직 또는 개인이 필요에 의해 데이터를 일정한 형태로 저장한 것 SQL (Structured Query Language) - SQL은 관계형 데이터베이스에서 데이터 정의, 데이터 조작, 데이터 제어를 하기 위해 사용하는 언어 - 데이터 조작어(DML - Data Manipulation Language ) : SELECT, INSERT, UPDATE, DELETE (NOT AUTO COMMIT) - 데이터 정의어(DDL - Data Definition Language) : CREATE, ALTER, DROP, RENAME(AUTO COMMIT) - 데이터 제의어(DCL - Data Control Language) : GRANT, REVOKE - 트랜잭션제어어(TCL - Tr..

SQLD 2023.10.30

SQLD 개념정리 (데이터 모델링의 이해)2

PK순서를 결정하는 기준 - PK순서를 결정하는 기준은 인덱스 정렬구조를 이해한 상태에서 인덱스를 효율적으로 이용할 수 있도록 PK 순서를 지정해야 한다. 즉 인덱스의 특징은 여러개의 속성이 하나의 인덱스로 구성되어 있을 때 앞쪽에 위치한 속성의 값이 비교자로 있어야 인덱스가 좋은 효율을 나타낼 수 있다. 앞쪽에 위치한 속성 값이 가급적 '=' 아니면 최소한 범위 'BETWEEN' ''가 들어와야 인덱스를 이용할 수 있는 것이다. 분산 데이터베이스의 장단점 장점 - 지역 자치성, 점증적 시스템 용량 확장 - 신뢰성과 가용성 - 효용성과 융통성 - 빠른 응답 속도와 통신비용 절감 - 데이터의 가용성과 신뢰성 증가 - 시스템 규모의 적절한 조절 - 각 지역 사용자의 요구 수용 증대 단점 - 소프트웨어 개발 ..

SQLD 2023.10.25

SQLD 개념정리 (데이터 모델링의 이해, 정규화, 반정규화)

성능데이터모델링 이란? - 데이터베이스 성능향상을 목적으로 설계단계의 데이터 모델링 때부터 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것이다. - 분석/설계 단계에서 데이터베이스 처리 성능응 향상 시킬 수 있는 방법을 주도 면밀하게 고려해야 한다. - 분석/설계 단계에서 성능을 고려한 데이터모델링을 수행할 경우 성능저하에 따른 Rework 비용을 최소화 할 수 있는 기회를 가지게 된다. - 데이터의 증가가 빠를수록 성능저하에 따른 성능개선비용은 증가한다. - 데이터모델은 성능을 튜닝하면서 변경이 될 수 있는 특징이 있다. 성능 데이터모델링 수행 절차 1) 데이터모델링을 할 때 정규화를 정확하게 수행한다. 2) 데이터베이스 용량산정을 수행한다. 3) 데이터베이스에 발생되는 트랜잭션의 유형..

SQLD 2023.10.24