분류 전체보기

    [SQL] 인덱스 힌트 / 옵티마이저 힌트 사용 방법 (주석, 튜닝)

    기본적으로 쿼리를 실행하면 DBMS 내의 옵티마이저가 여러개의 실행 계획을 만들고 그 안에서 제일 비용이 적게 소요되는 실행계획을 선택하여 실행이 되지만 옵티마이저를 믿지 못하거나 특정 방법으로 실행 계획을 하고 싶을 시에는 옵티마이저 힌트를 사용하면 된다. 기본적으로 사용법은 아래와 같다. OPTIMIZER_MODE 지정가능 값/* + ALL_ROWS */목적 : Best Throughput용도 : 전체 RESOURCE 소비를 최소화 시키기 위한 힌트. Cost-based 접근 방식으로 ALL_ROWS는 Full Table Scan을 선호하며 CBO (Cost Based Optimization)는 default로 ALL_ROWS를 선택한다. /*+ FIRST_ROWS */목적: Best Response..

    [DB] 데이터 딕셔너리

    개념데이터 딕셔너리는 데이터베이스의 가장 중요한 부분 중의 하나인 데이터베이스와 관련된 정보를 제공한다. 데이터 딕셔너리의 내용은 DDL 혹은 DML이 수행될 때 오라클 서버에 의해 변경된다. 소유자는  SYS이며 오라클 서버에 의해 유지되므로 사용자는 데이터 딕셔너리의 내용을 변경할 수 없다. 단지 일반 사용자는 SELECT 명령으로 데이터 딕셔너리의 내용을 조회만 할 수 있다.  데이터 딕셔너리는 기본 테이블과 딕셔녀리 뷰의 두 가지 형태로 제공한다. 기본 테이블은 데이터베이스에 관한 정보를 갖고 있는 테이블로서 오라클 서버만 기록할 수 있고 데이터가 은폐되어 있으므로 사용자가 직접 접근할 수 없다. 데이터 딕셔너리 뷰는 기본 테이블의 정보를 더 유용하게 보여주기 위해서 기본 테이블을 요약한 형태이다..

    [Python] 아스키 코드 (Ascii Code) 사용하기

    파이썬에서는 ord()와 chr() 함수를 통해 문자를 아스키코드로, 아스키코드를 문자로 변환할 수 있다. print(ord("A"))print(ord("B"))print(ord("C"))# 65# 66# 67print(chr(65))print(chr(66))print(chr(67))# A# B# C 각 문자에 대한 아스키코드를 모두 외울 필요는 없지만, 알파벳의 아스키코드는 대문자가 소문자보다 더 작다는 것과 알파벳의 순서에 따라 아스키코드의 숫자가 1씩 증가한다는 특징 정도는 알아둘 필요가 있다.바로 이 특징을 이용하면 특정 알파벳에서 N번째 후의 알파벳을 구할 수 있다.# A에서 두 번째 후의 숫자print(chr(ord("A") + 2))# C 이번엔 Z에서 1번째 후의 알파벳을 구하고자 한다.Z..

    [Python] 포메팅 format

    '%'를 사용한 포멧팅변수 타입에 따라서 %s, %d, %f 구분해서 써줘야 함 기본적으로 %s는 문자열, %d는 정수, %f는 실수를 받아온다. 아래 예제에서 %f는 하나의 변수를 그대로 받아온 것이 아니라, one_length와 E의 곱의 결과를 받아왔다. 즉 포메팅을 하면서 연산의 결과를 받아올 수도 있다. 그리고 %f와 %.2f의 차이는 %.2f는 실수를 받아올 때 소수점 둘째 자리까지만 표현되도록 하라는 의미다 즉 %.3f라고 되어있으면 소수점 셋째자리까지 표현된다.something = '볼펜'EA = 2one_length = 5.343scale = 'cm'print('%s %d개의 길이는 %f%s 입니다.' % (something, EA, one_length*EA, scale))#실수 소수점 ..

    [SQL] 정규화(Normalization)와 반정규화(De-Normalization)

    정규화란?정규화는 데이터의 일관성, 최소한의 데이터 중복, 최소한의 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정이다.정규화된 모델은 테이블이 분해된다. 테이블이 분해되면 직원 테이블과 부서 테이블 간에 부서코드로 조인(join)을 수행하며 하나의 합집합으로 만들 수 있다.정규화를 하면 불필요한 데이터를 입력하지 않아도 되기 때문에 중복 데이터가 제거된다.절차문제점정규화는 데이터 조회(select) 시에 조인(join)을 유발하기 때문에 CPU와 메모리를 많이 사용한다.아래 코드를 프로그램화 한다면 중첩된 루프(Nested Loop)를 사용해야 한다.[ANSI JOIN}select 사원번호, 부서코드, 부서명, 이름, 전화번호, 주소from 직원, 부서where 직원.부서코드 = 부서.부서코드;s..

    IPsec의 개념

    Secure Protocolstcp/ip 5계층에서 보안 관련된 프로토콜은 많이 존재한다. 대표적인 예를 들어보면 다음과 같다. 1) Application Layer - HTTPS, SSH, PGP, S/MIME2) Transport Layer - SSL/TLS3) Network Layer - IPsec, VPN4) Data Link Layer - L2TPIPsec이란?IPsec는 Internet Protocol Security의 약자이다.Network layer에서 IP패킷을 암호화하고 인증하는 등의 보안을 위한 표준이다.안전한 인터넷 프로토콜(IP) 통신을 위한 인터넷 프로토콜들의 모음이다.IPSec가 제공하는 보안 서비스의 범위는 호스트나 보안게이트웨이 사이이다.VPN을 구현하는데 사용되는 프로토콜..

    [SQL] GROUP BY 절 사용법 (그룹별 집계)

    SQL Server에서 GROUP BY 절은 특정 칼럼을 기준으로 집계 함수를 사용하여 건수(COUNT), 합계(SUM), 평균(AVG) 등 집 계성 데이터를 추출할 때 사용한다. GROUP BY 절에서 기준 칼럼을 여러 개 지정할 수 있으며, HAVING 절을 함께 사용하면 집계 함수를 사용하여 WHERE 절의 조건절처럼 조건을 부여할 수 있다. GROUP BY 절은 중복제거를 할 때도 사용 가능하다. SQL Server에서는 GROUP BY 절을 사용할 경우 그룹 칼럼을 기준으로 자동으로 ORDER BY가 되지만 명시적으로 ORDER BY를 사용하여 쿼리문을 작성하는 것이 좋다.기본적인 GROUP BY 절 사용법직업(job) 별로 급여(sal) 총합계를 구하는 예제이다.GROUP BY 절의 칼럼은 S..

    [SQL] INSERT 문 사용법 3가지 (데이터 입력)

    SQL Server에서 데이터를 입력하기 위해서는 INSERT 문을 사용한다. SQL Server 2008부터 여러 행을 입력할 수 있는 기능이 추가되었으며, SELECT 해서 INSERT 하는 방법으로도 여러 건의 데이터를 입력할 수 있다. INSERT와 UPDATE를 동시에 수행하기 위해서는 MERGE 문을 사용하거나 프로시저를 생성하여 사용하면 된다.기본적인 INSERT 방법INSERT INTO [테이블명] ([칼럼1], [칼럼2], [칼럼3] ...) VALUES ([값1], [값2], [값3] ...)입력할 칼럼의 개수와 값을 개수를 동일하게 입력하면 된다. INSERT INTO dbo.dept(deptno, dname, loc)VALUES(50, 'IT TEAM', 'SEOUL'); 입력할 테..