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

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

article thumbnail
[SQL] JOIN에 대한 정리 ( INNER, OUTER, LEFT, RIGHT ) (1)
데이터베이스/쿼리 2022. 1. 9. 15:43

JOIN은 관계형 데이터베이스 (일반적으로 많이 쓰이는 Table, 행, 열 로 이루어진 데이터 베이스 ) 에서 많이 사용한다. 그럼 바로 하나씩 알아보자. ( JOIN을 공부하기 앞서 테스트용 Table 2개는 필수 - 첨부파일(dump.txt) 참조 나는 comtnweblog와 userTable 이렇게 2개를 만들었다. 그럼 바로 이 2개의 테이블을 가지고 한번 테스트를 해보겠다. 1. INNER JOIN INNER JOIN 이름은 생소할 지 몰라도 누구나 다 한번 쯤은 써봤을 것이다. 핵심은 조건에 해당 되는 컬럼들만 포함한다. 기본 문법은 다음과 같다. (좌) inner join (우) where 테이블A와 테이블B에 있는 컬럼중 조건에 부합( a.column과 b.column이 같은 )하는 녀석..

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