개발은 재밌어야 한다
반응형
article thumbnail
스칼라 서브쿼리란? SQL에서의 활용과 주의점
RDBMS 2024. 11. 25. 00:16

SQL에서 서브쿼리는 하나의 쿼리 내에 포함된 또 다른 쿼리를 의미합니다. 그중에서도 스칼라 서브쿼리(Scalar Subquery)는 단일 값(스칼라 값)을 반환하는 서브쿼리입니다. 이 값은 숫자, 문자열, 날짜 등 어떤 데이터 유형이든 될 수 있으며, 주로 SELECT 절이나 WHERE, HAVING 절에서 사용됩니다. 이번 글에서는 스칼라 서브쿼리의 개념, 활용 사례, 장단점, 그리고 주의점에 대해 알아보겠습니다.스칼라 서브쿼리란?스칼라 서브쿼리는 SQL 실행 중 하나의 값을 반환하는 서브쿼리입니다. 보통 다음과 같은 특징을 가집니다:단일 값 반환스칼라 서브쿼리는 반드시 단일 값(1개의 행, 1개의 열)을 반환해야 합니다. 만약 다중 행이 반환되면 실행 시 오류가 발생합니다.사용 위치스칼라 서브쿼리는..

article thumbnail
오라클에서 두 쿼리의 결과 비교하기
RDBMS 2024. 11. 12. 12:27

데이터베이스 개발 및 운영 중 두 쿼리의 결과가 동일한지 또는 차이가 나는지 확인해야 하는 경우가 자주 발생합니다.예를 들어:코드 최적화: 비슷한 쿼리지만, 더 효율적인 방법을 찾고자 할 때데이터 정합성 확인: 서로 다른 시스템에서 수집된 데이터의 일관성을 검토하고자 할 때이러한 상황에서 오라클에서 쿼리 비교를 할 수 있는 다양한 방법을 살펴보겠습니다. 오라클에서 두 쿼리 비교 방법오라클에서는 두 쿼리의 결과를 비교하기 위한 몇 가지 방법이 있습니다. 각각의 방법을 예제를 통해 자세히 알아보겠습니다.1) MINUS 연산자MINUS 연산자는 두 개의 SELECT 쿼리 결과에서 차이 나는 행만을 반환합니다.쿼리 A MINUS 쿼리 B는 쿼리 A에는 있지만 쿼리 B에는 없는 데이터를 보여줍니다.반대로, 쿼리 ..

article thumbnail
[MySQL] 인덱스 생성, 삭제, 변경, 조회 방법
RDBMS 2024. 10. 9. 19:06

이 글에서는 MySQL에서 인덱스를 생성, 삭제, 조회하는 방법과 인덱스를 관리할 때 주의해야 할 사항에 대해 알아보겠습니다. 인덱스란 무엇인가?인덱스는 테이블의 데이터를 보다 빠르게 검색할 수 있도록 도와주는 자료 구조입니다. 인덱스를 추가하면, MySQL은 데이터를 조회할 때 전체 테이블을 스캔하는 대신 인덱스를 먼저 참조하여 효율적으로 데이터를 찾습니다. 마치 책의 마지막에 있는 색인(index)과 비슷한 개념입니다.하지만, 인덱스는 검색 성능을 크게 향상시키지만, 항상 긍정적인 영향만 미치는 것은 아닙니다. 인덱스를 너무 많이 추가하면 삽입(insert), 업데이트(update), 삭제(delete) 성능에 영향을 미칠 수 있으며, 인덱스를 관리하는 데 추가적인 스토리지도 필요합니다.  인덱스 생..

article thumbnail
[Oracle] 오라클 조인하는 방법 정리
RDBMS 2023. 3. 27. 23:59

오라클에서 사용되는 조인들에 대해 알아보자 우선 예제 테이블 데이터를 준비합니다.  CREATE TABLE DEPT (DEPTNO number(10), DNAME VARCHAR2(14), LOC VARCHAR2(13) );INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK');INSERT INTO DEPT VALUES (20, 'RESEARCH', 'DALLAS');INSERT INTO DEPT VALUES (30, 'SALES', 'CHICAGO');INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');CREATE TABLE EMP ( EMPNO ..

article thumbnail
[Oracle] 오라클 소수점 반올림(ROUND), 절사(TRUNC)
RDBMS 2023. 2. 15. 22:12

오라클 소수점을 반올림하거나 절사(버림)하는 함수를 적어볼까한다.  | ROUND오라클에서 소수점 자리수를 반올림하기 위해서는 ROUND를 사용한다.ROUND(처리하는 값, 자리수)로 사용할 수 있다.자리수가 양수이면 해당 자리수만큼 반올림하고음수이면 해당 자리수만큼 반올림한다. 예시)1) 소수점 반올림SELECT ROUND(182.658947) AS VALUE FROM DUAL해당 경우에는 자리수를 지정하지 않았기 때문에 소수점뒤로 반올림을 하여서 183이 된다.  2) 소수점 첫째짜리까지 반올림SELECT ROUND(182.658947, 1) AS VALUE FROM DUAL해당 경우에는 소수점 첫째자리까지 반올림해서 보여주기 때문에 소수점 둘째자리에서 반올림해서 보여준다. 3) 소수점 둘째자리까지 ..

article thumbnail
[Oracle] 오라클 데이터 복구
RDBMS 2023. 1. 30. 23:33

데이터를 실수로 삭제를 해버렸다...오라클에서는 데이터를 삭제 또는 수정후 COMMIT했을때 Oralce의 Flashback을 통해 TIMESTAMP를 사용해서 이전의 데이터를 조회해서 복구할 수 있는 기능이 있다(해당 기능은 오라클 9i 버전 이상부터 지원) 주의할점은 Flashback은 Undo Data를 사용하기 때문에 undo_retention 파라미터값에 의해 보존되는 시간이 정해져있습니다. (기본값 900초) undo_retetion 조회 쿼리select * from v$parameter where name = 'undo_retention'; 사용방법SELECT *FROM [TABLE 명] AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE) -- 단위는 ..

article thumbnail
[Oracle] MERGE INTO -> 데이터가 있는지 확인(SELECT) 하고 데이터를 삽입하거나 업데이트(INSERT, UPDATE)하자
RDBMS 2022. 9. 17. 01:37

보통 데이터를 처리할때 데이터의 존재 여부를 확인(SELECT)하고 해당 값이 없으면 삽입(INSERT)하고 있으면 업데이트(UPDATE)를 하게 된다. 이렇게 되면 데이터를 확인하는 쿼리, 데이터를 삽입 하는 쿼리, 데이터를 업데이트 하는 쿼리3개의 쿼리를 작성해줘야합니다.  오라클에서는 이러한 처리를 한번에 가능 할 수 있습니다 !바로 MERGE INTO 를 사용하는 것입니다오라클 9i 버전부터 MEGER 문을 사용할 수 있으며, DELETE를 사용하는 MERGE 문은 10g 버전부터 사용할 수 있다.   사용 문법MERGE INTO [TABLE / VIEW] -- update 또는 insert할 테이블 혹은 뷰    USING [TABLE / VIEW / DUAL] -- 비교할 대상 테이블 혹은 뷰..

article thumbnail
MySQL에서 특정 문자로 문자열 SPLIT 하기 - SUBSTRING_INDEX
RDBMS 2022. 4. 19. 12:08

MYSQL에서는 특정 문자를 기준으로 SPLIT해서 해당 값을 여러 열로 나누어야 할 일이 발생했을때 사용하는 방법을 작성해보겠습니다. 위와같이 THRESHOLD라는 컬럼이 파이프라인( | )으로 이루어져 있다고 했을때 해당 " | "를 기준으로 컬럼을 나누고 싶다고 가정했을때 SUBSTRING_INDEX(문자열, 구분자, 구분자의 index) SUBSTRING_INDEX함수를 통해서 해당 값을 나눌 수 있습니다. 문자열을 시작 or 끝부터 index번째 구분자까지 자르는 것입니다. index가 양수일 경우 문자열의 첫부분부터,index가 음수일 경우 문자열의 뒷부분부터 자르게됩니다. THRESHOLD의 문자열 값을 구분자 " | "에 따라 나누어 출력한다고 했을때 THRESHOLD 값 예)  1000|..

article thumbnail
[MySQL] 컬럼 추가, 컬럼 삭제, 컬럼명 변경, 컬럼 타입 변경
RDBMS 2022. 3. 3. 10:34

자꾸 찾아보게 되어서 이번기회에 정리해서 포스팅 해보려고 합니다. 컬럼 추가1. 테이블에 컬럼 맨뒤에 추가ALTER TABLE [테이블명] ADD COLUMN  [컬럼명] [자료형]EX)ALTER TABLE board ADD COLUMN board_type varchar(100) NOT NULL; 2. 테이블에 컬럼 맨앞에 추가ALTER TABLE [테이블명] ADD COLUMN  [새컬럼명] [자료형] FIRSTEX)ALTER TABLE employee ADD COLUMN working_day varchar(200) NOT NULL FIRST 3. 테이블에 지정 컬럼 뒤에 추가ALTER TABLE [테이블명] ADD COLUMN  [새컬럼명] 자료형 AFTER [앞컬럼명]EX)ALTER TABLE em..

article thumbnail
슬로우 쿼리(Slow Query) 조회 쿼리(Oracle, MS-SQL, Mysql, postgreSQL)
RDBMS 2022. 1. 18. 12:10

슬로우쿼리Slow Query(슬로우쿼리)Slow Query(슬로우쿼리)는 지정한 시간보도 실행하는데 오래걸리는 쿼리에 대한 log를 것입니다특정 작업이 오래 걸린다면 로그를 통해 원인을 파악할 수 있겠습니다.또한 대량이 데이터를 조회하거나 잘못된 인덱스 사용으로 인한 장시간 MySQL 프로세스가 물리는 현상이 발생 할 경우 어떤 쿼리문에 이런 현상을 발생 하였느냐에 대해서 분석시 Slow Query를 사용하면 부하가 증가되는 쿼리를 찾을 수 있을꺼라고 생각됩니다.출처 : https://itstudyblog.tistory.com/384slow query 란 ? DBMS 가 client로부터 요청받은 query를 수행할때 일정시간 이상 수행되지 못한 query즉 길어야 1~2초 걸리는 db 쿼리가 예상보다 ..

article thumbnail
[오라클 ORACLE] ASH란?
RDBMS 2022. 1. 11. 16:18

ASH(Active Session History)Ratio(비율) 기반 분석방법론과 대기이벤트 기반 분석방법론의 한계점은 문제가 있다고 진단했을때 그 원인을 찾아 실제 문제를 해결하는 데까지 많은 시간이 걸리는 데 있다고 합니다. V$SESSION을 이용하여 실시간 세션에 대한 모니터링을 하고 있는데 이는 해당 시점에서의 걸리는 쿼리만을 볼 수 있다는 점입니다. 이를 끊임없이 EXCUTE(실행) 시키며 모니터링에는 한계가 있음 그래서 오라클 10g에서 부터 생겨난 기능이 ASH(Active Session History)기능입니다. ASH에서는 뷰의 명세를 보고 많은 정보를 찾을 수 있는 session의 활동 정보, SQL 수행빈도등을 통하여 문제점을 접근 할 수 있습니다.==================..

반응형