파일을 작성하거나 수정하기 위해서는 편집기가 필요합니다. 윈도우에서는 메모장을 편집기의 기본으로 지원하는 반면 리눅스에서는 기본 편집기로 vi 라는 편집기를 지원합니다. vi는 리눅스에서 일반적으로 사용하는 화면 편집기 입니다. 명령이 매우 단순하여 빠르게 편집할 수 있어 사용법만 익힌다면 효율적으로 활용하실 수 있습니다. 이번 포스팅에서는 리눅스 문서 편집기 vi를 사용하는 방법에 대해 알아보도록 하겠습니다. 리눅스 문서 편집기 vi 열기 vi example.txt -> example txt 파일 실행 (example.txt 파일이 없으면 빈 파일이 실행됩니다.) vi -> vi 편집기 실행 (빈파일) vi를 시작할때는 파일을 지정할 수 있습니다. 지정한 파일이 존재하는 파일이면 해당 파일이 열리고 없..
동적쿼리란? 동적쿼리란 실행시에 쿼리문장이 만들어져 실행되는 쿼리문을 말합니다. 쿼리문이 변하냐 변하지 않느냐에따라 변하지 않으면 정적쿼리 변한다면 동적쿼리로 생각하시면 됩니다. 대부분 동적쿼리를 사용할때에는 텍스트문장으로 쿼리문을 가지고 있다가 실행할때마다 텍스트 쿼리문장을 바꿔서 실행하는 방식을 사용합니다. 동적쿼리 사용법 BEGIN EXECUTE IMMEDIATE '쿼리문 (선언한 변수활용)' END; 동적쿼리를 사용하는 방법은 DECLARE상에서 동적으로 받을 변수를 먼저 생성한 후 생성한 변수를 활용해서 쿼리문을 작성한 후 EXECUTE IMMEDIATE로 실행시켜주시면 됩니다. 동적쿼리 예제 CREATE OR REPLACE FUNCTION FUNC1( W_PRODUCT_ID IN NUMBER ..
패키지란? 패키지란 변수, 상수, 서브프로그램등의 항목을 묶어놓은 객체입니다. 여러가지 항목들을 모아 하나의 이름으로 묶어놓은 객체라고 생각하시면 됩니다. 패키지는 컴파일 과정을 거쳐 데이터베이스에 저장되며 다른 프로그램에서 패키지의 항목을 참조하고 실행할 수도 있습니다. 패키지를 사용하는 이유 프로그래밍을 하다보면 프로시저같은 서브 프로그램의 수가 기하급수적으로 많아지게 됩니다. 이렇게 항목들이 많아지게되면 관리하기가 힘들어지게되고 자신이 필요한 항목을 찾는것마저 어려워지는 상황이 옵니다. 이 상황을 방지하기 위해 여러가지 항목들을 좀 더 손쉽게 관리하자라는 요지에서 나온 것이 바로 패키지라는 개념입니다. 패키지 사용법 패키지는 선언부, 본문, 실행부로 이루어집니다. 선언부 CREATE OR REPLA..
커서란? 커서란 특정 SQL 문장을 처리한 결과를 담고있는 메모리 영역을 가리키는 일종의 포인터입니다. 대부분의 SQL문 결과 ROW는 여러개인데 커서를 사용하면 이 ROW에 순차적으로 접근이 가능합니다. 커서의 종류에는 묵시적 커서와 명시적 커서가 있습니다. 묵시적 커서는 오라클 내부에서 자동으로 생성되어 SQL문장이 실행될때마다 자동으로 만들어져 실행되는 커서이고, 명시적 커서는 사용자가 직접 정의해서 사용하는 커서를 말합니다. 이번 포스팅에서는 사용자가 직접 만드는 명시적 커서를 만들어보고 사용하는 방법에대해 알아보도록 하겠습니다. 커서를 만드는 단계 커서를 만드는 단계는 크게 커서 선언 -> 커서 열기 -> 패치 단계에서 커서 사용 -> 커서 닫기 크게 이렇게 4가지로 분류할 수 있습니다. 커서 ..
프로시저란? 오라클에서의 프로시저는 PL/SQL을 통해 만들어집니다. 자주 사용하는 SQL을 프로시저로 만든 뒤 필요 할때마다 호출,사용하여 작업 효율을 늘릴 수 있습니다. 함수는 특정 연산을 수행한 뒤 결과 값을 반환하지만 프로시저는 특정한 로직을 처리하기만 하고 결과 값은 반환하지 않는 서브 프로그램입니다. 프로시저 생성 CREATE OR REPLACE PROCEDURE EX_PROC ( P_DEPARTMENT IN VARCHAR2, P_STUDENT_CNT IN NUMBER ) IS P_UNIVERSITY VARCHAR2(100) := '서울대학교'; BEGIN INSERT INTO UNIVERSITY1 (UNIVERSITY, DEPARTMENT, STUDENT_CNT) VALUES (P_UNIVE..
프로그램을 짜다보면 특정 조건에 맞을때 처리하는 조건문이 굉장히 많이 사용됩니다. 오라클에서 지원하는 PL/SQL에도 이 조건문이 존재합니다. 조건문 IF문 --사용법 IF 조건 THEN 처리문 ELSIF 조건2 THEN 처리문 ...... ELSE 처리문 END IF; IF문은 조건값이 참이면 해당 조건의 처리문장이 실행됩니다. 사용법은 위와같으며 다른 언어와 비교하여 전체적인 구조는 다르지 않으나 3가지가 다릅니다. 조건 다음에 THEN을 붙인다는것이 다르고, 여러개의 조건을 붙일 경우 다른 언어에서는 ELSE IF라고 많이 하지만 PL/SQL에서는 ELSIF 라는 명령어를 사용합니다. 그리고 마지막에는 IF를 끝낸다는 END IF를 붙인다는 점이 다릅니다. DECLARE SCORE NUMBER :=..
WITH절이란 WITH절은 오라클9 이후 버전부터 사용이 가능하며 이름이 부여된 서브쿼리라고 생각하시면 됩니다. 임시테이블을 만든다는 관점에서본다면 VIEW와 쓰임새가 비슷한데 차이점이 있다면 VIEW는 한번 만들어놓으면 DROP할때까지 없어지지 않지만 WITH절의 같은경우 한번 실행할 쿼리문내에 정의되어 있을경우, 그 쿼리문안에서만 실행된다는 차이점이 있습니다. WITH절을 사용하는 이유 WITH절은 복잡한 SQL에서 동일 블록에 대해 반복적으로 SQL문을 사용하는 경우 그 블록에 이름을 부여하여 재사용 할 수 있게 함으로서 쿼리 성능을 높일 수 있는데 WITH절을 이용하여 미리 이름을 부여해서 Query Block을 만들 수 있습니다. 자주 실행되는 경우 한번만 Parsing되고 Plan 계획이 수립..
오라클에서 문자열을 치환하는 함수는 REPLACE와 TRANSLATE가 있습니다. 하지만 둘의 사용용도는 전혀 다릅니다. REPLACE함수의 경우 일반적인 문자열 치환함수라고 생각하면 되고 TRANSLATE는 일종의 치환규칙을 정하는 함수라고 생각하시면 됩니다. 대부분 REPLACE를 많이쓰고 TRANSLATE는 거의 쓰이지는 않습니다만. TRANSLATE함수도 유용하게 쓰일 수 있는 용도가 분명있습니다. 이 용도는 아래에서 설명하겠습니다. 문자열 치환 REPLACE 함수 --사용법(문자열, 바꿀문자열, 바뀔문자열) REPLACE(STR, TARGET_STR, REPLACE_STR) SELECT REPLACE('내가 그린 기린 그림은 잘 그린 기린 그림이다','기린','사자') FROM DUAL --결과..
테이블에 있는 데이터를 삭제할때는 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절에 조건을 명시하지않으면 ..
오라클에서 데이터를 조회하는 명령어는 SELECT입니다. 기본 사용법은 아래와 같습니다. SELECT문 기본형태 SELECT 컬럼 FROM 테이블 WHERE 조건 ORDER BY 컬럼 SELECT문을 말로 표현하자면 어떤 컬럼을 들고올것인지 어디서 들고올것인지? FROM 어떤데이터를 가지고 올것인지? WHERE 어떤 컬럼을 기준으로 정렬할것인지? ORDER BY로 구분될 수 있습니다. 회사 테이블 (COMPANY_TABLE) 의 모든 데이터를 조회 SELECT * FROM COMPANY_TABLE 가장 기본적인 구조의 SELECT문입니다. 테이블에 있는 모든 데이터의 컬럼을 조회하려면 컬럼명을 일일히 나열할 필요없이 * 을 사용하시면 됩니다. 회사 테이블(COMPANY_TABLE)에서 업종(TYPE)이 ..
뷰(View)란 무엇인가? 뷰(View)는 하나 이상의 테이블이나 다른 뷰의 데이터를 볼 수 있게 하는 데이터베이스 객체입니다. 실제 데이터는 뷰를 구성하는 테이블에 담겨 있지만 마치 테이블처럼 사용할 수 있습니다. 또한 테이블 뿐만 아니라 다른 뷰를 참조해 새로운 뷰를 만들어 사용할 수 있습니다. 뷰(View)의 사용 목적 코딩을 하다보면 여러개의 테이블에서 필요한 정보를 뽑아 사용할때가 많습니다. 이때 좀 더 편리하게 사용할 수 있는 방법중의 하나가 바로 뷰입니다. 뷰를 사용하면 복잡한 질의를 쉽게 만들어 줍니다.. 여러테이블의 JOIN과 GROUP BY 같은 같은 복잡한 쿼리를 view로 저장시켜놓으면 다음부터는 저장한 view의 정보만 가져오면 되므로 쉽게 좀 더 편리하게 사용할 수 있습니다. 일..
조건문 switch문 switch문은 if문과 같이 조건 제어문에 속합니다. 하지만 switch문은 if문처럼 조건식이 =와 같은 이상, 이하, 초과, 미만 같은 부등식이 사용될 수 없습니다. if문은 조건식이 true일 경우에 블록이 실행된다고 하면 switch문은 비교할 변수가 어떤 값을 가지냐에 따라 실행문을 선택됩니다. 오직 ==만 비교할 수 있는것인셈입니다. 그러므로 모든 switch문은 if문으로 바꿀 수 있지만 if문에서 부등식이 사용된 경우에는 switch문으로 치환하실 수 없습니다. 하지만 switch문을 사용함으로써 if문보다는 좀 더 코드의 가독성이 좋게끔 작성하실 수 있고 if문보다 미세하게 switch문이 빠르기에 switch문으로 작성할 수 있는 코드가 있다고하면 if문보다 sw..