반응형

IT/DBMS 58

[SQL] update에서 case when절 사용

update에서 case when절로 조건에 맞게 수정 아래처럼 temp_user 테이블에 데이터가 들어 있다. 아래처럼 update문을 실행하면 조건에 맞게 수정된다. update temp_user set user_name = case when user_seq = 1 then '슈' when user_seq = 2 then '퍼' when user_seq = 3 then '그' when user_seq = 4 then '랑' when user_seq = 5 then '조' when user_seq = 6 then '도' when user_seq = 7 then '막' when user_seq = 8 then '사' when user_seq = 9 then '라' end ; 결과값

IT/DBMS 2023.03.04

[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

[MySQL/MariaDB] Update join...

MySQL/MariaDB updae join... 😅 mysql에서 테이블을 조인해서 update를 실행해야 되는 경우 아래처럼 조인해서 업데이트를 하면 된다. 자주 쓰일 듯 하니 메모 해둠 -- mainTable과 subTable을 no로 조인한 뒤 no가 같은 데이터만 use_yn값을 'Y'로 변경 -- (양쪽 모두 있는 데이터만 가져오기 위해 inner join 사용) update mainTable a inner join subTable b on a.no = b.no set a.use_yn = 'Y' where a.no = b.no ;

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
반응형