일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 정의
- 개념
- select
- array
- input
- controller
- Oracle
- 태그
- eGovFramework
- 과정평가형
- web.xml
- POI
- 함수
- 오류
- json
- jQuery
- was
- CSS
- JVM
- TO_DATE
- mybatis
- Ajax
- 암호화
- spring
- jsp
- javascript
- sql
- html
- Java
- eGov
- Today
- Total
목록SQL (27)
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..
LAG, LEAD 함수 LAG와 LEAD는 모두 Window 함수로 각각 현재 행 이전 행과 이후 행의 데이터에 접근 할 수 있습니다. 기본 문법은 다음과 같습니다. LAG(표현식, offset, default) OVER ( [PARTITION BY] ORDER BY ) LEAD(표현식, offset, default) OVER ( [PARTITION BY] ORDER BY ) LAG 함수 : 이전 행 값 return LEAD 함수 : 다음 행의 값 return offset : 값을 가져올 행의 위치, default 1 default : 값이 없을 경우 지정 할 기본 값 * offset은 몇 번째 이전(또는 이후) 행에 대해 접근할 지를 정수로 나타냅니다. * 생략가능 : offset, default, p..
GROUP BY SQL은 집합 지향적 언어입니다. 그렇기 때문에 SQL에는 집합을 조작할 수 있는 구문이 많이 있습니다. 가장 대표적인 집합 지향적 구문이 GROUP BY입니다. GROUP BY는 GROUP BY `열 이름`과 같은 문법으로 사용됩니다. GROUP BY를 사용하면 전체 집합을 지정한 열을 기준으로 분류하고 집약합니다. 예를 들어 전체 유저 그룹에 대해 GROUP BY gender로 지정한다면 각 gender 별로 그룹이 분류됩니다. 앞에서 SQL은 기본적으로 다수의 행을 반환한다고 했는데 여기에 GROUP BY `열 이름`을 추가하면 전체 집합의 모든 행을 지정한 열의 값을 기준으로 분류한 뒤 각 집합을 하나의 행으로 집약합니다. 다음 예시를 보면 genre에 대해 GROUP BY 했을 ..
SQL SQL (Structured Query Language) - SQL은 Structured Query Language (구조적 질의 언어)의 줄임말로, 관계형 데이터베이스 시스템(RDBMS)에서 데이터를 관리 및 처리하기 위해 설계된 프로그래밍 언어입니다. - SQL은 1970년대에 IBM에서 최초 개발되었으며 관계형 모델이라는 이론에서 파생된 특징을 가지고 있는데, 현재 SQL의 표준으로 ANSI SQL이 정립되었습니다. - 각 DBMS 프로그램에서 ANSI SQL을 기반으로 개발된 개별 SQL을 사용하며 서로 근소한 차이를 보입니다. SQL 문법 [1] DDL - Data Definition Language, 데이터 정의 언어 - 각 릴레이션을 정의하기 위해 사용하는 언어 - conceptual..
WITH절이란 WITH절은 오라클9 이후 버전부터 사용이 가능하며 이름이 부여된 서브쿼리라고 생각하시면 됩니다. * 차이점 VIEW는 한번 만들어놓으면 DROP할때까지 없어지지 않지만 WITH절의 같은경우 한번 실행할 쿼리문내에 정의되어 있을경우, 그 쿼리문안에서만 실행된다는 차이점이 있습니다. WITH절을 사용하는 이유 WITH절은 복잡한 SQL에서 동일 블록에 대해 반복적으로 SQL문을 사용하는 경우 그 블록에 이름을 부여하여 재사용 할 수 있게 함으로서 쿼리 성능을 높일 수 있는데 WITH절을 이용하여 미리 이름을 부여해서 Query Block을 만들 수 있습니다. 자주 실행되는 경우 한번만 Parsing되고 Plan 계획이 수립되므로 쿼리의 성능향상에 도움이 됩니다. WITH temp AS ( S..