old posting/MySQL

    [SQL] PL/SQL 기초

    PL/SQL Procedural LANGUAGE / SQL 오라클에서 제공하는 프로그래밍 언어 기본 SQL만으로는 데이터 조작이 불편(부족)한 부분을 PL/SQL과 함께 사용하면 효과적으로 다룰 수 있다. PL/SQL은 dbeaver에서 사용할 수 없다. PL/SQL은 기본적으로 처리된 PL/SQL의 결과를 화면에 출력하지 않는다. PL/SQL Block 구성 DECLARE(선언부) 변수나 상수 선언 EXECUTABLE(실행부) 제어, 반복, 출력, 함수정의 등... ex) BEGIN ~ END EXCEPTION(예외처리) 실행도중 발생된 에러 처리 CMD에 결과 출력 DBMS_OUTPUT.PUT_LINE(); &을 이용한 변수의 자세한 값 변화 표시를 OFF한다. (기본값 ON) SET VERIFY O..

    [SQL] INDEX와 INDEX의 종류 그리고 주의 사항

    인덱스(Index) 데이터(레코드)를 빠르게 접근하기 위해 쌍으로 구성된 데이터 Index가 없으면 테이블의 특정값을 찾기 위해 모든 데이터를 서치하는 TABLE SCAN 발생 테이블에 기본키(PK)가 있으면 기본키(PK)에 대한 기본 인덱스가 자동 생성된다. 인덱스의 종류 M-one 검색 Tree B-Tree B*-Tree B+-Tree 인덱스를 잘 사용하면 성능이 향상될 수 있지만, 잘못 설정하면 역효과가 발생한다. ROWID 테이블에서 행의 위치를 지정하는 논리적인 주소값 기본적으로 INSERT 되는 순서대로 입력 되지만, 정렬 없이 저장된다. SELECT name, ROWID FROM test; INDEX는 WHERE 절에 오는 조건컬럼이나, JOIN 조건절에 오는 조건컬럼에 만들어 두는게 원칙이..

    [SQL] 정규화

    정규화(Normalization) 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정 테이블 R에서 일부 속성들로만 추출하여 만든 테이블 R1, R2가 Natural Join을 통해 원래의 테이블 R로 정보 손실 없이 복귀할 수 있는 경우 R은 R1, R2로 무손실 분해 되었다고 한다. 정규화의 목적 가능한 중복(Redundancy)을 제거하여 삽입, 삭제, 갱신 이상(anomaly) 가능성 줄이기! 정규화의 종류(단계) 비정규 릴레이션 제1 정규형:1NF 테이블 R에 속한 모든 속성의 도메인(Domain)이 원자값(Atomic Value)로만 구성된 정규형이다. 테이블의 속성값이 원자 값만으로 되어 있는 정규형 제2 정규형:2NF 테이블 R이 제 1정규형이고, 기..

    [SQL] ROLLUP(), CUBE(), GROUPING() 그리고 PIVOT(), UNPIVOT()

    ROLLUP() 주어진 데이터들의 소계를 구해준다. SELECT no, sum(pay) FROM test GROUP BY ROLLUP(no); CUBE() 주어진 데이터들의 소계와 총계를 구해준다. SELECT no, sum(pay) FROM test GROUP BY CUBE(no); GROUPING() 컬럼이 해당 그룹핑 작업에 사용되었는지 아닌지를 구별해주는 함수, 컬럼이 그룹핑 작업에 사용되었으면 0을 반환하고 사용되지 않았으면 1을 반환한다. SELECT no, sum(pay), GROUPING(no) FROM test GROUP BY ROLLUP(no); LISTAGG() 여러개의 행을 하나의 컬럼으로 합친다. SELECT no, LISTAGG(name, '*') WITHIN GROUP(ORDE..