기존에 서버에 있던 데이터를 옮기기 위해 도구 > 데이터베이스 복사 를 이용해 테이블을 복사하려고 했지만해당 오류가 떠서 테이블복사가 안되는 것을 확인하였다.ORA-00959: tablespace 'TS_202403F' does not exist00959. 00000 - "tablespace '%s' does not exist"*Cause: *Action: 해당 오류는 단순이 풀어 낼 수 있는데CREATE TABLESPACE "TS_202403F"DATAFILE 'C://oracle/TS_202403F.dbf' SIZE 100M AUTOEXTEND ON NEXT 10M;없는 TABLESPACE이름을 똑같이 생성하여 자신의 경로에 해당 dbf파일을 생성하면 데이터가 간단히 옮기는걸 확인할 수 있다 ..
DB Oracle
MERGE INTO STOCK S -- STOCK테이블을 업데이트할 대상으로 설정USING (SELECT GDS_CODE, BZENT_NO, QTY -- USING절을 통해 STOCK테이블과 연결할 데이터 소스 정의 FROM STOCK_PO WHERE PO_NO = #{poNo}) SPON (S.GDS_CODE = SP.GDS_CODE AND S.BZENT_NO = -- 조인 조건 (SELECT BZENT_NO FROM PO WHERE PO_NO = #{poNo}))WHEN MATCHED THEN -- 조인 조건이 일치하는 경우에 수행 UPDATE SET S.QTY = S.QTY + SP.QTYWHEN NOT MATCHED THEN -- 조인 조건이 일치하는 않는 경우에 수..
기본키 아이디자유 텍스트로 입력abcd12, asdfjal코드체계적인 코드dept001, dept002, a001번호숫자로 넣음1, 2, 201번호라고하여 숫자만 넣지 않음doc20240831001코드와 유사일련 번호숫자 값이 순차적으로 들어오는 값1, 2, 3문자와 조합도 가능SN202400001 -> SN202400002순번일련번호와 유사, 순번이 있지만 보통 문자열이 들어가지 않음단독으로 사용하지 않고 복합키로 사용할 때 들어감일련번호, 순번날짜일자2024-09-07VARCHAR2(8)일시2024-09-07 10:14:10DATE시각09:30시간09:00 ~ 10:30기간2024-09-07 ~ 2024-09-10기한2024-09-07까지입사일자 조건 검색하는 방법입사일자가 DATE인경우SELECT ..
문제2020년도 상품별 매입금액과 매출 금액을 구하기ANSI, Oracle방식, 서브쿼리CART_NO가 인덱스이기 때문에SUBSTR보다 LIKE가 더 빠르다ANSISELECT B.PROD_ID, SUM(B.PROD_SALE*A.CART_QTY), SUM(B.PROD_COST*C.BUY_QTY)FROM PROD BLEFT OUTER JOIN CART A ON A.CART_PROD = B.PROD_ID AND A.CART_NO LIKE '2020%'LEFT OUTER JOIN BUYPROD C ON B.PROD_ID=C.BUY_PROD AND EXTRACT(YEAR FROM BUY_DATE)='2020'GROUP BY B.PROD_ID;순서 : ON조건에 해당하는 데이터를 필터링(2020년인 CART..
개념적 설계 논리적 설계 물리적 설계 엔터티( Entity ) 릴레이션 테이블 결과물 : 개념적 스키마(E-R다이어그램) ( DBMS에 독립적인 개념적 구조 설계) 결과물 : 논리적 스키마(릴레이션 스키마) DBMS에 적합한 논리적 구조 설계 결과물 : 물리적 스키마 ( DBMS로 구현 가능한 물리적 구조) 속성 관계 판별 > 동사찾기 다 대 다 (개념 모델에선 허용되나 논리부턴 허용되어지지않음) 다(부모) 대 1 1:1 관계 ex. 주문서 속성 정규화 (정규화를 하지 않으면 데이터 중복으로 이상현상발생) 컬럼(필드) 요구사항 분석 업무에 필요한 데이터가 무엇인지 그 데이터에 어떤 처리가 필요한지 고려 명사를 가려내서 고유명사인 경우(이름, 지명, 회사명)은 버리기 범위가 너무 큰 명사는 버림 대표 명사..
WITH 테이블 이름 AS (SELECT 문) [SELECT 문] 호출 (SELECT 테이블이름.컬럼 FROM 테이블이름) WITH T AS-- 테이블 생성 (SELECT HOLD_NO, MAX(SEQ) FROM JAVA_BOOK_RENT WHERE RETURNYN = 'N' GROUP BY HOLD_NO) SELECT * FROM JAVA_BOOK_HOLD WHERE HOLD_NO NOT IN (SELECT T.HOLD_NO FROM T)