본문 바로가기

DB

* JOIN 원리 *JOIN 원리--DBMS 작동원리 : 평소에 데이터는 하드디스크의 데이터 파일에 저장해 두었다가 필요한 시점에 메모리로 복사한다.--(오라클은 이때 사용하는 메모리를 데이터베이스 버퍼 캐시라고한다)-- 여기서 중요한 것은 칼럼 100개를 가진 테이블이 하드디스크에 저장되어 있을 때 사용자가 그 중 1개의 칼럼에 SELECT를 -- 수행할 경우 해당 칼럼 1개만 메모리로 복사하는 것이 아니라 일단 100개의 칼럼 모두를 메모리로 복사해 온다는 점이다.--그래서 불필요한 I/O도 많고 메모리 사용량도 많이 생기기 때문에 정규화를 철저히 해서 부하를 최대한 줄여야한다.--일단 메모리로 올라온 테이블에서 필요한 칼럼을 가져와서 사용자가 원하는 결과를 만들어야 한다. 1) NESTED LOOP JOIN(가장 기.. 더보기
[ORACLE] 3. 단일행 함수 - 형변환 함수 *오라클에서 사용하는 데이터 타입 데이터 타입 설명 CHAR(n) 고정 길이의 문자를 저장한다. 최댓값은 2000byte. VARCHAR(n) 변하는 길이의 문자를 저장한다. 최댓값은 4000byte. NUMBER(p, s) 숫자 값을 저장. p는 전체릿수로 1~38자리까지 가능하고 s는 소수점이하 자릿수로 -84 ~ 127자리가 가능. DATE 총 7Byte로 BC 4712년 1월 1일부터 AD 9999년 12월 31일까지의 날짜를 저장. LONG 가변 길이의 문자를 저장하며 최대 2GB까지 저장할 수 있다. CLOB가변길이의 문자를 저장하면 최대 4GB까지 저장할 수 있다. BLOB가변 길이의 바이너리 데이터를 최대 4GB까지 저장할 수 있다. RAW(n)원시 이진 데이터로 최대 2000byte까지 .. 더보기
[ORACLE] 2. 단일행 함수 - 날짜함수 날짜함수 함수명 의미 결과 SYSDATE 시스템의 현재 날짜와 시간 날짜 MONTH_BETWEEN 두 날짜 사이의 개월 수 숫자 ADD_MONTHS 주어진 날짜에 개월을 더함 날짜 NEXT_DAY 주어진 날짜를 기준으로 돌아오는 날짜 출력 날짜 LAST_DAY 주어진 날짜가 속한 달의 마지막 날짜 출력 날짜 ROUND 주어진 날자를 반올림 날짜 TRUNC 주어진 날짜를 버림 날짜 1) SYSDATE 함수 - 현재 시스템의 시간을 출력해 주는 함수 - 오라클에서는 보통 날짜 체계가 미국을 기준으로 되어 있음 [참고]한국에서 익숙한 형태로 표기하기 위해서 다음과 같은 작업이 필요 2) MONTHS_BETWEEN 함수 ① 두 날짜를 입력 받아서 두 날짜 사이의 개월 수를 출력하는 함수 ② 두 날짜 중 큰 날짜.. 더보기
[ORACLE] 1. 단일행 함수 - 숫자함수 숫자함수 이름 의미 사용 예 ROUND 주어진 숫자를 반올림 한 후 출력함 ROUND(12.345, 2) -> 12.35 TRUNC 주어진 숫자를 버림 한 후 출력함 TRUNC(12.345, 2) -> 12.34 MOD 주어진 숫자를 나누기 한 후 나머지 값 출력함 MOD(12, 10) -> 2 CEIL 주어진 숫자와 가장 근접한 큰 정수를 출력함 CEIL(12.345) -> 13 FLOOR 주어진 수자와 가장 근접한 작은 정수 출력함 FLOOR(12.345) -> 12 POWER 주어진 숫자 1의 숫자 2승을 출력함 POWER(3,2) -> 9 1) ROUND 함수문법 : ROUND(숫자, 원하는 자릿수) 2) TRUNC 함수문법 : TRUNC (숫자, 원하는 자릿수) 3) MOD, CEIL, FLOO.. 더보기
[MyBATIS(MySQL)] JDBC autoReconnect=true 옵션 사용시 유의사항 DB에 접속중인 세션을 오랫동안 사용하지 않거나, 네트워크에 문제가 발생하는 경우 DB 세션이 끊어질 수 있다. DB 세션이 끊어지는 경우 App 입장에서는 재접속 처리를 해주어야 다시 정상적인 서비스가 가능해 진다. 재접속 처리 방법 중에 JDBC에 autoReconnect=true 옵션을 주는 방법이 있는데, 이 옵션을 잘못 사용하는 경우 얘기치 않은 문제가 발생할 수 있다.autoReconnect 옵션은 쿼리를 수행한 다음 DB 세션에 문제가 있으면 단순히 SQLException 리턴 후 재접속 처리를 한다. 문제는 트랜잭션 구동 환경에서 수행중이던 트랜잭션은 롤백이 되어야 하고, 남은 트랜잭션은 수행이 되지 않아야 되는데, autoReconnect 옵션은 이런 처리를 해주지 않기 때문이다. 트랜잭.. 더보기
[MySQL] 데이터베이스 생성 [1] 데이터베이스 생성1. mysql -u root -p : -u옵션은 명령을 수행할 데이터베이스의 계정을 지정하는 것으로서 위 코드는 MySQL서버의 root계정으로 명령을 수행한다.2.create database chap12 default character set euckr; - create 명령어는 데이터베이스를 생성한다는 것으로, 위 명령어는 chap12라는 이름의 데이터베이스를 생성하게 된다.3. grant select, insert, update, delete, create, drop on chap12.* to 'jspexam'@'localhost' identified by 'jspex'; - MySQL에서 grant 쿼리는 MySQL DBMS에 계정을 추가할 때 사용하는 명령어로서 기본 구.. 더보기
데이터베이스 프로그래밍 기초 [1]데이터베이스 기초 1.1 데이터베이스와 DBMS - 데이터 베이스의 주요 목적은 데이터를 저장했다가 필요 할 때에 사용한 것이다. - DBMS(Database Management System) : 데이터베이스를 관리하는 시스템이며 종류로는 Oracle, MySQL, MS SQL 등이 있다. 1.1.1 DBMS의 주요 기능 - 데이터의 추가/조회/변경/ 삭제 - 데이터의 무결성(integrity)우지 - 트랜잭션 관리 - 데이터의 백업 및 복원 - 데이터의 보안1.2 테이블과 레코드 - 스키마(Schema) : 데이터의 길이, 데이터 타입 등 테이블의 구조와 관련된 정보를 스키마라고 부른다.칼럼이름 칼럼타입 길이 MEMBRID VARCHAR 10 PASSWORD VARCHAR 10 NAME VARCH.. 더보기