일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Security
- GitHub
- 자바
- IntelliJ
- 시큐리티
- aws
- db
- Java
- 생성
- 코틀린
- error
- 에러
- JPA
- Eclipse
- 방법
- mybatis
- 스프링
- oracle
- Git
- 함수
- 오라클
- Vue
- jquery
- 넥사크로
- 프로그래머스
- 쿼리
- JavaScript
- Spring
- kotlin
- 알고리즘
- Today
- Total
목록쿼리 (8)
송민준의 개발노트
JPA로 테스트케이스를 작성하다가 로그를 보고싶어서 application.yml 에 아래 속성을 추가해줬다. logging: level: org.hibernate.type: trace 그리고 테스트를 돌려봤는데 성공했으나 위처럼 뭐 나오는게 없다 쿼리가 혹시나 트랜잭션이 기본 롤백이라서 안뜨는게 아닐까 느낌이 들어 Rollback(false)를 추가해봤다. @RunWith(SpringRunner.class) @SpringBootTest @Rollback(false) public class MemberRepositoryTest { @Autowired ..... 그랬더니 위와 같이 정상적으로 되는 것을 볼 수 있다. persist 를 하면 insert가 바로 안나간다. 데이타베이스 트랜잭션 커밋이 될 때 그..
비율을 계산해주는 함수는 다음과 같다. 1. CUME_DIST 2. PERCENT_RANK 3. NTILE 4. RATIO_TO_REPORT 1. CUME_DIST - 파티션 전체 건수에서 현재 행보다 작거나 같은 건수에 대해 누적 백분율을 계산해주며 0과 1사이에 값이 분포해있다. select deptno, ename, sal, cume_dist() over(order by sal desc) as c_s from emp; 위 쿼리를 실행하면 백분율 처럼 나온다. 과거 학창시절 성적 백분율 나오는 그런거... 2. PERCENT_RANK - ANSI/ISO SQL 표준과 Oracle DBMS에서 지원해준다. - 파티션에서 제일 먼저 나온 것을 0, 제일 늦게 나온 것을 1로 하여 값이 아닌 행의 순서별 ..
순위 함수의 목적은 어떤 항목이나 파티션에 대해서 순위를 계산하는 함수이다~! 우선 랭크 함수의 종류는 1. RANK : 특정항목 및 파티션에 대해 순위를 계산한다. 만약 값이 같다면 순위 또한 같게 주어진다. 2. DENSE_RANK : 같은 순위일 경우 하나의 건수로 계산을 한다. 3. ROW_NUMBER : 같은 순위일 경우에도 고유의 순위를 부여한다. 위 3가지가 존재한다. 목적에 따라 사용하면 된다. 1. Partition by 사용에 따른 결과 비교 select ename, sal, rank() over (order by sal desc) all_rank, rank() over (partition by job order by sal desc) job_rank from emp; 위 쿼리를 실행하..
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..
계층형 쿼리(Hierarchical Query)는 오라클에서만 지원하는 기능이다. 관계형(relational)이라는 의미가 서로 평등하고 수평적인 관계를 의미하는 반면 계층형(hirearchical) 구조는 이와는 다르게 평등한 관계가 아닌 수직적인 관계를 가진다. 한마디로 말해서 관계형이 평면적이라 한다면 계층형은 수직적 구조라 할수있다. 계층형 정보에는 사회적인 의미의 계급구조, 등이 있고 소프트웨어 관점에서 살펴보면, 웹사이트에서 사용하는 답변형 게시판이나 BOM(Bill Of Material)등이 계층형 정보의 전형적인 예이다. 예를 들어 직원 테이블에 기본키가 사원번호이고 상관번호를 가지고 있다면 계층 구조를 사용할 수 있다. EMP 테이블에서 select level, empno, ename f..