■ 데이터베이스 ( Database )
- 일상적인 정보를 모아 놓은 것 자체 (넓은 의미)
- 특정 기업이나 조직 또는 개인이 필요에 의해 데이터를 일정한 형태로 저장해 놓은 것 (일반적인 의미)
- DBMS ( Database Management System ) : 보다 효율적인 데이터의 관리 뿐만 아니라 예기치 못한 사건으로 인한 데이터의 손상을 피하고,
필요한 데이터를 복구하기 위한 강력한 기능의 SW
( Oracle, MySQL 등 ☞ 관계형 데이터베이스 관리 시스템( RDBMS ) )
□ 데이터베이스의 발전
- 1960년대 -- 플로우차트 중심의 개발 방법 사용. 파일 구조를 통해 데이터를 저장하고 관리함
- 1970년대 -- 계층형( Hierarchical ) 데이터베이스, 망형( Network ) 데이터베이스 상용화
- 1980년대 -- 관계형 데이터베이스 상용화 ( ex) Oracle, Sybase, DB2 등 )
- 1990년대 -- 객체 관계형 데이터베이스로 발전 ( ex) 〃, Informix, Teradata, SQL Server )
■ 관계형 데이터베이스 ( Relational Database )
- 기존의 파일 시스템과 계층형, 망형 데이터베이스를 대부분 대체하면서 주력 데이터베이스가 됨
※ 파일 시스템
- 단점 -- 분산된 데이터 간 정합성을 보장하기 힘듬
- 장점 -- 단일 사용자 or 어플리케이션이 사용하는 경우 데이터베이스보다 성능 뛰어남
※ 정합성 : 데이터가 서로 모순이 없이 일관되게 일치해야 한다는 의미
- 관계형 데이터베이스를 유일하게 조작할 수 있는 SQL 문장에 의해 관리됨
- 정규화를 통한 합리적인 테이블 모델링을 통해 이상( anomaly ) 현상을 제거하고, 데이터 중복을 피할 수 있으며,
동시성 관리, 병행 제어를 통해 많은 사용자들이 동시에 데이터를 공유 및 조작할 수 있는 기능 제공
※ 이상( anomaly ) 현상 : 데이터의 중복으로 인해 불일치성이 발생하는 현상
( 하나의 파일을 많은 사용자가 동시에 검색할 수는 있지만, 동시에 입력/수정/삭제할 수 없기 때문에
원래의 데이터 파일을 여러 개 복사하여 사용 )
- 메타 데이터를 총괄 관리할 수 있기 때문에 데이터의 성격, 속성, 표현 방법 등을 체계화할 수 있고,
데이터 표준화를 통한 데이터 품질을 확보할 수 있음
※ 메타 데이터 ( metadata ) : 데이터( data ) 에 대한 데이터
- 데이터의 무결성( Integrity ) 보장
( 테이블 생성 시 사용할 수 있는 제약조건 이용, 관계를 연결하는 중요 데이터 삭제 방지 )
※ 무결성 ( Integrity ) : 정밀성, 정확성, 완전성, 유효성 — 데이터 보호, 정상적으로 유지
* 참조 무결성 : 릴레이션은 참조할 수 없는 외래키 값을 가질수 없음을 의미하는 제약 조건
* 개체 무결성 : 한 릴레이션의 기본키를 구성하는 속성 값은 NULL 값이나 중복 값을 가질 수 없음
* 도메인 무결성 : 각 속성 값은 반드시 정의된 도메인에 속한 값이어야 함
- 시스템의 갑작스런 장애로부터 사용자가 입력, 수정, 삭제하던 데이터가 제대로 반영될 수 있도록 보장.
시스템 다운, 재해 등의 상황에서도 데이터를 회복/복구할 수 있는 기능 제공
■ SQL ( Structured Query Language )
- 관계형 데이터베이스에서 데이터 정의, 데이터 조작, 데이터 제어를 하기 위해 사용하는 비절차적 대화형 고급 데이터 언어
※ 관계 데이터 연산
* 관계 해석 ( Relational Calculus )
- 비절차적 언어 ( 결과 중심 ) : 원하는 정보가 무엇이 라는 것만 정의
* 관계 대수 ( Relational Algebra )
- 절차적 언어 ( 절차 중심 ) : 원하는 정보를 어떻게 유도하는가를 연산자와 연산규칙을 이용해 기술
- 데이터를 조회, 입력, 수정, 삭제하는 행위를 통해 사용자가 데이터베이스와 대화할 수 있는 매개 역할
- 단순 스크립트가 아닌 독립된 하나의 개발 언어 ( 관계형 데이터베이스 전담 접속 용도 )
- 데이터를 집합으로 취급
- ANSI / ISO를 통해 표준화되고 정의됨 ( 다른 DB를 사용하더라도 프로그램의 이식성 높음 -- 상호 호환성 뛰어남 )
□ SQL 문장들의 종류
- 데이터 조작어 ( DML : Data Manipulation Language )
- SELECT
- INSERT
- UPDATE
- DELETE
- 데이터 정의어 ( DDL : Data Definition Language )
- CREATE
- ALTER
- DROP
- RENAME
- 데이터 제어어 ( DCL : Data Control Language )
- GRANT
- REVOKE
- 트랜잭션 제어어 ( TCL : Transaction Control Language )
- COMMIT
- ROLLBACK
※ 비절차적 데이터 조작어 ( DML ) : 사용자가 무슨( What ) 데이터를 원하는 지만을 명세 -- As-Is
※ 절차적 데이터 조작어 : 어떻게( How ) 데이터를 접근해야 하는지 명세 -- To-BE
( ex) PL/SQL ( 오라클 ) , T-SQL ( SQL Server ) 등 )
'프로그래밍 언어 ( Programming Language ) > SQL' 카테고리의 다른 글
[SQL][MySQL] 데이터 타입 ( Data Type ) (0) | 2022.01.05 |
---|---|
[SQL] 제약 조건 ( Constraint ) (0) | 2022.01.04 |
[SQL][MySQL] DML ( Data Manipulation Language ) - SELECT (0) | 2022.01.04 |
[SQL][MySQL] DML ( Data Manipulation Language ) - INSERT, UPDATE, DELETE (0) | 2022.01.04 |
[SQL][MySQL] DDL ( Data Definition Language ) - CREATE, ALTER, DROP, RENAME (0) | 2022.01.04 |