일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Java
- error
- JPA
- jquery
- 코틀린
- 생성
- 오라클
- 넥사크로
- kotlin
- Spring
- aws
- oracle
- mybatis
- 쿼리
- db
- 에러
- 함수
- 시큐리티
- 자바
- Eclipse
- 알고리즘
- Vue
- 방법
- Git
- Security
- 프로그래머스
- GitHub
- JavaScript
- 스프링
- IntelliJ
- Today
- Total
목록oracle (22)
송민준의 개발노트
기본적으로 쿼리를 짜다보면 b 테이블에 있는 값을 불러오든 처리해서 불러오든 가져와야 하는 경우가 있다. 프로시저를 짜는 것도 하나의 방법이지만 비효율적이고 시간도 더 나오는 것 같다.(테스트 해보니 최소 1.4배...?) update 문을 좀 더 활용해서 해보면 구조는 아래와 같다. update 테이블A a set (a.칼럼1, a.칼럼2, a.칼럼3) = (select sum(b.칼럼1) , sum(b.칼럼2) , sum(b.칼럼3) from 테이블B b where b.키값1 = a.키값1 and b.키값2 = a.키값2) where a.조건1 = '조건값1' and a.조건2 = '조건값2' 위 update 문에서 좀 더 좋은 방법은 아래와 같다.(시간 단축 튜닝) update ( select a...
자. 윈도우 함수란 무엇인가? 분석함수 중에서 윈도우절을 사용하는 함수를 뜻한다! 윈도우 함수를 사용해서 합계, 순위, 행 위치 등을 컨트롤 가능하다. 구조는 다음과 같다. SELECT 윈도우함수(파람) OVER(PARTITION BY 칼람 ORDER BY WINDOWING) - 윈도우 함수 구조 1. 파람 : 윈도우 함수에 따라 0~ 여러개의 파람을 가진다. 2. PARTITION BY : 전체 집합을 기준에 의해 소그룹으로 나눔 3. ORDER BY : 정렬 4. WINDOWING : 행 기준의 범위를 정함 1) ROWS : 부분집합인 윈도우 크기를 물리적 단위로 행의 집합을 지정 2) RANGE : 논리적인 주소에 의해 행 집합을 지정함 3) BETWEEN A AND B : A와 B 사이의 집합 4..
1. ROLLUP ROLLUP이란 GROUP BY를 한 칼람에 대하여 Subsum을 해준다. ROLLUP은 여러개의 컬럼에도 적용이 가능하다. 그리고 적용한 대상에는 null 값이 들어가는데 아래와 같이 활용이 가능하다. SELECT DECODE(DEPTNO, NULL, 'DEPT_SUM',DEPTNO), SUM FROM EMP GROUP BY ROLLUP(DEPTNO) 위 쿼리는 EMP테이블에 DEPTNO 별 Subsum이 포함이 되는 SUM을 보여준다.(물론 sum 함수를 써야함) 2개 이상을 활용할 경우 SELECT DECODE(DEPTNO, NULL, 'Allsum', DECODE(GRADE, NULL, 'Subsum', DEPTNO)), GRADE, SUM(SAL) FROM EMP GROUP B..
Subquery란 SELECT문 내에서 다시 SELECT문을 사용하는 것이다. 형태는 ① FROM 구에 SELECT문을 사용하는 인라인 뷰와 ② SELECT에 사용하는 스칼라 서브쿼리(Scala Subquery), ③ WHERE에 사용하는 서브쿼리 등이 있다. 예시를 들어보겠다. ① 인라인 뷰(from) - FROM 구에 일종의 가상의 테이블(뷰)를 만들어 사용하는 것이다. // EMP에 순번을 매겨 10번 이하까지 구하는 쿼리 SELECT * FROM ( SELECT ROWNUM NUM, ENAME FROM EMP ) a WHERE NUM < 10; ② 스칼라(select) - 스칼라 Subquery는 반드시 한 행과 한 칼럼만 반환하는 서브쿼리이다. (여러행이면 에러뜸) // 회원별 급여와 상급자의 ..
1. DECODE DECODE는 IF문과 같다고 보면된다. 특정 조건이 참일 때 값과 거짓일 때 값을 적용한다. DECODE(CUSTNO, 11031, 'YES', 'NO') 위와 같은 예시에서는 custno의 값이 11031일 경우 YES 를 반환하고 아닐 경우는 NO를 반환한다. 2개도 가능하다. DECODE(CUSTNO, 11031, 'YES', 10001, 'OK', 'NO') 11031일 경우에는 YES, 10001 일 경우에는 OK 그 외에는 NO를 반환한다. 응용 해서 아래와 같이 이중으로도 가능하다. DECODE( DECODE( ~ ) ) 2. CASE CASE문은 IF ELSE와 같은 프로그래밍 언어처럼 사용이 가능하다. 기본적인 구조는 아래와 같다. CASE [ expression ] ..
DB에 대한 포스팅은 기본적으로 oracle을 기준으로 대부분 하니 참고... 기본적으로 내장형 함수는 각 DBMS별로 차이가 있지만 거의 비슷한 방법으로 사용이 가능하다. 종류로는 형변환 함수, 문자열 및 숫자형 함수, 날짜형 함수가 있다. 형변환 함수는 명시적과 암시적 형변환이 있는데 암시적인 것은 DBMS가 알아서 처리해주는 것이고 명시적은 사용자가 직접 선언해주는 것이다. // 형변환 TO_NUMBER(문자열) : 문자열을 숫자로 변환 TO_CHAR(숫자 or 날짜, [FORMAT]) : 숫자 혹은 날짜를 지정된 FORMAT의 문자로 변환한다. TO_DATE(문자열, FORMAT) : 문자열을 지정된 FORMAT의 날짜형으로 변환한다. 형변환에 대한 보다 자세한 포스팅은 아래 글에 해놨다. htt..
뷰나 서비스단에서 수정 후 저장도 가능하겠지만 쿼리로 하는게 중복코드를 제거하기에 좋은 것 같다. 기본적으로 * 기본적으로 대소문자 상관없음 -- 연 월 일 (문자 사이에 원하는 기호 넣으면 됨) SYSDATE -- 2020-07-07 16:59:51 TO_CHAR(SYSDATE) -- 20/07/07 (기본 세션 설정) TO_CHAR(SYSDATE, 'YYYYMMDD') -- 20200707 TO_CHAR(SYSDATE, 'YYYY-MM-DD') -- 2020-07-07 TO_CHAR(SYSDATE, 'YYYY/MM/DD') -- 2020/07/07 TO_CHAR(SYSDATE, 'YYYY*MM*DD') -- 2020*07*07 -- 연 월 일 개별 TO_CHAR(SYSDATE, 'YYYY') -- 2..