반응형

Database ( DB ) 128

[MariaDB] Charset 변경 utf8 -> utf8mb4

MariaDB를 설치하는 중, 아래 화면에서 Use UTF8 as default server's character set을 체크하면 자동으로 utf-8로 charset이 설정됩니다. 설치 후 SHOW VARIABLES LIKE 'c%'; 명령어를 사용하여 보면 다음과 같습니다. 위와 같이 utf8mb3와 utf8mb4가 섞여 있는 것을 볼 수 있는데요. 뭔가 찝찝합니다. 원래 UTF-8의 경우 4바이트인데 MySQL, MariaDB의 경우 utf8이 3바이트로 구현되어 있었는데 이후 MySQL 5.5.3(2010년 3월) 이후 4바이트인 utf8mb4가 추가되었다고 합니다. utf8mb4를 사용해야 이모지 등 4바이트가 필요한 언어를 사용하고 싶습니다. 깔끔하게 전부 utf8mb4로 통일하고 싶은데요. ..

Entity Inheritence in JPA

데이터베이스 테이블을 설계하다 보면 column이 중복되는 경우가 생각보다 많습니다. 대표적으로 등록한 사람, 등록일시, 수정한 사람, 수정일시 등이 있는데요 이것을 일일히 쓰기에는 여간 귀찮은 일이 아닙니다. 이럴 때 @MappedSuperclass를 사용하면 됩니다. 그럼 지금부터 예제 코드를 보겠습니다. 먼저, BaseTme 클래스를 생성합니다. import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import j..

Mariadb 10.4 대소문자 구분 설정

CentOS에서 mariadb를 설치 하면 Database가 대소문자 구분을 하여 쿼리 할 때 정말 불편한 경우가 있습니다. 예를 들어 테이블이 TB_USER로 생성되었을 때 SELECT * FROM tb_user로 쿼리하면 오류가 발생하는 것입니다. 이럴 때 /etc/my.cnf.d/server.cnf에 다음과 같이 저장하면 됩니다. [mysqld] lower_case_table_names=1 옵션값은 다음과 같습니다. 0: 대소문자 구분 1: 대소문자 구분하지 않음(소문자로 저장) 2: 대소문자 구분하지 않음(소문자로 비교) 저장 후 아래 명령어를 실행합니다. # systemctl stop mariadb # systemctl start mariadb 아래는 적용 확인 명령어입니다. show varia..

[MSSQL] IDENTITY 값 초기화 하는 방법

아래와 같이 IDENTITY를 사용하여 테이블을 생성했다면 seq 컬럼은 자동 증가 값을 가지게 됩니다. CREATE TABLE [dbo].[tb_user] ( [seq] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL, [user_name] [varchar] (70) NOT NULL, [email] [varchar] (70) NOT NULL ) 개발을 하다보면 이 테이블에 값을 입력하는 테스트를 진행하게 되는데요. 테스트 후에 데이터를 모두 삭제해도 seq 컬럼은 초기화되지 않습니다. 이때 IDENTITY로 선언된 seq 값을 초기화하기 위해서는 아래와 같이 명령어를 실행하면 됩니다. 이 명령어를 실행하면 IDENTITY 값이 1로 초기화 됩니다. -- IDENTITY 값 초기..

Oracle 12c Download 방법

얼마 전에 테스트 서버의 DB를 Oracle 12c를 사용하다가 서버를 포맷하게 되어 포맷을 한 김에 19c로 업그레이드했는데 상상하지 못했던 문제가 발생했습니다. Spring JPA + Hicaricp 환경에서 DB 접속 시간이 너무 오래 걸리는 것이었습니다. (빠른 접속 방법을 못찾았는데 알고 계신 분 있으면 알려주시면 감사합니다.) 결국 12c를 다시 설치하기로 했는데 Oracle 다운로드 페이지 들어가니 19c와 11g Express만 나오고 나머지 다운로드를 모두 막아놨습니다. 이제부터 본론인 다운로드 방법입니다. Oracle Software Delivery Cloud로 이동 Oracle 계정이 없다면 Create Account 버튼 클릭하여 계정 생성 Sign in 버튼 클릭 oracle da..

java - write to file

java에서는 다음 클래스들을 이용하여 파일을 쓸 수 있습니다. java - write to file BufferedWriter PrintWriter FileOutputStream java.nio.file 1. BufferedWriter import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class Test { public static void main(String[] args) { File file = new File("e:/text.txt"); String str = "Hello world!"; BufferedWriter writer = null; t..

DBMS별 함수 비교

DBMS별 함수 비교 NULL TO STRING ORACLE: NVL MSSQL: ISNULL MYSQL: IFNULL substring ORACLE: SUBSTR MSSQL: SUBSTRING MYSQL: SUBSTRING 문자열 합치기(concat) ORACLE: || MSSQL: + MYSQL: CONCAT 공백 제거 ORACLE: TRIM MSSQL: LTRIM(RTRIM(FieldName)) MYSQL: TRIM 통계적 표준편차 ORACLE: STDDEV MSSQL: STDEV MYSQL: STD 소수점 올림 ORACLE: CEIL MSSQL: CEILING MYSQL: CEIL, CEILING LIMIT ORACLE: ROWNUM SELECT * FROM EMP WHERE JOB = 'SAIL..

[MySQL] 문자열 길이 가져오기(length, char_length 함수)

일반적으로 query를 하거나, 프로그램 개발을 하다보면 문자열의 길이를 구해야 하는 경우가 생각보다 많습니다. MySQL의 경우 문자열의 길이를 가져올 때 사용하는 함수는 LENGTH함수입니다. 하지만 테스트로 LENGTH('abcde')를 실행해보고 결과값이 5가 나왔다고 프로그램에 적용해 버리면 차후 문제가 발생할 수 있습니다. 그 이유는 length가 문자열의 자릿수가 아니라 문자열의 Byte 길이를 가져오기 때문입니다. 그렇기 때문에 문자열의 길이를 알기 위해서는 CHAR_LENGTH를 사용해야 합니다. (왜 한글은 1byte가 아닌 것인가) 참조 : mysql 공식 문자열 함수 메뉴얼 예제 쿼리(Example query) 1) LENGTH(영어) SELECT LENGTH('ABCDE'); 결과..

728x90
반응형
loading