SQL-관계형 데이터베이스 개요

박현·2022년 9월 20일
0

SQL

목록 보기
11/34

1. 데이터베이스

  • 넓은 의미에서의 데이터베이스는 일상적인 정보를 모아 놓은 것 자체를 의미
  • 일반적으로 데이터베이스라고 말할 때는 특정 기업이나 조직, 개인이 필요에 따라 데이터를 일정한 형태로 저장해 놓은 것을 의미
  • DBMS (Database Management System)
    : 효율적인 데이터 관리와 데이터 손상을 피하고 필요한 데이터를 복구하기 위한 강력한 기능의 소프트웨어
  • 데이터베이스의 발전
    • 1960년대 : 플로우차트 중심의 개발 방법을 사용했으며 파일 구조로 데이터를 저장,관리
    • 1970년대 : 계층형 데이터베이스, 망형 데이터베이스 같은 제품들이 상용화
    • 1980년대 : 관계형 테이터베이스가 상용화 되었고 Oracle, Sybase, DB2와 같은 제품이 사용됨
    • 1990년대 : Oracle, DB2, SQL Server, Sybase, Informix외 많은 제품이 더 향상된 기능으로 정보시스템의 핵심 솔루션으로 자리잡았다. 객체 관계형 데이터베이스로 발전했다.
  • 관계형 데이터베이스
    • 정규화를 통한 합리적인 테이블 모델링을 통해 이상현상을 제거하고 데이터 중복을 피할 수 있으며, 동시성 관리와 병행 제어를 통해 많은 사용자가 동시에 데이터를 공유 및 조작할 수 있는 기능을 제공하고 있다.
    • 메타데이터를 총괄 관리할 수 있으므로 데이터의 성격,속성 또는 표현방법등을 체계화 할 수 있고, 데이터 표준화를 통한 데이터 품질을 확보할 수 있는 장점을 갖고 있다.
    • DBMS는 인증된 사용자만 참조할 수 있도록 보안 기능을 제공한다.
    • DBMS는 시스템의 갑작스런 장애로부터 사용자가 입력,수정,삭제하던 데이터가 제대로 반영될 수 있도록 보장해주는 기능과, 시스템 다운,재해등의 상황에서도 데이터를 복구,회복할 수 있는 기능을 제공한다.

2. SQL (Structured Query Language)

  • 관계형 데이터베이스에서 데이터 정의, 조작, 제어하기 위해 사용하는 언어

  • SQL 문장들의 종류

명령어의 종류명령어설명
데이터조작어(DML)SELECT데이터베이스에 들어 있는 데이터를 조회하거나 검색하기위한 명령어
INSERT UPDATE DELETE데이터베이스의 테이블에 들어있는 데이터에 변형을 가하는 종류의 명령어
데이터정의어(DDL)CREATE ALTER DROP RENAME테이블과 같은 데이터구조를 정의하는 데 사용되는 명령어
데이터 제어어(DCL)GRANT REVOKE데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어
트랜잭션 제어어(TCL)COMMIT ROLLBACK논리적인 작업단위를 묶어서 DML에 의해 조작된 결과를 작업단위 별로 제어하는 명령어

3. STANDARD SQL 개요

가. 일반 집합 연산자

일반 집합 연산자를 현재의 SQL과 비교하면 다음과 같다.

  1. UNION 연산은 UNION기능으로
  2. INTERSECTION 연산은 INTERSECT 기능으로
  3. DIFFERENCE 연산은 EXCEPT 기능으로
  4. PRODUCT 연산은 CROSS JOIN 기능으로 구현됐다.
  • UNION
    : 수학적 합집합을 제공하고 공통 교집합의 중복을 없애기 위한 사전작업으로 시스템에 부하를 주는 정렬 작업이 발생했다. 만일 UNION과 UNION ALL의 출력결과가 같다면 응답속도향상이나 자원효율화 측면에서 데이터 정렬작업이 발생하지 않는 UNION ALL 사용을 권고한다.
  • INTERSECTION
    : 수학적 교집합으로써 두집합의 공통집합을 추출한다.
  • DIFFERENCE
    : 수학적 차집합으로서 첫번째 집합에서 두번째 집합과의 공통집합을 제외한 부분이다.
    대다수 벤더는 EXCEPT를 사용하는 반면 Oracle은 MINUS를 사용한다.
  • PRODUCT
    : CROSS PRODUCT라고 불리는 곱집합으로, JOIN조건이 없는경우 생길 수 있는 모든 데이터의 조합을 말한다. 양쪽 집합의 M*N건의 데이터 조합이 발생.

나. 순수 관계 연산자

순수 관계 연산자는 관계형 데이터베이스를 구현하기 위해 새롭게 만들어진 연산자이다.

  1. SELECT연산은 WHERE절로 구현됐다.
  2. PROJECT연산은 SELECT절로 구현됐다.
  3. (NATURAL) JOIN연산은 다양한 JOIN기능으로 구현됐다.
  4. DIVIDE 연산은 현재 사용되지 않는다.
  • SELECT연산
    : SELECT연산은 SQL문장에서는 WHERE절의 조건절 기능으로 구현됐다. (SELECT 연산과 SELECT절의 의미가 다름을 유의하자)
  • PROJECT연산은 SQL문장에서는 SELECT 절의 칼럼선택기능으로 구현됐다.
  • JOIN연산은 WHERE절의 INNER JOIN조건과 함께 FROM절의 NATURAL JOIN, INNER JOIN, OUTER JOIN, USING 조건절, ON조건절 등으로 가장 다양하게 발전했다.
  • DIVIDE연산은 나눗셈과 비슷한 개념으로 왼쪽의 집합을 'XZ'로 나누었을 때, 즉 'XZ'를 모두 갖고 있는 'A'가 답이 되는 기능으로 현재 사용되지 않는다.

4. 테이블

  • 테이블 구조
    : 열(Column), 행(Row), 필드(Field)
  • 테이블 용어
    • 테이블 : 행과 컬럼의 2차원 구조를 가진 데이터의 저장장소이며, 데이터베이스의 가장 기본적인 개념
    • 컬럼,열 : 2차원 구조를 가진 테이블에서 세로 방향으로 이루어진 하나 하나의 특정 속성
    • 행 : 2차원 구조를 가진 테이블에서 가로 방향으로 연결된 데이터
  • 테이블 관계 용어들
    • 정규화 : 테이블을 분할해 데이터의 정합성을 확보하고, 불필요한 중복을 줄이는 프로세스
    • 기본키 : 테이블에 존재하는 각 행을 한가지 의미로 특정할 수 있는 한개 이상의 컬럼
    • 외부키 : 다른 테이블의 기본키로 사용되고 있는 관계를 연결하는 컬럼

5. 데이터 유형

  • 데이터 유형은 데이터베이스의 테이블에 특정 자료를 입력할 때 그 자료를 받아들일 공간을 자료의 유형별로 나누는 기준이다.
  • 데이터 크기도 중요한 역할을 한다. 선언 당시에 지정한 데이터의 크기를 넘어선 자료가 입력되면 에러를 발생시킬 수 있기 때문이다.
  • 자주 쓰이는 데이터 유형
데이터유형설명
CHARACTER고정 길이 문자열 정보
VARCHAR가변 길이 문자열 정보 (Oracle은 VARCHAR2로 표현)
NUMERIC정수, 실수 등 숫자정보 (Oracle은 처음에 전체자리수를 지정하고, 그 다음 소수부분의 자리수를 지정한다 ex)NUMBER(8,2) )
DATETIME날짜와 시각정보 (Oracle은 DATE로 표현)

0개의 댓글