본문 바로가기

SQL23

DB 엔진 - System Global Area SGA란? System Global Area 또는 Shareable Global Area로 DB시점에서 공용으로 사용하는 메모리 공간이다. 공간은 5가지로 아래와 같이 구성되어 있다. 공간 설명 Shared Pool parshing 작업을 할 때 사용하는 공간입니다. Database Buffer Cache DB의 접근하고자 하는 block을 가져와 쿼리문을 수행합니다. Redo log Buffer Cache 바뀐 데이터의 before / after 데이터를 가지고있다 commit시 redo log file에 저장됩니다 Java Pool Large Pool Shared Pool은 Library cache와 Data Dictionary cache로 구성되어 있다. Shared Pool 공간 설명 Librar.. 2022. 12. 20.
DB 엔진 - Tablespace, segment, extent, (header)block Tablespace란? 1. 데이터베이스 시점에서 디스크에 데이터를 저장하는 가변적이고 논리적인 공간. 2. Tablespace의 용량이 꽉 찬 사실은 데이터 사전을 통해 알 수 있다. 이때 o/s file을 resize를 통해 공간을 늘려주거나 다른 디스크의 dbf 파일을 붙여주는 방법이 있다. ( 여기서 o/s file은 물리적인 파일이다.) 3. DB생성 초기 block size 설정 시 4k로 설정하면 모든 block이 4k로 구성된다. 4. table drop시 모든 내용을 삭제하고 table이 차지하던 segment를 빈 공간으로 내어준다. 5. Tablespace를 지정해주는 방법으론 총 두 가지가 있다. 첫 번째는 user를 생성할 때 default, temporary로 지정 해주는 방법과.. 2022. 12. 19.
oracle SQL - Join (ON).1 Join을 하는 이유? 제 3 정규화로 중복된 데이터를 따로 테이블로 두어 중복 방지하였지만, 제대로된 정보가 서로 다른 테이블에 있으니 Join을 수행한다.. 예시) 한 사원의 부서명이 400이라면 그 의미를 알아내기 힘들 것이다. 사원 테이블과 부서 테이블을 Join하면 400 의미를 보여준다. Cross, Natural 1. Cross Join - 두 테이블간 Cross Join을 수행하면 두 테이블의 행수를 곱한 수를 반환한다. 두 테이블을 강제로 합체시켜 보여준다 select [table1]column, [table2]colmn from table1 cross join table2; 2. Natural Join - 사용자의 의도와 관계없이 두 테이블에 겹치는 칼럼이 있다면 모두 합쳐서 반환한다... 2022. 12. 8.
oracle SQL - 일반함수 (NVL, NVL2, NULLIF, COALESCE) 일반함수? - 표현식에 NULL 값을 비롯한 모든 데이터유형의 데이터를 사용할 수 있는 함수 NVL(표현식 1, 표현식 2) 표현식 1에는 NULL을 포함하는 열 이름 또는 표현식이온다. 표현식 2에는 NULL값을 변환할 대상 값이 온다. 사원의 연간 총 급여를 구할 때 연간 급여 + 커미션을 곱한 값을 구할 때 다음과 같이 작성하면 select emp_name, salary, comm, (salary*12) + (salary * 12 * comm) ANN_SAL from y_emp; 이처럼 잘못된 결과를 반환한다. NVL함수를 사용하면 해결할 수 있다. select emp_name, salary, comm, (salary * 12) + (salary * 12 * NVL(comm, 0)) ANN_SAL .. 2022. 12. 7.
oracle SQL - 데이터 유형의 변환 (TO_CHAR) 저장된 데이터에 대하여 내부적으로 다른 유형의 데이터로 변환하여 사용하는 경우가 있다. 이 경우 오라클 서버는 해당 데이터 유형을 자동 변환하기도 하고 사용자에 의해 명시적으로 수행 될 수 있다. 오라클 서버에 의해 자동으로 수행되는 데이터 유형 변환을 암시적 변환 (implicit), 사용자에 의해 수행되는 데이터 유형 변환은 명시적 데이터 유형 변환(explicit)이라고 한다. 암시적 변환의 예시는select salary 급여 from y_emp where dept_id = '100';위 같은 쿼리 실행 시 where절의 '100'을 자동으로 숫자로 형변환해서 실행한다. TO_CHAR(), TO_NUMBER(), TO_DATE() 와 같은 함수를 사용하여 형변환을하면 명시적 데이터 유형 변환에 해당.. 2022. 12. 7.
oracle SQL - 날짜 형식 수정, 날짜연산 오라클은 현재의 날짜를 결과로 반환하는 SYSDATE라는 내장함수를 제공한다. 날짜 데이터는 국가별로 다르다. 우리나라는 연도/월/일 순서라면 미국은 일-월-연도 순이다. 하지만 다음과 같은 명령문을 통해 화면에 출력할 형식을 변경할 수 있다. ALTER session set nls_date_format = 'yyyy/mm/dd hh24:mi:ss'; select sysdate from dual; 이러한 형식은 현재 세션이 유지되는 동안에만 유효하다. disconnect시 다시 원래대로 돌아온다. 위 코드와 같이 변경된 값을 세션마다 수정하지 않고 디폴트로 사용하고 싶다면 DB 엔진 서버를 수정하면 가능하다. 현재로부터 3시간 후와 40분 후의 시간 select sysdate, sysdate+3/24, .. 2022. 12. 7.