Database ( DB )/Database 97

[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'); 결과..

MariaDB 10.4 대소문자 구분 설정하는 방법

Linux에서 MariaDB 설치한 후 query 시, 대소문자를 구분하는 문제가 있습니다. (Windows에 설치 할 경우 이런 문제가 없습니다.) 그 이유는 lower_case_table_names 옵션 때문인데요 이 옵션의 값은 아래와 같습니다. lower_case_table_names 옵션 값 lower_case_table_names=0 : 테이블 생성 및 조회 시 대/소문자 구분 lower_case_table_names=1 : 입력 값을 모두 소문자로 인식. 즉, 대소문자 구분하지 않음 lower_case_table_names=2 : 윈도우에서 대/소문자를 구분해서 테이블 생성 아까 Windows에서는 대소문자를 구분하지 않는다고 했는데, 그 이유는 OS별로 default value가 다르기 때..

DBCP valicationQuery 설정

DB에 접속 중인 세션을 오랫동안 사용하지 않거나 네트워크에 문제가 발생하는 경우 DB 세션이 끊어질 수 있습니다. DB 세션이 끊어지는 경우 재접속 처리를 해야 다시 정상적인 서비스가 가능해집니다. 재접속 처리 방법 중에 autoReconnect=true 옵션이 있는데 이 옵션을 잘못 사용하는 경우 예상하지 못한 문제가 발생할 수 있습니다. autoReconnect 옵션은 쿼리를 수행한 다음 DB 세션에 문제가 있으면 단순히 SQLException을 발생한 후 재접속 처리를 합니다. 문제는 트랜잭션 구동 환경에서 수행 중이던 트랜잭션은 롤백이 되어야 하고, 남은 트랜잭션은 수행되지 않아야 하는데 autoReconnect옵션은 이런 처리를 하지 않기 때문입니다. 따라서 데이터 정확성이 깨질 수 있습니다...

CentOS 7] MariaDB(mysql) 외부 접속 가능하게 하는 방법

mysql과 mariadb는 기본 명령어가 같기 때문에 같은 명령어로 외부 접속이 가능하도록 할 수 있습니다. // mariadb 접속 # mysql -u root -p // database를 mysql로 변경 $ use mysql; $ select host, user from user; 위 이미지를 보면, host가 localhost로 되어 있습니다. 이는 user가 localhost에서만 접속할 수 있다는 뜻이기 때문에 변경을 해야 합니다. $ grant all privileges on *.* to 'root'@'%' identified by 'root의 비밀번호'; 위 명령어에서 *.*는 모든 DB 접근이고, '%'는 모든 IP에 대해 허용한다는 뜻입니다. 그리고 grant all 명령어를 적용하기..

utf8 vs utf8mb4

MySQL, MariaDB, PostgreSQL, MSSQL, Oracle 등의 Database를 사용하면서 보통 utf8로 설정합니다. 하지만 MariaDB, MySQL의 경우 최근 utf8mb4로 설정하는 경우가 많다고 합니다. 그 이유는 emoji 때문입니다. MySQL, MariaDB는 utf8로 설정하는 경우 emoji 문자가 입력되지 않는 문제를 해결하기 위해 utf8mb4라는 charset이 나오게 되었다고 합니다. emoji는 쉽게 이야기 하면 이모티콘인데요 바로 이런 이모티콘입니다. 😊 이런 문자를 MariaDB, MySQL에서 insert하려고 하면 utf8일 경우 에러가 발생합니다. 사실 일반적인 경우에는 utf8로 해도 상관 없으나, 게시판이나 채팅 내용을 저장하는 부분의 경우 ut..

728x90
loading