데이터베이스/SQL

데이터베이스, RDBMS, SQL이란?

땅콩아놀자 2023. 4. 25.
반응형

데이터 베이스란?

데이터를 모아 놓은 것으로, 이런 데이터베이스를 관리하는 소프트웨어가 DBMS이다.

데이터베이스를 관리한다는 것은 데이터베이스 안에 데이터를 저장하고, 필요한 데이터를 꺼내 보고,

저장된 데이터를 수정하거나 삭제하는 일련의 작업을 DBMS가 처리한다. 

 

DBMS의 종류에는 계층형, 관계형, 망형(네트워크형), 객체 지향형이 있다. 

그 중 관계형 데이터베이스에서 사용하는 컴퓨터 언어가 SQL(Structured Query Language)이다.

 

RDBMS(Relational Database Management System)

관계형 모델을 기반으로 데이터베이스를 관리하는 시스템이다.

* RDBMS 의 종류 : 오라클, MySQL, PostgreSQL, MariaDB

 

관계형 모델

테이블이라는 2차원 구조에 데이터를 성격에 맞게 분리해 가급적 중복되지 않게 저장하고, 필요한 데이터는 테이블 간에 관계를 맺어 추출하는 특징을 갖고 있다.


데이터 관리

데이터는 어딘가에 입력해 저장해두고, 저장된 데이터를 조회하고 또 필요 없어진 데이터는 삭제하거나 기존에 저장된 데이터를 수정할 수 있어야 한다.

 

- 데이터 저장 관점 : 필요한 데이터만 적재적소에 저장해 두는 것이 효율적이다. 즉, 가급적 중복된 데이터는 저장하지 않는 것이 좋다.

- 데이터 조회 관점 : 원하는 데이터를 손쉽게 찾아볼 수 있어야 한다.

- 데이터 수정 관점 : 특정 데이터만 골라내 원하는 값으로 수정할 수 있어야 한다.

- 데이터 삭제 관점 : 원하는 데이터만 골라내 지울 수 있어야 한다.

 

테이블(table)

RDBMS는 2차원 형태의 테이블이라는 구조에 데이터를 저장한다.

테이블은 흔히 말하는 컬럼(열)과 로우(행)으로 구성되어 있는 표이다.

컬럼은 테이블을 구성하는 데이터의 속성(attribute)를 말한다.

로우는 지정된 컬럼 데이터로 이루어진 하나의 묶음이다.

 

① 생성 구문

CEATE TABLE table_name (
	column_name1 datatype [NOT] NULL;
	column_name2 datatype [NOT] NULL;	
...
	PRIMARY KEY (column_list)
);

- table name : 테이블 이름을 명시

- column_name : 컬럼 이름을 명시

- datatype : 컬럼의 데이터 유형을 명시

- [NOT] NULL : 해당 컬럼이 NULL을 허용할지 여부를 명시, 생략하면 NULL을 허용한다는 의미

 

컬럼이 테이블에 저장될 데이터 유형을 결정하므로 실제 테이블을 만들 때는 컬럼에 대한 내용만 기술한다.

예를 들면 회원정보 테이블을 만들 때 이름, 성별, 전화번호 등의 데이터를 컬럼명으로 지정하고 맞게 데이터 유형을 지정해 준다. 오라클의 경우 컬럼명이 30byte를 넘지 않아야하고, 언더스코어(_), 문자, 숫자를 사용할 수 있지만 첫 문자는 반드시 문자로 시작해야하는 제약사항이 있다. 

 

② 컬럼의 데이터 형

문자형 CHAR(n) 고정 길이 문자, 최대 2000byte
VARCHAR2(n) 가변 길이 문자, 최대 4000byte
숫자형 NUMBER[(p,[s])] p(1~38, 디폴트 값은 38)와 s(-84~127, 디폴트 값은0)는 십진수 기준, 최대 22byte
날짜형 DATE  BC 4712년 1월 1일부터 9999년 12월 31일까지 년, 월, 일, 시, 분, 초까지 입력 가능하다
NULL 데이터 없음 NOT NULL로 명시할 경우 컬럼에 반드시 값이 들어가야 함,
기본키(PK)에는 NOT NULL을 명시해야 한다

 

③ 테이블 간 관계(Realtion)

RDBMS의 R은 관계를 의미한다. 회원 정보를 저장하는 테이블로 이름, 성별, 나이뿐만 아니라 주소 또한 중요한 데이터이다. 그런데 데이터 저장 관점에서 회원 정보 테이블에 주소까지 저장하는 것은 비효율적일 수 있다.

주소의 경우 다른 성격의 데이터에 비해 서울에 사는 회원이 여러 명일 경우 중복 요소가 많이 발생되고,  복잡하기도 하고 데이터의 크기가 크다. 별도로 주소 테이블을 만들고, 특정 주소를 가리키도록 회원정보 테이블과 관계를 맺어주면 중복 데이터가 줄어든다. 

 

이렇게 RDBMS의 가장 큰 특징인 관계는 데이터 성격에 맞게 테이블을 여러 개로 분리하고, 또 분리한 테이블 간에 연결고리 역할을 하는 컬럼을 두어 관계를 맺는다.

 

④ 데이터 무결성(integrity) → 정확성 : 기본 키(primary key:PK)

데이터의 무결성을 확보하고자 테이블에 반드시 하나의 키가 되는 컬럼을 두도록 권고한다. 

기본 키의 경우 데이터를 수정하거나 삭제할 때 사용하고 유일한 식별자 역할로 테이블 간 관계를 맺을 때 사용된다.

 

예를 들어 회원정보의 테이블에 동명이인이 여럿 존재할 수 있다. 그렇게 되면 누가 누구인지 이름만으로 식별하기 어렵다.

이를 위해 식별하는 키(key)역할을 하는 컬럼인 기본 키(primary key:PK)를 지정해줘야 한다.

 

쇼핑몰 중 회원 아이디의 경우 중복체크를 하여 이미 사용 중이라면 다른 아이디를 입력 하도록, 유일한 값으로 받는 곳들이 많다. 그리고 아이디는 필수 정보이기도 하다, 이런 경우에 키 컬럼을 하기도 하며 유일한 식별자(unique)가 된다.  

이런 특성 때문에 키 컬럼에는 보통 일련번호 형태의 숫자를 사용하는 경우도 있다.

(오라클에서는 시퀀스(sequence)라는 별도의 데이터베이스 객체를 사용해 키 컬럼에 값을 넣는 것이 일반적이다.)

 

그리고 기본키를 통해 다른 테이블과 연결했다면, 다른 테이블에서는 이 기본키가 참조 키(foreign key:FK)가 된다. 그리고 이 테이블에서도 기본키가 존재한다.

 

⑤ 데이터 베이스 모델링(Modeling)

데이터의 성격에 맞게 테이블을 몇개를 만들고 관계를 어떻게 설정할지 결정하는 것을 데이터베이스 모델링이라 한다.

 

⑥ 트랜잭션 처리(transaction)

트랜잭션은 거래라는 뜻이다. 은행을 예로 들면 B에게 A에게 20만원을 송금할 때 B의 계좌에서 20만원이 빠져나간다.

그런데 B의 계좌에서 20만원이 빠져나갔는데 오류가 생겨 A에게 송금이 안될 사고가 발생할 수 있다.

만약 이럴 경우에는 거래 자체를 없던 것으로 처리해야 한다. 이렇게 서로 연결된 데이터에서 삭제하고 입력하거나 수정이 이루어 졌을 때 오류가 발생하면 작업 전 상태로 되돌리고, 입력 작업이 정상적으로 끝난 후에 모든 변경 내용을 최종적으로 적용되어야 한다. 이 작업을 트랜잭션이라 하며, 이 모든 처리 과정에서는 원자성(atomicity), 일관성(consistency), 고립성(isolation), 지속성(durability)의 네 가지 요소가 고려되어야 한다.

 


SQL(Structured Query Language) :  RDBMS와 소통하는 프로그래밍 언어

- 질의(query)언어 : 데이터베이스를 상대로 데이터를 조회, 입력, 수정, 삭제하기 위해 질의한다.

SQL은 구조화된 혹은 구조적인 질의 언어로 옮길 수 있는데, 구조적이고 구조화된 어떤 틀이나 형식이 정해져 있다는 뜻이다. 언어에 문법이 존재하고, 문법을 정확히 지켜야하는 것이다.

- 집합적 언어 : 데이터를 한 건이 아닌 조건에 맞는 데이터의 집합을 한 번에 처리한다. SQL의 상대는 데이터이고, 데이터는 테이블에 저장되어 있다. 테이블은 특정 목적과 성격에 맞는 데이터를 모아 놓은 데이터 저장소이다. 임의의 조건에 부합하면 이를 충족하는 데이터 전체를 읽거나 삭제하거나 수정하거나 입력하는 기능이 수행된다. 

 

SQL 문 : DDL, DML, TCL, DCL

SQL이 처리하는 문장의 성격에 따라 종류가 분류된다.

 

DDL(Data Definition Language) : 데이터 정의어

RDBMS에는 테이블 외에 뷰, 인덱스, 시퀀스 등 여러 데이터베이스 객체가 있다. DDL은 이 객체를 생성하고 삭제하고 수정하는 데 사용된다.

 

- CREATE : 객체 생성

- DROP: 객체 삭제(제거)
- ALTER: 객체 변경

- TRUNCATE TABLE : 테이블에 있는 모든 데이터 삭제

- RENAME : 객체 이름 변경

 

DML(Data Manipulation Language) : 데이터 조작어

- SELECT :  테이블이나 뷰에서 데이터 조회

- INSERT : 데이터 입력

- UPDATE : 기존 데이터를 수정

- DELETE : 테이블에 있는 데이터 삭제

- MERGE : 조건에 따라 INSERT, UPDATE 수행

 

TCL(Transaction Control Language) : 트랜잭션 제어어

TCL은 테이블에 있는 데이터를 모두 삭제하는 등의 DML문을 사용하며 실수를 방지하기 위해 한 번 더 체크하는 기능을 수행한다. 데이터를 삭제한 뒤 COMMIT문을 실행해야 삭제된 내용이 최종적으로 DB에 반영되며, 이전에 실수한게 있다면 ROLLBACK 문으로 되돌린다.

 

- COMMIT : DML로 변경된 데이터를 DB에 적용

- ROLLBACK : DML로 변경된 데이터를 변경 이전 상태로 되돌림

 

DCL(Data Control Language) : 데이터 제어어

객체에 대한 권한을 할당하거나 회수하는 SQL 문이다. RDBMS를 사용하기 위해 user(사용자)가 있어야 하고, 로그인을 해야 한다. 이 때 데이터베이스 객체를 사용하기 위해 권한이 있어야 하고, 사용자에게 권한을 할당하거나 다시 회수하기 위해 사용한다.

- GRANT : 객체에 대한 권한을 할당

- REVOKE : 객체에 할당된 관한 회수

 

반응형

댓글