-
[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에서 사용가능하다.
반응형'Database > SQL (oracle, mysql)' 카테고리의 다른 글
[SQL] TRIGGER (트리거) 사용법 (0) 2019.08.13 [Oracle] 오라클 missing right parenthesis 에러 (0) 2019.08.12 [SQL] Level, max(lavel) 사용법, SQLD문제 (0) 2019.06.05 [SQL] rollup과 cube (0) 2019.06.04 [ SQL ] 패키지 선언 (0) 2019.06.04 -