Database

    [Study] Real MySQL 8.0 - 9장(1) 옵티마이저와 힌트

    9.1. 개요 쿼리를 최적으로 실행하기 위해 각 테이블의 데이터가 어떤 분포로 저장되어 있는지 통계 정보를 참조하며, 그러한 기본 데이터를 비교해 최적의 실행 계획을 수립하는 작업이 필요하다. 대부분의 DBMS에서는 '옵티마이저'가 이러한 기능을 담당한다. 쿼리의 실행 계획을 수립하는 옵티마이저는 가장 복잡한 부분으로 알려져 있다. 9.1.1 쿼리 실행 절차 MySQL 서버에서 쿼리가 실행되는 과정은 크게 아래 세단계로 나눠진다. 1. 사용자로부터 요청된 SQL 문장을 잘게 쪼개서 MySQL 서버가 이해할 수 있는 수준으로 분리(파스 트리)한다. 2. SQL의 파싱정보(파스 트리)를 확인하면서 어떤 테이블을 읽고 어떤 인덱스를 이용해 테이블을 읽을지 선택한다. 3. 두번째 단계에서 결정된 테이블의 읽기 ..

    [SQL] NULL(널) 처리 함수 (NVL / ISNULL)

    리눅스에서 스크립트를 작성하고 있는데 테이블에 있는 값을 조회해서 다른 테이블에 넣는 작업을 하고 있었다. 오라클 DB로 SELECT한 결과 값을 따로 파일에 저장하고 그 파일을 가져오는 데 있어서 null 인 값들은 리눅스에서 공백('')으로 저장이 되어진다. 그래서 파일에 있는 값들을 읽어서 파라미터로 INSERT를 하려면 공백인 값들은 인식이 안되는 문제가 생기게 된다. 어떻게 할까..? 고민하다가 null인 값들은 문자열 'null'로 저장하자는 결론을 내렸다. 이러한 null을 처리해서 다른 문자열로 대체하는 SQL 함수를 소개하려고 한다. 일단 NULL 이라는 아이를 먼저 알아보자! NULL 이란? - NULL 값은 아직 정의되지 않은 값으로 0 또는 공백과 다르다. 0은 숫자고, 공백은 하나..

    [Oracle] SQL Developer 날짜 format 변경

    SQL Developer 에서는 기본적으로 테이블 날짜 date 컬럼을 년/월/일 (RR/MM/DD) 로 표시한다. 실제로 있는 데이터는 시분초까지 존재하지만, 자세히 나와 있지 않아 개발하는데 어려움이 있었다,, 더 자세한 날짜를 얻기 위해 년-월-일 시:분:초 (YYYY-MM-DD HH24:MI:SS) 형태로 출력하고자 아래 쿼리 한줄만 날리면 된다. 날짜 형식 변경 ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'; 시분초 단위까지 출력되는 것을 볼 수 있다. 하지만 developer 종료시 다시 초기화되기 때문에 매번 해당 쿼리를 날려줘야하는 귀찮음이 있다. 이럴때는 developer 설정으로 날짜 형식을 지정해 줄 수 있다. SQL Dev..

    오라클 TO_DATE - String 타입을 Date타입으로 변환

    DATE으로 변환시켜주는 TO_DATE 함수 SELECT TO_DATE('2016-09-01-151212','YYYY-MM-DD-HH24MISS') AS ONE ,TO_DATE('20160901091212','YYYYMMDDHHMISS') AS TWO ,TO_DATE('2016090115','YYYYMMDDHH24') AS THREE ,TO_DATE('2016','YYYY') AS FOUR FROM DUAL; TO_DATE('String타입 문자열', 'DATE 패턴') 다음과 같은 형식으로 쓰이며, String 문자열은 패턴과 형식이 같아야 적용이 된다. Sqldeveloper로 데이터 확인을 했는데, 시분초 단위까지 출력되지 않은건 Tool 자체적으로 시분초를 걸러서 년/월/일 만 출력해주기 때문이다..

    Oracle SQL 테이블 컬럼명, 테이블명 출력

    1. 테이블 명 정보 보기 select * from ALL_TAB_COMMENTS where TABLE_NAME='테이블명'; OWNER TABLE_NAME TABLE_TYPE COMMENTS ORIGIN_CON_ID 오너명 테이블명 테이블 종류 (table / view) 테이블 주석 2. 테이블 목록 출력하기 SELECT * FROM TAB; 3. 테이블 컬럼명 출력하기 select COLUMN_NAME from USER_TAB_COLUMNS where TABLE_NAME = '테이블명'; select COLUMN_NAME from ALL_TAB_COLUMNS where TABLE_NAME = '테이블명'; select COLUMN_NAME from ALL_COL_COMMENTS where TABLE_..