목록데이터베이스 (12)
여행을 개발하다

MariaDB를 사용하여 개인 프로젝트를 진행하다가, 이미 생성되어 있는 테이블에 컬럼을 추가해야 할 일이 생겼다. MariaDB도 컬럼을 추가하는 SQL은 일반적인 데이터베이스에 사용하는 DCL과 다를 바가 없다. ALTER TABLE 테이블명 ADD COLUMN 컬럼명 데이터타입 하지만 다른 DBMS(Oracle, MS-SQL...)처럼, 이미 생성되어 있는 테이블에 컬럼을 추가할 때는 기본적으로 가장 마지막 위치에 추가된다는 점. 이 말이 무엇이냐 하면... 가령 어떤 테이블에 A~C 컬럼이 있는데, D라는 신규 컬럼을 추가한다면 당연히 C 컬럼 뒤에 추가된다는 이야기다. 하지만 이미 추가된 컬럼들 사이에 신규 컬럼을 넣고 싶을 때가 분명 있었다. 이는 다른 DBMS에서도 마찬가지. MariaDB에..

MS-SQL의 string_split 함수에 대해 포스팅하고자 한다. 1. string_split 함수란? - 문자열을 지정된 구분자 기준으로 나누어 다수의 record로 표시해 준다(MS-SQL 내장함수). - C나 JAVA에서의 'split' 함수와 동일한 기능을 한다. - 반환하는 단일 column 명은 'value'이다. 2. 사용법 - 인수는 구분하려는 ① 문자열과 ② 구분자(seperator)이다. 예를 들어, 쉼표(,)로 연결되어 있는 '미국,영국,호주,캐나다,이탈리아,한국,중국,일본'이라는 문자열을 다수의 열로 나누어 리턴 받고자 한다면 다음과 같이 함수를 사용하면 된다 (MS-SQL에서 한글이 깨지는 현상을 방지하기 위하여 '' 대신 N''을 사용하였다). SELECT value FROM..

오라클의 계층형 쿼리와 대표적인 계층형 쿼리 구문인 START~WITH 구문에 대해 이야기해보고자 한다. 먼저 계층형 쿼리가 무엇인지에 대해 알아본다. 계층형 쿼리? - 한 테이블에 담겨 있는 여러 레코드들이 서로 상하 관계(부모, 자식) 관계를 이루며 존재할 때, 이 관계에 따라 레코드를 hierarchical(상하위) 한 구조로 가져올 때 사용되는 SQL을 의미한다. 역시 단어 그 자체로만 설명하려니 어려운데, 쉽게 생각하면 조직도, 메일함, 문서함 등을 예로 들 수 있다. 위 회사 조직도는 최상위에 A 회사를 중심으로 경영지원부, 영업본부로 나뉜다. 그리고 경영지원부는 다시 회계팀, 인사팀, 재무팀, 영업본부는 국내영업팀, 해외영업팀 등으로 나뉜다. 이때, 회계팀, 인사팀, 재무팀의 부모 부서는 경..

이번 포스팅에서는 오라클의 XMLELEMENT, XMLAGG 함수에 대해 이야기하고자 한다. 하지만 각 함수의 고유한 기능보다는, 두 개의 함수를 조합한 '활용'에 더 초점을 맞추려고 한다. * Oracle 10g 버전 이상부터XMLAGG, WM_CONCAT 함수를 조합하면 보다 간단하게 사용 가능하다. 먼저 두 함수의 정의에 대해 알아본다. 1. XMLELEMENT - 정의 : 반환되는 레코드를 XML 요소로 바꾸어준다. - 함수 인수 :XMLELEMENT([태그명], 레코드명) 함수의 이름 자체가 멀리서 보면 가독성이 떨어진다. 하지만 자세히 보면'XML + ELEMENT = XMLELEMENT'이다. 첫 번째 인수에는 XML의 요소로 사용할 태그를 지정하고, 그 뒤에는 SELECT할 필드명을 적어준..

오늘은 Oracle Data Dictionary에 대해 포스팅하고자 한다. 처음 Data Dictionary에 대해 들었을 때는 프로시저나 함수, 트리거와 같이 무엇인가 아주 복잡한 개념으로만 생각했다. 그런데 말 그대로 백과사전이라는 뜻이었고, 오라클 데이터베이스에 대한 수많은 정보를 제공하는 역할을 하고 있었다. '데이터 사전'이라 불리는만큼, 다수의 테이블이 포함되어 있는 데이터베이스를 핸들링 할 때 꽤나 유용하게 사용하고 있다. 1. Data Dictionary란? - 데이터 사전(Data Dictionary)이란 대부분 읽기전용으로 제공되는 테이블 및 뷰들의 집합으로 데이터베이스 전반에 대한 정보를 제공 한다. - 오라클 데이터베이스는 명령이 실행 될 때 마다 데이터 사전을 Access 한다. ..

지난 Join의 정의 및 문법에 관한 포스팅에 이어 ANSI Join & Oracle Join, Join의 종류에 대해 이야기하고자 한다. ANSI Join vs ORACLE Join SQL은 데이터베이스를 관리하기 위해 만들어진 프로그래밍 언어이며, 데이터베이스를 관리해주는 대부분의 Management System(DBMS; 오라클, MS-SQL, MYSQL 등)들은 SQL을 사용한다. 물론, DBMS 자체의 특수성 때문에 SQL의 사용법이 조금씩 다르기도 하지만, 큰 틀에서 보면 나름대로의 보편성을 가지고 있다. 왜냐하면 데이터베이스를 관리한다는 본질은 바뀌지 않기 때문이다. 이를 위해미국 국립 표준 협회(American National Standards Institute,ANSI)에서도 SQL에 대..

이번에는 데이터베이스의 Join에 대해 포스팅하고자 한다. 나는 실무에 투입되기 전, Join 구문을 배운적도 없었기 때문에 사용경험이 단 1도 없는 상태였다. 당연히 SELECT, UPDATE, DELETE, INSERT만 주구장창 배웠고, 예제로 사용했던 데이터베이스도 많아야 2개의 테이블만 포함되어 있었다. 하지만 처음 투입된 셀트리온 프로젝트에서 본 모든 SQL은 JOIN 파티라고 해도 이상하지 않을만큼 그 사용빈도와 중요도가 높았다. 그럼 JOIN이 무엇이고, 그 종류에는 어떤 것들이 있으며, 어느 상황에서 쓰이는지 알아보도록 한다. 조인(Join)이란? - 다수의 테이블에 포진해있는 데이터들을 조합하여 하나의 열(ROW)로 가져올(SELECT) 때 사용한다. - 반드시 테이블들 간 특정 관계(..

이번 포스팅에서는 오라클 PL/SQL의 Function(함수)에 다루고자 한다. 프로시저(Procedure)가 일련의 정해진 작업들을 순차적으로 처리하는데 사용된다면, 함수(Function)는 작업식을 계산하여 특정 값을 리턴받고자 할 때 사용된다. 그럼 Function의 정의, 선언 방법, 문법 및 실행방법에 대해 알아본다. 함수(Function)란? - 보통 값을 계산하고 결과값을 반환하기 위해서 함수를 많이 사용한다. - 대부분 구성이 프로시저와 유사 하지만IN 파라미터만 사용할 수 있다. - 반드시 반환 될 값의 데이터 타입을RETURN문에 선언해야 한다. - 또한 PL/SQL블록 내에서RETURN문을 통해서 반드시 값을 반환해야 한다. 출처 :http://www.gurubee.net/lectur..