목록db (16)
송민준의 개발노트
오라클만 쓰다가 몇년 만에 MySql을 쓸라니 헷갈려서 남김. - 설치 방법은 생략 - 설치 후 1. 환경변수 설정 - MySql이 설치된 경로의 bin 경로를 찾는다. ex ) C:\Program Files\MySQL\MySQL Server 8.0\bin - 내PC -> 속성 -> 고급 시스템 설정 -> 고급탭 ->환경 변수 -> 시스템 변수 -> Path를 찾고 편집 클릭 -> 새로만들기 -> 경로 복붙하고 확인하면 어디서든 접근 가능함 2. cmd에 들어감 // root 계정으로 접속함 mysql -u root -p // 비번 입력 후 // 타임존부터 세팅 set time_zone 'Asia/Seoul'; // 유저 생성 create user 'scott'@'%' identified by 'test..
1. pom.xml에 dependency 추가 com.h2database h2 runtime ---------*************----------------- 혹시나 security를 사용한다면 권한 설정을 해줘야하고 관리자만 적용할 수도 있겠지만 일단 누구든지 접근 가능하게 세팅해보겠다. @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests().antMatchers("/h2-console/**").permitAll(); http.csrf..
옵티마이저란? - 가장 빠르고 효율적인 SQL 실행 계획을 수립하고 SQL을 실행하는 DBMS의 핵심적인 소프트웨어다.. - 실행 계획은 SQL 성능에 핵심적인 역할을 하며 동일한 결과라도 계획에 따라 성능이 다르다. 옵티마이저 종류 1. 규칙 기반 옵티마이저 미리 정해 놓은 규칙(액세스 경로별 우선순위)에 따라 엑세스 경로를 평가하고 실행계획을 선택한다. 2. 비용 기반 옵티마이저 예상되는 비용(쿼리 수행에 필요한 시간)을 기반으로 최적화를 수행한다. 미리 구한 테이블과 인덱스에 대한 통계정보를 기초로 각 오퍼레이션 단계별 예상 비용을 산정하고, 총비용이 가장 낮은 계획을 선택한다.(부적절한 통계정보의 경우 성능 정하) 옵티마이저 특징 - Data Dictionary에 있는 오브젝트 통계, 시스템 통계..
파티션이란? - 기업에서 관리하는 데이터는 정말 많은 양을 다루고 있다. 그러다보면 거대한 데이터를 가지고 있는 테이블이 존재하게 되는데(Big Transaction Table) 이는 트러블슈팅이 발생될 경우 심각한 악영향을 미칠 수 있다. - 이러한 악영향을 예방 및 피해를 줄이고 효율적으로 관리하기 위해 테이블을 작은 단위로 나누는 것을 말한다. 파티션의 기능 정의 - 파티션은 대용량의 테이블을 여러개의 데이터 파일로 분리해 저장하는 것을 말한다. - 테이블의 데이터가 물리적으로 분리되어 데이터 파일에 저장되면 CRUD 수행의 성능이 향상된다. - 파티션은 각각 파티션 별로 독립적으로 관리될 수 있다. (파티션 별 백업, 복구 및 인덱스 생성 등) - 파티션은 Oracle DB의 논리적 단위인 테이블..
비율을 계산해주는 함수는 다음과 같다. 1. CUME_DIST 2. PERCENT_RANK 3. NTILE 4. RATIO_TO_REPORT 1. CUME_DIST - 파티션 전체 건수에서 현재 행보다 작거나 같은 건수에 대해 누적 백분율을 계산해주며 0과 1사이에 값이 분포해있다. select deptno, ename, sal, cume_dist() over(order by sal desc) as c_s from emp; 위 쿼리를 실행하면 백분율 처럼 나온다. 과거 학창시절 성적 백분율 나오는 그런거... 2. PERCENT_RANK - ANSI/ISO SQL 표준과 Oracle DBMS에서 지원해준다. - 파티션에서 제일 먼저 나온 것을 0, 제일 늦게 나온 것을 1로 하여 값이 아닌 행의 순서별 ..
순위 함수의 목적은 어떤 항목이나 파티션에 대해서 순위를 계산하는 함수이다~! 우선 랭크 함수의 종류는 1. RANK : 특정항목 및 파티션에 대해 순위를 계산한다. 만약 값이 같다면 순위 또한 같게 주어진다. 2. DENSE_RANK : 같은 순위일 경우 하나의 건수로 계산을 한다. 3. ROW_NUMBER : 같은 순위일 경우에도 고유의 순위를 부여한다. 위 3가지가 존재한다. 목적에 따라 사용하면 된다. 1. Partition by 사용에 따른 결과 비교 select ename, sal, rank() over (order by sal desc) all_rank, rank() over (partition by job order by sal desc) job_rank from emp; 위 쿼리를 실행하..
개발을 하다보면 DB에 개행이 들어가야 되는 경우가 있다. \n 위와 같은 방법 말고 또 뭐가 있을까? 그렇다 방법은 존재한다. select '1번'||chr(13)||chr(10)||'2번' from dual 위와 같은 쿼리를 실행해보면 아래와 같은 결과가 나온다. 반대로 제거를 하고싶다면? select replace(개행 들어간 내용, chr(13)||chr(10), '') from dual 위와 같이 해보면 개행을 제거할 수가 있다. 원리는 아스키코드를 변환하는 것인데 chr(13)의 경우 현재 줄안에서 커서 위치를 맨 앞으로 옮기는 것이고 chr(10)의 경우 커서 위치를 아래로 가게 하는 것이다.(개행) 결과적으로 개행이 되는 것
1. DECODE DECODE는 IF문과 같다고 보면된다. 특정 조건이 참일 때 값과 거짓일 때 값을 적용한다. DECODE(CUSTNO, 11031, 'YES', 'NO') 위와 같은 예시에서는 custno의 값이 11031일 경우 YES 를 반환하고 아닐 경우는 NO를 반환한다. 2개도 가능하다. DECODE(CUSTNO, 11031, 'YES', 10001, 'OK', 'NO') 11031일 경우에는 YES, 10001 일 경우에는 OK 그 외에는 NO를 반환한다. 응용 해서 아래와 같이 이중으로도 가능하다. DECODE( DECODE( ~ ) ) 2. CASE CASE문은 IF ELSE와 같은 프로그래밍 언어처럼 사용이 가능하다. 기본적인 구조는 아래와 같다. CASE [ expression ] ..