일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 플라잉요가고통
- 네트워크관리사 2급 실기
- 파이썬
- 장외파생상품
- 디지털 상식
- 디지털 IT 용어
- 기술면접
- Python
- 사회초년생1억모으기
- 컴활1과목요약
- 알고리즘
- 연말정산처음
- 한능검
- 코딩테스트
- NCS 디지털
- 첫연말정산
- ncs it
- 정처기 약술형
- 프로그래머스
- 책리뷰
- 사회초년생목돈모으기
- SAP SD
- 금융IT
- 디지털 IT
- 사회초년생목돈
- SAP
- 5년안에1억모으기
- 플라잉요가후기
- IT상식
- 디지털 용어정리
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 플라잉요가고통
- 네트워크관리사 2급 실기
- 파이썬
- 장외파생상품
- 디지털 상식
- 디지털 IT 용어
- 기술면접
- Python
- 사회초년생1억모으기
- 컴활1과목요약
- 알고리즘
- 연말정산처음
- 한능검
- 코딩테스트
- NCS 디지털
- 첫연말정산
- ncs it
- 정처기 약술형
- 프로그래머스
- 책리뷰
- 사회초년생목돈모으기
- SAP SD
- 금융IT
- 디지털 IT
- 사회초년생목돈
- SAP
- 5년안에1억모으기
- 플라잉요가후기
- IT상식
- 디지털 용어정리
- Today
- Total
목록▶ study/SQL (16)
공부기록장
오류발생원인 이 오류는 입력한 변수와 출력하고자 하는 변수의 타입이 맞지 않아서 생긴다. 보통 TO_CHAR 함수를 사용할 때 발생한다. TO_CHAR 함수는 결과를 문자타입으로 반환하는데, 입력된 값이 문자타입이더라도 숫자형태를 띄고 있으면 문자로 인식하지 않고, number형으로 인식하게 된다. 그래서 타입에러가 나는 것이다. 해결방법 TO_CHAR(vParsingDate,'YYYY-MM-DD') 위와 같이 짠 코드를, 아래와 같이 변환해주면 된다. TO_CHAR(TO_DATE(vParsingDate,'YYYYMMDD'),'YYYY-MM-DD')
원하는 결과 YYYYMMDD --> YYYY-MM-DD 위와 같이, 날짜에 하이픈이 추가된 결과를 출력하고자 한다. 에러 사항 vParsingDate의 타입이 varchar2 형태라서 TO_DATE함수가 먹히지 않음. TO_DATE함수는 date 타입의 값을 인식하기 때문에 아래와 같이 TO_DATE를 변수에 바로 적용시키면 YYYY/MM/DD 형태로 출력됨. TO_DATE(vParsingDate,'YYYY-MM-DD') 해결방안 TO_CHAR와 TO_DATE를 중첩해서 사용해줬더니, 원하는 결과를 얻을 수 있었다. TO_CHAR(TO_DATE(vParsingDate,'YYYYMMDD'),'YYYY-MM-DD')
replace 함수 특정 문자 값을 지우거나 대체 할 때 자주 사용되는 함수 replace(변수, 지우는 값, 대체하려는 값) 사용 예시 SELECT REPLACE(REPLACE(iDate, ';', ''), '-', '') AS out_DATE, LENGTH(REPLACE(REPLACE(iDate, '-', ''), ';', '')) AS out_LENGTH INTO oDate, oLength FROM DUAL; 입력값: YYYY-MM-DD;YYYYMM-DD;YYYY-MMDD 출력값: YYYYMMDDYYYYMMDDYYYYMMDD 위와 같은 결과 값을 만들기 위해 ;과 -를 제거하는 과정을 replace를 중첩하여 사용하였다.
서로 다른 날짜 형식을 일정한 포맷으로 반환하는 오라클 function을 만들었다. 해결하고자 하는 문제 원하는 입력값과 출력 값은 다음과 같다. 일정하지 않은 날짜 형식을 YYYY-MM-DD형태로 바꿔주려고 한다. e,g1)YYYYMMDD --> YYYY-MM-DD e,g2)YYYY-MM-DD;YYYYMM-DD;YYYY-MMDD --> YYYY-MM-DD;YYYY-MM-DD;YYYY-MM-DD e,g3)YYYYMMDD;YYYYMMDD;YYYYMMDD --> YYYY-MM-DD;YYYY-MM-DD;YYYY-MM-DD 문제 해결 절차 1) replace function을 사용해서 ';' 삭제 2) replace function을 사용해서 '-' 삭제 3) 각각의 데이터를 8자리씩 parsing 4) 8자리..
위 그림처럼, 한 테이블에만 있는 값들을 출력하고 싶을 때 사용하는 SQL 쿼리를 소개하려고 한다. 쿼리는 크게 minus를 사용, LEFT JOIN를 사용, 서브쿼리를 사용 하는 방법으로 나눠보았다. 참고로 minus이 가장 쉽다고 생각하는데 oracle DB에서만 사용이 가능하다! 기본 세팅 table은 student, student2 테이블을 예시로 들어주었다. 우리가 도출하고 싶은 테이블은 student에는 있지만, student2 테이블엔 없는 아래와 같은 join 결과값이다. SQL 쿼리 1. minus 사용 select name, id from student minus select name, id from student2; 위에서 고른 테이블에서, 아래서 고른 테이블을 빼주는 연산이다. 딱 ..
select * from student where dept = '컴퓨터공학과' group by dept having professor = '박상원' order by name asc; 위와 같은 select문의 실행순서는, from -> where -> group by -> having -> select -> order by 이다. 단계별 상세 설명 1. from : 먼저 검색하고자 하는 테이블을 반환한다. (student 테이블 반환) 2. where : 테이블에서 원하는 조건들을 가진 행들을 반환한다. (student 테이블에서 학과가 '컴퓨터공학과'인 행들만 반환) 3. group by : dept로 행을 묶은 행이 반환된다. (묶여있는 컬럼 중 가장 위에 있는 행이 반환된다.) 4. having :..
0. 기본 테이블 세팅 select * from phone; select * from fruit; 1. IN select * from phone p where p.number in (select f.number from fruit f); 위와 같은 쿼리를 실행하면, 아래와 같은 결과가 나온다. 쿼리의 접근 순서를 살펴보자면, -> 괄호 안의 fruit 테이블에 먼저 접근한다. -> fruit 테이블에서 검색된 결과들을 리스트로 뽑는다. -> phone 테이블에 접근한다. -> phone 테이블과 뽑아진 리스트의 요소들이 일치하는지 하나씩 비교한다. 2. NOT IN select * from phone p where p.number not in (select f.number from fruit f); 위와..
SQL join에서 on에도 조건을 줄 수 있고, where절에도 조건을 줄 수 있다. 이때, 얼핏 보기엔 두 경우의 결과에 별 차이가 없어보인다. 하지만, on에서의 조건과 where절에서의 조건에는 약간의 차이가 있다. 이 차이를 명확히 짚고 넘어가부자. 코드로 보면 아래와 같다. 1) select * from student a, dept b where a.id = b.id and a.name = b.name and a.id = '1001'; 2) select * from student a join dept b on a.id = b.id and a.name = b.name and a.id ='1001'; 1) 쿼리같은 경우, 조인을 실행한 뒤 -> 조인결과로 생성된 테이블에서 id가 1001인 행들을..
제약조건이란? 제약조건은 간단히 말해 테이블에 여러 규칙을 적용해 놓는 것을 의미한다. 이런 제약 조건들을 통해서 테이블의 이상현상 방지와 효율적인 테이블 사용을 할 수 있다. NOT NULL 제약조건 create table Employees( id number(4), name varchar(25) not null, salary number(8,2), pct number(2,2), department_id number(4), hire_date date constraint emp_hire_date_nn not null); name, hire_date에 대한 not null 제약조건을 걸어준 코드이다. 여기서 두 컬럼의 차이점은 제약조건의 별칭의 유무이다. name은 지정해주지 않았고, hire_date는 ..
1. savepoint 의미 savepoint란 현재 작업 중인 transaction을 잘게 쪼개는 역할을 한다. savepoint를 저장해서 rollback to [savepoint] 라는 명령어를 통해 지정한 savepoint로 rollback명령을 수행할 수 있다. 아래 그림을 보면 더 잘 이해가 된다. 위의 사진처럼, insert까지의 명령을 전부 수행했다고 가정하자. 이때 rollback할 수 있는 방법이 3가지가 된다. 1. rollback to savepoint B 이 경우에는, 지정해줬던 savepoint B 시점으로 이동하여 B 시점 이후로 수행했던 작업들이 rollback된다. 2. rollback to savepoint A 이 경우에는, 지정해줬던 savepoint A 시점으로 이동하..