일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 암호화
- javascript
- mybatis
- sql
- Ajax
- input
- 과정평가형
- 함수
- json
- Oracle
- jsp
- eGov
- 개념
- spring
- jQuery
- html
- 태그
- was
- JVM
- eGovFramework
- 정의
- CSS
- TO_DATE
- array
- POI
- select
- 오류
- web.xml
- Java
- controller
- Today
- Total
목록SQL/Oracle SQL (24)
web developer
1. Oracle DBMS (데이터베이스 관리 시스템)의 구조Oracle DBMS (데이터베이스 관리 시스템)의 구조는 여러 주요 구성 요소로 이루어져 있으며, 데이터의 저장, 관리, 처리, 보안 등을 담당합니다. 다음은 Oracle DBMS의 기본적인 구조에 대한 요약입니다. 1. 인스턴스 (Instance)Oracle DBMS의 인스턴스는 데이터베이스와 상호작용하는 메모리 구조와 백그라운드 프로세스를 포함합니다.메모리 구조:SGA (System Global Area): SGA는 데이터베이스 서버의 공유 메모리 영역으로, 데이터베이스 버퍼 캐시, 공유 풀, 리두 로그 버퍼 등 중요한 정보를 포함합니다. 데이터베이스 버퍼 캐시는 데이터베이스 블록을 메모리에 저장하여 디스크 I/O를 최소화하며, 공유 풀은..
1. 인덱스 힌트(Index Hint)Oracle에서 인덱스 힌트(Index Hint)는 쿼리 옵티마이저가 특정 인덱스를 사용하도록 지시하는 힌트입니다. 인덱스 힌트를 사용하면 쿼리 성능을 최적화할 수 있으며, 옵티마이저가 잘못된 인덱스를 선택하는 것을 방지할 수 있습니다. 인덱스 힌트가 필요하지 않은 경우옵티마이저의 최적화: 오라클 옵티마이저는 기본적으로 가장 효율적인 실행 계획을 선택합니다. 인덱스를 생성하면 옵티마이저가 이를 고려하여 최적의 실행 계획을 선택합니다.쿼리가 단순한 경우: 쿼리가 단순하고 옵티마이저가 인덱스를 잘 사용하는 경우, 힌트를 추가할 필요가 없습니다.인덱스 힌트가 유용한 경우잘못된 실행 계획: 옵티마이저가 특정 인덱스를 사용하지 않거나, 잘못된 실행 계획을 선택하는 경우.특정..
1. EXPLAIN PLAN 명령이란EXPLAIN PLAN 명령은 데이터베이스에서 특정 쿼리의 실행 계획을 보여줍니다. 실행 계획은 쿼리가 실행될 때 데이터베이스가 수행하는 단계별 접근 방식을 설명하며, 이를 통해 쿼리 성능을 최적화할 수 있는 인사이트를 얻을 수 있습니다. 여기서는 Oracle 데이터베이스를 예로 들어 설명하겠습니다.2. Oracle에서 EXPLAIN PLAN 사용실행 계획 생성: EXPLAIN PLAN FOR 명령을 사용하여 실행 계획을 생성합니다.EXPLAIN PLAN FORSELECT DECODE(dv, '1차', '1', '2차', '2', '3차', '3', '4차', '4') AS ORDER_NO, name, gradeFROM tbl_boardWHERE sta..
1. 트리거(trigger) 정의오라클(Oracle) 데이터베이스에서 트리거(trigger)는 특정 이벤트가 발생했을 때 자동으로 실행되는 PL/SQL 블록입니다. 트리거는 데이터베이스의 데이터 무결성을 유지하고, 특정 조건이 충족될 때 자동으로 작업을 수행하도록 설정할 수 있습니다.트리거를 사용하는 이유는 다음과 같습니다:데이터 무결성 유지:트리거는 데이터의 정확성과 일관성을 보장하기 위해 사용됩니다. 예를 들어, 데이터 삽입, 업데이트 또는 삭제 시 특정 조건을 검사하거나 수정하여 데이터 무결성을 유지할 수 있습니다.자동화된 작업 수행:트리거를 사용하면 데이터 변경 시 자동으로 특정 작업을 수행할 수 있습니다. 예를 들어, 새로운 레코드가 삽입될 때 관련된 로그를 기록하거나, 특정 필드를 자동으로 업..
오라클 쿼리에서 여러 행의 데이터를 ','로 이어주는 방법은 LISTAGG 함수를 사용하는 것입니다. LISTAGG 함수는 여러 행의 값을 하나의 문자열로 결합해줍니다. 다음은 예시입니다.SELECT LISTAGG(column_name, ', ') WITHIN GROUP (ORDER BY column_name) AS concatenated_stringFROM table_name;이 쿼리는 table_name 테이블에서 column_name 열의 값을 쉼표와 공백으로 구분하여 하나의 문자열로 결합합니다. 예를 들어, column_name에 'A', 'B', 'C'라는 값이 있으면 결과는 'A, B, C'가 됩니다.concatenated_string----------------A, B, C
해당 테이블의 각 컬럼의 count 값 가져오는 쿼리는 다음과 같습니다.(1) 서브쿼리를 사용한 카운트 합산 SELECT (SELECT COUNT(*) FROM validity WHERE mon01_usgqty LIKE '1@%') + (SELECT COUNT(*) FROM validity WHERE mon02_usgqty LIKE '1@%') AS total_countFROM dual;이 쿼리는 다음과 같이 작동합니다:validity 테이블에서 mon01_usgqty 컬럼이 '1@%'로 시작하는 값을 카운트합니다.validity 테이블에서 mon02_usgqty 컬럼이 '1@%'로 시작하는 값을 카운트합니다.두 개의 서브쿼리 결과를 더하여 total_count라는 별칭으로 반환합니다.(2) ..
1. DBMS_LOB 데이터 타입 데이터 타입 설명 CLOB 문자형 대용량 객체 고정길이와 가변길이 문자집합 지원 NCLOB 유니코드를 지원하는 문자형 대용량 객체 BLOB 이진형 대용량 객체 BFILE 대용량 이진 파일에 대한 위치,이름 저장 2. DBMS_LOB 함수 [2-1] DBMS_LOB.SUBSTR - 문자열을 자름 SELECT DBMS_LOB.SUBSTR(컬럼, 자를 문자수, 시작위치) [2-2] DBMS_LOB.INSTR - 지정된 키워드를 검색해서 위치(몇글자 째에 키워드가 위치해있는지) 반환 SELECT DBMS_LOB.INSTR(컬럼, '찾을 키워드', 시작위치, 몇번째 단어인지) [2-3] DBMS_LOB.GETLENGTH - 해당 컬럼의 전체 길이 반환 (공백을 포함한 글자수를 반..
oracle 날짜 요일 구하기 1-1) 요일 구하기 (정수) SELECT TO_CHAR(SYSDATE, 'yyyy-mm-dd') AS "날짜" , TO_CHAR(SYSDATE, 'd') AS "요일" FROM dual; TO_CHAR 함수의 포맷 인자에 "d"를 입력하면 해당 날짜의 요일이 정수로 반환된다. * 1:일요일, 2:월요일, 3:화요일, 4:수요일, 5:목요일, 6:금요일, 7:토요일 1-2) 주말(토요일, 일요일) 구하기 SELECT CASE WHEN TO_CHAR(SYSDATE,'D') IN ('1','7') // 2023-09-24 THEN '주말' ELSE '평일' END AS WEEK_DAY FROM DUAL; 2) 요일 구하기 (한글) SELECT TO_CHAR(SYSDATE, 'y..
WITH절이란 WITH절은 오라클9 이후 버전부터 사용이 가능하며 이름이 부여된 서브쿼리라고 생각하시면 됩니다. * 차이점 VIEW는 한번 만들어놓으면 DROP할때까지 없어지지 않지만 WITH절의 같은경우 한번 실행할 쿼리문내에 정의되어 있을경우, 그 쿼리문안에서만 실행된다는 차이점이 있습니다. WITH절을 사용하는 이유 WITH절은 복잡한 SQL에서 동일 블록에 대해 반복적으로 SQL문을 사용하는 경우 그 블록에 이름을 부여하여 재사용 할 수 있게 함으로서 쿼리 성능을 높일 수 있는데 WITH절을 이용하여 미리 이름을 부여해서 Query Block을 만들 수 있습니다. 자주 실행되는 경우 한번만 Parsing되고 Plan 계획이 수립되므로 쿼리의 성능향상에 도움이 됩니다. WITH temp AS ( S..
ORA-01861: literal does not match format string : 리터럴이 형식 문자열과 일치하지 않음 literal does not match format string Oracle등 DB Tool을 사용하여 SQL Insert 할경우는 정상이지만, JDBC를 통한 SQL Insert 를 할경우 다음과 같은 에러 메시지가 발생하였다. 물론 이 부분도 개발서버에서는 정상적으로 SQL insert가 이뤄져서 운영서버에 반영할 떄에는 몰랐던 문제였다. 원인은 개발 DB의 문자셋과 언어설정, 날짜설정이 운영DB의 설정 값과 다르기 때문에 나타나는 문제였으며, TO_DATE 함수를 사용하여 해결하였다. INSERT INTO 테이블명( 컬럼명 )VALUES ( TO_DATE(컬럼명, 'YYY..
executeQueryForObject returned too many results. 저의 경우는 excel 시트 3개의 데이터 모두 DB에 insert하려고 했다가 발생한 에러였습니다. 그래서 데이터가 null인 상태로 SQL insert 되는 경우가 아닌지 확인을 했고, query 결과값이 모두 null인 상태였습니다. null 값이 아닌 정상적인 값으로 나오게 되자 해결되었습니다.
UPDATE 테이블명 SET 날짜컬럼명 = TO_DATE (변경날짜, 'YYYYMMDDHH24MISS') ; 참고 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=quasimodo__&logNo=110179300180 오라클 oracle 날짜 시간 바꿔 업데이트 update 하기 유지보수 일을 하다 보면, 이미 입력 된 글의 날짜를 변경해달라는 내용을 받을때가 많다. 그럴 때 사용하... blog.naver.com