Skip to main content

Command Palette

Search for a command to run...

[sqld] 요약

Updated
8 min readView as Markdown
H

Hansei Cyber Security High Schoool (2022/3/2 ~ 2025/2/10)

https://signon.oracle.com/signin

CBT 모의고사

sqld 스피드 퀴즈

https://velog.io/@rlaensk/SQL-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%ED%95%84%EC%88%98%EA%B0%9C%EB%85%90

데이터 모델링에서 중요한 세가지

  • 성격

  • 행위

  • 관계

기본키를 참조하는 것 = 외래키
유일성과 최소성 = 후보키

SQL 실행순서 = 파실인(PEF)

이행 함수 종속성 제거 = 제3정규화

그룹함수 중에서 결합 가능한 모든 집계를 계산하는 것은? = CUBE

문자열 결합 = || 혹은 CONCAT

내부 스키마 = 물리적 저장 구조

Entity를 도출하고 그린다 → Entity를 배치한다 → Entity 간 관계를 설정한다 → 관계명을 서술한다 → 관계 참여도를 표현한다 → 관계의 필수 여부를 표현한다

^ = 문자열 시작
$ = 문자열

계층형 조회에서 가장 상위 레벨 값 = 1

카디널리티 계산식 = 선택도 * 전체 레코드 수

논리적 모델링정규화를 무조건 해야 된다

cress join 은 카데시안 곱 발생

주식별자와 관계가 낮은 단계는? 제3정규화

인조식별자 = 최대한 범용적인 값 사용

%1 = 마지막이 1로 끝나는

DDL = create , alter , drop , rename , truncate
DML = insert , update , delete , select
DCL = grant , revoke
TCL = commit , rollback , savepoint

데이터 모델링의 특징

특징설명
추상화현실 세계를 간략하게 표현한다
단순화누구나 쉽게 이해할 수 있도록 표현한다
명확성명확하게 의미가 해석되어야 하고 한 가지 의미를 가져야 한다

데이터 모델링 단계

개념적 모델링

  • 전사적 관점에서 기업의 데이터를 모델링한다

  • 추상화 수준이 가장 높은 수준의 모델링이다

  • 계층형 데이터 모델, 네트워크 모델, 관계형 모델에 관계없이 업무 측면에서 모델링한다

논리적 모델링

  • 특정 데이터베이스 모델에 종속한다

  • 식별자를 정의하고 관계, 속성 등을 모두 표현한다

  • 정규화를 통해서 재사용성을 높인다

물리적 모델링

  • 구축할 데이터베이스 관리 시스템에 테이블, 인덱스 등을 생성하는 단계이다

  • 성능, 보안, 가용성, 등을 고려하여 database를 구축한다

데이터 모델링 관점

데이터

  • 비즈니스 프로세스에서 사용되는 데이터를 의미한다

  • 구조 분석 , 정적 분석

프로세스

  • 비즈니스 프로세스에서 수행하는 작업을 의미함

  • 시나리오 분석, 도메인 , 동적 분석

데이터와 프로세스

  • 프로세스와 데이터 간의 관계를 의미함

  • CRUD(Create , Read , Update , Delete) 분석

3층 스키마의 독립성

논리적 독립성

  • 개념 스키마가 변경되더라도 외부 스키마가 영향을 받지 않는 것이다

물리적 독립성

  • 내부 스키마가 변경되더라도 개념 스키마가 영향을 받지 않는 것이다

3층 스키마 구조(p52)

외부 스키마

  • 사용자 관점, 업무상 관련이 있는 data 접근이다

  • 관련 Database의 View를 표시한다

  • 응용 프로그램이 접근하는 Database를 정의한다

개념 스키마

  • 설계자 관점, 사용자 전체집단의 Database 구조이다.

  • 전체 Database 내의 규칙과 구조를 표현한다.

  • 통합 database 구조이다

내부 스키마

  • 개발자 관점, Database의 물리적 저장 구조이다

  • data 저장 구조 , 레코드 구조 , 필드 정의 , 인덱스 등을 의미함

Entity(p53)

Entity는 업무에서 관리해야 하는 데이터 집합을 의미하며 저장되고 관리되어야 하는 데이터이다
Entity는 개념 , 사건 , 장소 등을 의미하는 명사이다

Entity의 특징(p54)

엔터티 특징설명
식별자Entity는 유일한 식별자가 있어야 한다 ex) 회원ID , 계좌번호
인스턴스 집합2개 이상의 인스턴스가 있어야 한다 즉, 고객정보는 2명 이상 있어야 한다
속성Entity는 반드시 속성을 가지고 있다 ex) 고객 Entity에 회원ID , password , name , 주소 , 전화번호
관계Entity는 다른 Entity와 최소한 한 개 이상 관계가 있어야 한다 ex) 고객은 계좌를 개설한다
업무Entity는 업무에서 관리되어야 하는 집합이다 ex) 고객 , 계좌

TIP) relation and table , Instance

  • relation과 table은 같은 의미라고 해석하면 된다. relation에 기본키 및 제약조건을 설명하면 table이 된다.

  • 단, 릴레이션쉽은 릴레이션 간의 관계를 의미한다

  • Instance는 릴레이션이 가질 수 있는 값을 의미한다. 간단하게 생각하면 행의 수를 의미한다

Entity 종류(p55)

  • Entity의 종류는 유형과 무형에 따른 종류, Entity가 발생하는 시점에 따른 종류로 나누어진다.

  • Entity를 유형과 무형으로 분류하는 기준은 물리적 형태의 존재 여부이다.

유형 Entity

  • 업무에서 도출되며 지속적으로 사용되는 Entity이다
    ex) 고객 , 강사 , 사원 등

개념 Entity

  • 유형 Entity는 물리적 형태가 있지만, 개념 Entity는 물리적 형태가 없다.

  • 개념적으로 사용되는 Entity이다
    ex) 거래소 종목 , 코스닥 종목 , 생명보험 상품

사건 Entity

  • 비즈니스 프로세스를 실행하면서 생성되는 Entity이다.
    ex) 주문 , 체결 , 취소주문 , 수수료 청구 등

발생 시점에 따른 Entity 종류

기본 Entity

  • 키 Entity라고도 한다

  • 다른 Entity로부터 영향을 받지 않고 독립적으로 생성되는 Entity이다
    ex) 고객 , 상품 ,부서 등

중심 Entity(메인 Entity)

  • 기본 Entity와 행위 Entity 간의 중간에 있는 것이다

  • 즉, 기본 Entity로부터 발생되고 행위 Entity를 생성하는 것이다
    ex) 계좌 , 주문 ,취소 , 체결 등

행위 Entity

  • 2개 이상의 Entity로부터 발생된다
    ex) 주문 이력 , 체결 이력 등

속성

  • 속성이라는 것은 업무에서 필요한 정보인 엔터티가 가지는 항목이다

  • 속성은 더 이상 분리되지 않는 단위로, 업무에 필요한 data 를 저장할 수 있다

  • 인스턴스의 구성요소이고 의미적으로 더 이상 분해되지 않는다

속성의 특징과 종류

  • 속성은 업무에서 관리되는 정보이다

  • 속성은 일반적으로 하나의 값만 가진다

  • 주식별자에게 함수적으로 종속된다. 즉, 기본키가

분해 여부에 따른 속성의 종류(p57)

단일 속성

  • 하나의 의미로 구성된 것으로 회원ID , 이름 등이다

복합 속성

  • 여러 개의 의미가 있는 것으로 대표적으로 주소가 있다

  • 주소는 시, 군, 동 등으로 분해될 수 있다

다중값 속성

  • 속성에 여러 개의 값을 가질 수 있는 것으로 예를 들어 상품 리스트가 있다

  • 상품

  • 다중값 속성은 엔터티로 분해된다

특성에 따른 속성의 종류 (p58)

기본 속성

비즈니스 프로세스에서 도출되는 본래의 속성이다
ex) 회원ID , 이름 , 계좌번호 , 주문 일자 등

업무로 부터 축출한 속성으로 제일 많이 발생

설계 속성

  • 데이터 모델링 과정에서 발생되는 속성이다

  • 유일한 값을 부여한다

ex) 상품코드 , 일련번호 , 지점 코드 등

설계시 규칙화 등이 필요해 만든 속성 코드성이나 일련번호

파생 속성

다른 속성에 의해서 만들어지는 속성이다
ex) 합계 , 평균 등

TIP) Domain이란?

Domain은 속성이 가질 수 있는 값의 범위이다
ex) 성별이라는 속성의 Domain은 남자와 여자이다

주식별자(기본키, PK)

=>최대유불존

최소성
대표성
유일성
불변성
존재성

키의 종류(p63)

데이터베이스 키설명
기본키후보키 중에서 엔터티를 대표할 수 있는 키이다
후보키호보키는 유일성과 최소성을 만족하는 키이다
슈퍼키
대체키
외래키하나 혹은 다수의 다른 테이블의 기본 키 필드를 가리키는 것으로 참조 무결성을 확인하기 위해서 사용되는 키이다 즉, 허용된 데이터 값만 데이터베이스에 저장하기 위해서 사용된다 ex) 부서코드 , 상품코드

대표성 여부에 따른 식별자의 종류

주식별자

  • 유일성

  • 다른 엔터티

보조 식별자

  • 유일성

생성 여부에 따른 식별자의 종류

내부 식별자

외부 식별자

Multi row Subquery(p135)

Multi row Subquery는 서브쿼리 결과가 여러 개의 행을 반환하는 것으로 다중 행 연산자를 사용해야 한다

다중 행 비교 연산자

다중 행 연산설명
INMain query의 비교조건이 Subquery의 결과 중 하나만 동일하면 참이 된다(OR 조건)
ALLMain query와 Subquery의 결과가 모두 동일하면 참이 된다 <ALL : 최솟값을 반환한다 >ALL : 최댓값을 반환한다
ANYMain query
EXISTSMain query와 Subquery의 결과가 하나라도 존재하면 참이 된다

차집합을 만드는 MINUS(p148)

MINUS 연산은 두 개의 테이블에서 차집합을 조회함
먼저 쓴 SELECT문에는 있고 뒤에 쓰는 SELECT문에는 없는 집합을 조회하는 것이다
MS-SQL에서는 MINUS와 동일한 연산이 EXCEPT이다(MINUS = EXCEPT)

EQUI(등가) & JOIN(교집합)

조인은 여러 개의 릴레이션을 사용해서 새로운 릴레이션을 만드는 과정이다

윈도우 함수 구조(p159)

ARGUMENTS(인수)

  • 윈도우 함수에 따라서 0 ~ N개의 인수를 설정한다

PARTITION BY

  • 전체 집합을 기준에 의해 소그룹으로 나눈다

ORDER BY

  • 어떤 항목에 대해서 정렬한다

WINDOWING

  • 행 기준의 범위를 정한다

  • ROWS: 물리적 결과의 행 수

  • RANGE: 논리적인 값에 의한 범위

GROUP BY와 윈도우 함수 차이점(p159)

구분GROUP BY윈도우 함수
기능자르기와 집약자르기
특징
차이점행 수가 감소행 수는 유지

WINDOWING(p160)

ROWS

  • 부분집합인 윈도우 크기를 물리적

RANGE

  • 논리적인 주소에 의해 행 집합을 지정한다

BETWWEN ~ AND

  • 윈도우

UNBOUNDED PRECEDING

UNBOUNDED FOLLOWING

CURRENT ROW

순위 관련 윈도우 함수(p164)

RANK = 동일한 순위는 동일한 값이 부여
ex) 1 2 2 4

DENSE_RANK = 동일한 순위를 하나의 건수로 계산
ex) 1 2 2 3

ROW_NUMBER = 고유의 순위를 부여
ex) 1 2 3 4

집계 관련 윈도우 함수(p166)

SUM : 파티션 별로 합계를 계산한다
AVG : 파티션 별로 평균을 계산한다
COUNT : 파티션 별로 행 수를 계산한다
MAX & MIN : 파티션 별로 최댓값최솟값을 계산한다

행 순서 관련 윈도우 함수(p167)

FIRST_VALUE : 파티션에서 가장 처음에 나오는 값을 구한다
MIN 함수를 사용해서 같은 결과를 구할 수 있다

LAST_VALUE : 파티션에서 가장 나중에 나오는 값을 구한다
MAX 함수를 사용해서 같은 결과를 구할 수 있다

LAG : 이전 행을 가지고 온다

LEAD : 윈도우에서 특정 위치의 행을 가지고 온다
기본값이 1이다

Inline view(p172)

Inline view는 SELECT문에서 FROM절에 사용되는 서브쿼리를 의미한다

partition 기능(p184)

  • 파티션은 대용량의 테이블을 여러 개의 데이터 파일에 분리해서 저장한다

  • 테이블

  • 파티션은

  • partition은

  • 데이터를 조회할 때 데이터의 범위를 줄여서 성능을 향상시킨다

Range partition

  • 값의 범위를 기준으로 여러 개의 파티션으로 데이터를 나누어 저장하는 것이다

List partition

  • 특정 값을 기준으로 분할하는 방법이다

Hash partition

  • database 관리 시스템이 내부적으로 Hash 함수를 사용해서 data를 분할한다

  • database 관리 시스템이 알아서 분할하고 관리하는 것이다

Composite partition

  • 여러 개의 파티션 기법을 조합해서 사용하는 것이다

Oracle 정규표현식

구분의미
REGEXP_LIKELIKE문과 유사하고 정규표현식을 검색한다
REGEXP_REPLACE정규표현식을 검색한 후에 문자열을 변경한다
REGEXP정규표현식을 검색하고 위치를 반환한다
REGEXP정규표현식을 검색하고
REGEXP정규표현식을 검색하고

테이블의 모든 데이터 삭제(p197)

DELETE FROM 테이블명;

  • 테이블의 모든 데이터를 삭제한다

  • 데이터가 삭제되어도 테이블의 용량은 감소하지 않는다

TRUNCATE TABLE 테이블명;

  • 테이블의 모든 데이터를 삭제한다

  • 데이터가 삭제되면 테이블의 용량은 초기화된다

TCL(p200)

COMMIT

  • COMMIT은 INSERT

ROLLBACK

  • ROLLBACK을 실행하면 데이터에 대한 변경 사용을 모두 취소하고 트랜잭션을 종료한다

SAVEPOINT(저장점)

  • SAVEPOINT는 트랜잭션을 작게 분할하여

view 장단점(p211)

view란? (view = 가상 테이블)

장점: 보안 기능 , 데이터 관리 간단 , SELECT문이 간단
단점: 연산이 제약 , 구조를 변경할 수는 없다

GRANT(p212)

  • GRANT문은 DB 사용자에게 권한을 부여한다

  • DB 사용을 위해서는 권한이 필요하며 연결 , 입력 , 수정 , 삭제 , 조회를 할 수 있다.

WITH GRANT OPTION과 ADMIN OPTION(p213)

WITH GRANT OPTION

  • 특정 사용자에게

  • 권한을 A 사용자가 B에 부여하고 다시 B가 다시 C를 부여한 후에 권한을 취소(Revoke)하면 모든 권한이 회수된다

WITH ADMIN OPTION

  • Table에 대한 모든 권한을 부여한다

  • 권한을 A

More from this blog

[알고리즘] 탐색 알고리즘 - Dfs / Bfs

탐색이란 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정을 의미한다. 프로그래밍에서는 그래프, 트리 등의 자료구조 안에서 탐색을 하는 문제를 자주 다룬다. 대표적인 탐색 알고리즘으로 DFS와 BFS를 꼽을 수 있다. 깊이 우선 탐색(DFS, Depth - First Search) DFS는 Depth - First Search, 깊이 우선 탐색이라고도 부르며, 그래프와 트리의 깊은 부분을 우선적으로 탐색하는 알고리즘이다. 그림에서와 같이 갈...

May 15, 20251 min read

Vpn을 이용한 하이브리드 클라우드 구축하기

※ 터널링 VPN은 두 지점 간의 트래픽들을 암호화해서 누군가가 그 트래픽을 해석할 수 없도록 터널링 한다. 터널링을 통해서 캡슐화되어 있어서 실제로 WireShark 같은 걸로 통해서 트래픽을 도청하려고 보면 IP 등이 알던 것과는 전혀 다르게 되어있어서 해커들이 원하는 정보를 얻을 수 없게 된다. 키를 가지고 데이터를 암호화시키는 거고 터널 내부에 IP CIDR가 있는데 내가 로컬에서 이용하고 있는 데이터베이스의 10.0.0.0/24와 내가...

Dec 25, 20241 min read

Harold Lippin's blog

31 posts

Hackers studying blockchain