본문 바로가기

DataBase/Oracle

[퍼옴]Ampersand나 특수 문자를 갖는 데이타를 insert하는 방법 -- 테스트 테이블 생성 SQL>CREATE TABLE test_str( val varchar2(10)); -- 테이블에 아래와 같이 특수문자를 인서트 할경우 SQL> INSERT INTO test_str VALUES('Q&A'); a의 값을 입력하십시오: -- 이런 문장이 나옵니다.. -- 특수문자를 갖는 데이터를 인서트 하기 위해서는 다음과 같은 세 가지 해결 방법이 있습니다. ▒ 첫번째 방법 SQL*Plus에서 SET DEFINE OFF나 SET SCAN OFF를 실행하여 Substitution Variable(&)을 Turn Off시킨다. SQL> SET DEFINE OFF SQL> INSERT INTO test_str VALUES('Q&A'); 1 개의 행이 만들어졌습니다. SQL>SELECT .. 더보기
[퍼옴]한글을 2byte로 계산하여 리턴 받으려면(LENGTH와 LENGTHB함수) ◈ LENGTH 함수와 LENGTHB 함수 오라클에서 LENGTH 함수를 사용하면 한글을 1byte로 계산하여 리턴 합니다. 한글을 2byte로 계산하여 리턴 받으려면 LENGTHB 함수를 사용해야 합니다. LENTGTHB 함수는 byte 단위로 계산을 합니다. -- LENGTH 함수 SQL>SELECT name, LENGTH(name) LEN FROM lentest; NAME LEN -------------------- ---------- 오라클 3 oracle 6 -- LENGTHB 함수 SQL>SELECT name, LENGTHB(name) LEN FROM lentest; NAME LEN ------------------- ---------- 오라클 6 oracle 6 더보기
[퍼옴]페이징 기법 자바에서 개발하면서 페이지처리에 대한 기준을 만들고자 정리 하였습니다. 프로그램에서는 SQL 그대로 작성해 주고, 페이지 처리는 SQL 유틸에서 파싱하면 될 것입니다. 물론, SQL 유틸은 프로젝트 팀에서 별도로 만들던가, 프레임웍을 도입해서 사용하면 되겠죠. > http://asktom.oracle.com/pls/ask/f?p=4950:8:4364635541175556421::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:76812348057 사전사항. 1. Sorting이 없을 경우 가능하다면 Sorting 하지 않도록 합니다. 2. 메인 SQL에서 SELECT ROWNUM NUM은 SQL작성 시 제외합니다. 3. 메인 SQL의 ROWNUM은 SQL 유틸에서 자동파싱처리를 .. 더보기
[퍼옴]파티션 테이블의 관리 1.Partition을 추가하는 방법 empno에 대해서 Partition을 추가 하고 싶은 경우 다음과 같이 할 수 있습니다. SQL>ALTER TABLE emp_pt ADD PARTITION emp_p4 VALUES less than (9000) TABLESPACE test; 테이블이 변경되었습니다. ALTER TABLE 테이블명 ADD PARTITIOM 파티션명 VALUES 범위 TABLESPACE 테이블스페이스명 으로 empno값이 9000이전의 값을 가지는 파티션 emp_p4를 추가했습니다. 2. 특정 Partition을 삭제하는 방법 Partition을 없애고 싶은 경우는 DROP PARTITION 명령어를 사용하면 됩니다. SQL>ALTER TABLE emp_pt DROP PARTITION .. 더보기
[퍼옴]질문과 답변에 올라온 오라클 TIP들 1. 10%를 랜덤하게 가져옵니다.(오라클 8.1.7 이상부터 지원이 됩니다.) [하얀그림자님 답변글] SQL> SELECT * FROM table_name SAMPLE (10); 2. 오라클에서 CASE문 사용 예제 [하얀그림자님 답변글] SQL>SELECT col, CASE WHEN col >= 0 AND col = 6 AND col = 14 AND col = 22 THEN 'D' END FROM table_name; 3. 해당년도의 선택된 주의 첫번째 날자를 구하고 싶습니다.[석철희님 답변글] [질문] 해당년도의 선택된 주의 첫번째 날자를 구하고 싶습니다. 예로 2002년 .. 더보기
[퍼옴]중복된 RECORD 삭제 방법 Oracle Technical Bulletins No. 10185 참고.. 중복된 RECORD 삭제 방법 ================================ 중복된 RECORD를 삭제하는 방법은 2가지가 있습니다. 방법1) SQL> CREATE TABLE emp2 AS SELECT distinct * FROM emp; SQL> DROP TABLE emp; SQL> RENAME emp2 TO emp; 방법2) 중복된 데이터중에서 ROWID가 큰 값을 제거 SQL> DELETE FROM emp a WHERE rowid > (SELECT MIN(ROWID) FROM emp b WHERE b.empno = a.empno); en-core에서 본 白面書生(www.okjsp.pe.kr)님의 글도 참고해서 넣.. 더보기
제약 조건의 확인 1. 테이블에 걸려있는 제약 조건의 확인 - USER_CONS_COLUMNS : 컬럼에 할당된 제약 조건을 볼 수 있습니다. - USER_CONSTRAINTS : 유저가 소유한 모든 제약 조건을 불 수 있습니다. 이 두개의 데이터사전을 참조 하면 됩니다. SQL> SELECT SUBSTR(A.COLUMN_NAME,1,15) COLUMN_NAME, -- 컬럼명 DECODE(B.CONSTRAINT_TYPE, 'P','PRIMARY KEY', 'U','UNIQUE KEY', 'C','CHECK OR NOT NULL', 'R','FOREIGN KEY') CONSTRAINT_TYPE, -- 제약조건 TYPE A.CONSTRAINT_NAME CONSTRAINT_NAME -- 제약 조건 명 FROM USER_CONS.. 더보기
[퍼옴]재미있는 SQL문(계층구조 쿼리의 예제) 아래 강좌에서 START WITH와 CONNECT BY절을 이용해서 계층 구조로 쿼리를 해오는것을 살펴봤습니다. 이번에는 계층구조를 이용해서 역순으로 쿼리를 해오는것을 보겠습니다. SQLPLUS scott/tiger -- 조금 깔끔하게 보기 위해서.. 셋팅 먼저 하고요.. SQL> SET LINESIZE 100 SQL> SET PAGESIZE 100 SQL> COL ename FORMAT A20 SQL>SELECT LPAD(' ', 4*(LEVEL-1)) || ename ename, empno, mgr, job FROM emp START WITH EMPNO=7839 CONNECT BY PRIOR empno=mgr; ENAME EMPNO MGR JOB -------------------- ---------.. 더보기
유저의 패스워드를 쉽게 바꾸는 방법 Oracle 8 이상에서만 지원 SQL*PLUS에서 PASSWORD 명령으로 쉽게 유저의 패스워드를 변경 할 수 있습니다. SQL> PASSWORD; SCOTT에 대한 암호를 변경합니다 이전 암호: ***** 새로운 암호: ****** 새로운 암호를 다시입력합니다: ****** * 기존에 변경했던 방식 -- scott의 비밀번호를 tiger2로 변경 했을 경우 SQLPLUS system/manager SQL>ALTER USER scott IDENTIFIED BY tiger2 더보기
[퍼옴]옵티마이져(OPTIMIZER) 엔코아 정보 컨설팅 자료를 참고해서 작성해 봤습니다. 1. 옵티마이져(OPTIMIZER) ? OPTIMIZING이란 SQL 문장을 수행하기 위하여 가장 효과적인 방법을 선택하는 처리과정을 말합니다. 이것은 DML 문장을 수행하는데 있어 중요한 단계 중 하나이며, 이러한 역할을 하는 담당하는 부분을 우리는 OPTIMIZER라 부릅니다. 어떻게 하면 SQL문을 가장 효과적으로 처리할까.. 이것이 옵티마이져의 역할이죠.. ◈ SELECT, UPDATE, INSERT, DELETE문을 최소 비용으로 신속하게 처리 할 수 있을까 고민 합니다.. ◈ 오라클의 옵티마이저 부분은 문장의 실행을 위해서 요구된 최소한의 프로세싱 시간과 I/O를 위하여 참조된 데이타의 효과적인 경로를 결정하기 위하여 사용합니다. ◈ 옵티마.. 더보기