본문 바로가기

데이터베이스/oracle

(13)
Oracle의 MERGE 문과 유사한 기능을 MariaDB, MySQL, MSSQL에서 구현하는 방법 데이터베이스에서 조건에 따라 데이터를 업데이트하거나 삽입하는 작업은 매우 일반적입니다. 각 데이터베이스 시스템은 이러한 작업을 수행하기 위한 고유한 구문을 제공합니다. 이 글에서는 Oracle, MariaDB, MySQL, MSSQL에서 MERGE 문 또는 유사한 기능을 구현하는 방법을 예제와 함께 설명합니다.Oracle: MERGE 문Oracle에서는 MERGE 문을 사용하여 조건에 따라 데이터를 업데이트하거나 삽입할 수 있습니다.예제:MERGE INTO target_table tgtUSING source_table srcON (tgt.id = src.id)WHEN MATCHED THEN UPDATE SET tgt.name = src.name, tgt.value = src..
SQL 특징 및 최적화 SQL(Structured Query Language)SQL은 관계형 데이터베이스에 포함된 데이터를 쿼리하기 위해 설계된 언어입니다. SQL은 C나 BASIC과 같은 명령형 언어가 아닌 집합적이고 선언적인 질의 언어입니다.SQL의 주요 특징구조적(Structured): SQL은 데이터베이스 스키마와 구조에 맞춰 데이터를 정의하고 조작하는 언어입니다.집합적(Set-based): SQL은 개별 행이 아닌 데이터 집합을 처리합니다.선언적(Declarative): SQL은 원하는 결과를 선언적으로 기술하며, 이를 어떻게 수행할지는 DBMS에 맡깁니다.SQL 최적화SQL은 기본적으로 구조적이고 집합적이며 선언적인 질의 언어입니다. 사용자는 원하는 결과 집합을 구조적이고 집합적으로 선언하지만, 그 결과 집합을 만드..
Oracle 계정 및 데이터베이스 생성 --테이블 스페이스 생성 CREATE TABLESPACE DBMSEXPERT_DATA DATAFILE 'C:\app\dbmsexpert\oradata\orcl\DBMSEXPERT_DATA.DBF' SIZE 4G AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED LOGGING ONLINE PERMANENT EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT AUTO FLASHBACK ON ; --임시 테이블 스페이스 생성 CREATE TEMPORARY TABLESPACE DBMSEXPERT_TMP TEMPFILE 'C:\app\dbmsexpert\oradata\orcl\DBMSEXPERT_TMP.DBF'..
오라클 인덱스 주의점 *** 인덱스를 만들어도 안타는경우 *** 1.인덱스 컬럼을 가공 ex) WHERE SUBSTR(ORDER_NO, 1, 4) = '2019' => WHERE ORDER_NO LIKE '2019%' 2.인덱스 컬럼의 묵시적 형변환( 같은 타입으로 비교해야 함) ex) WHERE REG_DATE = '20190730' => WHERE REG_DATE = TO_DATE('20190730', 'YYYYMMDD') 3.인덱스 컬럼 부정형 비교 ex) WHERE MEN_TYPE != '10' => WHERE MEN_TYPE IN ('20', '30') 4. LIKE 연산자 사용 시 %가 앞에 위치 5. OR 조건 사용 => UNION ALL로 대체
오라클 대량 더미 데이터 넣기 /** 데이터 복제 **/ /*계층형 쿼리를 사용 하여 인위적으로 데이터 생성*/ select * from dual connect by level
Oracle에서 HTTP 통신 DECLARE resp VARCHAR2(32767); v_host VARCHAR2(100) := ' http://www.chunkind.com'; BEGIN UTL_HTTP.SET_TRANSFER_TIMEOUT(10); resp := UTL_HTTP.REQUEST(v_HOST); DBMS_OUTPUT.PUT_LINE('end:' || resp); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('ERR:' || SQLERRM); DBMS_OUTPUT.PUT_LINE('MSG:' || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE); END;
운영중인 인덱스 변경 1.변경할 인덱스를 생성한다. CREATE INDEX INNIDBA.NEW_XIE2NCPN01MT ON INNIDBA.NCPN01MT(USEFL,ISSUEMETHOD,DNLD_CPN_YN,ISSUEDATENAFL,ISSUESTDATE,ISSUEENDDATE,CPNSEQ) ONLINE TABLESPACE TSI_INNI; 2.기존 인덱스를 제거한다. DROP INDEX INNIDBA.XIE2NCPN01MT; 3.새로생성할 인덱스 이름을 기존인덱스 이름으로 대체한다. ALTER INDEX INNIDBA.NEW_XIE2NCPN01MT RENAME TO XIE2NCPN01MT;
Index 생성, 삭제, 조회 Oracle, MySQL, MariaDB, MSSQL에서의 인덱스 관련 명령어를 비교한 글입니다. 인덱스 생성, 삭제, 이름 변경, 컬럼 변경 등의 기본 문법을 각각 설명하겠습니다. 1. 인덱스 생성 (CREATE INDEX)DBMS 기본 문법 예OracleCREATE INDEX idx_emp_name ON emp(name);MySQLCREATE INDEX idx_emp_name ON emp(name);MariaDBCREATE INDEX idx_emp_name ON emp(name);MSSQLCREATE INDEX idx_emp_name ON emp(name); * UNIQUE 인덱스가 필요할 경우:CREATE UNIQUE INDEX idx_emp_email ON emp(email); 2. 인덱스 삭제..