JangGeonWu
janggeonwu97
JangGeonWu
전체 방문자
오늘
어제
  • 분류 전체보기 (78)
    • SQLD (21)
    • 개인 공부용 (17)
    • Django (9)
    • Tableau (6)
    • ElasticSearch (8)
    • 빅데이터 엔지니어 (5)
    • Spring 퀵 스타트 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 개인 공부 기록용 블로그

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
JangGeonWu

janggeonwu97

SQLD

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

2022. 9. 20. 10:37

1. 데이터베이스

 - 더 효율적인 데이터 관리 뿐 아니라, 예기치 못한 사건으로 인한 데이터 손상을 피하고, 필요한 데이터를 복구하기 위한 강력한 기능을 지원하는 시스템을 DBMS(Database Management System)라고 한다.

 

  • 데이터베이스의 발전
1960년대 플로우차트 중심의 개발 방법을 사용, 파일 구조로 데이터를 저장 및 관리했다.
1970년대 계층형 데이터베이스, 망형 데이터베이스 같은 제품들이 상용화되기 시작함
1980년대 현재 대부분 기업에서 사용하는 Oracle, Sybase, DB2와 같은 제품이 사용됐다.
1990년대 Oracle, Sybase, DB2, Informix, Teradata, SQL Server 외 다양한 제품이 더 향상된 기능으로 발전함. 인터넷 환경의 급속한 발전에 맞춰 객체지향 정보를 지원하기 위해 객체 관계형 데이터베이스로 발전했다.

 

  • 관계형 데이터베이스

 - 1970년 Codd 박사가 처음으로 관계형 데이터베이스(Relational Database)를 소개.

 - 관계형 데이터베이스는 정규화를통한 '합리적인 테이블 모델링'을 통해 이상(anomaly) 현상을 제거하고 데이터 중복을 피할 수 있으며, 동시성 관리와 병행 제어를 통해 더 많은 사용자가 동시에 데이터를 공유 및 조작할 수 있는 기능을 제공한다.

 

- 여기에 DBMS는 보안 기능, 무결성 보장, 회복 및 복구 기능을 제공한다.

 

2. SQL

 - SQL(Structured Query Language): 관계형 데이터베이스에서 데이터 정의, 조작, 제어하기 위해 사용하는 언어.

 - SQL은 1986년부터 ANSI/ISO를 통해 표준화하고 정의됨

 

아래는 SQL 문장의 종류이다.

 

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

 

3. STANDARD SQL 개요

1970년 Dr. E.F.Codd 관계형 DBMS(Relational DB) 논문 발표
1974년 IBM SQL 개발
1979년 Oracle 상용 DBMS 발표
1980년 Sybase SQL Server 발표, 이후 Sybase ASE로 개명
1983년 IBM DB2 발표
1986년 ANSI/ISO SQL 표준 최초 제정(SQL-86 = SQL1)
1992년 ANSI/ISO SQL 표준 개정(SQL-92 = SQL1)
1993년 MS SQL Server 발표(Windows OS, Sybasde Code 활용)
1999년 ANSI/ISO SQL 표준 개정(SQL-99 = SQL3)
2003년 ANSI/ISO SQL 표준 개정(SQL:2003) - 현재 사용되는 데이터베이스의 표준
2006년 ANSI/ISO SQL 표준 개정(SQL:2006)
2008년 ANSI/ISO SQL 표준 개정(SQL:2008)
2011년 ANSI/ISO SQL 표준 개정(SQL:2011)
2016년 ANSI/ISO SQL 표준 개정(SQL:2016)

- 현재 기업형 DBMS는 순수 관계형 데이터베이스가 아닌, 객체 지원 기능이 포함된 객체관계형(Object Relational) 데이터베이스가 대부분이다.

- 대표적인 ANSI/ISO 표준 SQL의 기능은 다음 내용을 포함한다.

 1. STANDARD JOIN 기능 추가(CROSS, OUTER JOIN 등 새로운 FROM 절 JOIN 기능들)

 2. SCALAR SUBQUERY, TOP-N QUERY 등의 새로운 SUBQUERY 기능들

 3. ROLLUP, CUBE, GROUPING SETS 등의 새로운 리포팅 기능

 4. WINDOW FUNCTION 같은 새로운 개념의 분석 기능들

 

 

가. 일반 집합 연산자

 - E.F.CODD 일반 집합 연산자: UNION(합집합), INTERSECTION(교집합), EXCEPT(차집합), CROSS JOIN(Cartesian Product)

 

나. 순수 관계 연산자

 - 관계형 데이터베이스를 구현하기 위해서 새롭게 만들어진 연산자

 1. SELECT 연산 - WHERE 절

 2. PROJECT 연산(선택) - SELECT 절

 3. (NATURAL) JOIN 연산 - 다양한 JOIN 기능으로 구현됨

 4. DIVIDE 연산은 ... 현재 사용되지 않는다.

 

UNION 연산 UNION
INTERSECTION 연산 INTERSECT
DIFFERENCE 연산 EXCEPT(Oracle = MINUS)
PRODUCT 연산 CROSS JOIN
SELECT 연산 WHERE 절
PROJECT 연산 SELECT 절
(NATURAL) JOIN 연산 다양함
DIVIDE 연산 사용되지 않음

 

4. 테이블

 - 테이블(TABLE): 관계형 데이터베이스의 기본 단위로, 데이터를 저장하는 객체(Object)로 칼럼-행이라는 2차원 구조로 나타낸다.

 - 칼럼: 세로 방향으로 이루어진 하나 하나의 특정 속성

 - 행: 가로 방향으로 연결된 데이터

 

 - 정규화: 테이블을 분할해 데이터의 정합성을 확보하고, 불필요한 중복을 줄이는 프로세스

 - 기본키: 테이블에 존재하는 각 행을 한 가지 의미로 특정할 수 있는 한 개 이상의 칼럼

 - 외부키: 다른 테이블의 기본키로 사용되고 있는 관계를 연결하는 칼럼

 

5. ERD

 - ERD(Entity-Relationship-Diagram): 테이블 간 서로의 상관관계를 그림으로 도식화한 것

 - IE 표기법과 바커 표기법에서 차이가 난다.

 

6. 데이터 유형

데이터 유형 설명
CHARACTER(n) - 고정 길이 문자열 정보로, Oracle, SQL Server 모두 CHAR라고 표현한다.
- n은 기본 길이 1바이트
- n 만큼 최대 길이 및 고정 길이를 가지고 있으므로 할당된 변수 값의 길이가 n보다 작을 경우, 그 차이 길이만큼 '공간'으로 채워진다.
VARCHAR(n) - 가변 길이 문자열 정보로 Oracle은 VARCHAR2로, SQL Server는 VARCHAR로 표현
- s 만큼 최대 길이를 가지지만 가변 길이로 조정이 되기 때문에 할당된 변수값의 바이트만 적용된다.
NUMERIC - 정수, 실수 등 숫자 정보로, 오라클은 NUMBER로 고정되있으나 SQL Server는 다양한 숫자 타입이 존재
- 오라클은 처음에 전체 자리 수를 지정하고, 그 다음 소수 부분 자리 수를 지정한다(NUMBER(8,2))
DATETIME - 날씨와 시각 정보로 오라클은 DATE, SQL SERVER는 DATETIME으로 표현
- 오라클은 1초 단위, SQL SERVER는 3.33ms 단위

 

 

 

 

'SQLD' 카테고리의 다른 글

2-1-3. 함수  (0) 2022.09.20
2-1-2. SELECT 문  (0) 2022.09.20
1-2-5. 본질식별자 VS 인조식별자  (0) 2022.09.19
1-2-4. NULL 속성의 이해  (0) 2022.09.19
1-2-3. 모델이 표현하는 트랜잭션의 이해  (0) 2022.09.19
    'SQLD' 카테고리의 다른 글
    • 2-1-3. 함수
    • 2-1-2. SELECT 문
    • 1-2-5. 본질식별자 VS 인조식별자
    • 1-2-4. NULL 속성의 이해
    JangGeonWu
    JangGeonWu

    티스토리툴바