일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- FOR
- createtextnode
- Openlayers
- const
- htmlFor
- Append
- 학습법 #집중력
- appendChild
- input
- VAR
- createElement
- boolean
- Let
- Today
- Total
목록IT/SQL (16)
Atomic Habits
/* 컬럼 총size */ SELECT SUM(data_length) FROM USER_TAB_COLUMNS WHERE TABLE_NAME = '테이블명' /* 컬럼 컬럼 갯수 */ SELECT COUNT(*) FROM USER_TAB_COLUMNS WHERE TABLE_NAME = upper('대문자 테이블명'); select * from user_tab_columns; select table_name, count(*) from user_tab_columns where table_name in (upper('cc'), upper('t1')) group by table_name; /* 참고 */ table_name, count(column_name) 이런 식으로 count도 가능? select owner..
출처 : https://intro0517.tistory.com/157 오라클 내의 전체 테이블 또는 컬럼을 조회하려면 SYS내의 VIEW를 이용하면됩니다. 1. ALL_TABLES - 로그인 된 계정의 권한으로 접근할 수 있는 모든 테이블들 - 예 ) 테이블명에 "테스트"를 포함한 테이블 검색 : SELECT * FROM ALL_TABLES WHERE LIKE '%테스트%'; 2. USER_TABLES - 로그인 된 계정이 소유하고 있는 테이블들 SELECT * FROM ALL_TABLES WHERE OWNER = '로그인된계정' 과 같다. 3. ALL_TAB_COLUMNS - 로그인 된 계정의 권한으로 접근할 수 있는 모든 테이블 내의 컬럼들 - 예 ) 컬럼명에 "테스트"를 포함한 컬럼 검색 SELEC..
오라클 시퀀스(Sequence) 를 생성하여, SEQ_NO 에 row_id 순으로 번호를 매겨보자. (1) 시퀀스 생성 CREATE SEQUENCE SEQUENCE_TAB1 START WITH 1 INCREMENT BY 1 MAXVALUE 999999999 MINVALUE 1 NOCYCLE NOCACHE (2) TAB1 테이블의 SEQ_NO 컬럼에 SEQUENCE_TAB1.NEXTVAL 을 이용하여 시퀀스 번호 삽입 UPDATE TAB1 SET SEQ_NO=SEQUENCE_TAB1.NEXTVAL (3) 결과를 조회해보면 기존에 SEQ_NO라는 빈 컬럼에 번호가 추가된다.
WHEN MATCHED THEN - UPDATE,DELETE 만 가능 WHEN NOT MATCHED THEN - INSERT 만 가능 UPDATE T2 TTT SET nm = (select nm from T1 where C1 = TTT.C1); MERGE INTO target_t a USING ( SELECT NVL(b.pk, a.pk) pk , NVL(b.c1, a.c1) c1 , NVL(b.c2, a.c2) c2 , NVL2(b.pk, 'M', 'D') flag FORM target_t a FULL OUTER JOIN source_t b ON a.pk = b.pk ) b ON a.pk = b.pk WHEN MATCHED THEN UPDATE c1 = b.c1, c2 = b.c2 -- b(O) - a(..
-- PK/INDEX 삭제문( 운영에서 추출하고 코드 실행 금지! 운영 인덱스가 제거됨! _new에서 추출! ) SELECT tablename, indexname, -- PK/INDEX 삭제문 CASE indexname ~* 'PK' -- 정규식(~), 대소문자 무시(*), t/f 반환 WHEN 'f' THEN 'DROP INDEX '||indexname||';' ELSE --ALTER TABLE [테이블명] DROP CONSTRAINT [테이블명_PK]; 'ALTER TABLE '||tablename||' DROP CONSTRAINT '||indexname||';' END AS drop_text FROM pg_indexes WHERE tablename in ( -- _new / _bak 만 실행 ) '..
-- 기존(운영) 테이블에서 삭제문 SELECT CASE regexp_count(INDEX_NAME, 'PK') WHEN 0 THEN 'DROP INDEX '||INDEX_NAME||';' ELSE 'ALTER TABLE '|| TABLE_NAME ||' DROP CONSTRAINT '||INDEX_NAME||';' END AS COLUMNS FROM USER_INDEXES WHERE TABLE_NAME LIKE UPPER('XX_NEW'); -- 운영에서 DROP문 추출하고 제거하면 사고 !! -- 기존(운영) 테이블에서 인덱스/PK 생성문 WITH 운영 AS ( SELECT table_name, uniqueness, replace(nvl(column_expression, column_name), '"..
-- 운영/배포 테이블 PK/INDEX 비교 ( 테이블명, _new or _bak)만 변경해주면 운영, 배포 테이블의 인덱스와 제약조건을 비교한다. ) select tablename, string_agg(CASE WHEN indexdef ~ '(UNIQUE)' THEN 'UNIQUE' ELSE '' END||substring(indexdef from '\(.*\)') , ', ' ORDER BY indexdef) from pg_indexes where tablename like 'fil%' and tablename not like '%new' -- 운영 데이터 group by tablename except -- union all select replace(tablename, '_new',''), stri..
-- 운영, 배포 테이블의 인덱스 불일치 판단(인덱스명은 select 문에 포함시키면 안됨) WITH 운영 AS ( SELECT B.TABLE_NAME, A.UNIQUENESS, B.COLUMN_NAME||' '||descend AS column_name_descend, B.DESCEND, B.COLUMN_POSITION, B.INDEX_NAME FROM USER_INDEXES A, USER_IND_COLUMNS B WHERE A.INDEX_NAME = B.INDEX_NAME AND B.TABLE_NAME LIKE UPPER('X%') AND B.TABLE_NAME NOT LIKE UPPER('%_NEW') ), 배포 AS ( SELECT REGEXP_REPLACE(B.TABLE_NAME, '_NEW',..
참조: https://gent.tistory.com/289 -------------------------------------------- -- 오라클 조인 - 예제 1 -------------------------------------------- WITH emp AS ( SELECT 7839 EMPNO, 'KING' ename, 'PRESIDENT' job, 90 deptno, 10000 locno, 1 SORT FROM dual UNION ALL SELECT 7566 EMPNO, 'JONES' ename, 'MANAGER' job, 20 deptno, 10002 locno, 2 SORT FROM dual UNION ALL SELECT 7788 EMPNO, 'SCOTT' ename, 'ANALYST'..
참조 : https://coding-factory.tistory.com/445 WITH절이란 WITH절은 오라클9 이후 버전부터 사용이 가능하며 이름이 부여된 서브쿼리라고 생각하시면 됩니다. 임시테이블을 만든다는 관점에서본다면 VIEW와 쓰임새가 비슷한데 차이점이 있다면 VIEW는 한번 만들어놓으면 DROP할때까지 없어지지 않지만 WITH절의 같은경우 한번 실행할 쿼리문내에 정의되어 있을경우, 그 쿼리문안에서만 실행된다는 차이점이 있습니다. WITH절을 사용하는 이유 WITH절은 복잡한 SQL에서 동일 블록에 대해 반복적으로 SQL문을 사용하는 경우 그 블록에 이름을 부여하여 재사용 할 수 있게 함으로서 쿼리 성능을 높일 수 있는데 WITH절을 이용하여 미리 이름을 부여해서 Query Block을 만들 ..