본문 바로가기

백엔드/DB54

[MySQL] utf8mb4_general_ci와 utf8mb4_0900_ai_ci 차이 및 캐릭터셋 변경하기 utf8mb4_general_ci와 utf8mb4_0900_ai_ci 차이 테이블 생성시 컬럼에서 해당 내용이 섞여서 설정되고 있었다. 두개의 차이는 같은 값을 가져도 collation이 다르게 설정되면 정렬/비교 순서가 달라져 조인이슈나 결과값이 달라질 수 있다. 이유가 있지 않으면 하나로 통일해서 사용하는 것을 권장한다. utf8mb4_0900_ai_ci의 경우 한글 데이터를 조건으로 검색하는 결과에도 영향을 미친다. 그래서 정확한 한글 검색을 처리하기 위해서는 utf8mb4_general_ci 로 설정해서 사용한다. 테이블의 캐릭터셋 변경 utf8mb4_0900_ai_ci -> utf8mb4_general_ci 로 변경하는 명령어이다. alter table rewards.member convert .. 2023. 4. 18.
[MySQL] 문자열 일부분만 가져오기 mysql 에서 문자열을 일부만 가져와서 사용하고자 한다. LEFT(문자 or 컬럼명, 가져올 갯수) MID(문자 or 컬럼명, 시작위치, 가져올 갯수) RIGHT(문자 or 컬럼명, 가져올 갯수) LEFT는 왼쪽에서부터 시작하는거고 RIGHT는 오른쪽에서부터 시작한다. 이름 가나다라마바사 SELECT LEFT(name, 3) from member; ## -> 가나다 SELECT MID(name, 2, 4) from member; ## -> 나다라 SELECT RIGHT(name, 3) from member; ## -> 마바사 2023. 4. 14.
[MySQL] MySQL에 csv 파일 INSERT 하기 MySQL에 csv 파일에 있는 데이터를 INSERT 하고자 한다. 데이터 가져오기 데이터를 넣고자 하는 테이블 우클릭 후 데이터 가져오기 선택 csv 에서 가져오기 선택 후 다음 클릭 다음선택 후 csv 파일 선택 csv 파일에서 해당 테이블에 어떤 컬럼값으로 매핑해서 넣어줄지 선택 csv 파일을 만들때 컬럼명이랑 동일하게 해도 되고 Target 에서 적용하고자 하는 컬럼을 선택해도된다. Mapping에 create 가 나온다면 새로운 컬럼이 생기면서 추가된다. 만약 테이블 컬럼의 변경 없이 데이터만 넣고 싶다면 create 라는 내용이 있으면 안된다. 위의 내용을 다 하면 데이터가 들어가 있는 것을 확인할 수 있다. 2023. 3. 21.
[MySQL] 데이터 null 을 0 으로 DB 데이터 조회 시 null 인 값을 0으로 변환하고자 한다. 조회할 때만 null 을 0으로 바꾸는 방법이다. select COALESCE(h.point, 0) from history h ; 실제 DB에 데이터를 null 을 0으로 수정하는 방법이다. update history set refund_point = 0 where refund_point is null; 2023. 3. 15.
[sql] functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 잘못된 쿼리를 사용해서 생기는 오류이므로 서버 설정보다 쿼리로 해결할 수 있도록 하는게 좋다. 쿼리로 해결하기 쿼리 상의 GROUP BY 절을 따로 분리해 준다. 서버 설정으로 해결하기 MySQL 실행 시 only_full_group_by 옵션의 활성화/비활성화를 비활성화 한다. 1. mysql 설정 상태 확인 > select @@sql_mode; 2. mysql 설정이 되있음을 확인 (아래 출력 처럼 only_full_group_by이 나오면 설정이 필요) > | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE, DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 3. my... 2023. 1. 4.
[mysql] Failed to determine a suitable driver class spring 에서 db 를 사용하는데 아래와 같은 메리지가 나오면서 db 연결이 안되고 빌드되지 않았다. 에러 메시지 해결방법 application.yml 파일에 mysql 드라이브가 추가 되어 있는지 확인하고 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver build.gradle 에 mysql 를 추가해준다. implementation 'mysql:mysql-connector-java:8.0.30' 버전은 아래 링크에서 확인할 수 있다. maven repository https://mvnrepository.com/artifact/mysql/mysql-connector-java 2022. 11. 8.