분류 전체보기 15

오라클 SELECT~GROUP BY

ORACLE 12g 기준 및 실무 영역으로 작성한 글임을 알려드립니다. 데이터 분석가로 사회에 발을 딛은 지 벌써 3년이 되어갑니다. 작은 경험이나마 도움이 되길 바라는 마음으로 본 글을 작성하였습니다. SQL의 기본을 알고 싶어요.SQL을 공부하면서 과연 이런 걸 실무에서 사용할까? 하는 의문보다는 이런 것도 쓰는구나, 어렵겠다 싶었습니다. 경험이 많진 않으나 경험해 본 바, 늘 쓰이는 핵심들이 있더군요. 하지만 그 전에 기초를 알아야겠지요? 이번 포스팅에서는 그 기본만 알려드릴려 합니다. 1. SELECT COLUMN FROM TABLE 가장 쉬운 예시를 들어봅시다. 내가 구매한 쇼핑몰 사이트에서 구매내역을 "조회" 합니다. 이 말은 곧, "내가 구매한 내역(컬럼)을 쇼핑몰(테이블)로 부터 조회(SE..

오라클 LEFT JOIN, RIGHT JOIN

본 글은 oracle 12g 및 실무 영역 기준으로 작성되었음을 알려드립니다.※ 개발을 진행하면서 처음으로 대학교나 학원 및 자격증 공부블 하면서 배웠던 내용을 써먹겠구나! 했는데 사실 가장 헷갈렸던 부분이였다. 필자는 mysql 및 postgresql의 환경만 접했었고, 대규모 프로젝트 경험 또한 없었기 때문에 식은땀이 났던 경험이 생각났다.1. INNER JOIN: 개발을 하다보면 실무에서는 INNER JOIN과 LEFT OUTER JOIN을 가장 많이 쓰는 것을 경험할 것이다. 그렇다면 INNER JOIN은 정확히 어떻게 사용할까?SELECT A.COL1 FROM TABLE_1 A, TABLE_2 B WHERE A.PK = B.PK; 위 코드와 같이 테이블 2개를 조인시킬때, 각 테이블의..

오라클 SELECT의 기초, WITH부터 서브쿼리까지

ORACLE 12g 기준 및 실무 영역으로 작성한 글임을 알려드립니다. 1. SELECT이란?: DB에서 테이블을 조회하기 위한 가장 기본적인 DML(Data Manipulation Language)SELECT * FROM TABLE;어떠한 테이블을 조회하고자 할 때 사용'*'은 테이블의 컬럼을 의미하며, 전체를 조회하겠다는 의미이다.FROM 뒤에는 조회할 테이블 및 쿼리를 기입한다.2. WITH절의 SELECT: WITH절은 성능 문제로 잘 사용하지 않았었다. 하지만 변수 역할로 사용되어, 쓰일 수 있으니 숙지하는 것이 좋다.WITH AS 별칭 (SELECT COL1 FROM TABLE)SELECT * FROM 별칭;**WITH절 2번 이상 사용 시**WITH AS 별칭 (SELECT COL1 FROM..

PL/pgSQL - SQL 프로시저 언어

1. 소개 PL/pgSQL은 PostgreSQL 데이터베이스 시스템에서 로드가능한 프로시저 언어다. PL/pgSQL의 설계 목적은 다음과 같은 특징을 가지는 로드가능한 절차적 언어다. 함수, 프로시져, 트리거를 만들기 위해 사용할 수 있다. SQL 언어에 제어 구조를 추가한다. 복잡한 연산을 할 수 있다. 모든 사용자정의 타입, 함수, 프로시져, 연산자를 상속한다. 서버를 신뢰할 수 있게 정의할 수 있으며, 사용하기 쉽다. 1.1 장점 SQL은 대부분의 DBMS에서 사용되는 질의 언어이다. 쉽긴 하나, 모든 SQL 구문은 데이터베이스 서버에서 반드시 구문마다 개별적으로 실행된다. 다시 말해, 클라이언트 애플리케이션은 데이터베이스 서버에 반드시 쿼리를 개별적으로 보내고, 각 쿼리가 처리될 때까지 기다린 다..

SQL 수행 아키텍처(INSERT, SELECT, UPDATE)

INSERT문 실행 시 내부동작 → SQL문 실행 1. 서버프로세스 ● 구문분석 ○ SQL문의 문법을 확인(키워드 검사) ○ 테이블명, 컬럼명, 데이터 타입 확인(의미 검사) ○ SQL문을 실행한 계정의 권한 확인(권한 검사) ● Shared Pool의 라이브러리 캐시에 해당 쿼리 저장(쿼리 재사용 위해) ● 입력할 데이터를 리두로그버퍼와 DB버퍼캐시에 기록 2. COMMIT 실행 ● 백그라운드 프로세스 LGWR (Log Writer) ○ 리두로그버퍼 데이터 → 리두로그파일로 저장 ○ DB버퍼캐시 상태 변경 (Pinned --> Dirty) ○ Checkpointer가 DBWR에게 데이터 저장 신호 전달 ○ DBWR가 DB버퍼캐시 데이터 --> 데이터파일로 저장 SELECT문 실행 시 내부동작 → SQL..