SQLD/SQL 기본 및 활용

    3-8 ORDER BY 절

    3-8 ORDER BY 절

    Ordery by는 모든 실행이 끝난 후 데이터 출력 직전에 정렬하며, 대량 데이터 정렬로 인한 성능 저하가 발생하기도 한다. Orcle DB는 정렬을 위해 메모리 내부에 할당된 SORT_AREA_SIZE를 사용하는데 만약 이게 너무 작으면 성능이 저하된다. 정렬을 회피하기 위해 인덱스를 생성할 때는 사용자가 원하는 형태로 오름차순 혹은 내림차순으로 생성해야 한다. ORDER BY 정렬 ORDER BY 절은 SQL 문장으로 조회된 데이터들을 다양한 목적에 맞게, 특정 칼럼을 기준으로 정렬하여 출력하는데 사용한다. ORDER BY 절에 칼럼명 대신에 SELECT 절에서 사용한 ALIAS 명이나 칼럼 순서를 나타내는 정수도 사용 가능하다. 별도로 정렬 방식을 지정하지 않으면 기본적으로 오름차순이 적용되며, ..

    3-7 GROUP BY, HAVING 절

    3-7 GROUP BY, HAVING 절

    집계 함수Aggregate Function 다중행 함수 중 집계 함수의 특성은 다음과 같다. 여러 행들의 그룹이 모여 그룹당 단 하나의 결과를 돌려주는 함수이다. GROUP BY 절은 행들을 소그룹화 한다. SELECT 절, HAVING 절, ORDER BY 절에 사용할 수 있다. 집계 함수명 ( [DISTINCT | ALL] 칼럼이나 표현식 ) - ALL : Default 옵션이므로 생략 가능함 - DISTINCT : 같은 값을 하나의 데이터로 간주할 때 사용하는 옵션임 자주 사용되는 주요 집계 함수들은 다음과 같다. 집계 함수는 그룹에 대한 정보를 제공하므로 주로 숫자 유형에 사용되지만, MAX, MIN, COUNT 함수는 문자, 날짜 유형에도 적용이 가능한 함수이다. [예제] 일반적으로 집계 함수는..

    3-6 FUNCTION

    3-6 FUNCTION

    내장 함수BUILT-IN FUNCTION 개요 함수는 다양한 기준으로 분류할 수 있는데 그 중 한가지로, 벤더에서 제공하는 내장 함수와 사용자가 정의하는 함수User Defined Function으로 나눌 수 있다. 내장 함수는 SQL을 더욱 강력하게 해주고 데이터 값을 간편하게 조작할 때 사용한다. 벤더 별로 차이가 크지만 핵심적인 기능들은 이름/표현법이 달라도 대부분의 DB가 공통적으로 제공한다. 함수는 입력되는 값이 아무리 많아도 출력은 하나만 되는, M:1 관계라는 중요한 특징을 가진다. 내장함수는 다시 함수의 입력 값이 단일행으로 입력되는 단일행 함수Single-Row Function와 여러 행의 값이 입력되는 다중행 함수Multi-Row Function으로 나뉜다. 또 다중행 함수는 집계 함수..

    3-5 WHERE 절

    3-5 WHERE 절

    WHERE 조건절 개요 자료를 검색할 때 SELECT 절과 FROM 절만을 사용하여 기본적인 SQL 문장을 구성한다면, 테이블에 있는 모든 자료들이 결과로 출력되어 실제로 원하는 자료를 확인하기 어렵다. 사용자들은 자신이 원하는 자료만을 검색하기 위해서 SQL 문장에 WHERE 절을 이용하여 검색되는 자료의 범위를 제한할 수 있다. WHERE 절에는 두 개 이상의 테이블 조인 조건을 기술하거나 결과 제한을 위한 조건을 기술할 수 있다. 현실 DB는 많은 사용자, 프로그램이 동시에 접속해 다량의 트랜잭션을 발생시키는데, WHERE 조건절을 사용하지 않고 필요없는 많은 자료들을 DB로부터 요청하는 SQL 문장은 대량의 데이터를 검색할 때 DB가 설치된 서버의 CPU나 메모리 등의 시스템 자원을 과다 사용하게..

    3-4 TCL

    3-4 TCL

    트랜잭션TRANSACTION 개요 트랜잭션은 데이터베이스의 논리적 연산단위로, 밀접히 관련되어 분리될 수 없는 한 개 이상의 DB 조작을 가리킨다. 한 트랜잭션에는 한 개 이상의 SQL 문장이 포함된다. 트랜잭션은 분할할 수 없기 때문에 전부 적용하거나 전부 취소한다. 즉, ALL OR NOTHING의 개념이다. 은행에서의 계좌이체 상황을 연상해보자. 계좌이체는 최소 두 가지 이상의 작업으로 이뤄진다. 우선 자신의 계좌에서 잔액을 확인하고 이체할 금액을 인출한 후 나머지 금액을 저장한다. 그리고 이체할 계좌를 확인하고 앞에서 인출한 금액을 더한 다음 저장하면 계좌이체가 완료된다. 계좌이체 사례: 1. 100번 계좌의 잔액에서 10,000원을 뺀다. 2. 200번 계좌의 잔액에 10,000원을 더한다. 계..

    3-3 DML

    3-3 DML

    - 좌측 정렬 : 문자 및 날짜 데이터 - 우측 정렬 : 숫자 데이터 앞 절에서 테이블을 생성하고 생성된 테이블의 구조를 변경하는 명령어에 대해서 알아보았다. 지금부터는 만들어진 테이블의 관리할 자료들을 입력/수정/삭제/조회하는 DML(DATA MANIPULATION LANGUAGE) 사용 방법을 알아보자. DB는 DDL 명령어와 DML 명령어를 다르게 처리한다. DDL(CREATE, ALTER, RENAME, DROP) 명령어는 직접 DB 테이블에 영향을 미치기 때문에 DDL 명령어를 입력하는 순간 명령어에 해당하는 작업이 즉시 완료(AUTO COMMIT)된다. 하지만 DML(INSERT, UPDATE, DELETE, SELECT) 명령어는, 조작하려는 테이블을 메모리 버퍼에 올리고 작업하기 때문에 테..

    3-2 DDL

    3-2 DDL

    데이터 유형 데이터 유형은 DB 테이블에 특정 자료를 입력할 때 그 자료를 받아들일 공간을 자료 유형별로 나누는 기준이다. 즉 특정 칼럼을 정의할 때 선언한 데이터 유형은 그 칼럼이 받아들일 수 있는 자료 유형을 규정한다. 선언한 유형이 아닌 다른 종류의 자료가 들어오려고 하면 DB는 에러를 발생시킨다. 또, 데이터 유형과 더불어 지정한 크키Size도 중요하다. 선언 당시 지정한 데이터 크기를 넘어선 자료가 입력되면 역시 에러가 난다. DB에서 사용하는 데이터 유형은 다양한 형태가 있는데, 벤더 별로 약간 차이가 있다. 숫자 타입을 예시로 들면 ANSI/ISO 기준에서는 NUMERIC Type의 하위 개념으로 NUMERIC, DECIMAL, DEC, SMALLINT, INTEGER, INT, BIGINT..

    3-1 관계형 데이터베이스 개요

    3-1 관계형 데이터베이스 개요

    데이터베이스의 발전 - 1960년대 : 플로우차트 중심의 개발. 파일 구조를 통해 데이터를 저장/관리함. - 1970년대 : 데이터베이스 관리 기법이 태동되던 시기. 계층형Hierarchical 데이터베이스, 망형Network 데이터베이스 같은 제품들이 상용화 됨. - 1980년대 : 현재 대부분의 기업에서 사용되고 있는 관계형 데이터베이스가 상용화. Oracle, Sybase, DB2 등 등장함. - 1990년대 : 보다 향상된 기능의 많은 DB 제품으로 정보시스템의 확실한 핵심 솔루션으로 자리잡음. 인터넷 환경의 급속한 발전과 객체 지향 정보를 지원하기 위해 객체 관계형 데이터베이스로 발전. 관계형 데이터베이스Relational Database의 등장 관계형 데이터베이스 1970년 영국의 수학자였던 ..