데이터베이스란 지속적으로 저장되는 연관된 정보의 모음이라 할 수 있는데, 이 정보들은 검색이나 처리의 대상이 될 수 있다. 데이터베이스 시스템은 데이터베이스를 만들고 관리하는 자동화, 컴퓨터화된 시스템이다
DBMS의 개요
DBMS(Database Managemnet System)란 데이터를 효율적으로 관리할 수 있는 시스템을 말한다. 이런 데이터를 효율적으로 관리하기 위해서는 데이터베이스릐 데이터를 추가, 변경, 삭제, 검색할 수 있는 기능이 있어야 한다.
DBMS의 종류는 크게 세 가지로 구분된다. 즉, 계층형, 네트워크용, 릴레이션형으로 구분되는데 최근에는 릴레이션형이 DBMS의 주류를 이루고 있다. 릴레이션형 DBMS 를 RDBMS라고 하는데, 이런 제품으로는 오라킁, MS-SQL, 사이베이스, 인포믹스 등이 있다.
관계형 데이터베이스
관계 데이터베이스는 일련의 수학적인 개념과 작업에 기반을 두고 있다. 간단히 말해서 관계형 데이터베이스는 관계들의 모음이며, 관계는 정렬되지 않은 일련의 튜플(tuple)이나 행(row)이다. 간단하게 생각하면 관계를 단지 테이블로 볼 수 있으며, 테이블의 각 행을 튜플로 볼 수 있다. 관계나 튜플은 특수한 수학적 용어인데, 관계의 주요성(cardinality)은 테이블 내 튜플의 수를 의미한다.
관계형 데이터베이스라는 이름은 바로 이러한 관계의 개념에서 온 것이다. 실제로 대부분의 사람들이 관계를 테이블로, 튜플을 행으로 지칭한다. 각각의 테이블은 보통 오브젝트나 실제 세계의 개념(개체), 또는 개체간의 관계를 표현한다.
관계형 데이터베이스에서는 기본 키와 외부 키에 대한 개념이 중요하므로 이 키에 대해서만 간략하게 언급하고 넘어간다.
기본 키와 외부 키
기본키
기본키(primary key)는 테이블의 각 행을 다른 행과 구분해주는 역할을 하는 열을 의미한다. 일반적으로 각 행이 모두 다른 값을 갖는 기본 키를 설정함으로써 행을 식별하게 된다.
그러므로 테이블의 각 행의 기본 키는 반드시 유일해야 한다. 테이블 내의 행은 하나 이상의 열 속성들의 조합으로 유일한 것이 된다. 예를 들어, 어떤 사람을 식별할 때 이름, 나이, 성별, 고향 등 모든 구성을 나열하면 다른 사람들로부터 그 사람을 구분할 수 있지만, 그보다는 주민번호를 이용해 식별하는 것이 훨씬 편한 것과 같은 이치다. 이와 같은 목적으로 선택된 속성이 테이블을 위한 기본 키(primary key)라 한다. 기본 키로 사용할 데이터 열은 반드시 '유일함'이라는 조건을 만족해야 하며, '값'이 있어야 한다. 즉, 기본키는 notnull 제약 조건과 unique 제약 조건을 포함한다.
외부 키
외부키(foreign key)라는 개념은 한 테이블의 기본 키에 기반한 관계를 가진 두 개의 테이블이 있는 경우를 위한 것이다. 외부 키는 테이블 내의 한 열인 동시에 다른 테이블의 기본 키인 열을 말하는 것으로, 이것은 외부 키 열에 포함된 데이터가 반드시 다른 테이블의 기본키의 데이터와 대응되어야 함을 의미한다.
SQL
SQL(구조적 쿼리 언어, Standard Query Lang)은 관계 데이터베이스 관리 시스템의 표준 언어다. SQL문을 이용해서 단순한 쿼리뿐만 아니라 데이터베이스 객체를 만들거나 제거하고, 데이터베이스 내의 데이터를 삽입,갱신,삭제하거나 다양한 운영 작업을 할 수 있다. SQL문이 첫선을 보인 것은 1970년대 IBM에 의해서이며, 이후 ANSI/ISO 표준으로 편입되어 여러 차례의 개량과 개발을 거쳤다.
SQL문의 종류는 크게 데이터와 구조를 정의하는 DDL(Data Definition Lang), 데이터의 검색과 수정을 위한 DML(manipulation), 데이터베이스 사용자의 권한을 정의하는 DCL(Control)의 3가지로 분류할 수 있다.
DDl : create(DB객체 생성), drop(DB객체 삭제), alter, rename문
DML: insert, update, delete, select, commit, rollback(마지막으로 발생한 커밋 후의 DB 액션들을 원시 데이터로 복구)문
DCL: grant(DB객체에 권한부여), revoke(이미 부여된 DB객체의 권한을 취소), lock문
'Dev > sql_db' 카테고리의 다른 글
[ORACLE] TIMESTAMP로 DELETE, UPDATE 후 COMMIT 한 데이터 복구하는 방법 (0) | 2019.12.10 |
---|---|
[oracle] with절 ( with as) 사용하여 서브쿼리로 조인절과 join하는법 (0) | 2019.11.12 |