개발공작소
728x90
article thumbnail
[Postgres] ANY 연산자에 대해 알아보자. ( feat. 배열 함수 및 IN 연산자)
데이터베이스/쿼리 2022. 2. 5. 02:13

쿼리를 이용하다 보면, 어떤 값과 배열을 비교하여 하나라도 존재하면, true를 반환해줘야 하는 일이 생긴다. 그럴 때 보통 자주 사용하는 게, IN 연산자이다. 그런데 Postgresql에서는 IN과 비슷한 기능을 하는 ANY 연산자를 지원한다. 오늘은 ANY연산자와 IN 연산자를 알아보도록 하자~ 주로 사용하는 상황은 다음과 같다. B나는 배열에서 A라는 컬럼과 같은 값을 지닌 값이 존재 할 경우 true를 반환, A라는 컬럼값이 서브쿼리로 반환 되는 B라는 값에 존재 할 경우 true를 반환 등등 배열이나 값이 여러개 일 때 비교하기 위해 사용한다. 그럼 바로 ANY와 IN에 대해 알아보자. 우선 기본적인 문법은 다음과 같다. SELECT [컬럼] FROM 테이블 [WHERE] 컬럼 =ANY(배열)..

article thumbnail
[Postgres] Procedure(프로시저), Function(함수) 정리
데이터베이스/쿼리 2022. 1. 18. 12:53

저장 프로시저(함수)란? SQL로 만든 함수로, 이 함수 안에는 여러 SQL문을 작성하여 사용이 가능하다. 저장 프로시저(함수)를 사용하는 이유는? 단위 하나로 작업을 만들어 필요할 때마다 호출이 가능하며, 이는 반복적인 작업을 줄여주며, 여러개의 SELECT문이나 UPDATE, INSERT문을 하나의 프로시저(함수)에서 묶어 실행함으로써, 불필요한 네트워크 통신 횟수를 줄여 더 빠르게 DBMS연산 결과를 얻을 수 있다. 또한 프로시저(함수) 호출 시 인자만을 변경하여 빠르고 쉽게 재활용이 가능하다. Postgres에서는 PL/pgSQL을 활용하며 이는 Oracle의 PL/SQL과 유사하다. 1. function_name : 생성하고자 하는 사용자 함수의 이름 2. param1, param2 : 함수에서..

article thumbnail
[Postgres] Procedure(프로시저), Function(함수) 생성 및 사용
데이터베이스/쿼리 2022. 1. 17. 20:46

이번에 프로젝트를 하면서 프로시저 이야기가 나와서 한번 정리를 해보았다. 오라클을 공부할 때는 프로시저를 많이 들어봤었는데, Postgres에서는 프로시저에 대한 내용을 찾을 수 없어 구글링을 해보니, ** Postgres에서는 저장 프로시저(stored Procedure)를 사용하지 않고 함수(Funtion)를 사용한다고 한다. ** 쉽게 말해서 Postgresql에서 우리가 아는 Procedure = Function 이라고 생각하면 될 것 같다. ** 함수가 프로시저를 포함하고 있기 때문, Postgres에서 프로시저를 사용하지 못하는 것은 아니다. 프로시저와 함수 둘 다 사용 가능. 본문에서는 프로시저와 함수 둘다 생성해보고 사용해보겠다. 여기서 저장 프로시저란(함수)? 다음과 같다. 프로시저와 함..

article thumbnail
[Postgres] 월별/주별/일별 통계 (2)
데이터베이스/쿼리 2022. 1. 8. 16:12

저번과 이어지는 통계.. - 없는 날짜 JOIN하기 이번에 통계를 내는데 중간 중간에 COUNT가 되지 않는 날짜가 있었다. 예를 들면 주말에 아무도 접속을 안하면 해당 날짜는 테이블에 안들어 가기 때문에 날짜가 붕 떠버리게 되는 것이다. 예를 들면 아래와 같다. 조건에 해당하는 2022-01-01에 맞는 데이터가 없으니 아예 select문에 잡히지도 않는다. 문제는 COUNT가 없는 날짜도 통계로 보여달라는 요청이었다. 그렇다면 아래와 같이 select를 해야된다. sumDt : 2022-01-01 sumCt : 0 이 문제를 해결하려면 2가지 방법이 있다. 1. 날짜 참조 테이블을 만들어 join하기 2. 임시 날짜 참조 테이블을 만들어 join하기 쉽게 풀면 그냥 필요한 만큼(예: 3년치 날짜 테이..

article thumbnail
[Postgres] 월별/주별/일별 통계 (1)
데이터베이스/쿼리 2022. 1. 8. 11:50

이번에 통계를 만들면서 월별/주별/일별 통계를 만든 김에 정리를 해보려고 한다. 우선 월별/주별/일별 통계는 postgresql에서 다음과 같이 간단히 만들 수 있다. ( 테이블은 전자정부에서 제공하는 comtnweblog 테이블을 활용하였다. ) * 쿼리파일은 첨부파일 참조 이렇게 하면 간단하게 통계를 낼 수 있다. 주별 같은 경우도 postgresql에서 제공하는 date_trunc함수를 사용하니 일주일치 통계가 예쁘게 추출되었다. 그냥 날짜를 text로 형변환 해주고 필요한 만큼 자른 뒤 group by처리만 해주면 되니 간단하다. 쿼리문에 대한 기본과 각 SQL에서 지원해주는 함수를 잘 활용하면 될 것 같다.

article thumbnail
[Postgres] 시퀀스 생성 및 사용법 (nextval)
데이터베이스/쿼리 2021. 9. 3. 14:35

보통 게시판에서 게시글을 작성할 때 게시글 번호가 있다. 이 번호는 게시글이 작성될 때마다 자동으로 1씩 증가해야 하는데 이때 사용하면 유용한 것이 바로 시퀀스다. 시퀀스의 정의 : 유일한 값을 생성할 수 있도록 도와주는 객체 라고 한다. 가장 먼저 시퀀스를 생성해보도록 하자. 생성 CREATE SEQUENCE [seq_name] 사용 SELECT SEQUENCE [seq_name] 값 초기화 SELECT setval('seq_name', seq_val, [true/false]) 삭제 DROP SEQUENCE [seq_name] DBeaver을 통해서 CREATE SEQUECE testSeq; 만 입력하여 실행했을 뿐인데, 시퀀스가 쉽게 만들어졌다. testSeq를 열어보리 오른쪽과 같이 상세DDL을 확..

728x90