공부

SQLD 요약 정리

하이루팡 2022. 10. 26. 17:06

 

- 스키마 - 개념,내부, 외부

- 엔티티는 발생 시점에 따라 기본,중심,행위 유형으로 구분한다.(개념이라는건 없음X)
- 인스턴스들의 성격을 구체적으로 설명하는 항목이 속성

- 엔티티는 [학생] 이라는 명사 라면, 인스턴스는 학생에 속하는 사람1,사람2 임.
즉, Entity(엔티티) 는 인스턴스의 집합, 정보를 저장할 수 있는 것

-개념 - 추상화, 업무중심적, 포괄적인 수준의 모델링
-논리 - 키, 속성, 관계  (데이터 모델링이 최종적으로 완료된 상태라고 정의할 수 있는, 즉 물리적인 스키마 설계를 하기 전 단계를 가리키는 말은?)
물리 - 성능, 저장


-모델링 3대 특징 - 추상화, 단순화, 명확화
FLOOR - 인자값 보다 작거나 같은 정수
CEIL - 인자값보다 크거나 작은 정수
TRUNC - 버림
ROUND - 반올림
ANSI/SPARN 데이터 독립성 3단계 스키마 - 내부, 개념, 외부
ABS - 절대값 ( 마이너스만 빼면 됨, -3.6 → 3.6)


1정규형 - 모든 속성을 반드시 하나의 값을 가져야 한다
2정규형 - 일반 속성은 주 식발져 전체에 종속적 이어야 한다
3정규형 - 일반 속성 간에는 종속성이 없어야 한다

원자성(Atomicity) - 트랜젝션의 작업은 모두 수행되거나 수행되지 않아야함
일관성(Consistency) - 트랜젝션이 완료되면 데이터 무결성이 일관되게 보장되어야 함
고립성(Isolation) - 트랜젝션이 다른 트랜젝션으로부터 고립된 상태로 수행 되어야 함
지속성(Durability) - 트랜젝션이 완료되면 장애가 발생하더라도 변경 내용이 지속되어야 함

- Hash Join 은 정렬 작업이 없어 정렬이 부담되는 대량배치작업에 유리하다.

- 프로그래밍에서 사용되는 중첩된 반복문과 유사한 방식으로 조인을 수행하는 방식을 무엇이라-> NESTED LOOP JOIN

- 아래와 같은 상황에서 사용되는 SQL Join Mechanism 을 작성하시오
조건 1 : TAB1 과 TAB2 를 조인하여 결과를 가져와야 한다.
조건 2 : 두개 테이블에는 인덱스가 없다.
조건 3 : Equal Join 에서만 해당 조인 방식을 사용할 수 있다.
→ HASH JOIN

- 쿼리를 수행하는데 소요되는 일량 또는 시간을 기반으로 최적화를 수행하는 옵티마이저 

    →비용기반 옵티마이저

- 각 속성이 가질수 있는 값의 범위를 도메인(Domain) 이라고 함

- MERGE 에서의 DELETE 구문은 DELETE 단독 구문이 아닌 UPDATE 구문에 종속됨. UPDATE 실행된 건에 한해서 DELETE 구문이 수행됨

- LIKE  - LIKE ‘1_\%%’ ESCAPE ‘\’

- CROSS JOIN -  카티션 곱 = 조인 조건이 없는 조인

- 자주나오는 쿼리 암기 * 

START WITH CONNECT BY
CONNECT BY MGR = PRIOR EMPNO
*****   B.EMPNO = A.MGR

- CUBE는 Cross-Tab에 대한 Summary를 추출하는데 사용 된다
즉 ROLLUP에 의해 나타 내어지는 Item Total값과 Column Total값을 나타 낼 수 있다.    

- ROLLUP은 일반적인 누적에 대한 총계

-  COUNT(*) OVER (ORDER BY SAL RANGE BETWEEN 50 PERCENDING AND 100 FOLLOWING ) AS
값에서 50을 빼고 100을 더한 값을 범위로 지정해서 COUNT 한것.. 예를들어 SAL 이 3000이면 2950~3100 사이를 COUNT 하기!!

*암기 
시스템 권한부여 - GRANT UNLIMITED TABLESPACE TO U2;
테이블 권한부여 - GRANT ALL ON T1 TO U2;
테이블 생성권한 - GRANT CREATE ANY TABLE TO U1;
GRANT CREATE TABLE TO U1
GRANT RESOURCE TO U3
로그인 권한부여 - GRANT CREATE SESSION TO U1,U2;
GRANT CONNECT TO U3 ; (커넥트에 create session 시스템 권한 포함되어 있다)
GRANT CREATE ANY TABLE TO U1 WITH ADMIN OPTION;
*** 뒤에 옵션이 붙는다면, with admin, 안붙는다면 CREATE TABLE 해줄것!!!!
롤 생성 - CREATE ROLE R1 ;
롤 제거 - DROP ROLE R1;
권한회수 REVOKE ALL ON T2 FROM T1;
CREATE EXECUTE - 이 권한은 테이블 부여 불가

COALSESCE 함수는 나열된 값을 순차적으로 체크하여 NULL이 아닌 값이 나오는 인수를 반환한다. (즉. case1 , case2 이렇게 순차적으로 체크를하며 해당 체크하는 값이 NULL이 아니면 반환한다는 의미이다.)

- 주문상세의 식별자(주문번호+주문순번)을 나타내는 개념 - 슈퍼키

- [ NULLIF(값1, 값2) ] - 값1과 값2가 일치할경우 NULL 을 반환함 널을 만들어내는 놈임!
- NVL, NVL2가 NULL값일 경우에 NULL을 처리하는 함수라면 NULLIF는 NULL값을 만들기 위한 함수이다. - 두 값이 같은 경우 NULL, 그렇지 않은 경우 첫 번째 값을 반환하는 함수이다.

** 주의할것
SELECT COUNT(*) FROM T1 A  
WHERE EXISTS (SELECT COUNT(*) FROM T2 X WHERE X.C1 = A.C1)
→ 여기서 아래 집계함수 쓰면 EXISTS 는 결과 유무로 가져오기때문에 무조건 YES!

INTERSECT - 교집합
UNION, MUNUS, INTERSECT - 중복제거하거나, 교집합 구하는 과정에서 소트 발생
UNION ALL - 소트 안됨!!

ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING
현재 행 기준으로 1행 앞, 1행 뒤
UNBOUNDED PRECEDING 은 end point 에 사용될 수 없음

Unbound precending - 윈도우의 시작 위치가 첫번째 행임을 의미한다

Unbound following- 윈도우의 마지막 위치가 마지막 행임을 의미한다

NTILE(숫자) OVER ( PARTITION BY 조건1 ORDER BY 조건2)
- 숫자 : 지정된 숫자만큼 각 로우를 반환

- 파티션별 윈도우에서 제일 먼저 나오는 것을 0으로, 제일 늦게 나오는 것을 1로 하여 값이 아닌 행의 순서별 백분율을 구하는 Window Funciton 은? -> PERCENT_RANK

SIGN - 음수면 -1 , 0이면 0 , 양수면 1

WITH TIES = RANK

[:digit:] = 숫자 = [0-9]
[:lower:] = 소문자  = [a-z]
[:upper:] = 대문자 = [A-Z]
[:alpha:] = 영문자 = [a-zA-Z]
[:alnum:] = 영문자와 숫자 = [0-9a-zA-Z]
[:xdigit:] = 16진수 = [0-9a-fA-F]

* 시간 오래걸리는거 ALTER TABLE DROP COLUMN - 데이터 일일히 삭제여서 오래걸림… 하위버전은 ALTER TABLE ADD … 위에 드롭 컬럼이 더 오래걸린다

ALL 조건 (모든 값을 만족해야 함)
ANY 조건 (만족하는 값 하나만 있으면 됨)

슈도컬럼 - 의사컬럼 - 가상컬럼 Pseudo Columns
-> ROWNUM, ROWID, CURRNAL(현재 시퀀스 값) , NEXTVAL

USING 다음에는 꼭 컬럼명만.. USING(C1)
ON 뒤에가 C1 = C1 이거임 ㅠㅠ

SYS_CONNECT_BY_PATH 함수는 최초 읽은 노드에서 현재 노드까지의 경로를 반환함

REGEXP_LIKE - ‘(.)\1’ 동일한 문자가 2번 반복된 문자열 검색