목록study_SQL (33)
Msg 성장일기
집합명령어 UNION : 중복없는 합집합을 만든다 UNION ALL : 중복을 허용하는 합집합을 만든다. INTERSECT : 교집합을 만든다. MINUS : 차집합을 만든다. 날짜 관련함수 SYSDATE : 현재 일시를 확인하는 기본적인 함수 , 더하거나 빼기 등 연산이 가능하다. 1은 1일을 기준으로 연산한다. TO_CHAR()함수는 '날짜'를 '날짜형식'의 형식화된 문자로 바꾸는 기능이다. 매개변수에 입력하는 '날짜'는 현재일자를 구하는 SYSDATE 또는 문자형 날자를 변환해 사용하기도 한다. TO_DATE()함수는 '날짜형식 문자열'을 날짜로 바꾸는 기능이다. 바뀐 날짜는 연산이 가능하다.
주석처리 '--' : 한줄 주석 처리 '/**/' : 여러줄 주석 처리 LIKE → LIKE구문은 검색값이 필드에 포함된 데이터를 검색하는데 사용된다. 검색값으로 길이에 상관없이 문자열을 대체하는 % 와 한문자를 대체하는 '_'문자를 조합해서 쓴다. IN → IN구문은 나열한 검색값이 필드에 포함된 데이터를 검색한다. "필드 IN ('검색값1','검색값2'...'검색값N')"형식으로 필드값이 '검색값1'에서 '검색값N' 중 하나라도 있으면 검색한다. IN앞에 NOT을 지정해 검색값이 필드에 포함되지 않은 데이터를 검색할 수 있다. ORDER BY → ORDER BY 구문은 나열한 필드를 기준으로 데이터를 정렬한다. ASC: 오름차순, DESC: 내림차순 , 기본방식은 오름차순이다. GROUP BY → G..
SELECT → SELECT 명령은 "SELECT" 필드명 FROM 테이블명 형식으로 필드 전체나 일부를 검색한다. 일부 필드를 검색할 때, 기본 필드명을 대신 별명으로 바꿔보일 수 있다. 단, 별명은 숫자가 아닌 문자로 시작하며, 중간에 공백이 없어야 하지만 숫자로 시작하는 별명이나 중간에 공백이 있는 별명을 사용하려면 따옴표("")안에 별명을 넣어준다. WHERE → WHERE 구문은 SELECT 명령을 이용해 지정한 테이블에서 조건에 맞는 데이터를 검색하는 데 사용한다. BETWEEN .. AND → BETWEEN .. AND 구문은 지정한 범위의 데이터를 검색한다. 필드 형식으로 수치, 문자, 날짜 등을 지정할 수 있다. 비교연산자 → 두 값의 '같다', '같지 않다', '크다', '작다', '크..
● SQL SQL은 데이터베이스를 관리하고 조작하는 질의언어다. 일반적으로 SQL을 줄여 쿼리(Query)라고도 한다. ● 데이터 유무형의 형태를 구성하는 요소다. 하나 이상의 데이터가 모여 의미있는 형태를 만든다. ● 필드 필드는 속성값을 부여한 데이터다. 속성값의 형식은 수치, 문자, 날짜, 메모 등이 있으며, 형식에 따라 고정 길이 및 초기 설정값을 갖는다. ● 레코드 연관된 필드의 모임이다. ● 테이블 연관된 레코드의 모임이다. ● PL/SQL 확장 SQL로서 함수나 프로시저 내에서 SQL을 프로그램 수준으로 구현한다. 주요 기능으로 변수 설정, 조건문, 배열 처리, 커서 정의, 반복문, 예외 처리 등을 다양하게 지원한다. ● SQL명령어 종류 1) 데이터 정의 언어(DDL) : CREATE, A..
선택도와 카디널리티 선택도(Selectivity)란, 전체 레코드 중에서 조건절에 의해 선택되는 레코드 비율을 말한다. 더보기 선택도 = 1/NDV *NDV : 컬럼 값 종류 개수 카디널리티란, 전체 레코드 중에서 조건절에 의해 선택되는 레코드의 개수 더보기 카디널리티 = 총 로우 수 X 선택도 = 총 로우 수 / NDV 통계정보 통계정보에는 오브젝트 통계와 시스템 통계가 있다. 오브젝트 통계는 다시 테이블 통계, 인덱스 통계, 컬럼 통계(히스토그램 포함)로 나뉜다. 1) 테이블 통계 # 테이블 통계를 수집하는 명령어 begin dbms_stats.gather_table_stats('scott','emp'); end; # 수집된 테이블 통계정보는 아래와 같이 조회할 수 있다. select num_rows..
DML Lock DML Lock은 다중 트랜잭션이 동시에 액세스하는 사용자 데이터의 무결성을 보호해 준다. DML Lock에는 테이블 Lock과 로우 Lock가 있다. DML 로우 Lock 두 개의 동시 트랜잭션이 같은 로우를 변경하는 것을 방지한다. 하나의 로우를 변경하려면 로우 Lock를 먼저 설정해야한다. 어떤 DBMS이든지 DML 로우 Lock에는 배타적 모드를 사용하므로 UPDATE 또는 DELETE를 진행중인 로우를 다른 트랜잭션이 UPDATE하거나 DELETE 할 수 없다 DML 테이블 Lock 오라클은 DML로우 Lock을 설정하기에 앞서 테이블 Lock를 먼저 설정한다. 현재 트랜잭션이 갱신 중인 테이블 구조를 다른 트래잭션이 변경하지 못하게 막기 위해서이다. 테이블 Lock을 'TM L..
Direct Path 일반적인 블록 I/O는 DB 버퍼캐시를 경유한다. 시스템의 전반적인 성능을 높이려고 버퍼캐시를 이용하지만, 대량 데이터를 읽고 쓸 때는 건건이 버퍼캐시를 탐색한다며 개별 프로그램 성능에는 오히려 안좋다. 그래서 오라클은 버퍼캐시를 경유하지 않고 곧바로 데이터 블록을 쓸 수 있는 Direct Path I/O 기능을 제공한다. 아래는 기능이 작동하는 경우다. 병렬 쿼리로 Full Scan을 수행할 때 병렬 DML을 수행하 때 Direct Path Insert을 수행할 때 Temp 세그먼트 블록들을 읽고 쓸 때 direct 옵션을 지정하고 export를 수행할 때 nocache 옵션을 지정한 LOB 컬럼을 읽을 때 Direct Path Insert 일반적인 Insert가 느린 이유는 다음..
DML 성능에 영향을 미치는 요소 인덱스 ↳ 테이블은 Freelist를 통해 입력할 블록을 할당받지만, 인덱스는 정렬된 자료구조이므로 수직적 탐색을 통해 입력할 블록을 찾아야 한다. 인덱스에 입력하는 과정이 더 복잡하므로 DML 성능에 미치는 영향도 더 크다. 핵심 트랜잭션 테이블에서 인덱스 하나라도 줄이면 TPS(Transaction Per Second)는 그만큼 향상된다. 무결성 제약 ↳ 개체 무결성 , 참조 무결성 , 도메인 무결성 , 사용자 정의 무결성 조건절 서브 쿼리 Redo 로깅 ↳ Redo 로그는 트랜잭션 데이터가 어떤 이유에세건 유실됐을 때, 트랜잭션을 재현함으로써 이전상태로 복구한다. DML을 수행할 때마다 Redo 로그를 생성해야 하므로 Redo 로깅은 DML 성능에 영향을 미친다. ..