쿼리를 이용하다 보면, 어떤 값과 배열을 비교하여 하나라도 존재하면, true를 반환해줘야 하는 일이 생긴다. 그럴 때 보통 자주 사용하는 게, IN 연산자이다. 그런데 Postgresql에서는 IN과 비슷한 기능을 하는 ANY 연산자를 지원한다. 오늘은 ANY연산자와 IN 연산자를 알아보도록 하자~ 주로 사용하는 상황은 다음과 같다. B나는 배열에서 A라는 컬럼과 같은 값을 지닌 값이 존재 할 경우 true를 반환, A라는 컬럼값이 서브쿼리로 반환 되는 B라는 값에 존재 할 경우 true를 반환 등등 배열이나 값이 여러개 일 때 비교하기 위해 사용한다. 그럼 바로 ANY와 IN에 대해 알아보자. 우선 기본적인 문법은 다음과 같다. SELECT [컬럼] FROM 테이블 [WHERE] 컬럼 =ANY(배열)..
오늘은 Postgres에서 지원하는 기본적인 배열함수를 알아보자. 물론 툴은 DBeaver를 사용 할 것이고, 웹로그 테이블을 테스트 테이블로 사용한다. 1. array_agg 2. array_to_string, string_to_array 3. unnest 이렇게 3개의 함수를 지원한다. 그럼 바로 하나하나 알아보자. 1. array_agg ============================================================================ array_agg는 여러 row를 하나의 배열로 만들고자 할 때 사용하는 함수이다. inner조인으로 가져온 row값들은 보통 각각 다른 행으로 이루어 진다. 하지만 가져온 행값을 하나의 배열로 사용해야 할 때가 있다. 예를 들면..
작업을 하는데 왜인지 중복된 값들이 많이 들어있는 것 같았다. 그런데 정확히 몇개가 있는지 몰라 작업 진행을 어떻게 해야 할 지 감이 안오는... 그런 상황이 발생 그래서 테이블에 중복 된 값이 얼마나 있는지 알아보자 SELECT [컬럼명] COUNT([컬럼명]) FROM [테이블명] GROUP BY [컬럼명] HAVING COUNT([컬럼명]) > 1; 위의 쿼리를 그냥 사용하면 된다 . 아래는 해당 쿼리로 돌려본 결과물. 어려운 게 없으니 그냥 해당 쿼리를 갖다 쓰면 될 것 같다. 위와 같이 나왔다. 그냥 그룹으로 묶어서 해당 count가 1보다 많으면 중복이 되는 것이니, 얼마나 많은 컬럼이 얼마나 많이 중복되고 있는지 알 수 있다~
저장 프로시저(함수)란? SQL로 만든 함수로, 이 함수 안에는 여러 SQL문을 작성하여 사용이 가능하다. 저장 프로시저(함수)를 사용하는 이유는? 단위 하나로 작업을 만들어 필요할 때마다 호출이 가능하며, 이는 반복적인 작업을 줄여주며, 여러개의 SELECT문이나 UPDATE, INSERT문을 하나의 프로시저(함수)에서 묶어 실행함으로써, 불필요한 네트워크 통신 횟수를 줄여 더 빠르게 DBMS연산 결과를 얻을 수 있다. 또한 프로시저(함수) 호출 시 인자만을 변경하여 빠르고 쉽게 재활용이 가능하다. Postgres에서는 PL/pgSQL을 활용하며 이는 Oracle의 PL/SQL과 유사하다. 1. function_name : 생성하고자 하는 사용자 함수의 이름 2. param1, param2 : 함수에서..
VIEW TABLE(뷰테이블)이란?? 뷰테이블이란 일반 테이블이 물리적(저장장치)에 저장되는 것과는반대로 실제로 존재 하지 않는 논리적인 테이블로, 사용자에게는 존재하는 것으로 간주된다. 뷰 테이블을 사용하는 이유는 1개 이상의 테이블, 뷰테이블을 조인하여, 필요한 데이터로 구성 된 가상의 테이블을 만듦으로써, 보안 및 필요한 데이터의 관리를 용이하게 해준다. ============================================================================ 나에게는 다음과 같은 사용자 로그 테이블이 있다. 데이터가 약 196만개나 있다... 그리고 아래와 같이 해당 사용자의 이름을 가진 테이블이 있다고 하자. 이 상황에서 양쪽 테이블에 존재하는 사용자의 이름을 출력..
이번에 프로젝트를 하면서 프로시저 이야기가 나와서 한번 정리를 해보았다. 오라클을 공부할 때는 프로시저를 많이 들어봤었는데, Postgres에서는 프로시저에 대한 내용을 찾을 수 없어 구글링을 해보니, ** Postgres에서는 저장 프로시저(stored Procedure)를 사용하지 않고 함수(Funtion)를 사용한다고 한다. ** 쉽게 말해서 Postgresql에서 우리가 아는 Procedure = Function 이라고 생각하면 될 것 같다. ** 함수가 프로시저를 포함하고 있기 때문, Postgres에서 프로시저를 사용하지 못하는 것은 아니다. 프로시저와 함수 둘 다 사용 가능. 본문에서는 프로시저와 함수 둘다 생성해보고 사용해보겠다. 여기서 저장 프로시저란(함수)? 다음과 같다. 프로시저와 함..