case when then … SQL 문은 조건부 로직을 처리하기 위해 사용됩니다. 조건에 따라 결과를 다르게 반환할 수 있습니다. CASE 기본 구조는 다음과 같습니다. CASE WHEN 조건1 THEN 결과1 WHEN 조건2 THEN 결과2 ... ELSE 결과 END AS 컬럼명 WHEN으로 조건(WHEN)을 순차적으로 평가해서 참인 경우엔(THEN) 그에 맞는 결과를 반환합니다. 모든 조건이 거짓이면 ELSE 절의 결과를 반환합니다. ELSE 절은 옵션입니다. 생략할 수 있습니다. 만약 ELSE 절이 없고 모든 조건이 거짓이면 NULL을 반환합니다. 예시 1) 예를 들어, 제품 테이블에서 상품 가격에 따라 할인율 지정하고 그 값을 출력하고 싶다고 가정합니다. 이 경우 case 문을 이용해서 pri..
MS SQL Server을 통해 데이터베이스를 관리하면 반드시 .mdf와 .ldf 확장자의 파일이 생성됩니다. 두 파일은 SQL 서버의 핵심 데이터 및 로그 파일입니다. DB와 연결한 응용 프로그램에서 데이터를 많이 저장할수록 용량이 커집니다. 해당 파일들은 저장 경로를 변경할 수 있습니다. MDF, LDF란? MDF(Main Data File)와 LDF(Log Database File) 파일은 마이크로소프트 SQL 서버 데이터베이스의 기본 구성 요소입니다. MDF : 데이터베이스의 스키마, 데이터, 테이블, 뷰, 프로시저, 트리거 등 핵심 데이터가 담기는 파일입니다. 데이터를 담는 파일이니 없어서는 안 됩니다. LDF : 모든 트랜잭션과 각 트랜잭션이 수행한 데이터베이스 수정 사항을 기록하는 로그 파일..
MongoDB를 설치하면 리눅스의 경우 mongod.conf가, 윈도우는 mongod.cfg 파일이 생성됩니다. 해당 파일은 몽고DB 서버의 옵션과 설정하는 파일입니다. mongod.cfg 몽고DB의 데몬 프로세스를 mongod라고 부릅니다. 그러니 mongod.cfg 또는 mongod.conf는 몽고DB 프로세스의 configuration(구성)을 의미합니다. 이 파일은 YAML 형식입니다. mongod.cfg 옵션들 1. systemlog 시스템 로그를 쌓는 위치와 로그 레벨을 결정합니다. systemLog: destination: file path: /var/log/mongodb/mongod.log logAppend: true verbosity: 1 2. processManagement 몽고db ..
리눅스 서버에 있는 mysql 기준 이관(Migration) 방법을 단계 별로 기록합니다. DB 이관이라고 해서 생각만큼 거창하진 않습니다. 구 서버에서 백업 파일을 생성하고 신 서버에 해당 파일을 전송, 반영하면 끝납니다. 사용되는 명령어는 mysqldump, scp 등 입니다. MYSQL DB 이관 1. 구 서버 DB 백업 데이터베이스 백업 파일을 생성합니다. mysqldump -u [mysql 사용자계정] -p [데이터베이스명] > [백업파일명] 특정 데이터베이스만 백업하지 않고 모든 데이터베이스를 백업하는 경우엔 [데이터베이스명] 부분을 공란으로 비워둡니다. mysql 계정 비밀번호를 입력하면 백업 파일이 생성됩니다. [root@localhost mysql]# mysqldump -u root -p..
테이블에 있는 데이터를 삭제하는 SQL 명령어로 DELETE와 TRUNCATE이 있습니다. 둘은 다릅니다. 차이점을 정리해보겠습니다. DELETE delete는 레코드를 테이블에서 삭제할 때 사용하는 DML(데이터 조작어)입니다. 테이블 내 행 전체를 제거합니다. WHERE 절을 사용해 조건을 걸어서 삭제 대상을 필터링할 수 있습니다. delete 명령어 수행 전 데이터를 백업하면 추후 원할 때 복원할 수 있습니다. DELETE FROM 테이블명 WHERE 조건; TRUNCATE truncate은 테이블 전체 데이터를 제거하는 DDL(데이터 정의어)입니다. where 절을 사용할 수가 없어서 삭제 대상을 필터링 할 수 없습니다. 테이블의 모든 데이터를 날려버립니다. 이 작업은 로그를 남기지 않기 때문에 ..
하이디SQL(HeidiSQL)은 세션 연결을 통해 RDBMS를 조작할 수 있는 도구입니다. mysql을 리눅스 CLI 환경에서 사용하는 경우 조작이 많이 불편합니다. 이런 경우 하이디로 세션을 연결하면 GUI 환경으로 더 효과적인 DB 작업이 가능합니다. HeidiSQL 세션 연결 CentOS 7에 설치된 mysql (v8.0.31)에 test 계정을 만들고 이 계정으로 하이디 세션을 연결해보겠습니다. 1. mysql 접속 및 계정 생성 mysql에 root 계정으로 접속합니다. [root@localhost ~]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connec..
리눅스 서버가 인터넷이 연결되지 않은 내부망에 있을 경우 yum으로 외부 레포지토리를 이용할 수 없습니다. 이럴 땐 마리아DB 설치 바이너리가 포함된 tar.gz 파일을 이용하면 됩니다. rpm 패키지를 수동으로 설치하는 방법도 있긴 한데, 바이너리 설치가 좀 더 편합니다. 마리아 DB 오프라인 설치 하기 1. 바이너리 파일인 tar.gz 다운로드 인터넷이 가능한 PC에서 마리아DB 서버를 다운받으세요. 마리아DB 공식 재단 사이트에서 마리아DB 버전, 운영체제, 아키텍처, Init 시스템을 선택하고 다운로드를 클릭하면 tar.gz 확장자로 압축된 파일을 확보할 수 있습니다. Download MariaDB Server - MariaDB.org REST API Release Schedule Reportin..
SQL문을 통해 테이블 Collation을 확인하고 원하는 대로 변경할 수 있습니다. Collation은 Character set과 다른 개념입니다. 쉽게 말해 utf8mb4와 utf8mb4_unicode_ci는 다릅니다. 전자는 캐릭터셋, 후자는 콜레이션입니다. 데이터베이스의 캐릭터셋이 같더라도 테이블 간 콜레이션이 다르면 테이블 조인 시 에러가 발생합니다. 테이블 Collation 변경 방법 1. 데이터베이스 캐릭터셋 확인 데이터베이스(DB)는 특정한 기본 캐릭터셋이 적용됩니다. 이를 확인하는 SQL은 아래와 같습니다. mysql> USE 데이터베이스명; mysql> SHOW VARIABLES LIKE 'character_set_database'; [예시] mysql> use mysql mysql> ..
mysql 5.5 버전 이상에서 innoDB 엔진을 사용하면 .ibd 파일이 쌓입니다. 이 파일은 mysql의 테이블 스페이스, 인덱스 등 데이터를 포함하는 파일입니다. ibd 파일은 용량이 줄어들지 않는 게 특징입니다. 예를 들어, table이라는 테이블에 1GB의 데이터를 INSERT하면 table.ibd 파일의 용량은 1GB +입니다. 이때 table 테이블에서 500MB의 데이터를 지우더라도 table.ibd의 용량은 동일하게 1GB입니다. 테이블 스페이스가 여전히 존재하기 때문입니다. ibdata1 파일이란? ibdata1은 innoDB 테이블에 대한 메타 데이터를 포함하는 파일입니다. 테이블 스페이스, 인덱스 등을 포함합니다. 이와 함께 ib_logfile0, ib_logfile1 파일 역시 ..
SELECT, UPDATE, DELETE 문 사용 시 WHERE 절과 함께 AND, OR 연산자를 자주 사용합니다. 특정한 조건에 부합하는 컬럼을 골라내서 쿼리를 수행하기 위해서입니다. AND와 OR의 차이와 함께 대신 사용할 수 있는 NOT IN과 IN도 알아보겠습니다. AND [구문] SELECT * FROM 테이블명 WHERE 조건1 AND 조건2 AND 조건3 ... AND는 명시한 조건이 모두 참(TRUE)인 경우를 의미합니다. [예시] SELECT * FROM CUSTOMER WHERE Country='한국' and City='서울'; 이런 경우 CUSTOMER 테이블에서 Country가 한국이고 City가 서울인 레코드를 조회합니다. 컬럼이 특정 값이 아니어야 한다는 조건도 !=를 이용해 사..