본문 바로가기

Database21

Statement vs PrepareStatement (feat 동적 쿼리) 같은 기능이지만 다른 정책을 봐야하는 경우조회 시 사용하는 쿼리 형태는 같으나 테이블, 컬럼명이 달라지는 경우가 있다.이때 정책에 따라 사용하는 테이블, 컬렴명을 미리 정의해두고, 쿼리의 인자로 넘겨서 쿼리를 재사용할 수 있다. 개발 환경은 MariaDB, MyBatis와 SpringBoot 이다. 1. 미리 enum 으로 조건에 따라 조회 시 사용하는 테이블명, 컬럼명, 코드 등을 정의해놓는다 2. 쿼리 작성 시 #{}, ${} 를 사용한다 #{} 에 문자열을 넣으면 '문자열' 이렇게 변환이 된다.${} 에 문자열을 넣으면 그대로 문자열이 변환된다. 어떻게 가능한가? PrepareStatement에는 보통 변수를 설정하고 바인딩하는 static sql이 사용되고,Statement에서는 쿼리 자체에 조.. 2025. 9. 7.
MyBatis 참고사항(XML 파일 관련) Mapper interface에 어노테이션으로 쿼리를 작성하는 방식 대신XML문을 이용하여 쿼리를 수행하는 구조를 작성해보고자 함. XML 파일에 쿼리를 작성해본적은 있지만 아무것도 없는 상태에서 구조를 만드는 건 처음이라 어려움이 있다.... XML 저장 위치:저장 방법은 두 가지가 있다.1. Mapper 인터페이스가 저장된 곳에 xml 파일을 저장시킨다2. 'src/main/resources' 위치에 Mapper 인터페이스가 저장된 패키지명을 폴더 경로로 만들어준다. XML 파일 명 : XML 파일을 만들 때 정해진 규칙은 따로 없다. 그렇지만 가능하면 Mapper 인터페이스와 같은 이름을 이용하여 가독성을 높여주면 좋다. XML 파일 살펴보기 XML 도입부의 헤더와 doctype이다. 태그는 해당 .. 2024. 5. 29.
복합키 정리 대표 PK를 사용하는 게 유리한 경우 복합키의 정보를 모두 알지 않아도 리소스 관리가 가능할 때(ex : 사용자ID) 데이터를 식별할 수 있는 컬럼의 조합이 유니크하지 않을때(ex. 이름+저자+출판사 로는 동일 명칭의 개정판이 있는 경우 책을 식별할 수 없음) 식별가능한 복합키의 값이 변경 가능할 때 복합키를 구성하는 게 유리한 경우 특정 데이터를 식별하는 게 의미가 없는 경우(ID값을 이용해서 데이터를 조작하지 않는경우) 통계성, 기록성 데이터인 경우 ex) 걸음기록을 저장하는 테이블, 사용자 별 최근 일주일간 평균 걸음 수를 조회 보통 사용자 + 기록일시 기준으로 복합키를 구성한다. 복합키 사용 시 주의 점 복합 키 사용 시 검색 성능이 낮아질 수 있음. 대신 복합 인덱스 사용으로 검색 성능을 높일 .. 2024. 3. 19.
Hot block 관련 글 https://www.ilifo.co.kr/boards/article/48 2024. 3. 12.
VMware CentOS7에 mariaDB 설치,Workbench 연결 https://velog.io/@rbdus96/CentOS7%EC%97%90-MariaDB-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%84%A4%EC%A0%95 CentOS7에 MariaDB 설치 및 설정 MariaDB를 기본 yum install mariadb로 설치했을 경우 5.5 버전이 설치된다. 따로 repository를 설정해야 상위버전을 설치할 수 있다. 1. mariadb repo 파일을 만든다. tab 키를 이용하면 쉽게 폴더작성이 가능하 velog.io 1. mariadb repo 파일 생성 (mariadb 10.11버전 사용함) vi /etc/yum.repos.d/MariaDB.repo ab 키를 이용하면 쉽게 폴더작성이 가능하다. (폴더가 존재할 경우에만) i 입력하여.. 2024. 3. 6.
8.2 DML, DATA DICTIONARY, -- 데이터 조작어 (DML) -- 테이블을 생성하는 DDL CREATE TABLE DEPT_TEMP AS SELECT * FROM DEPT; SELECT * FROM DEPT_TEMP; -- 테이블에 데이터를 추가 INSERT -- INSERT INTO 테이블 이름 (열이름1, 열이름2, ....) -- VALUES (열이름1에 들어갈 데이터,) INSERT INTO DEPT_TEMP (deptno, DNAME, LOC) VALUES (50,'DATABASE','SEOUL'); SELECT * FROM DEPT_TEMP; DESC DEPT_TEMP; -- 에러 상황 : 데이터타입에 맞지 않거나, 길이가 맞지 않거나, 열보다 데이터를 많이 넣거나 --INSERT INTO DEPT_TEMP(deptno, .. 2023. 8. 2.