반응형

oracle 공부 29

[Oracle]ORACLE 계층형 쿼리

목차 테이블에 계층형 데이터가 존재할 경우 사용(조직, 사원, 메뉴등의 순환관계 등에 사용됨) SELECT ... [ CONNECT_BY_ISLEAF ISLEAF FROM 테이블명 START WITH condition CONNECT BY PRIOR condition AND condition; -- START WITH절 | 계층구조 전개의 시작 위치를 지정하는 구문 -- CONNECT BY 절 | 다음에 전개될 자식 데이터를 지정하는 구문 ----------------------------------------------------------------- -- 계층형쿼리 ------------------------------------------------------------------ --PRIOR 자..

IT/DBMS 2022.11.29

[Oracle]ORACLE 12C SQL에 추가된 새로운 기능

목차 DEFALUT VALUE로 sequence의 next value 지정 가능 12c 이전의 오라클에서는 자동 증가값을 설정하기 위해 시퀀스를 생성 한 후 테이블을 만들 때부터 생성한 시퀀스의 값을 설정할 수 있음 -- ex) 12c에서는 아래처럼 시퀀스를 생성 후 CREATE SEQUENCE t_seq start with 1 increment by 1 maxvalue 10 nocycle ; -- 테이블을 만들 때 시퀀스의 next value 지정이 가능함 CREATE TALBE test ( no NUMBER DEFAULT t_seq.nextval PRIMARY KEY, name varchar2(10) ); invisible columne 사용 가능 11g까지는 테이블에 invisible columne..

IT/DBMS 2022.11.29

[Oracle] Oracle SELECT한 값으로 UPDATE하기

목차 Oracle SELECT한 값으로 UPDATE하기😶 자주 쓰는 기능인데 역시 기록을 안하면 까먹는다. 아래처럼 서브쿼리와 조인을 활용해서 UPDATE하면 된다. UPDATE STUDENT A SET JUMIN = ( SELECT jumin FROM STUDENT_220514 B WHERE A.studno = B.STUDNO ) ; student테이블의 studno와 student_220514 테이블의 studno로 조인 후 student_220514의 jumin을 가져와서 그 jumin으로 student 테이블의 jumin컬럼값을 UPDATE 참조 : 코딩팩토리님 블로그, 2019.01.09, https://coding-factory.tistory.com/291 [Oracle] 오라클 SELECT한..

IT/DBMS 2022.11.29

[Oracle] Oracle 특정 자릿수만 업데이트(feat. update + substr)

목차 Oracle 특정 자릿수만 업데이트😃 아래 STUDENT 테이블이 있다. 여기서 개인정보 보호 차원에서 JUMIN컬럼의 7번 째부터 '1234567'로 UPDATE 하려고 한다. 아래처럼 UPDATE SQL을 실행하면 된다. UPDATE STUDENT SET JUMIN = SUBSTR(JUMIN,1,6) || '1234567' ; substr로 1~6번지값을 그대로 가져오고 ||로 '1234567'을 붙여서 update함 결과값 다양하게 응용이 가능할 듯 싶다, 내가 잊지 않기 위해 메모 참조 : https://community.oracle.com/tech/developers/discussion/2338069/how-do-i-update-the-substring-of-a-string-value

IT/DBMS 2022.11.29

[Oracle]ORACLE SYNOSYM(시노님-동의어)

목차 사람도 친구의 별명을 부르듯 오라클에서도 테이블에 별명을 붙일 수 가 있는데 이 별명을 붙이는 기능을 시노님이라고 함 시노님을 사용하는 목적은 보안이나 사용자의 편리성 때문임 -- 생성 문법 CREATE [PUBLIC] SYNONYM synonym_name FOR [schema.] 대상객체; 종류는 Private Synonym과 public Synonym이 있고 private synonym은 만든 사용자만 사용할 수 있는 synonym임 대부분은 synonym은 프로젝트에 참여한 많은 사람들이 다 볼 수 있도록 만드는 것이 좋은데 이 때 사용하는게 public synonym임 synonym을 생성하려면 CREATE [PUBLIC] SYNONYM이란 권한이 필요하므로 아래와 같이 권한을 먼저 할당 해..

IT/DBMS 2022.11.29

[Oracle]ORACLE DELETE, TRUNCATE, DROP 차이

목차 delete는 데이터만 지워지고 사용중인 디스크상의 공간은 유지, TRUNCATE는 CREATE TABLE로 테이블을 만들었던 상태(데이터가 1도 없음)로 모든 데이터를 삭제하고 컬럼만 남겨놓음, 사용중인 디스크 공간도 사라짐, DROP은 제일 위험한 명령어이고 데이터와 테이블 전체를 삭제함(사용중인 공간, 인덱스, 제약조건등 전부 삭제됨) DELETE 문법은 쉽지만 DELETE문은 데이터를 삭제한다고 알고 있지만 사실 데이터는 삭제되지 않고 해당 블록에 그대로 남아 있고 BBED같은 툴을 이용하면 DELETE된 데이터도 전부 복구 가능하다고 함 그래서 DELETE를 한 후에 테이블의 크기를 확인해 보면 크기가 줄어들지 않고 그대로임 예를 들어, 100만건 데이터가 있는 테이블의 용량이 100MB였..

IT/DBMS 2022.11.29

[Oracle] Oracle 중복데이터 제거(feat. delete from table + group by having)

목차 Oracle 중복된 데이터만 조회😉 select from table group by having절로 중복 데이터만 조회하는 건 아래처럼 조회하면 된다. SELECT NAME, sum(1) hap FROM TMP_220512 t GROUP BY NAME HAVING sum(1) > 1 ; 결과는 아래처럼 name이 1개 이상인 중복데이터가 조회된다. 문득 위의 중복된 데이터만 제거하고 싶어서 해봤다. 아래처럼 쿼리를 날리면 된다.(더 좋은 방법이 있을 수도 있다.) 테이블 상태(인덱스 존재 등)에 따라 오래 걸릴 수도 있다. 중복된 데이터만 제거😄 먼저 group by having절로 중복데이터가 1개 이상인 데이터만 뽑고 그걸 서브쿼리에 넣은 후 DELETE문으로 삭제 DELETE FROM TMP_..

IT/DBMS 2022.11.29

[Oracle] system 계정 비밀번호 만료/비밀번호 변경(feat. ORA-00988)

목차 system 계정 비밀번호 만료/비밀번호 변경😊 회사 개발서버의 Oracle system 계정이 만료가 되었다. 만료가 자주 나오는게 아니니 또 간만에 구글링을 해서 system 계정을 변경 했다. 그 과정에 에러가 발생해서 잊지 않기 위해 기록한다. 관리자 권한으로 접속😍 Oracle이 설치된 서버에서 system as sysdba로 관리자 권한으로 접속한다. 난 ss를 sqlplus / as sysdba로 환경변수에 alias를 미리 세팅해 뒀다. alter 쿼리 실행😆 접속 후 아래 쿼리를 실행해서 비밀번호를 변경하면 되는데 에러가 났다.🙄 ALTER USER system identified by 변경할 비밀번호; ORA-00988 에러는 구글링 해보니 내 상황과 맞지 않는 답들이었다.(;가 ..

IT/DBMS 2022.11.28

[SQL] Oracle SELECT query 실행 순서

목차 SQL SELECT 쿼리 실행 순서😀 SELECT 쿼리에서 실행 순서는 아래와 같다. 부끄럽지만 처음엔 저런 순서가 있는 지 몰랐고 최근에 알았다. 아무것도 모르는 초보 시절엔 그냥 썼다고 치면 시간이 흐르면서는 점점 이해하면서 쓰려고 한다. 저 순서를 반드시 기억하고 쿼리를 작성해야 하며 이에 따른 퍼포먼스의 차이가 크다. 예시 SELECT SQL😄 SELECT JOB_ID ,AVG(SALARY) SAL_AVG FROM EMPLOYEES2 e WHERE SALARY > 13000 GROUP BY JOB_ID HAVING COUNT(*) > 1 ORDER BY SAL_AVG DESC ; 위 간단한 쿼리문에서도 내부적으로는 6단계를 거친다. 저 실행 순서를 하나씩 뜯어 보겠다.😎 FROM절 쿼리의 첫..

IT/DBMS 2022.11.28
반응형