ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQLD] SQLD 요약정리
    Database/SQL (oracle, mysql) 2019. 7. 15. 09:42

    내가 정리한 SQLD요약본 파일

     



    로우체인링 (Row Chaining)- 두 개 이상의 블록에 걸쳐 하나의 로우가 저장되어 있는 형태

     

    로우 마이그레이션 (Row Migration) -데이터 블록에서 수정이 발생하면 수정된 데이터를 다른 블록의 빈 공간을 찾아 저장하는 방식이다. 위 두가지가 많이 발생되면 IO성능저하가 일어날 수 있다.

     

    원자성 - 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다

    일관성 - 트랜잭션 실행 전의 DB 내용이 잘못 되어 있지 않다면 트랜잭션 실행 이후에도 데이터베이스의 내용에 잘못이 있으면 안 된다

    고립성: 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안 된다

    지속성: 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다

     

    char - 스페이스 길이를 추가하여 길이를 같게 한 후 비교

    WHERE 절에 조건절이 쓰이게 되면 암묵적으로 해당 컬럼에 대한 IS NOT NULL 조건이 생성됨

     

    * FLOOR - 숫자보다 작거나 같은 최대 정수를 리턴

    * CEIL/CEILING - 숫자보다 크거나 같은 최소 정수를 리턴

    * TRUNC - 숫자를 소수 m 자리에서 잘라서 리턴 (m default :0)

    * ROUND - 숫자를 소수 m 자리에서 반올림하여 리턴 (m default :0)

     

    SQL순서

    FROM - WHERE GROUP BY - HAVING - SELECT - ORDER BY

    WITH TIES: ORDER BY 조건 기준으로 TOP N 의 마지막 행으로 표시되는 추가 행의 데이터가 같을 경우 N+ 동일 정렬 순서 데이터를 추가 반환하도록 지정하는 옵션 마지막 기준 공통일 경우 모두 출력

    동일 데이터가 있을 때 추가 건수가 출력되는 현상이 가능함

     

    NON EQUAL JOIN - 크로스 조인후 조인필터를 건다. NULL은 계산하지 않는다.

     

    CONNECT_BY_ISLEAF - 전개 과정에서 해당 데이터가 리프 데이터면 1, 아니면 0

    CONNECT_BY_ISCYCLE - 전개 과정에서 해당 데이터가 조상으로 존재하면 1, 그렇지 않으면 0 

    SYS_CONNECT_BY_PATH - 하위 레벨의 컬럼까지 모두 표시해줌 구분자 지정 가 능

    ANY = OR // ALL = AND

    NOT EXISTS -> OUTER JOIN 으로 변경 시

    NOT NULL COLUMN에 대한 IS NULL 체크로 NOT EXISTS 를 구현 가능하다. P. 사원번호 IS NULL

    비용기반 옵티마이저 - 쿼리를 수행하는데 소요되는 시간을 기반으로 최적화를 수행한다.

    HASH JOIN -  EQUAL JOIN만 가능하다.

    SORT MERGE - 사전 SORTING이 필요, 대용량 데이터를 정렬하여 조인

    NESTED LOOP JOIN - 중첩된 반복문과 유사한 방식으로 조인을 수행하는 방식

    SQL SERVER

    ORACLE

    IDENTITY에 값을 넣으면 에러!

    CHECK 조건 만족 못하면 에러, NULL무시

    LEN함수는 문자열 뒤의 빈칸은 계산하지 않는다.

    LENGTH ‘ ‘ (스페이스) 1로 인식한다

    • 문자연결 기호이다.

    CHAR(10)은 LENTH (10) 이다. 

     

    문자 연결은 CONCAT을 사용한다.

    COMMIT은 무조건 수동

    DDL수행후 자동 COMMIT

    ‘ ‘ != NULL

    ‘ ‘ =NULL

     

    Dependent - Master테이블에 PK가 존재할 때만 Child입력 허용

    PK조건생성! -CONSTRAINT PRO_PK PRIMARY KEY (PROD_ID));

     

    이름바꾸기 - RENAME S TO STAR;

     

    TRUNCATE, DROP은 로그를 남기지 않는다.

    테이블 스키마 정의를 유지하고 삭제하려면 TRUNCATE를 테이블 구조를 완전히 삭제하려면 DROP을 사용

     

    Dirty Read - 다른 트랜잭션 때문에 수정되었지만 아직 커밋되지 않은 상태의 데이터를 읽는것

     

    다중행, 단일행 함수는 둘다 동일하게 단일 값만을 반환한다.

    1: M관계도 단일행 사용 가능하다.

     

    ISNULL(컬럼, ‘X’) 컬럼이 NULL이면 X반환 (NVL)

    NULLIF (1,1) ←  null출력

    NULLIF (2,1) ←  2출력

    COALESCE ← 임의의 개수 표현식에서 NULL이 아닌 최초의 표현식

     

    300/0 ← 에러    // 0/300 ← 0

     

    LOC WHEN ‘NEW YORK’ THEN ‘EAST’

     

    ORDER BY( CASE WHEN ID =999 THEN 0 ELSE ID END)

    999는 0으로 치환 나머지는 ID로 정렬 ← 오름차순시 999가 첫번째 위치

     

    ORDER BY절에 컬럼명 대신 ALIAS 명이나 컬럼 순서를 나타내는 정수를 혼용하여 사용할수있다.

     

    순수관계 연산자 ← SELECT, PROJECT, JOIN, DIVIDE

     

    Cartesian Product - CROSS JOIN

     

    OUTER JOIN시에 주키와 외래키는 영향을 미치지 않는다.

     

    ORDER BY 1,2 ← 컬럼1 오름차순, 컬럼2 오름차순

     

    오라클의 PRIOR키워드는 SELECT, WHERE, CONNECT BY에서 사용가능하다.

     

    반응형

    댓글

Designed by Tistory.