https://www.youtube.com/watch?v=PC3ypt_VGWI&ab_channel=%EA%B9%80%EA%B0%95%EB%AF%BCSQLP
sql 명령문 개괄
시험, 연산 순서 정렬하는 문제
from - where - group by - having - select - order by
종류 쓰는 문제
dml> select, insert, delete, update
ddl> alter 바꾸다, create, modify, drop
tcl> rollback, commit
dcl> grant, revoke
select
distinct(집약)
중복된 값들은 중복 제거(집약) = 원하는 정보를 집약
X
distinct deptno, mgr = group by (deptno, mgr)
as
select
1. as 생략 가능
2. 컬럼명에 띄어쓰기
ex. 직원 번호> "직원 번호"
from
1. as 사용불가
concat
- 연산자가 무슨 기호인가?
+ = sql server
|| = oracle
- 인수가 무조건 2개?
concat( , )
논리연산자
and
or
not
- 의미
- 연산순위
1. not
2. and
3. or
nao
sql 연산자
- between and
a between 1 and 2 = 1<= a <= 2
- in
a in (1,2,3)
a=1 or 2 or 3
- like 3문제
와일드 카드에서 _ : 미지의 한 글자
%: 0이상의 글자
ex. '_l%'> 두번째 글자에 l 들어가는 사원들 다 고르는 것
- escape
와일드카드(_ %)를 문자로 취급하는 함수
ex. like 'A_A' > 'A@_A'
EECAPE> '@'
// 와일드카드 앞에, @는 아무 문자 가능
- ROWNUM(ORACLE), TOP(SQL SERVER)
(WHERE) ROWNUM=1 포함
(SELECT) TOP(N)(컬러명) 컬럼명 출력할 때 상위 N개
- 시험,
SELECT EMPNO, SAL
FROM EMP
WHERE ROWNUM<= 3
ORDER BY SAL DESC> 가장 마지막에 실행
- NULL, 시험 5문제
1. NULL의 정의
부재, 모르는 값
2. NULL의 산술연산
= NULL
2. NULL의 비교연산
EX. NULL=NULL
NULL=2
> 알 수 없음(UNKNOWN)
> WHERE(조건=UNKNOWN)> "FALSE"
3. 정렬상의 의미
오라클: 무한대
SQL SERVER: 최소값, -무한대
4. 25:19
[NVL> 널뛰기, (값1. 값2)
NVL2 (1, 2, 3)
ISNULL] (1, 2)
[NULLIF]> 같이 놀자! (1, 2)
[COALESCE]> 널 아닌 첫번째 값 (1, 2 ~ 무한대)
정렬 4문제
1. 정렬의 정의, 특성
- 가장 마지막에 실행
- 성능이 느려질 가능성, 소팅 작업
- 널값과의 관계
2. 컬럼번호 정렬
*출력되는 컬럼의 수 보다 큰 값 불허
3. 인수 두개 정렬
SAL DESC, ENAME ASC
4. 출력되지 않는 컬럼명으로 정렬 가능
SELECT ENAME
ORDER BY SAL
숫자 함수
1. ROUND 자릿수
ROUND(138.94, 인수)
EX. 0.123~
// 반올림 함수
2. CEIL ORACLE/ CEILING SQL SERVER
// 올림 함수
문자열 함수
1. UPPER/ LOWER 대/ 소문자
2. LPAD, RPAD/ 공백 채우기, LTRIM, RTRIM/ 공백 제거
3. SUBSTR/ 문자 추출, INSTR/ 문자 위치 찾기 실습하기
날짜 함수
1. TO_CHAR, TO_DATE 실습하기
시험, 다음 중 데이터의 형 변환을 일으키는 함수?
2. SYSDATE(ORACLE)
GETDATE(SQL SERVER)
3. 날짜 데이터+100? 100일 이후 , DAY로 인식
DECODE/CASE
CASE만 시험!
CASE
WHEN THEN 1
WHEN THEN 2
ELSE 3/ ELSE 없을 때, 1, 2 만족X> NULL
AND
집계함수, 시험 2-3문제
1. NULL 과의 관계
SUM(A)// 열 계산, 널뛰기
SUM(A+B+C)// 행 계산, NULL 연산
SUM(A)+SUM(B)+SUM(C) VS
SUM(A+B+C) 차이 기억
GROUP BY
집약 기능, WHERE 다음에 실행, 그룹 수준으로 정보를 바꾼다
HAVING? 그룹에 대한 조건식
JOIN
1. NATURAL JOIN
USING -
> 중복된 컬럼 "하나"로 출력
> 제일 앞에 등장
> 테이블 ALIAS 사용 불가, 중요
2. LEFT, OUTER JOIN
EX. A LEFT OUTER JOIN B
= A COL1(조인키) =B COL1(+)/ 반대
선행 테이블이 선행 조건절 앞에, 후행 테이블은 후행 조건절 뒤에 있을 경우
서브쿼리
들어가는 위치 중요
SELCET SCALAR
FROM INLINE VIEW, 메인 쿼리의 컬럼 사용 가능
WHERE 거의 모든 서브쿼리
GROUP BY X
HAVING 거의 모든 - > 중첩서브쿼리
ORDER BY SCALAR
2.
SELECT
FROM A
WHERE SELECT
FROM B COL
= A COL1
// A를 찾을 때 까지 = A COL1에 대입
서브쿼리에는 값이 고정 COLL = A
3.
IN
ANY/ SOME
ALL
EXIST 존재하다
모든 문자 출력 가능> TRUE
(0ROWS)> FALSE
집합연산자 46:38
UNION 합집합
INTERSECT 교집합
MIINUS(SQL SERVER> EXCEPT )
정렬 작업 존재, 느리다
UNION ALL> 중복 데이터 존재
정렬 작업X, 빠르다
UNION과 UNION ALL의 비교 , 누가 빠르냐?
DDL
TCL과 연관지어 생각
1.
TRUNCATE VS DROP
입주민 퇴거/ 철거
구조(로그 데이터, 이전 기억 정보)가 남음/ 구조 삭제
TRUNCATE VS DELETE
> DDL VS DML
ROLLBACK, COMMIT
DML
INSERT
UPDATE
DELETE
1. TCL과 연관지어 출제
2. INSERT 오류사항
INSERT (인수 3개) VALUSE (인수 2개) 오류
MERGE
제약조건
PK= UNIQUE+ NOT NULL
UNIQUE
NOTNULL
DCL
GRANTE
REVOKE
1. 정의
2. ROLE 5가지 특징
- 롤은 롤에게 부여 가능
- 사람에게 부여 가능,
- 사람들은 같은 롤을 가질 수 있음
- 롤을 부여할려면 권한이 필요함
- 롤은 권한이 있는 사용자한테 만들어짐
명령어가 아닌 객체 중 하나
객체? 데이터베이스를 구성하는 물질들
EX. 테이블, 인덱스, 뷰, 롤
3. 문법
ON TO 구문
VIEW
독편보
*독립성, 기존 테이블의 구조가 변경되면 뷰 구조도 같이 변경, 업데이트 필요 X
*편리성
*보안성
그룹함수
ROLL UP
CUBE
GROUPINGSETS
(GROUPING)
시험, 결과값 주고 뭘 썻는지?, 세개 비교표
EX. ROLLUP(A, B)
ROLLUP(B, A) = 같은 결과X
CUBE(A, B) =
- = 같은 결과
1. NULL 다 찾기
2. 총합행 찾기
있으면 ROLL UP(행의 수가 적으면), CUBE(행의 수가 많으면)
없으면 GROUPINGSETS
기출문제 풀면서 연습
TCL
COMMIT, ROLLBACK
SQL SERVER, AUTO COMMIT OFF AND BEGIN TRANSACTION> DDL COMMIT 기능 X
https://www.youtube.com/watch?v=PjCSvexo3Ow&t=1999s&ab_channel=%EA%B9%80%EA%B0%95%EB%AF%BCSQLP
윈도우 함수
1. rows between
range between
결과값에 대한 차이점
같은 값이 있으면 range
2. RANK, 중복 건너 뛴다
EX. 1 1 3 4
DEXSE_RANK 건너뛰지 X
EX. 1 1 2 3
3. PATITION BY
ORDER BY
> 무조건 문제풀기
계층형 질의
1. PRIOR 자식데이터=부모데이터
부모에서 자식으로 가면 순방향
프 자 부 부 자 순
= 부모데이터 = PRIOR 자식 데이터
2. 실습 5:36
절차형 PL/ SQL
*EXCEPTION> 생략 가능
*PROCEDURE
반드시 값이 안 나오고
TRIGGER
커밋, 롤백 불가
보통 DML에서 많이 사용
USER DEFINED FUNTION
반드시 값이 나오고
데이터모델링
업무> 데이터모델화
엔터티
지도를 그리는 방법
업무상 관리하고자 하는 대상
1. 엔터티 도출
EX. 병원에서 환자를 관리하고할 때,
2. 특징
- 특성을 두 개 이상
- 인스턴스 두 개 이상
- 하나 이상의 관계
- 업무 프로세스에 이용
3. 분류
유형에 따른
- 유형
- 개념
- 사건
유 개 사
- 기본
- 중심
- 행위
기 중 행
속성
관리하고 하는 대상(인스턴스)의 특성들
// 속성은 열, 인스턴스는 행
속성은 인스턴스들의 집합
2. 분류
- 기본 속성
- 설계 속성
- 파생 속성
정의 확인
2. 분류
- 기본 속성
- 설계 속성
- 파생 속성
정의 확인
도메인, 시험 두 문제
1. 지정해줄 수 있는 것?
데이터 유형, 크기, 제약 조건
EX. 물리적 데이터 모델링, CHECK, PRIMARY KEY> 도메인에 해당
값의 범위
관계
1. IE
- PK
BARKER
- #
// PK 표기법
2. 관계 선택 사항 16:31
필수/ 선택
- IE
- BARKER
식별자
1. 식별/ 비식별자 관계 표기법
- ERD
점선> 비식별자
실선> 식별자
2. 주식별자 특징
유 최 불 존
- 유일성? 인스턴스를 유일하게 구분
- 최소성? 여러가지 속성을 묶어서도 식별자 가능 , 그게 최소여야 함
- 불변성? 한 번 만들면 바뀌지 않아야 한다
- 존재성? NOT NULL
네 가지 다 만족하면 후보키, 후보키에서 대표로 선정> 기본키/ 대체키
식별자 관계, 비식별자 관계
*강한 관계, 약한 관계
*단점? SQL 구문이 복잡?/ 조인
기본키가 계속 상속되면서 내려가기 때문에 , PK 속성수가 증가
/ 조인이 많아져서 느려짐
*ERD에서 어떻게 기술되는지?
ERD 서술 규칙
1. 시선, 좌상에서 우하로
2. 관계명 반드시 표기X
3. UML은 객체지향모델에서만 사용
성능 데이터 모델링
1. 종류
- 아키텍처
데이터들의 구조> 테이블, 파티션을 정규화 반정규화
성능이 더 좋다
- SQL 명령문 수리
조인수행원리 시험 4문제
OPTIMIZER
실행계획 시험 1문제
정규화
1. 방법, 시험
1차? 원자성 확보
2차? 부분함수 종속성 제거
3차? 이행함수 ~
BCNF?
2. 이상 현상
- 삭제이상
- 삽입이상
3. 성능
SELECT에서는 느려질 수 있음(JOIN)
INSERT, UPDATE 성능 증가
정규화 제일 먼저
반정규화
*데이터 무결성 해침
대범한 통조림
대상 조사
대량범위? 대량범위처리 빈도 수 조사
범위처리? 빈도수
통계처리? 여부
응용 시스템 연계
클러스터링/ 인덱스
뷰
이후에 반정규
테이블 반정규화
- 병합
1:1
1:M
슈퍼/ 서브
- 분할
이 부분에 통중 있어요
부분 테이블
통계 테이블
중복 테이블
속성 반정규화
파 오 이
1. 파생
2. 오류
3. 이력 컬럼
4. PK를 일반 속성에 편입
5. 중복 속성
관계 반정규화
1. 중복관계 추가
대량 데이터에 따른 성능
1. ROW MIGRATION
ROW CHAINING 읽어보기
이것들에 대한 해결 방법
LIST 파티션
RANGE 파티션, 쉬움, 가장 많이 사용
HASH 파티션, 어려움
각각 특징(관리를 얼마나 쉽게 할 수 있냐) 문제
슈퍼/ 서브타입 31:49
1. 용량
- 작은 경우, ONE TO ONE , 트랜잭션이 개별로
- 큰 경우
트랜잭션 유형으로 분류
트랜잭션
1 공통/ 차이점에 따라서 별개 트랜잭션으로 들어온다 = PLUS TYPE
2 전체 통합 = SINGLE TYPE
시험, 그림보여주고 이건 언제 쓰냐
공통/차이의 타입은?
분산데이터베이스
투명성
1. 특징
- 반정규화와 유사
- 데이터 무결성 해침
조인 수행 원리
시험 4문제
- NL
랜덤 엑세스
대용량 소트 작업 유리
- SORT MERGE
조인키 기준으로 정렬
등가, 비등가
- HASH
등가 조인만 사용
선행 테이블 작다
HASH 처리 별도공간 필요
옵티마이저
요즘 안 나옴
CBO(COST BASED )
- 경로가 경제적이고 저렴한 것
RBO(RULL BASED )
- 규칙에 따라
인덱스
1. 인덱스 언제 사용
(부정형, LIKE 함수, 묵시적 형변환 사용 X)
2. 인덱스 사용시 성능이 저하,
DML/ INSERT, UPDATE, DELETE
실행계획
1. 순서, 시험 1문제
EX. 들여쓰기 실행 순서
// 들여쓰기 부터 실행, 같은 레벨 뭉텅이로 처리
# 정규화, PIVOT/ UN PIVOT, MERGE
체크!
2. 이상 현상
- 삭제이상
- 삽입이상