티스토리

췐틀맨 devlog
검색하기

블로그 홈

췐틀맨 devlog

chantleman.tistory.com/m

이것저것

구독자
6
방명록 방문하기
728x90
반응형

주요 글 목록

  • SQL 조인 : N:1 테이블 관계 1. 테이블 소개 및 관계 📌 comtccmmncode 테이블CODE_ID가 'COM010'인 데이터가 1개 존재CODE_ID 컬럼이 기본 키(PK) 역할select * from comtccmmncodewhere CODE_ID='COM010';   📌 comtccmmndetailcode 테이블CODE_ID가 'COM010'인 데이터가 6개 존재CODE_ID가 외래 키(FK) 역할select * from comtccmmndetailcodewhere CODE_ID='COM010';   🔗 두 테이블의 관계comtccmmncode (1) ↔ comtccmmndetailcode (N) (1:N 관계)comtccmmncode 테이블의 CODE_ID 값이 comtccmmndetailcode에서 여러 번 반복됨.. 공감수 2 댓글수 0 2024. 12. 29.
  • [PL/SQL] View, Sequence, Cursor, with check option, with read only 2024.07.22 - [오라클] - [PL/SQL] 기본 구조 [PL/SQL] 기본 구조기본 구조DECLARE 선언 부분(옵션) - 변수, 상수, cursor와 사용자 정의 exception등 선언BEGIN 실행 부분(필수) - 처리할 명령문들 절차적으로 기술 - sql, 반복문, 조건문 EXCEPTION 예외 처리 부분(옵션) - 오chantleman.tistory.com   1. View (가상 테이블)- 하나 이상의 테이블에서 데이터를 조회하는 방법을 정의하는 쿼리 결과를 가리킴   📌 VIEW를 사용하면 좋은 상황 차트로 데이터 변동을 보여줄 때복잡한 쿼리를 반복적으로 작성할 필요 없이, 이미 정의된 VIEW를 사용하여 쉽게 조회하고 시각화 가능VIEW는 실시간 데이터를 반영하므로 최신 데이터.. 공감수 1 댓글수 0 2024. 12. 19.
  • LISTAGG, 행 열 바꾸기 LISTAGG: 오라클에서 여러 행의 값을 하나의 문자열로 결합하는데 사용되는 집계함수주로 여러 행에 존재하는 값을 구분자를 이용해 하나의 문자열로 합칠 때 유용  LISTAGG(결합하려는 열, 각 값 사이에 삽입할 구분자) WITHIN GROUP (ORDER BY 정렬할 열)  예를 들어서 아래와 같은 쿼리문을 실행하면 select mem_id from member;  이렇게 여러 행으로 결과가 나오지만   아래같이 listagg를 사용해서 실행하면select listagg(mem_id,',') within group(order by mem_id)from member;  여러행의 데이터들을 한 행에 합쳐서 출력해줍니다    Mybatis에서 INSERT 쿼리문 작성할 때도 LISTAGG을 사용하면 더 .. 공감수 2 댓글수 1 2024. 11. 28.
  • 오라클 다른 계정 테이블 가져오기 상대방 컴터에서는 외부 접속을 허용하려면 방화벽 설정해줘야함!!https://codeplus.tistory.com/259 [Oracle] 외부접속 허용 설정 (방화벽 해제하기)기본포트 1521일때 외부에서 접속하거나 같은 망의 다른컴퓨터에서 접속을 하고싶을 때 윈도우의 기본 방화벽을 해제해야 진입가능하다. OS : Windows 10 DB : OracleXE 21c 방화벽에서 오라클Port(1521) 제codeplus.tistory.com         + 클릭    name은 지금 갖고있는 계정중 안겹치게 아무거나  호스트, 사용자 이름, 비밀번호는 접속할 계정의 정보로 입력 테스트후 성공뜨면 접속      도구 - 데이터베이스 복사     소스 접속은 접속할 상대방 계정대상 접속은 데이터 받아올 내 .. 공감수 2 댓글수 1 2024. 11. 21.
  • 데이터 백업 -- 데이터 백업 (삭제하기 전에 백업해주기)create table 백업할테이블asselect * from 원본테이블;--flashbackSELECT * FROM 원본테이블 AS OF TIMESTAMP(SYSDATE-(1/24)/6); -- 10분 전 데이터 조회 공감수 0 댓글수 0 2024. 11. 8.
  • PL/SQL 장바구니 장바구니 번호 생성 함수create or replace function fn_create_cart_no( p_date in date, p_mid in pc03.member.mem_id%type) return varchar2as v_cnt number:=0; --해당일자의 자료수(행의 수) v_cart_no pc03.cart.cart_no%type; -- pc03 계정의 cart 테이블의 cart_no와 같은 타입이라는 뜻 v_mid pc03.member.mem_id%type;begin -- select (데이터) into (데이터를 받을 변수) main 쿼리일때만 into 사용. subquery일 때는 안씀 -- 하나의 변수에 여러개의 .. 공감수 0 댓글수 0 2024. 10. 23.
  • 코드조각 SELECT 'private '|| DECODE( DATA_TYPE , 'NUMBER', 'int ', 'String ' )|| LOWER(COLUMN_NAME)||';' FROM COLS WHERE TABLE_NAME = 'PROD' ORDER BY COLUMN_ID;   /create or replace FUNCTION FN_GETCAMEL(COLUMN_NAME IN VARCHAR2)RETURN VARCHAR2ISRSLT VARCHAR2(30);BEGIN--카멜표기로 변환(SITE_NUM -> siteNum)SELECT LOWER(SUBSTR(REPLACE(INITCAP(COLUMN_NAME),'_'),1,1))|| SUBSTR(REPLACE(IN.. 공감수 0 댓글수 0 2024. 8. 2.
  • MERGE INTO https://dreamcoding.tistory.com/94 데이터가 있는지 확인(SELECT) 하고 데이터를 삽입하거나 업데이트(INSERT, UPDATE)하" data-og-description="보통 데이터를 처리할때 데이터의 존재 여부를 확인(SELECT)하고 해당 값이 없으면 삽입(INSERT)하고 있으면 업데이트(UPDATE)를 하게 된다. 이렇게 되면 데이터를 확인하는 쿼리, 데이터를 삽입 하는 " data-og-host="dreamcoding.tistory.com" data-og-source-url="https://dreamcoding.tistory.com/94" data-og-url="https://dreamcoding.tistory.com/94" data-og-image="https:.. 공감수 0 댓글수 0 2024. 8. 1.
  • 오라클 쿼리 오라클 다른 계정 테이블에 있는 데이터 조회하는 법 사용자 이름.테이블명 SELECT * FROM pc03.MEMBER;    일련번호로 행번호 생성하기 (시퀀스 x)select nvl(max(mem_no),0)+1 INSERT INTO MEMBER(mem_no, id, pw, name, reg_date) VALUES( (select nvl(max(mem_no),0)+1 from member), 'ID', 'PW', 'NAME', SYSDATE); mem_no에 1부터 증가시키는 행번호 삽입하기    이전값, 다음값 (lag, lead)lag: 이전 행의 값 리턴lead: 다음 행의 값 리턴 lag(컬럼명.. 공감수 0 댓글수 0 2024. 7. 31.
  • 오라클 FK 설정 테이블 우클릭 - 편집- 제약조건우측에 + 클릭새 외래키 제약조건참조할 테이블과 제약조건 선택 FK 설정된 것 확인 공감수 0 댓글수 0 2024. 7. 31.
  • 테이블스페이스 sqld보기 - dba 클릭하면 밑에 dba에 접속  저장영역 - 테이블 스페이스 -우클릭- 새로만들기 도커 경로 적기      exec에서 cd ..와 ls를 통해 oracle 파일 위치 확인 후 경로 입력  우클릭 사용자 생성   모든 권한 부여    + 새로만들기   왼쪽에 계정 선택후NAME: JAVA_ , 사용자 이름도 JAVA_로 설정  계정 생성된 것 확인테이블 없음 공감수 0 댓글수 0 2024. 7. 30.
  • 다른 사용자 db 접속 윈도우 검색창에 방화벽 상태 확인 검색 고급설정 클릭   인바운드 규칙 - 새규칙   포트번호 입력     cmd창에서 ipconfig 입력해서 ip주소 확인할 수 있습니다.ip주소 복사    sqld에서 새로 만들기 클릭다른 사람의 ip주소, port번호, 사용자 이름을 입력하면그 사람의 db접속 공감수 0 댓글수 1 2024. 7. 24.
  • 도커, 오라클, 한국시간 설정하기 오라클에서 sysdate를 출력했을때 시간이 안맞는다면 한국시간으로 설정을 해줘야 합니다.     도커 실행후빈부분 클릭하면 아래와같은 화면이 뜹니다. exec에서 date를 입력하면 영국시간 기준으로 나올겁니다. 아래 코드를 실행하면 에러가 뜨게 되는데 su를 입력해서 권한을 부여하면 됩니다.ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime참고로 리눅스는 복붙할때 ctrl+shift+v 하면 됩니다.  su 실행 후 다시 위 코드를 실행하고 ( su : 최상위 권한 )다시 date를 입력하면 정상적으로 한국 시간이 설정된 것을 확인할 수 있습니다.   도커 재가동후 워크시트에서 아래 코드를 실행하면select to_char(sysdate,'yyyy-mm-dd.. 공감수 0 댓글수 0 2024. 7. 24.
  • 데이터 import export sqld에서 board 테이블 생성 후   데이터 익스포트하기데이터를 잘 삽입하고 그 데이터를 export할때BOARD 테이블에서 우클릭하고 익스포트 클릭형식을 엑셀로 하는데 엑셀은 단일 파일이 불가능해서 별도의 파일로 선택해줘야합니다.저장위치도 설정하고 완료합니다.   그럼 아래와같이 나오게 되고데스크탑에 파일이 생성된 것을 확인할 수 있습니다.    데이터 임포트하기다시 데이터 import할때는 우클릭하고 데이터 임포트 클릭   찾아보기 클릭후 아까 export한 데이터 클릭하면 데이터가 가져와진 것을 확인할 수 있습니다.   참고로 엑셀 컬럼명과 일치해야 import가 가능합니다. 공감수 0 댓글수 0 2024. 7. 24.
  • 오라클 exception NO_DATA_FOUND-선택된 행이 없는 경우(select ... into) TOO_MANY_ROWS-여러행이 리턴되는 경우(select...into) DUP_VAL_ON_INDEX-unique인덱스가 걸린 컬럼 에 중복 데이터를 입력할 때 VALUE_ERROR- 값을 할당하거나 변환할 때 오류나는 경우 INVALID_NUMBER-숫자로 변환되지 않는 경우(문자형 데이터 NOT_LOGGED_ON-디비에 접속하지 않은채 실행하는 경우 LOGIN_DENIED-인증 실패 ZERO_DIVIDE-0으로 나눌때 INVALID_CURSOR-허용되지 않은 커서를 사용할 때 공감수 0 댓글수 0 2024. 7. 23.
  • [PL/SQL] 구구단 예제 declare v_i number :=2; v_j number :=1;begin while v_i 공감수 0 댓글수 1 2024. 7. 23.
  • [PL/SQL] 기본 구조 기본 구조DECLARE 선언 부분(옵션) - 변수, 상수, cursor와 사용자 정의 exception등 선언BEGIN 실행 부분(필수) - 처리할 명령문들 절차적으로 기술 - sql, 반복문, 조건문 EXCEPTION 예외 처리 부분(옵션) - 오류 처리에 관한 명령문END;   예시DECLARE -- 선언부. 변수, 상수 선언 M_NAME VARCHAR2(50); -- 초기 변수 선언 BEGIN -- 제어, 반복문, 함수 등 다양한 로직 기술 실행 M_NAME:= '투케이' -- 변수에 값 대입 DBMS_OUTPUT.PUT_LINE('======================'); DBMS_OUTPUT.PUT_.. 공감수 1 댓글수 4 2024. 7. 22.
  • sequence 시퀀스는 자동으로 번호를 생성하기 위해 사용됩니다. 기본키를 설정할 후보키가 없거나 pk를 특별히 의미있게 만들지 않아도 되는 경우,혹은 자동으로 순서적인 번호가 필요한 경우 사용합니다.  create sequence sequence_name [start with n] [increment by n] [maxvalue n | nomaxvalue] [minvalue n | nominvalue] [cycle | nocycle] [cache n | nocache] [order | noorder] start with n 시작값 설정, 기본은 min_valueincrement by n 자동 증감값 기본은 1, 음수 사용가능cache n 메모리에 미리 할당할 값. 기본은 cache 2.. 공감수 0 댓글수 0 2024. 7. 22.
  • 테이블 복사, 삭제 create table remain2 as select * from remain; remain테이블을 remain2로 복사 생성     테이블의 내용 모두 삭제 1) 전체 record 삭제delete from table_name;- rollback(작업 취소) 가능. 느림truncate table table_name;- 자동 commit(복구 불가). 빠름   2) 테이블 제거drop table table_name;- 자료가 수십만 건 이상일 경우 또는 빠른 시간 내에 자료 전체를 조건없이 삭제해야 하는 경우 사용 가능단, table의 모든 이력이 사라지므로 table create, primary key, index등을 다시 생성해줘야함 공감수 0 댓글수 0 2024. 7. 19.
  • 데이터 자동 생성 insert into remain (remain_year,remain_prod,remain_j_00,remain_i,remain_o,remain_j_99,remain_date)values('2023','P102000003',11,21,11,41,SYSDATE);원래는 이런식으로 데이터값을 직접 입력해서 데이터 삽입했는데 select로 데이터를 조회해서 그 값들을 넣는 방식으로 데이터를 자동으로 생성할 수 있습니다.insert into remain(remain_year,remain_prod, remain_j_00, remain_i, remain_o, remain_j_99,remain_date)select '2024', prod_id, to_number(substr(prod_id,-2)),10,7,to_nu.. 공감수 0 댓글수 0 2024. 7. 19.
  • 테이블 join 조인 종류설명cross join모든 가능한 행들의 조합(R X S)inner join(equi join)조건이 일치하는 컬럼 매칭(주로 pk와 fk)natural join각 테이블에 동일한 이름의 컬럼이 존재할 때 자동으로 조건이 적용non-equi join조건절에서 join 조건이 '='이 아닌 다른 연산기호로 주어지는 경우 ('outer join조건이 일치하지 않더라도 모든 행들을 검색하고자 할 때 사용. (+) 로 표시(left / right / full outer join)self join한 테이블 내에서 join하는 경우 cross joinselect * from lprod, prod;select * from lprod cross join prod;select count(*) from lprod.. 공감수 1 댓글수 0 2024. 7. 15.
  • rownum rownum : 특정개수의 행만 조회: 행번호 매기기  - emp 테이블의 모든 컬럼 나타내기 select rownum, emp.* from emp;  - order by 추가 select rownum, emp.* from emp order by job;select 후에 order by가 이루어지기 때문에 순서가 안맞다는 걸 확인할 수 있음  행번호 순서를 유지하기 위해서는 서브쿼리 사용해서 해결 select rownum, X.* from (select A.* from emp A order by A.name) X; - cart table에서 주문수량이 큰 것부터 순서를 매겨 주문번호, 주문수량을 조회 select rownum, x.cart_no, x.cart_qty from (s.. 공감수 0 댓글수 0 2024. 7. 12.
  • 오라클 REGEXP 함수 REGEXP_LIKE(str, pattern, [, opt])패턴을 사용하여 문자열을 검증(where절 )[opt] c: 대소문자 구분, i: 대소문자 구분 안함, m: 다중 행 검색REGEXP_SUBSTR(str, pattern [, pos[,occur[,opt]]])패턴에 일치하는 하위 문자열 반환pos: 시작위치, occur: 몇번째REGEXP_REPLACE(str, pattern, [,replace [,pos [,occur[,opt]]])패턴에 일치하는 문자열 변환(패턴에 맞지 않는 경우 원본 반환)replace: 바꿀 문자열REGEXP_INSTR(strk pattern, [, pos [,occur [,retopt [,opt]]]])패턴에 일치하는 위치 반환[retopt] 0: 시작위치, 1: 일.. 공감수 0 댓글수 0 2024. 7. 12.
  • 오라클 조건문 decodeif문과 같은 기능을 함(expr {[,search, result]} [,defaul])case when연속적인 조건문case when ~ then ~else ~ end  decodeselect decode(9, 10,'A', 9,'B', 8,'C', 'D') from dual;    앞 두글자가 p1이면 판매가 10%이상, p2이면 판매가 15%인상, 나머지는 동일 판매가로 검색select prod_name 상품명, prod_sale 판매가, decode(substr(prod_lgu,1,2), 'p1', prod_sale+(prod_sale*0.1), 'p2',prod_sale+(prod_sale*0.15), prod_s.. 공감수 0 댓글수 0 2024. 7. 12.
  • 오라클 NULL, NVL, NULLIF, COALESCE IS NULL,IS NOT NULLNULL값인지 아닌지 비교NVL(c,r)c가 NULL이 아니면 c값으로, NULL이면 r 반환r에 보통 0을 넣음(결과가 0이 되게)NVL2(c,r1,r2)c가 NULL이 아니면 r1값으로, NULL이면 r2 반환NULLIF(c,d)c와 d를 비교하여 같으면 NULL을, 다르면 c값 반환COALESCE(p [,p...])파라미터중 NULL이 아닌 첫번째 파리미터 반환  NVLselect buyer_name 거래처, NVL(buyer_charger,'없다') 담당자 from buyer;   select null+10 덧셈, 10*null 곱셈 from dual; null에 10을 더하거나 곱해도 결과는 null로 나옵니다.  select NVL(null,0)+10 덧셈, .. 공감수 0 댓글수 0 2024. 7. 12.
  • LAST_DAY(), TO_DATE 사귄 날짜 구하기(오늘부터 1일)select round(sysdate - TO_DATE('2024-07-10','YYYY-MM-DD')+1 )사귄날짜 from dual;select round(sysdate - TO_DATE('2024-07-10')+1 )사귄날짜 from dual;   이번 달 얼마나 남았는지 확인하기select last_day(sysdate)-sysdate from dual; 공감수 0 댓글수 0 2024. 7. 10.
  • 오라클 시간 설정 select sysdate from dual;실행하면 아래와 같이 날짜데이터만 나오게 됩니다.만약 시간도 나오게 하고싶으면  도구-환경설정-데이터베이스-NLS 날짜형식에 HH24:MI:SS를 추가해주세요다시 실행하면 시간도 나옵니다. 공감수 0 댓글수 0 2024. 7. 10.
  • width_bucket() width_bucket(c,min,max,b): min에서 max 범위로 설정하고 b구간으로 나누어 c가 어느 구간에 속하는지 리턴select width_bucket(88,0,100,10) from dual; 공감수 0 댓글수 0 2024. 7. 10.
  • mod(), remainder() mod(c,n) remainder(c,n)둘 다 n으로 나눈 나머지를 구하는 함수입니다.  mod: 원값 - (나눌 값* 나눈 값을 소수 첫째자리에서 버림한 값)=10 - 3*floor(10/3) remainder: 원값 - (나눌값*나눈 값을 소수 첫째자리에서 반올림한 값)=10 - 3*round(10/3) 공감수 0 댓글수 0 2024. 7. 10.
  • trunc(), round() round(number, [decimal_places]): 반올림number: 반올림할 숫자decimal_places: 반올림할 소수점 이하 자리수. 생략하면 0으로 간주 trunc(number, decimal_places): 절삭number : 자를 숫자decimal_places: 자를 소수점 이하 자리수. 생략하면 0으로 간주select round(345.666,2) 결과1, trunc(345.666,-1) 결과2 from dual;만약 round(345.666,-1)을 하면 소수점 전에서 즉, 5에서 반올림한다는 의미로 350이 나옵니다.   trunc와 round는 날짜 값을 특정 날짜 단위로 자를 때도 쓰입니다.trunc(date,[date_format]);round(date, [date_for.. 공감수 0 댓글수 0 2024. 7. 10.
    728x90
    반응형
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.