서론 개발하다가 DB에서 데이터를 Select 하는 경우가 가장 빈번하다. 그 다음은 데이터를 가공하거나 테스트 데이터를 생성하는 등 DML 데이터 조작 SQL을 작성하는 경우다. 하지만 점점 직접 테이블을 생성하고 수정하며 제약사항을 걸고 기본값을 설정하거나 외래키, 외래키에 대한 옵션 등 자주 사용하지는 않지만 그로 인해 잊어버리기 쉬운 수정(ALTER) DDL을 정리하고자 한다. 컬럼 추가 ALTER TABLE 테이블명 ADD COLUMN 컬럼명 데이터타입 제약조건 자동증가(auto_increment) PK 컬럼 생성 예제 SQL : ALTER TABLE tblTest ADD COLUMN test_seq bigint PRIMARY KEY DEFAULT nextval('test_seq'); -> AL..
Postgresql DB에서 JSON 다루기 - 꼭 한번씩 본인 로컬 DB에서 실습을 해보시기 바랍니다!! 이번 포스팅에서는 PostgreSQL에서 JSON 데이터 타입으로 작업하는 방법을 다룹니다. 또한, JSON 데이터 타입을 다루기 위한 PostgreSQL 연산자 혹은 함수를 소개해보고자 합니다. JSON은 Javascript Object Notation의 약자입니다. JSON은 키-값 쌍으로 이루어진 개방형 표준형식입니다. JSON은 주로 서버와 웹 어플리케이션 사이에 데이터 이동에 사용됩니다. 다른 형식들과는 달리 사람이 읽고 파악할 수 있는 텍스트로 이루어졌습니다. PostgreSQL은 9.2버전부터 기본 JSON 데이터 타입을 지원하였습니다. JSON 데이터를 다루기 위해 많은 연산자와 함수..
Synonym을 사용하는 이유 데이터베이스의 투명성을 제공하기 위해서 사용 한다고 보면 된다. 시노님은 다른 유저의 객체를 참조할 때 많이 사용을 한다. 만약에 실무에서 다른 유저의 객체를 참조할 경우가 있을 때 시노님을 생성해서 사용을 하면은 추후에 참조하고 있는 오프젝트가 이름을 바꾸거나 이동할 경우 객체를 사용하는 SQL문을 모두 다시 고치는 것이 아니라 시노님만 다시 정의하면 되기 때문에 매우 편리 하다. 객체의 긴 이름을 사용하기 편한 짧은 이름으로 해서 SQL코딩을 단순화 시킬 수 있다. 또한 객체를 참조하는 사용자의 오브젝트를 감추 수 있기 때문에 이에 대한 보안을 유지할 수 있다. 시노님을 사용하는 유저는 참조하고 있는 객체를에 대한 소유자, 이름, 서버이름을 모르고 시노님 이름만 알아도 ..
ADD_MONTHS 함수- ADD_MONTHS( Date, Integer )- 반환 : Date- 해석 : input Date 날짜에서 integer로 들어온 숫자만큼의 달을 증가시켜준다. 즉 ADD_MONTHS( 1월2일, 3) -> 4월 2일 반환. 왜 사용하는가? - 개발을 하면서 특정 날짜에서 10달 후 혹은 100달 후의 날짜가 필요할 수 있습니다. 그때 사용하는 함수가 ADD_MONTHS 함수입니다. 기준일과 플러스할 달의 숫자를 인자로 보내면 숫자만큼 지난 날짜가 나오게 됩니다. 지금으로부터 100달후의 날짜를 알고싶으면 ADD_MONTHS(sysdate,100) 이 되겠네요. - 또한 월을 추가할때 부담되는 것이 매년 해당 월의 갯수가 같은것만은 아니라는 것!. 다른 달은 30 or 31일..
프로젝트를 하던 도중 프론트엔드 개발자도 db를 가지고 있어야 하는 상황이 필요했음.그래서 덤프를 뜨려고 했는데 pgadmin에서 db 백업하는 기능이 있다고해서 찾아봄. 백업하는 법 1. pgadmin에서 백업할 Database 우클릭 2. 저장할 백업 파일의 경로를 설정한다. 3-1. 옵션1에서 모든 Data를 선택, Blobs 해제, Don`t save에서 Owner와 privilege 선택 3-2. 그림과 같이 선택한다! 그리고 백업을 누르면!!! 4. pg_dump가 실행된거임... 사실 나는 덤프를 했던것이었다... Done 클릭하면 Backup 완료! 백업파일의 DB 가져오기 1. 빈 데이터베이스를 생성하고 우클릭 Restore 클릭! 2. 백업파일을 가져온다. 3. 다음과 같이 선택한다! ..
트리거를 사용한 게시판 프로젝트에서의 기능(트리거 사용 이유) 1. 게시판의 글을 유저들이 좋아요, 싫어요를 누를 수 있다.2. 유저들은 하나의 게시글에 하나의 좋아요, 싫어요만 표현할 수 있다. ( Toggle 기능처럼 표현 )3. 그렇게 하기 위해 Hate,Likey(like가 예약어라 likey로 하였음) 테이블을 각각 생성하였다. 1234567891011--싫어요create table tblHate( userSeq serial references tbluserinfo(userSeq), boardSeq serial references tblboard(boardSeq)); --좋아요 create table tblLikey( userSeq serial references tbluserinfo(userS..
date_trunc() 함수 trunc하면 보통 버림함수를 많이들 생각합니다. 예)- 어떤 소수자리 숫자가 들어와도.select trunc(1.23232412...) -> 1select trunc(1.99999999...) -> 1 소수점 숫자는 버리는 trunc함수입니다.사실 뒤의 숫자를 버리는 것이 아니라 0으로 만들어 버리는 것인데요.1.0000000 어떤가요? 1과 1.0000 date_trunc함수는 이 trunc함수와 아주 유사합니다. trunc함수는 무작정 숫자를 정수화하지만 특정 소수점까지는 유효하도록 표현할 수 있습니다. 예)select trunc(1.2323,2) -> 1.23select trunc(1.2323,3) -> 1.232 이처럼 말이죠. - date_trunc(text, ti..
신입으로 처음 들어간 회사에서 oracle DB말고 postgresql이라는 DB를 사용해서 Postgresql을 처음 배웠을때recursive 문을 배웠습니다. 자바의 for문과 비슷한 원리로 돌아가는 반복문인데 구조는 다음과 같습니다. recursive문의 기본 구조 12345678with recursive 뷰명 as( 초기 SQL union all(or union) 반복할 SQL(+반복을 멈출 where절 포함) )select * from 뷰명;cs 원리1. 초기 SQL을 실행하면 실행한 결과셋은 recursive문을 선언할때 기재한 뷰에 담긴다.2. 반복할 SQL의 from 절에 뷰명을 이용해서 처리하거나 한다. 이는 상황에 따라 다르지만 주로 뷰명을 from절에 두고 반복문을 돌리는 것이 일반적..