오라클에서 한글 초중종성 검색을 구현하는 방법이다 저는 자음만 하고 싶어서 자음만 하는 방법도 있습니다. 1. 한글을 초중종성을 나눠주는 FUNCTION 생성 CREATE OR REPLACE FUNCTION FN_GET_KOREA_SYLLABLE ( i_p1 IN VARCHAR2 ) RETURN VARCHAR2 AS l_rt VARCHAR2 (4000); FUNCTION f1 ( i_p1 IN VARCHAR2 ) RETURN VARCHAR2 AS l_p1 PLS_INTEGER := ASCII (UNISTR (i_p1)); l_i0 PLS_INTEGER := l_p1 - TO_NUMBER ('AC00', 'XXXX'); l_i1 PLS_INTEGER := TO_NUMBER ('1100', 'XXXX') +..
DB/SQL
숫자나 날짜를 문자로 변환해 주는 함수 SELECT TO_CHAR(숫자 혹은 날짜, fomat) FROM 테이블명; 더보기 SELECT TO_CHAR(123456789, '999,999,999') FROM DUAL; 결과 SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL; 결과 날짜 변환 형식 포맷 설명 사용 예 AM, A.M. 오전 TO_CHAR(SYSDATE,'AM') →오전 PM,P.M 오후 TO_CHAR(SYSDATE,'PM') → 오후 YYYY, YYY, YY, Y 연도 TO_CHAR(SYSDATE,' YYYY') → 2024 MONTH, MON 월 TO_CHAR(SYSDATE, ‘MONTH’) → 2월 MM 01 ~ 12 형태의 월 TO_CHAR(SYSDAT..
trigger 정의 테이블에 연결해서 사용하는 형태 INSERT, UPDATE, DELETE 작업이 수행 될때 특정 코드가 동작하도록 하는 구문 예시) 쇼핑몰에서 소비자가 PC를 1개 샀습니다. 그러면 판매글에서 남은 수량이 1개 줄어 들겠죠? 이 일련의 과정을 코드로 짯다고 생각해 봅시다. 그러면 제가 PC를 1개 사는 코드 / 판매글의 남은 수량이 1개 줄어드는 코드 각각 작성하고 실행시켜 주어야 겠죠? 그런데 쇼핑몰에서 물건을 사는 행위는 광장히 많이 일어 납니다. 그때 마다 코드를 각각 실행 주기에는 비효율적이기 때문에 물건 1개 사면, 자동적으로 판매글의 남은 수량 1개 줄어드는것 이 역할을 해줄수 있는 애가 바로 trigger 입니다. trigger 의 종류 AFTER DML(INSERT, U..
SQL 중간에 분기처리 또는 조회 결과를 변수로 사용하거나 예외처리를 하는 기능은 제공되지 않는다. 이러한 SQL의 단점을 개선해서 나온것이 바로 PL/SQL(Procedural Language extension to SQL)이다. PL/SQL 정의 SQL을 확장한 절차적 언어. 여러 SQL을 하나의 블록(Block)으로 구성하여 SQL 제어 Commit, Rollback, 예외처리 등 조건문(IF),반복문(LOOP)을 사용하여 대용량 테이터 처리 할때, 데이터 분할하여 처리할 수 있음 동적 SQL를 통하여 문자열로 작성된 SQL 실행할 수 있으며, DML, DDL, DCL 사용 할수 있음 기본구조 DECLARE, BEGIN, EXCEPTION, END 한 블록(Block)을 이룸 DECLARE -- 변..
정의 테이블의 이름을 설정해 주는것 보통 다른 유저의 객체(테이블, 뷰, 프로시저, 함수, 패키지,시퀀스 등)를 참조할 때 많이 사용 다른유저의 객체를 사용할 때 유저의 이름과 객체의 실제 이름을 사용하는데, 그 두 개를 감춤으로써 데이터 베이스의 보안을 개선하기 위해 사용된다. 0.권한 부여 객체 유저가 두 명(user1/user2)가 있다고 가정할 때, user1이 가지고 있는 테이블에 대해 user2가 접근이 가능하도록 권한을 주어야 한다. 1. CMD 창에 가서 SQLPlus 접속한다 sqlplus sys/java@localhost:1521 as sysdba; 2.권한 부여 GRANT CREATE SYNONYM TO (PC.ID); Synonym 생성 CREATE [PUBLC || PRIVATE]..
null 처리 함수, date 값이 null 값일 때 임의 설정값으로 처리해주기 NVL 함수 NVL(대상데이터, NULL일때 데이터) 더보기 NVL 예시 기본테이블 //DEFAULT SELECT NO, NAME, SALARY FROM TABLE; 결과) SELECT NO, NAME, NVL(SALARY,0) AS SALARY FROM TABLE; 결과) SALARY 컬럼의 NULL 값이 0으로 치환되었음. NULL이 아닌경우 그대로 출력 NVL2함수 NULL이 아닌 경우에도 값을 지정한 값 사용할수 있다. NVL2 (대상데이터, NULL아닐때 데이터, NULL일때 데이터) NULL이 아니면 첫번째 지정값, NULL이면 지정값2를 출력한다. 더보기 SELECT NO,NAME, NVL(SALARY,0) AS..
SEQUENCE 객체 정의 연속, 열거, 순서 의미 자동적으로 번호 생성하기 위한 객체 테이블과 독립이므로 여러 곳에서 사용 가능 SEQUENCE 이용하는 경우 PRIMARK KEY 를 설정할 후보기카 없거나 PK를 특별히 의미 있게 만들지 않아도 되는 경우 자동으로 순서적으로 번호 필요한 경우 INCREMENT BY : 시퀀스 실행시 증가 시킬값 START WITH : 시퀀스의 시작값(MINVALUE과 같거나 커야한다) MINVALUE: 시퀀스가 시작되는 최솟값 MAXVALUE : 시퀀스가 끝나는 최댓값 NOCYCLE | CYCLE : NOCYCLE( 반복안함), CYCLE(시퀀스의 최댓값에 도달 시 최솟값 1부터 다시시작) NOCACHE | CACHE : NOCACHE(사용안함), CACHE(캐시를 ..
집합 연산자를 사용시 집합 구성할 컬럼의 데이터 타입 동일해야함UNION : 합집합 / 중복제거 두 테이블의 결합을 나타내며, 결합 시키는 두 테이블의 중복되지 않은 값들을 반환더보기SELECT SALARY , DEPARTMENT_ID , FIRST_NAME FROM EMPLOYEES e WHERE DEPARTMENT_ID = 50UNION SELECT SALARY , NULL AS DEPARTMENT_ID , FIRST_NAME FROM EMPLOYEES e2 WHERE DEPARTMENT_ID = 30;UNION ALL : 합집합 / 중복 제거 안함UNION과 같으나두 테이블 중복되는 값까지 반환더보기SELECT deptno FROM emp UNION ALL SELECT dep..
정의 SQL 구문 안에 또 다른 Select 구문 DML문과 CREATE TABLE 또는 VIEW 이용 알려지지 않은 조건에 근거한 값들을 검색하는 select문장 작성 유용 Main Query 실행되기 이전에 한번 실행 가이드라인 괄호()로 묶음 연산자와 사용할 경우 오른쪽 배치 ORDER BY 사용할 수 없다. 두 종류의 비교 연산자들이 서브 쿼리 사용 단일 행 연산자 (=, >, >=, A.AVG_MILEAGE; 결과창 단일행 서브쿼리 오직 한개의 행(값)을 반환 단일 행 연산자( =, >, ALL(SELECT sal FROM emp WHERE job='SALESMAN'); EXISTS 연산자 서브쿼리의 데이터가 존재하는가의 여부를 먼저 따져 존재하는 값들만 결과로 변환 서브쿼리에서 적어도 1개의 ..
GROUP BY 절 기본 사용 방법 특정 칼럼을 기준으로 집계를 내는데 사용 SELECT GROUP BY 절에 지정된 컬럼1, GROUP BY별로 집계할 값 FROM 테이블명 GROUP BY 그룹으로 묶을 컬럼 값; 더보기 1. Class는 반 명이며 name 학생 이름 score는 해당 학생의 성적 점수 SELECT CLASS, SUM(SCORE) FROM TBL_REPORT_CARD GRUOP BY CLASS; Having절 사용법 Having 절: Group by로 집계된 값 중 where 절 처럼 특정 조건 추가 SELECT GROUP BY 절에 지정된 컬럼1, GROUP BY별로 집계할 값 FROM 테이블 명 GROUP BY 그룹으로 묶을 컬럼 값 HAVING 조건 추가 ; 더보기 1. 학급별 ..