DB/SQL

세무민의 코딩일기 : DB 함수 공부하기

세기루민 2021. 4. 18. 21:30
728x90

DB에서 쿼리를 많이 작성해 본 경험이 없었다.

그렇지만 회사에서 인턴을 하면서 엄청 느끼고 있는게 

쿼리를 잘 만드는 것이 데이터의 속도를 빠르게 해줄 수 있다.

내가 속한 부서가 대체적으로 운영 및 유지보수다보니 새로운 신기술은 배우기 어렵지만 

DB 쿼리에 대해서 엄청 많이 볼 수 있어서 나름 배울점도 많고 부족한 점도 많다는 걸 느낀다. 

최근에 업무 중에 함수를 제작하고 다양한 쿼리들을 만들면서 

집에서 공부 해야겠다는 마음은 먹었으나....

실상 회사 끝나고 집에 오면 아무것도 하기 싫어져서....

그냥 조금씩 틈틈히 해볼 생각이다. 


오늘은 기본적인 함수를 제작했다. 

기존에 만들었던 테이블을 기반으로 만들었는데 

항공 테이블을 가지고 진행할 예정이다.

항공 테이블은 항공사이름, 나라, 사이트, 전화번호로 간단한 테이블이다.

여기서 나는 항공사이름을 입력했을 때 사이트를 반환해주는 간단한 함수를 만들어 볼 예정이다.

# 함수

CREATE DEFINER=`root`@`localhost` 
FUNCTION `airHompage_Function`(
	airLine_Selection varchar(20)
) RETURNS varchar(50) CHARSET utf8

BEGIN
    declare deairLineHomePage varchar(50);

    select hp
    into deairLineHomePage
    from airline
    where  airlinename = airLine_Selection;
    RETURN deairLineHomePage;

END

기본적으로 함수는 

Create - Begin - End 구조로 되어 있다.

여기서 Create 부분에는 내가 함수를 만들 때 입력값에 대한 설정을 해주면 된다. 

그래서 내가 만든 airLine_Selection은 항공사 이름이 된다.

Begin과 End의 경우 

내가 해당 함수를 통해서 어떤 쿼리를 돌릴 것인지 설명해주면 되는 곳이다. 

declare를 이용하여 변수를 선언해주고 해당 변수에 내가 입력받을 홈페이지 값을 넣어주면 된다.

# 결과

내가 만든 함수를 이용해서 항공명으로 항공사이트를 불러올 수 있게 된다.

단순히 함수를 이용해서 간편하다는 생각도 들 수 있지만 

실제 업무를 하면서 느낀점은 

하나의 프로젝트에 1개의 DB가 아니라 기능별로 DB를 분할하기 때문에 

생각보다 DB가 Join으로 엄청나게 묶여있는 경우가 많다.

그렇기 떄문에 내가 원하는 값을 찾으려면 위와 같이 함수나 프로시저를 이용해서 값들을 가져오는 경우도 생긴다.

따라서 이번 기회에 함수를 제작하는 것의 필요성을 느낄 수 있었다.

다음에는 프로시저와 관련된 포스팅을 해보도록 하겠다.

 

728x90