MYSQL DB 백업이 필요한 이유가 몇 가지 있습니다. 1. 데이터 보존 차원에서 2. 다른 서버에 DB를 이관하기 위해 3. 테이블스페이스 공간을 확보하기 위해. DB 백업이라고 해서 거창한 건 없습니다. 데이터가 날아가면 연계된 서비스에 치명적이기 때문에 조심스러운 것뿐이지 방법 자체는 간단합니다. 예시를 통해 백업 과정을 알아보겠습니다. MYSQL DB 백업하기 MYSQL DB 백업은 mysqldump 명령을 사용합니다. mysqldump 사용 구문은 아래와 같습니다. 1. 모든 DB를 백업하는 경우 mysql에 저장된 모든 db를 백업하는 경우엔 아래의 명령어를 사용합니다. mysqldump -u [유저명] -p --all-databases > [백업 파일명].sql 2. 특정 DB를 백업하는 ..
MYSQL jdbc 드라이버를 연동할 때 로드할 클래스 경로를 입력합니다. 그런데 어느 경우엔 com.mysql.cj.jdbc.Driver를, 어느 경우엔 com.mysql.jdbc.Driver를 사용하는 것을 종종 볼 수 있습니다. 둘의 차이는 사용하는 mysql connector의 버전입니다. com.mysql.jdbc.Driver는 Connector/J 5.x 버전까지 사용됐습니다. Connector/J 8.x 버전부터는 com.mysql.cj.jdbc.Driver를 사용해야 합니다. 패키지 경로가 바뀌었기 때문입니다. 실제로 mysql-connector-java-8.0.22.jar 파일을 디컴파일러로 까보면 패키지가 com.mysql > cj > Driver.class 순으로 진입되는 걸 확인할 ..
JDBC란? JDBC(Java Database Connectivity)는 자바 코드를 사용해서 DBMS에 쿼리를 실행할 수 있도록 해주는 도구입니다. 자바 프로그램이 다양한 RDBMS 시스템에 접속하고 쿼리를 실행할 수 있게 해줍니다. 이를 통해 개발자가 데이터베이스 시스템과 관계없이 동일한 코드를 사용할 수 있습니다. 각 데이터베이스 벤더는 자체 JDBC 드라이버를 제공합니다. 오라클(Oracle)은 ojdbc*.jar, MYSQL은 mysql-connector-java-x.x.x.jar, MS SQL Server는 mssql-jdbc-x.x.x.jreX.jar 형태의 파일로 제공됩니다. 이런 드라이버를 통해서 자바 애플리케이션과 데이터베이스 시스템 간 통신이 가능해지는 것입니다. JDBC 드라이버 사..
마이크로소프트 SQL Server에서 비클러스트형 인덱스를 생성하려면 CREATE NONCLUSTERED INDEX 구문을 사용하면 됩니다. 비클러스터드 인덱스는 테이블의 데이터를 정렬된 순서와 별개로 저장되는 인덱스로 쿼리 성능을 향상시키기 위해 사용합니다. CREATE NONCLUSTERED INDEX 기본 구문은 아래와 같습니다. CREATE NONCLUSTERED INDEX index_name ON table_name (column1, column2, ...) index_name : 생성할 비클러스터드 인덱스의 고유한 이름입니다. table_name : 인덱스를 생성할 테이블의 이름입니다. column1, column2, ... : 인덱스 키 열로 사용할 테이블의 컬럼입니다. 이 컬럼은 인덱스 정..
nchar VS nvarchar nchar와 nvarchar는 SQL Server에서 유니코드 문자열을 저장하는 데 사용되는 두 가지 데이터 형식입니다. 두 형식 모두 유니코드 문자를 저장할 수 있지만, 각각 특성이 다릅니다. nchar 고정 길이 문자열을 저장합니다. 모든 데이터가 동일한 길이로 저장되어야 할 때 유용합니다. 예를 들어, 각각의 항목이 정확히 1자인 값이 insert되는 경우 nchar(1)을 사용할 수 있습니다. 고정 길이를 가진 nchar는 데이터 길이가 일정하기 때문에 검색 성능이 더 좋을 수 있습니다. nvarchar 가변 길이의 문자열을 저장합니다. 데이터 길이가 다양하게 insert되는 경우 사용합니다. 문자열을 저장하는 컬럼에는 대부분 nvarchar이 사용됩니다. nvar..
마이크로소프트 SQL Server에서 nvarchar는 가변 길이의 유니코드 문자열 데이터를 저장할 수 있는 데이터 형식입니다. 예를 들어, 테이블을 생성할 때 특정 컬럼에 문자열 수 제한을 255로 두고 싶으면 nvarchar(255)처럼 설정합니다. 반면 최대 문자열 수를 제한하지 않고 nvarchar(max) 형태로 사용하면 저장될 수 있는 최대 유니코드 문자열의 크기가 2GB까지 허용됩니다. 이처럼 nvarchar(max)는 큰 문자열 데이터를 저장해야 하는 경우에 사용됩니다. 예시) 웹 사이트에서 게시물을 저장하는 Posts 테이블을 생성한다고 가정할 때 글 본문 컬럼을 max로 지정할 수 있습니다. CREATE TABLE Posts ( id INT PRIMARY KEY IDENTITY(1,1)..
오라클(Oracle) 데이터베이스에서 테이블은 소유자가 있습니다. 만약 테이블을 소유한 계정이 아닌 계정이 테이블에 select 문을 실행하면 정상 조회될까요? 그렇지 않다면 확인해봐야 할 사항이 몇 가지 있습니다. 예를 들어, 오라클에 user라는 계정으로 접속했다고 가정합니다. table이라는 테이블에 select 쿼리를 날리려고 합니다. 그런데 table은 user2의 소유입니다. 이때 user 계정으로 아래와 같이 뭐리를 실행하면 테이블이 존재하지 않는다는 에러가 발생합니다. select * from table; 이는 테이블명 앞에 소유자 표시를 생략했기 때문입니다. 아래와 같이 실행하면 조회가 가능합니다. select * from user2.table; 그 이유는 스키마(schema)와 관련이 ..
오라클(Oracle) 데이터베이스에는 dual이라는 이름의 가상 테이블이 존재합니다. 이 테이블은 데이터를 저장하지 않습니다. 주로 간단한 select 문이나 단일 행을 반환하는 함수를 실행할 때 사용되곤 합니다. dual 테이블 예를 들면, 아래와 같은 활용이 가능합니다. 예시 1) 시스템 시간 확인 SELECT SYSDATE FROM DUAL; 예시 2) 연산 수행 SELECT 45 + 32 AS result FROM DUAL; 예시 3) 시퀀스 다음 값 확인 SELECT your_sequence_name.NEXTVAL FROM DUAL; 예시 4) 날짜 및 시간 확인 SELECT SYSTIMESTAMP, CURRENT_DATE FROM DUAL; 정리하면, dual 테이블은 오라클이 제공하는 내장 ..
마이크로소프트 SQL Server에서 테이블을 생성할 때 컬럼에 PRIMARY KEY CLUSTERED를 부여하는 것은 PRIMARY KEY와 CLUSTERED INDEX 두 가지 개념을 적용하는 것입니다. PRIMARY KEY CLUSTERED 1. PRIMARY KEY : 데이터베이스 테이블에서 고유한 식별자 역할을 하는 열 또는 열의 조합을 나타냅니다. PRIMARY KEY로 지정된 컬럼은 값이 NULL이어서는 안 되며 각 행에 대해 고유한 값을 가져야 합니다. 2. CLUSTERED INDEX : 테이블의 물리적인 정렬 방식을 결정하는 인덱스입니다. 클러스터 인덱스는 테이블 데이터가 디스크에 저장되는 방식을 정의하며, 인덱스에 따라 행이 정렬됩니다. 이로 인해 데이터 검색을 빠르게 수행할 수 있습..
GETDATE() 마이크로소프트 SQL Server에서 GETDATE() 함수는 현재 시스템의 날짜와 시간을 반환하는 내장 함수입니다. datetime 형식으로 값을 제공합니다. 이 함수는 주로 데이터 입력 시간을 기록하거나 시간 경과에 따른 작업을 처리할 때 사용됩니다. 간단하게 현재 시스템 날짜와 시간을 조회하려면 아래와 같이 사용합니다. SELECT GETDATE(); 예시 1) 테이블에 데이터 입력 시간을 기록할 때 사용할 수 있습니다. INSERT INTO your_table (column1, column2, created_at) VALUES ('value1', 'value2', GETDATE()); 예시 2) 테이블을 생성할 때 특정 열의 기본값을 GETDATE() 함수로 지정해서 사용할 수도..