2~3월을 날린걸 이제 알아 후다닥 회고...인지 참회인지 모를 글을 작성하러 왔다.
2월은 이전 프로젝트 마무리를, 3월은 현재 프로젝트의 시작준비를 하느라 얼레벌레의 나날이었다.
이전 프로젝트와 현재 프로젝트의 차이점이 있다면 이전 프로젝트는 C#과 WINFROM, 그리고 MSSQL을 이용해 프로그램을 새로 구축하는 상황이었다면 이번 프로젝트는 원래 있던 솔루션 툴을 리팩토링하는 상황이기 때문에 UI는 솔루션을, DB는 MSSQL을 사용하게 되었다.
전자의 경우 DB를 수정하는 정도였다면 후자는 처음부터 작성하는 경험을 하게 되었다.
맨날 프로시저만 수정하다가 Function부터 새로 작성하는 경험이라니;;;
프론트엔드...보다 백엔드의 업무에 가까워지는 나날이지만 DB를 직접적으로 다루면서 기초다지기한다 셈치고 익숙해져가고 있다;)
솔직히 작성하는 방식이 다를줄 알았는데 작성방식 자체는 동일하다.
서로의 차이점이라고 한다면....
함수는 특정 작업을 수행하기 위한 프로세스를 서술 한거라면 프로시저는 특정 작업을 절차에 맞게 한번에 처리하기 위한 기능 모음 이라 생각한다.
예를 들어 함수는 특정 페이지의 조회의 용도로 사용하는데 프로시저는 페이지의 CRUD를 상황에 맞게 작성한다.
밑에서는 간단하지만 많이 사용했던 SQL 구문들을 정리해보려고 한다.
// 조회조건을 걸고 싶을 때
CREATE 함수/프로시저 명
BRGIN
SELECT NAME
FROM 테이블/프로시저 명
WHERE NAME LIKE '%' + (ISNULL(@NAME,'')) +'%'
RETURN
END
생각보다 '%' + ISNULL(컬럼명,'') +'%' 의 형태를 많이 사용했다.
상황에 따라 '%' + TRIM(ISNULL(컬럼명,'')) +'%'도 사용을 많이 했다.
TRIM이란 문자열의 양쪽 공백을 제거하는 함수로 LTRIM, RTRIM 도 사용가능하다.
ORACLE에서도 사용가능!
// 데이터가 NULL인 값을 처리해야할 때
CREATE 함수/프로시저 명
BRGIN
SELECT NAME
// 기본 형태
, ISNULL(ID,'') AS ID
// 응용 형태
, ISNULL(NULLIF(BOOL,1),1) AS BOOL
FROM 테이블/프로시저 명
WHERE NAME LIKE '%' + TRIM(ISNULL(@NAME,'')) +'%'
RETURN
END
ISNULL(ID,'') AS ID 가 기본형태인데, 이 함수는 조회가 되지만 NULL일 경우 공백으로 나올 수 있게 한다.
다만 예제의 함수는 NULLIF 함수도 포함되어있는데 이 함수는 특정 값이 나올 경우 NULL로 바꾸는 함수이다.
타입이 BOOLEAN형태인 경우에 많이 사용했었다!
DB자체를 입력할 수 있다는건 아주아주 가벼운 프로젝트에서 적용할 수 있는 기술 아닌가?!!! 싶은 마음에 안써본 몽고DB를 천천히 공부해볼까.... 한다
혼자서 프론트도 하고 백엔드도 하고... 얇지만 넓게 찍먹해보는건 좋은거 아닌가?!!!!
여하튼 이것저것 찍어먹어볼 수 있는 환경이 주어졌는데 장점과 단점이...
이 동시에 피어올랐다.
사실 다른 쪽으로 틀 수 있는 상황이 아니라 반강제적으로 임해야하다보니 이런 상황에 부닥쳤다.
신경써주시는게 너무 감사하고 이견이 없지만 하필 나한테는 블랙 PTSD가 있다.
이게 뭐냐고?
블랙을 골라 다니던 디자이너 시절 대표들과 1:1로 스터디와 피드백을 하면 일방적이고 감정적인 폭언과 행동(집기 던지기 등)이 따라왔던지라 짐중적으로 체킹하면 몸이 굳는다는거다
진짜 구라같다 아직도 나는 그때를 못벗어나고 있다는게...
그래서 이게 우울함을 지속시키는 원인이 되는데 어떻게 해소할 수 있을지 아직도 고민중이다.
개발하면서 생기는 고민들이 복합적인것들 뿐이라 생각이 많은 4월이다;)