본문 바로가기
DB/SQL 활용

SQL 활용 - 관계형데이터베이스(RDMB)의 특징, SQL, 연산자, 테이블, 데이터 유형

by 참외롭다 2024. 1. 31.
반응형

SQL 활용 - 관계형데이터베이스(RDMB)의 특징, SQL, 연산자, 테이블, 데이터 유형

 

관계형데이터베이스의 특징

 

관계형 데이터베이스는 엔터티와 엔터티 간의 관계로 이루어진 데이터베이스를 말합니다. 데이터베이스에 대한 설명은 다음과 같습니다. 관계형 데이터베이스는 수학적 집합 논리에 입각하여 엔터티를 하나의 집합으로 취급합니다.

 

Database

Database는 많은 사람들이 사용하는 데이터를 효율적으로 관리하고 데이터 사용 중 발생한 데이터의 손상을 쉽게하기 위해 만든 데이터 전용 소프트웨어 입니다.

DBMS(Database Management System)

데이터베이스에 대한 기본적인 요구 사항을 만들어주는 시스템을 DBMS(데이터베이스 관리 시스템) 이라고 합니다. DBMS는 인증된 사용자만 데이터베이스를 참조할 수 있도록 보인기능을 제공합니다. 테이블 생성 시 다양한 제약조건을 이용해 사용자가 조건에 위배하는 데이터를 입력하거나 관계를 연결하는 중요 데이터를 삭제하지 못하게 합니다. 이를 통해 데이터의 정확성을 보장하고 시스템 다운이나 재해상황에 유실된 데이터를 회복, 복구 시켜줍니다.

 

관계형 데이터 베이스는 정규화를 통해 엔터티의 이상현상과 중복을 피할 수 있으며, 동시성 관리와 병행제어를 통해 많은 사용자가 동시에 데이터를 공유 및 조작할 수 있게합니다. 관계형 데이터베이스는 메타 데이터를 총괄해서 관리할 수 있으므로 데이터의 성격, 속성 또는 표현 방법 등을 체계화 할 수 있고 데이터 표준화를 통해 데이터 품질을 확보할 수 있습니다.

 

관계형 데이터 베이스의 경우 요구사항 분석 - 개념적 데이터모델링 - 논리적 데이터모델링 - 물리적 데이터모델링 단계를 거칩니다. 이 단계에서 엔터티의 확장 및 정규화, M:M 관계 분해 절차를 거칩니다. 정규화의 경우 데이터 정합성과 데이터 저장공간 절약을 위해 엔터티를 최대한 분리하는 작업으로 3차 정규형 까지 진행합니다. 정규화를 거치면 하나의 주제에 대한 엔터티가 여러 개로 나뉩니다. 이런 엔터티가 주로 테이블이 되는데 하나의 주제에 대한 여러 엔터티를 연결하는 것을 JOIN이라 합니다.

 

SQL

 

SQL은 관계형 데이터베이스에서 데이터 정의, 조작, 제어를 위해 사용하는 언어입니다. 사용자는 SQL을 통해 데이터베이스와 대화하며 검색 조건에 만족하는 요구 집합을 추출해 필요로 하는 데이터를 조회하고 새로운 데이터를 입력, 수정, 삭제하는 행위를 합니다.표준 SQL은 ANSI/ISO 표준을 따릅니다. 대표적인 ANSI/ISO 표준 SQL은 다음 내용을 포함합니다.

 

- SQL 명령어

명령어 종류 명령어 설명
DML(Data Manipulation Language) Insert
Select
Delete
Update
데이터를 조회, 생성, 삭제, 갱신하기 위한 명령어.

호스트 프로그램 속에 삽입되어 사용하는 DML 명령어를 데이터 부속어라고 한다.
DDL(Data Definition Language) Create
Drop
Alter
Rename
데이터의 구조를 정의하는 명령어
DCL(Data Control Language) Alter
Revoke
데이터베이스에 접근하고 객체를 사용하는 권한을 제어하는 명령어
TCL(Transactoin Contorl Language) Commit
Rollback
논리적인 작업의 단위를 묶어 DML에 의해 조작된 결과를 작업단위 별로 제어 하는 명령어

 

 

- STANDARD JOIN 기능(CROSS, OUTER JOIN 등 새로운 FROM 절 JOIN 기능)

  
- SCALAR SUBQUERY, TOP-N QUERY 등 SUBQUERY 기능


- ROLLUP, CUBE, GROUPING SETS 등 리포팅 기능


- WINDOW FUNCTION 같은 분석 기능

 

관계형 데이터베이스 연산자

 

일반 집합 연산자

 

UNION 연산

UNION 연산자를 사용합니다. UNION 연산은 엔터티 간 수학적 합집합으로서 레코드를 추출하고 공통 교집합의 중복을 없애는 역할을 합니다.. 중복 데이터를 찾기위해 시스템에 부하를 주는 정렬 작업이 발생합니다. 이후 UNION ALL 기능이 추가됐는데, 특별한 요구 사항이 없다면 공통집합을 중복해 그대로 보여주기 때문에 중복제거를 위한 정렬 작업이 일어나지 않습니다. UNION과 UNION ALL의 출력결과가 같다면 UNION ALL의 사용이 권장됩니다.

 

INTERSECTION 연산

 

INTERSECTION 연산자를 사용합니다. INTERSECTION 연산은 엔터티간 수학적 교집합으로서 공통 레코드를 추출합니다.

 

DIFFERENCE 연산

 

EXCEPT(ORACLE은 MINUS) 연산자를 사용합니다. DIFFERENCE 연산은 엔터티간 수학적 차집합으로서 첫 번째 엔터티에만 존재하는 레코드 집합을 추출합니다.

 

PRODUCT 연산

 

CROSS PRODUCT 라고 불리는 수학적 공집합으로, JOIN 조건이 없는 경우 생길 수 있는 모든 데이터의 조합을 의미합니다. 양쪽 엔터티 사이에서 엔터티의 레코드 수 의 곱 만큼의 데이터 조합이 발생합니다.

 

순수 관계 연산자

 

SELECT 연산

 

SQL 문의 WHERE 조건절에 해당하는 연산으로 비교연산자(>,<,=)와 논리연산자(AND, OR, NOT) 로 조건에 맞는 레코드를 선택합니다.

 

PROJECT 연산

 

SQL 문의 SELECT 절에 해당하는 연산으로 조회할 컬럼을 선택합니다.

 

NATURAL JOIN 연산

 

INNER JOIN, NATURAL JOIN, OUTER JOIN, USING 조건절, ON 조건절 등 두 엔터티의 관계를 표현하는 연산입니다.

 

DIVIDE 연산

 

수학적 나눗셈과 비슷한 연산으로 오른쪽 집합을 XZ로 나눴을 때, XZ를 모두 갖고 있는 A가 정답이 되는 연산입니다.

 

테이블

 

테이블은 관계형 데이터베이스의 엔터티를 물리적으로 표현한 형태입니다. 모든 자료는 결국 테이블에 등록되고, 사용자는 테이블로부터 원하는 자료를 꺼내오게됩니다. 테이블은 특정한 주제와 목적으로 만들어지는 일종의 집합으로 볼 수 있습니다. 관계형 데이터베이스에서 테이블은 컬럼과 행이라는 2차원 구조로 나타납니다. 세로 방향을 컬럼, 가로방향을 행이라고 합니다. 컬럼과 행이 교차하는 하나의 공간을 필드라고 합니다. 정규화를 거쳐 분할된 테이블은 컬럼의 값에 의해 연결됩니다. 각 행을 특정할 수 있는 한 개 이상의 컬럼을 기본키라고 합니다. 기본키로 사용되면서 테이블과의 관계를 연결하는 칼럼을 외부키라고 합니다.

 

ERD

 

테이블 사이에 어떤 연관성이나 관계가 존재합니다. ERD(Entity Relationship Diagram)은 이와 같은 관계를 직관적으로 표현할 수 있는 수단입니다. 테이블 간의 상관관계를 그림으로 도식화 한 것을 ERD라고 합니다. ERD는 엔터티, 관계, 속성 3가지로 구성됩니다.

 

- 하나의 팀은 여러 명의 선수를 포함할 수 있다.
- 하나의 선수는 하나의 팀에 꼭 속한다.
- 하나의 팀에는 하나의 전용구장이 꼭 있다.
- 하나의 운동장에는 여러 홈팀이 있을 수 있다.
- 하나의 운동장에는 여러 개의 스케쥴을 가질 수 있다.
- 하나의 스케쥴에는 하나의 운동장이 꼭 배정된다.

 

데이터 유형

 

데이터 유형은 데이터베이스 테이블에 특정 자료를 입력할 때 받아들일 공간의 유형을 나누는 기준이됩니다. 테이블을 정의할때 컬럼의 유형은 받아 들일 수 있는 자료의 유형을 규정합니다. 따라서 선언한 유형이 아닌 다른 종류의 데이터가 들어오면 데이터 베이스는 에러를 발생시킵니다. 데이터 유형과 더불어 지정한 크기도 중요한 역할을 합니다. 선언 당시에 지정한 데이터의 크기를 넘어가는 자료가 입력되면 에러가 발생합니다. 테이블의 칼럼의 대표적인 유형은 다음과 같습니다.

 

CHARACTER(s)

고정길이 문자열로 컬럼유형선언시 CHAR로 표현합니다. s는 1바이트~2000바이트(SQL server 8000바이트) 까지 지정가능합니다. 할당된 값의 길이가 s보다 작을 경우 그 차이 만큼 공간으로 채워집니다.

 

VARCHAR(s)

 

가변길이 문자열로 컬럼유형선언시 VARCHAR 혹은 VARCHAR2(오라클)로 표현합니다 s는 1바이트~2000바이트(SQL server 8000바이트) 까지 지정가능합니다. 가변길이 문자열이기 때문에 s 보다 짧은 입력데이터만큼 적용됩니다.

 

CHAR과 VARCHAR 중 사용할 유형을 선택할때 고려해야할 점은 저장영역과 문자열의 비교방법입니다. VARCHAR 유형은 가변길이이므로 필요한 영역은 실제 데이터 크기 만큼입니다. 그렇기 때문에 길이가 다양하고 정의된 길이와 실제 데이터 길이의 차이가 있는 데이터에 적합합니다.

 

CHAR 유형의 데이터를 비교할 때는 각 길이가 짧은 필드의 끝에 공백을 추가해 두 데이터가 같은 길이가 되도록합니다. 그래고 앞에서 부터 한 문자씩 비교합니다. 그러므로 끝의 공백만 다른 문자열은 같다고 판단합니다. VARCHAR은 공백을 채우지않고 맨 처음부터 한 문자씩 비교하고 공백도 하나의 문자로 취급하므로 끝의 공백이 다르면 다른 문자로 판단합니다.

 

NUMERIC

 

정수, 실수 등 숫자정보를 나타냅니다. ORACEL은 처음에 전체 자리 수를 지정하고, 그 다음 소수 부분의 자리수를 지정합니다. 예를 들어 정수 6자리 소수 2자리인 경우 NUMBER(8,2) 로 선언합니다.

 

DATETIME

날씨와 시각정보(DATE)를 표현합니다. ORACEL은 1초 단위로 시간을 관리합니다.

반응형