오라클에서 대소문자를 가려주는 함수들이 있습니다. UPPER(대문자로 변환), LOWER(소문자로 변환), INITCAP(첫글자만 대문자로 나머지는 소문자로 변환) 이번 포스팅에서는 이 3가지 함수들의 사용법에 대해 알아보도록 하겠습니다. 대문자로 치환 (UPPER) --사용법 UPPER(문자열) --예제 SELECT UPPER('i am software developer') FROM DUAL UPPER 함수는 매개변수로 들어오는 문자열을 대문자로 변환해주는 함수입니다. 소문자로 치환(LOWER) --사용법 LOWER(문자열) --예제 SELECT LOWER('I AM SOFTWARE DEVELOPER') FROM DUAL LOWER함수는 매개변수로 들어오는 문자열을 소문자로 변환해주는 함수입니다. 첫글..
오라클에서 문자열을 치환하는 함수는 REPLACE와 TRANSLATE가 있습니다. 하지만 둘의 사용용도는 전혀 다릅니다. REPLACE함수의 경우 일반적인 문자열 치환함수라고 생각하면 되고 TRANSLATE는 일종의 치환규칙을 정하는 함수라고 생각하시면 됩니다. 대부분 REPLACE를 많이쓰고 TRANSLATE는 거의 쓰이지는 않습니다만. TRANSLATE함수도 유용하게 쓰일 수 있는 용도가 분명있습니다. 이 용도는 아래에서 설명하겠습니다. 문자열 치환 REPLACE 함수 --사용법(문자열, 바꿀문자열, 바뀔문자열) REPLACE(STR, TARGET_STR, REPLACE_STR) SELECT REPLACE('내가 그린 기린 그림은 잘 그린 기린 그림이다','기린','사자') FROM DUAL --결과..
자바를 비롯한 대부분의 언어의 문자열은 + 라는 연산자를 활용하여 이어붙입니다. 하지만 오라클은 + 기호를 문자열에 사용할 수 없습니다. 오라클에서 +기호는 계산이 가능한 숫자형 컬럼에만 사용이 가능합니다. 문자형 타입에 + 연산을 하게되면 '수치가 부적합합니다.' 수라는 에러메시지가 출력되기에 다른 방법을 써야합니다. 문자열 합치기 연산자 ( || ) --사용법 문자열1 || 문자열2 || 문자열3......... --예제 WITH EXAMPLE AS( SELECT '코딩팩토리의 ' AS STR1, '블로그입니다.' AS STR2 FROM DUAL ) SELECT STR1, -- 문자열1 STR2, -- 문자열2 STR1 || STR2 --문자열 합치기 FROM EXAMPLE 오라클에서 문자열을 붙이려..
이번 포스팅에서는 오라클에서 문자열을 자를때 사용하는 SUBSTR()와 구분자로 자를때 구분자만큼의 위치를 리턴하는 INSTR() 함수에 대해 포스팅하겠습니다. 문자열 자르기 SUBSTR( ) 함수 --사용법(문자열, 시작위치, 길이) SUBSTR(CHAR,POS,LEN) --예제 WITH EXAMPLE AS( SELECT '동해물과 백두산이 마르고 닳도록' AS STR FROM DUAL ) SELECT SUBSTR(STR,1,4), --STR의 1번째 글자부터 4개 자르기 SUBSTR(STR,5,5), --STR의 5번째 글자부터 5개 자르기 SUBSTR(STR,10), --STR의 10번째 글자부터 끝까지 자르기 SUBSTR(STR,-7,3), --STR의 뒤에서 3번째 글자부터 3글자 자르기 SUB..
프로그래밍을 하다보면 데이터가 존재할 경우 / 존재하지 않을경우 특정 액션을 해야하는 상황이 종종 발생합니다.. 이럴때는 EXISTS를 사용하면 편리합니다. EXISTS문 사용법 SELECT 컬럼 FROM 테이블 WHERE EXISTS / NOT EXISTS (서브쿼리); EXISTS의 기본 사용법은 위와같습니다. EXISTS은 논리연산자 중의 하나로써 후행 조건절로 서브쿼리 형태로만 올 수 있습니다. EXISTS문 예제 예제 테이블 & 데이터 위와같은 MASTER DETAIL (1 : N) 테이블 구조를 가진 두개의 테이블과 만들고 데이터를 넣도록 하겠습니다. EXISTS문은 위와같은 MASTER - DETAIL (1 : N) 구조로 이루어진 테이블에서 많이 쓰입니다. 테이블에는 각각 위와같이 데이터가..
MERGE문은 테이블에 원하는 데이터가 있으면 그 데이터를 UPDATE하고 없으면 INSERT하는 구문입니다. 이 문법 PK중복 문제 해결등 각종 문제 해결에 정말 유용하게 사용되는 문법입니다. MERGE문 사용법 MERGE INTO 테이블명 USING 타겟 테이블 ON 타겟 데이터 WHEN MATCHED THEN SET 컬럼1 = 값1, 컬럼2 = 값2, ... WHERE 조건 WHEN NOT MATCHED THEN INSERT (컬럼1, 컬럼2 ...) VALUES (값1, 값2...) WHERE 조건; MERGE문의 기본 사용법은 위와 같습니다. 다른 DML보다 문법이 복잡한편이라 처음 접하면 사용하기 힘들수도 있다 생각됩니다. 이에 아래 간단한 예제를 준비했습니다. MERGE문 예제 테스트 테이블..
테이블에 있는 데이터를 삭제할때는 DELETE문을 사용합니다. 기본 사용법은 아래와 같습니다. DELETE문 기본형태 --DELETE문 DELETE FROM 테이블명 WHERE 조건; DELETE문의 사용법은 위와같습니다. 회사테이블 (COMPANY_TABLE)에 회사코드(COMPANY_CODE)가 1인 데이터삭제 DELETE FROM COMPANY_TABLE WHERE COMPANY_CODE = 1 DELETE문은 위와같은 방식으로 사용하시면 됩니다. DELETE문을 사용하실때에 WHERE절이 잘 명시되었는지 확인하셔야 합니다. WHERE절에 조건을 명시하지않으면 테이블에 있는 전체 데이터의 컬럼 값이 삭제됩니다. 데이터 변경을 실수 했을 경우 대처법 데이터 삭제 실수는 종종 일어납니다. 당황스럽겠지만..
테이블에 있는 데이터를 수정할때는 UPDATE문을 사용합니다. 기본 사용법은 아래와 같습니다. UPDATE문 기본형태 --UPDATE문 UPDATE 테이블명 SET 컬럼1 = 변경할 값, 컬럼2 = 변경할 값 ..... WHERE 조건; UPDATE문 사용법은 위와같습니다. 회사테이블 (COMPANY_TABLE)에 회사코드(COMPANY_CODE)가 1인 데이터의 회사이름(COMPANY_NAME)을 '삼성전자'로 변경 UPDATE COMPANY_TABLE SET COMPANY_NAME = '삼성전자' WHERE COMPANY_CODE = 1 UPDATE문은 위와같은 방식으로 사용하시면 됩니다. UPDATE문을 사용하실때에 주의점은 WHERE절을 잘 확인하셔야 합니다. WHERE절에 조건을 명시하지않으면 ..
테이블에 데이터를 입력할때는 INSERT문을 사용합니다. 기본 사용법은 아래와 같습니다. INSERT문 기본 형태 INSERT INTO 테이블명 ( 컬럼1, 컬럼2, 컬럼3 ) VALUES ( 값1, 값2, 값3 ) 가장 기본적인 형태의 INSERT문입니다. 하지만 위와같은 방식으로 데이터를 삽입할때에는 나열된 컬럼과 값의 타입, 갯수가 일치하여야 합니다. 그렇지 않다면 에러가 납니다. 그리고 컬럼의 위치와 값의 위치가 조금이라도 어긋난다면 원치않는 컬럼에 원치않는 데이터가 INSERT되는 불상사가 발생할 수 있습니다. 회사테이블 (COMPANY_TABLE)에 회사코드(COMPANY_CODE) = 1 회사이름(COMPANY_NAME) = '삼성전자' 업종(SECTORS) = 'IT' 데이터 삽입 INSE..
오라클에서 데이터를 조회하는 명령어는 SELECT입니다. 기본 사용법은 아래와 같습니다. SELECT문 기본형태 SELECT 컬럼 FROM 테이블 WHERE 조건 ORDER BY 컬럼 SELECT문을 말로 표현하자면 어떤 컬럼을 들고올것인지 어디서 들고올것인지? FROM 어떤데이터를 가지고 올것인지? WHERE 어떤 컬럼을 기준으로 정렬할것인지? ORDER BY로 구분될 수 있습니다. 회사 테이블 (COMPANY_TABLE) 의 모든 데이터를 조회 SELECT * FROM COMPANY_TABLE 가장 기본적인 구조의 SELECT문입니다. 테이블에 있는 모든 데이터의 컬럼을 조회하려면 컬럼명을 일일히 나열할 필요없이 * 을 사용하시면 됩니다. 회사 테이블(COMPANY_TABLE)에서 업종(TYPE)이 ..
파티션 테이블이란? 파티션이란 테이블에 있는 특정 컬럼값을 기준으로 데이터를 분할해 저장해놓은 테이블입니다. 이때 논리적인 테이블은 1개이지만 물리적으로는 분할한 만큼 파티션이 만들어져 입력되는 컬럼 값에 따라 분할된 파티션별로 데이터가 저장됩니다. 파티션 테이블을 만드는 목적은 대용량 테이블의 경우 데이터 조회 시 효율성과 성능을 높이기 위한 것입니다. 파티션 테이블 만들기 예제 create table SALES ( sales_no number, sale_year number, sale_month number, sale_day number, customer_name varchar2(30), birth_date date, price number, state varchar2(2) ) partition by..
시노님(Synonym)이란? 데이터베이스 객체는 각자 고유한 이름이 있습니다. 이 객체들에 대한 동의어를 만드는것이 바로 시노님입니다. 한마디로 객체에게 가명을 주는것이라고 생각하면 되며 ALIAS와 비슷합니다. 다만 ALIAS는 1회성인 반면 시노님(Synonym)은 영구적이라고 볼 수 있습니다. 보통 다른 유저의 객체를 참조할 때 많이 사용을 합니다. 실제로 시노님을 사용하는 목적은 다른 유저의 객체를 사용할때 유저의 이름과 객체의 실제이름을 사용하는데 그 두개를 감춤으로써 데이터베이스의 보안을 개선하기위해 사용되어집니다.시노님에는 PUBLIC과 PRIVATE타입이 있습니다. PUBLIC은 모든 사용자가 접근할 수 있고 PRIVATE는 특정사용자에게만 참조가 가능합니다. 시노님(Synonym)생성 -..
시퀀스(Sequence)란? 시퀀스란 자동으로 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체입니다. 보통 PK값에 중복값을 방지하기위해 사용합니다. 예를들어 게시판에 글이 하나 추가될때마다 글번호(PK)가 생겨야 한다고 해보겠습니다. 만약 100번까지 글 번호가 생성되어있다면 그 다음 글이 추가가 되었을 경우 글 번호가 101으로 하나의 ROW를 생성해주어야 할것입니다. 이때 101이라는 숫자를 얻으려면 기존 글번호중 가장 큰 값에 +1을 하는 로직을 어딘가에 넣어야하는데 시퀀스를 사용하면 이러한 로직이 필요없이 데이터베이스에 ROW가 추가될때마다 자동으로 +1을 시켜주어 매우 편리합니다. 시퀀스(Sequence) 생성 --문법 CREATE SEQUENCE [시퀀스명] INCREMENT BY [증..