SQL에서 테이블을 다루다 보면 특정 테이블에 있는 데이터를 다른 테이블에 백업해두고 싶을 때가 있습니다. 이런 경우 테이블 자체를 백업하지 않더라도 간단한 쿼리를 통해 작업이 가능합니다. 테이블 데이터 백업 1. 새로운 테이블로 데이터를 모두 백업 아래의 쿼리는 old_table이라는 테이블의 모든 데이터를 가져와 new_table이라는 이름의 새 테이블을 생성하는 것을 의미합니다. CREATE TABLE new_table AS SELECT * FROM old_table; new_table : 새로 만드는 테이블 이름입니다. old_table : 원본 테이블 이름입니다. 2. 기존 테이블의 일부 데이터만 백업 WHERE 절 조건을 줄 수도 있습니다. CREATE TABLE new_table AS SEL..
이미 만들어진 테이블에도 원하는 대로 컬럼을 추가하고 삭제할 수 있습니다. ALTER TABLE 명령어와 함께 ADD, DROP COLUMN을 사용합니다. 다만, 컬럼 수정은 테이블 구조 자체가 변경되는 것이기 때문에 상용 서비스에선 신중하게 접근해야 하는 점은 참고하시기 바랍니다. ALTER TABLE 컬럼 추가 (ADD) SQL에서 테이블에 컬럼을 추가하려면 ALTER TABLE 명령어와 ADD를 함께 사용하시면 됩니다. ALTER TABLE table_name ADD column_name column_type; table_name : 컬럼을 추가하려는 테이블입니다. column_name : 추가하려는 컬럼명입니다. column_type : 추가하는 컬럼의 타입입니다. (예시 : varchar, in..
테이블에 대한 요구사항이 바뀌었거나, 성능을 최적화하는 등 이유로 DB 스키마를 변경해야 할 때 제약조건을 삭제해야 하는 상황이 있을 수 있습니다. 이럴 때 MYSQL에서 사용하는 게 ALTER TABLE과 DROP INDEX 조합입니다. DROP INDEX MYSQL에서 테이블의 제약조건(CONSTRAINT)을 삭제하기 위해서는 ALTER TABLE 명령어와 함께 DROP INDEX 키워드를 사용합니다. ALTER TABLE table_name DROP INDEX constraint_name; table_name : 제약조건을 삭제하려는 테이블의 이름입니다. constraint_name : 삭제하려는 제약조건의 이름입니다. 예시) EMAIL 컬럼에 UC_Email라는 이름의 제약조건이 걸려있는 empl..
REPLACE SQL에서 REPLACE 함수는 문자열 내에서 지정된 문자열을 다른 문자열로 바꾸는 데 사용됩니다. 예를 들어, 공백이 포함되어 저장된 컬럼 값이 있어도 replace 함수를 이용하면 공백을 제거하고 해당 데이터를 조회할 수 있습니다. 구문 REPLACE(column_or_string, old_string, new_string) column_or_string : 원본 문자열 또는 문자열이 포함된 컬럼입니다. old_string : 원본 문자열에서 변경할 부분입니다. new_string : old_string을 대체할 새로운 문자열입니다. 간단한 예로 'Hello World'라는 문자열에서 World를 SQL로 변환하여 조회할 경우 아래와 같이 쿼리합니다. SELECT REPLACE('Hel..
IFNULL SQL에서 IFNULL 함수는 컬럼 값이 NULL인 경우 정해진 값으로 대체할 때 사용됩니다. SQL에서 NULL이라는 값은 상당히 자주 볼 수 있고, NULL이어서는 안 되는 옵션이 설정되는 등의 제약도 있기 때문에 이런 면에서 유용하게 사용할 수 있는 함수입니다. 구문 SELECT IFNULL(column_name, replacement_value) FROM table_name; column_name : 검사할 컬럼 값 replacement_value : 검사한 컬럼값이 NULL인 경우 대체할 값 table_name : 조회할 테이블명 예시 1) 보너스가 NULL인 경우 0으로 대체 아래와 같이 직원들의 정보가 담긴 Employees 테이블이 있다고 가정합니다. 보너스가 NULL인 직원들..
SUBSTR 함수는 SQL에서 특정 문자열의 부분 문자열을 추출하는 데 사용됩니다. DBMS 별로 함수명에 차이가 조금 있습니다. MYSQL과 오라클은 SUBSTR()을, MS SQL Server, PostgreSQL은 SUBSTRING()을 사용합니다. 사용법은 거의 비슷하지만 이 글에선 SUBSTR를 기준으로 알아보겠습니다. SUBSTR 구문 SUBSTR(string, start_position, length) string : 부분 문자열을 추출하려는 문자열 start_position : 문자열에서 부분 문자열이 시작되는 위치. 첫 번째 문자의 위치는 1 length : 추출할 부분 문자열의 길이 예시 1) 성과 이름 구분 아래와 같이 한국 사람 이름이 저장된 People 테이블이 있다고 가정합니다...
SQL에서 AVG 함수는 특정 컬럼의 평균값을 계산하는 데 사용됩니다. 숫자만 계산하며 NULL 값이 있으면 무시하고 NULL이 아닌 값들에 대해서만 평균을 계산합니다. AVG 구문 SELECT AVG(column_name) FROM table_name; column_name : 평균을 계산하려는 컬럼명 table_name : 평균을 계산하려는 컬럼명이 포함된 테이블명 예시 1) 모든 주문의 평균 금액 예를 들어, 아래와 같이 데이터가 있는 orders 테이블이 있다고 가정합니다. 모든 주문의 평균 금액을 계산하라면 아래와 같이 간단하게 사용합니다. SELECT AVG(amount) FROM orders; 예시 2) 각 고객별로 주문 금액의 평균 고객별로 주문 금액의 평균을 반환하려면 GROUP BY 절..
SQL에서 SUM 함수는 특정 컬럼의 총합을 구하는 데 사용됩니다. SUM 함수는 숫자 데이터에만 사용할 수 있으며, 만약 NULL 값이 있는 경우 NULL 값을 무시하고 계산합니다. SUM 구문 SELECT SUM(column_name) FROM table_name; column_name : 합산하려는 컬럼명 table_name : 합산하려는 컬럼이 속한 테이블명 예시 1) 주문 총합계 아래와 같이 주문 정보가 담긴 orders 테이블이 있다고 가정합니다. 모든 주문의 총합계를 구하려면 아래와 같이 사용합니다. 별칭(as)은 필요에 따라 사용하시면 됩니다. sum 함수를 사용할 땐 반환 값의 의미를 명확하게 표기하기 위해 사용하는 경우가 많습니다. SELECT SUM(amount) AS total_am..
PostgreSQL에서 데이터를 백업하는 방법이 몇 가지 있습니다. 이 글에서는 비교적 직관적인 방법으로 볼 수 있는, 텍스트 파일 덤프를 이용해서 sql문을 저장하고 데이터를 복구하는 방법을 알아보겠습니다. 사용한 OS는 CentOS 7입니다. PostgreSQL 백업 및 복구 방법 먼저 현재 저장된 데이터를 보면 testdb라는 데이터베이스와 users 테이블에 일부 샘플 데이터가 있습니다. 이 데이터를 지우고 복구하는 테스트를 진행합니다. postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-----..
리눅스 CentOS 배포판에 PostgreSQL을 설치하는 방법을 알아보겠습니다. postgresql은 설치와 로그인 과정에서 mysql, mariadb 등과 조금 다른 점이 있기 때문에 이 부분은 확인이 필요합니다. PostgreSQL 설치 방법 1. yum 레포지토리 설치 이 글은 리눅스 CentOS 7 버전을 기준으로 설명합니다. 리눅스 배포판에 따라 설치해야 하는 레포지토리 주소가 다르기 때문에 고려해서 설치해 주세요. CentOS 7 버전은 아래의 명령어로 yum 레포지토리를 설치하면 됩니다. [root@localhost ~]# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-..