Computer Science/DB 5

[Mybatis] 오라클 DB insert 이후 idx 값 가져오기 (nextVal, currVal)

오라클 DB에서 데이터 insert할 때 시퀀스로 idx를 생성하곤 한다. 만약 insert한 idx값을 바로 가져와야 할 경우 selectKey를 사용하면 된다. 예시를 들어보자. 아래 같이 테이블, 시퀀스가 만들어졌다고 가정한다. -- 테이블 생성 CREATE TABLE board ( board_id NUMBER NOT NULL, title VARCHAR2(50), wirter VARCHAR2(50) ) -- 시퀀스 생성 CREATE SEQUENCE sq_board_id START WITH 1 INCREMENT BY 1 MANVALUE 1 MAXVALUE 999999999 CYCLE CACHE 50; xml 쿼리에서 insert 태그 안에 selectKey 옵션을 사용해서 생성한 idx값을 바로 리턴..

Computer Science/DB 2023.11.22

H2-console에서 Localhost에서 연결을 거부했습니다. 오류 발생시 해결법

문제 발생 h2-console로 접속하니 아래처럼 'localhost에서 연결을 거부했습니다'로 콘솔 접속이 거부된다. 해결 방법 1 만약 스프링 시큐리티(Spring security)를 적용했다면 h2-console 경로에서도 접근 가능하도록 설정을 해줘야 한다. antMatchers 메서드에 "/h2-console/**"을 추가해준다. @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/h2-console/**)") .permitAll; } 해결 방법 2 그래도 동작하지 않는다면 X-Frame-Options 기능을 꺼본다. 스프링 시큐리티에서는 기본적..

Computer Science/DB 2023.11.20

H2 console 접속 오류 해결법 : Database "C:/Users/사용자명/test" not found, either pre-creat

문제 발생서버를 실행시키고 http://localhost:8080/h2-console 를 입력하여 H2 콘솔 접속시 다음과 같은 에러가 발생한다. 데이터베이스 "C:/Users/사용자명/test"를 찾을 수 없다고 나온다. 말그대로 C:\Users\사용자명 폴더에 test 파일이 없어서 생긴 문제이므로 직접 만들어주자.Database "C:/Users/사용자명/test" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-214] 90149/90149 (Help)해결 방법C:\Users\사용자명 경로에 빈 텍스트 파일을 생성하고 파일명을 확장자 포함하여 ..

Computer Science/DB 2023.10.14

한눈에 파악하는 SQL 로드맵

한눈에 파악하기 좋은 SQL 로드맵을 봐서 블로그에 공유한다. DBA만큼은 아니더라도, 제대로 이해하면서 쿼리를 짜는 것이 중요하다고 생각한다. 전문가 레벨까지 도달하려면 꾸준한 쿼리 연습과 깊은 이해도가 필요할 것 같다. 1. 초급 레벨: 🌱 기본 SQL 구문에 대해 알아본다: SELECT, FROM, WHERE. 데이터 타입과 NULL 값을 이해한다. 샘플 데이터셋에서 간단한 쿼리를 연습한다. 2. 중간 레벨: 📊 JOIN을 깊이 알아본다: INNER, LEFT, RIGHT, FULL. GROUP BY와 Aggregate 함수를 마스터한다. 하위 쿼리와 데이터 조작을 탐색한다. 3. 고급 레벨: 📈 고급 분석을 위한 window 기능을 파악한다. 인덱스 및 쿼리 최적화에 대해 배운다. 여러 JOIN으..

Computer Science/DB 2023.09.13

Oracle offset (오라클 페이징 처리)

이번 프로젝트에서 SQL 튜닝 가이드를 받아 쿼리를 수정하면서 offset 키워드를 알게 되어 포스팅한다. 오라클은 12c 버전부터 offset과 limit가 추가되었다. Oracle 12c 이전 Oracle 12c 이전에는 ROW_NUM을 사용하여 페이징 처리를 했다. 단점은 쿼리를 view로 감싸므로 쿼리가 복잡해진다. SELECT * FROM ( SELECT a.*, ROWNUM AS "ROWNUM" FROM ( 사용자 정의 쿼리 QUERY ) a WHERE ROWNUM = start_number Oracle 12c 이후 Oracle 12c 이후부터는 행 제한(row limitng)을 이용하여 간단하게 페이징 처리할 수 있다. 오라클의 지저분한 페이징 처리를 간결하게 할 수 있는 장점이 있다. of..

Computer Science/DB 2022.10.05