개발공작소
728x90
article thumbnail
[Postgresql] EXISTS 연산자를 이용하여 존재여부를 확인하자.

오늘은 Postgresql의 EXISTS에 대해서 알아보자. ( 오라클이나 MySQL에도 있으니 알아만 놓으면 어디서나 사용가능! ) 기본문법 SELECT * from [테이블명] where EXISTS (서브쿼리); SELECT * from [테이블명] where NOT EXISTS (서브쿼리); EXISTS는 해당 값이 있는 지 없는 지 체크하는 연산자이다. 그럼 왜 EXISTS를 쓰는걸까? EXISTS를 사용하는 가장 큰 이유는 성능면에서 유리하기 때문이다. 보통 우리가 존재여부를 체크할 때는 count(*)를 많이 쓰기 마련인데.. count(*)와 EXISTS를 비교해보자. -- count(*) 사용 : 안좋은 예 SELECT * from PUBLIC.COMTNWEBLOG C where 1 >=..

article thumbnail
[Postgresql] 공간정보(geom) 포함 테이블 생성시 "geometry" 자료형 없음 에러 [완]

오늘 공간정보(지오메트리)를 테스트 하려고 지오메트리를 포함하는 테이블을 생성하려고 했는데 아래와 같은 에러가 발생하였다. 에러가 발생하는 이유는 확장프로그램인 postgis가 적용되지 않았기 때문.. 아래 쿼리문을 통해 postgis를 적용시킬 수 있다. pgAdmin을 통해 해당 데이터베이스의 쿼리에서 실행하도록 하자. CREATE EXTENSION postgis; 자세한 내용은 ( 링크 )를 참조 하도록 하자. ( 예전에 지오서버 연동 할 때 postgis를 적용해서 해결 한 적이 있어 정리해둔 듯.. )

article thumbnail
[GIS] Postgres의 공간정보(폴리곤)의 면적을 구해보자 ( feat. ST_Area 함수 활용 )
GIS 2022. 4. 6. 20:47

시간 없는 사람은 그냥 아래 쿼리만 갖다 쓰도록 하자. select st_area(공간데이터컬럼명) from 테이블명; ============================================================================ Postgres에는 st_area라는 함수가 있는데.. 폴리곤 등의 공간데이터를 통해 해당 폴리곤의 면적을 구할 수 있다. 아래와 같은 공간데이터를 포함하는 테이블이 있다고 가정해보자.. geom_table 해당 폴리곤의 면적을 확인하는 방법은 아래와 같다. select SIGUN_NM as 시군명, st_area(geom) as 면적 from ct.geom_table; 결과 어려운 건 없으니, 그냥 이런 함수가 있다는 걸 기억해두었다가 사용하도록 하자.

article thumbnail
[Postgresql] 테이블내의 컬럼 정보 조회 ( 데이터 타입, 널 가능여부, 길이, 컬럼명 .... )
데이터베이스/Postgresql 2022. 3. 30. 21:38

가끔 필요할 때가 있는데, 그때마다 찾기가 귀찮아서 이렇게 정리한다. SELECT TABLE_NAME as 테이블이름, column_name as 컬럼명, is_nullable as null가능여부, data_type as 데이터타입, character_maximum_length as 최대길이, character_octet_length, numeric_precision, numeric_precision_radix, numeric_scale FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_CATALOG = [DB명] and table_schema = [스키마명] and table_name = [테이블명] ORDER BY 테이블이름, ORDINAL_POSITION; 여기서 딱 ..

article thumbnail
[Postgresql] View테이블 생성시, Function(함수)를 사용하여 컬럼을 추가해보자.
데이터베이스/Postgresql 2022. 3. 30. 12:55

오늘은 뷰테이블 생성시 필요컬럼을 함수를 통해 추가하는 방법에 대해 정리하려고 한다. 이번에 프로젝트를 하면서 PNU코드에서 산/일반 구분을 추출하였는데, 일반은 1, 산은 2라는 코드만 있을 뿐 실제 지도의 라벨에 뿌려 줄 텍스트를 가지는 컬럼이 없었다. 그래서 저 1과 2라는 값을 통해 산/일반 텍스트를 리턴해주는 함수를 이용하여 컬럼을 추가해주었는데 블로그에 정리가 안되있는 것 같아 정리해본다. get_user_name 함수 생성 CREATE OR REPLACE FUNCTION public.get_user_name(id character varying) RETURNS text LANGUAGE plpgsql AS $function$ DECLARE BEGIN return (select user_name..

article thumbnail
[Postgresql] Function 생성에서 if문을 사용하는 방법. ( IF, ELSE )
데이터베이스/Postgresql 2022. 3. 30. 12:10

기본 문법 (1) IF문 IF [컬럼명] = [조건] THEN [실행 쿼리]..... END IF; (2) IF문 + ELSE IF문 IF [컬럼명] = [조건] THEN [실행 쿼리]..... ELSEIF [컬럼명] = [조건] THEN [실행 쿼리]..... END IF; (2) IF문 + ELSE IF문 + ELSE문 IF [컬럼명] = [조건] THEN [실행 쿼리]..... ELSEIF [컬럼명] = [조건] THEN [실행 쿼리]..... ELSE [실행 쿼리]..... END IF; 예제 -- get_user_name 함수생성 CREATE OR REPLACE FUNCTION public.get_user_name(user_id character varying) RETURNS text LANGU..

728x90