반응형

전체 글 706

[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

[PostGreSQL] 현재 실행중인 SQL 조회, 종료

목차 PostGreSQL 현재 실행중인 SQL 조회, 종료 현재 실행중인 SQL 조회 쿼리😊 select * from pg_stat_activity ; 컬럼 정보 lock 걸린 테이블 조회🙄 SELECT t.relname, l.locktype, page, virtualtransaction, pid, mode, granted FROM pg_locks l, pg_stat_all_tables t WHERE l.relation = t.relid ORDER BY relation asc ; 현재 테이블에 lock을 확인 할 수 있다. 기본적으로 대부분의 lock 테이블은 괜찮으나 RowExclusiveLock 이 검색된다면 해당 테이블에 접근이 지연되어 다른 쿼리에도 영향을 미칠 수 있으므로 반드시 잡고있는 트랜잭..

IT/DBMS 2022.11.28

[Oracle] oracle 쿼리 로그 보기

목차 oracle 쿼리 로그 보기 아래처럼 쿼리 실행 시 오라클에서 실행된 모든 쿼리들이 시간대별로 나온다. 모든 쿼리 조회😙 select * from v$sql -- WHERE절은 선택사항 -- WHERE SQL_TEXT LIKE '%delete%' order by first_load_time desc 삭제 쿼리만 조회😏 select * from v$sql WHERE SQL_TEXT LIKE '%DELETE%' order by first_load_time desc ; 아주 예전꺼는 조회 안되는 걸 보니 v$sql에 저장되는 데이터 보관기간이 있는 듯 싶다. REDO 범위 실행 쿼리 조회😉 SELECT last_active_time ,parsing_schema_name ,sql_text FROM v$sq..

IT/DBMS 2022.11.28

[Cubrid]테이블 조인 - 컬럼 update

목차 테이블 조인 후 컬럼 update A라는 테이블의 aa라는 컬럼을 bb라는 컬럼의 값으로 업데이트 쳐야 될 상황이 생겼다. 아래처럼 inner join 후 업데이트 처리 했다.(테이블 백업 후 개발 DB니까 부담없이 실행) -- user테이블의 hp값을 tel로 업데이트 UPDATE user a INNER JOIN user b ON a.usr_idx=b.usr_idx SET a.hp=b.tel ; A와 B를 조인하여 나온 결과를 B의 특정 컬럼에 업데이트 하는 방법 UPDATE TARGET_TABLE B SET B.OLD_DATA = ( SELECT A.NEW_DATA FROM JOIN_TABLE A WHERE A.TABLE_KEY = B.OLD_DATA ) ; 간단한 내용이지만 내가 나중에 보기 ..

IT/DBMS 2022.11.28
반응형