데이터베이스 ( Database )
여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터들의 모임이라고 할 수 있습니다.
데이터베이스가 등장하기 이전에는 파일 시스템을 사용해서 데이터를 관리했다고 합니다.
파일 시스템을 이용하면 파일 단위로 저장할때, 데이터 종속성 문제와 중복성, 데이터 무결성 문제가 존재하기 때문에
이런 문제점을 해결 해주는 데이터베이스가 등장하고 데이터베이스를 사용하기 시작했다고합니다.
데이터베이스는 데이터를 효율적으로 처리하기 위하여 개발된 것으로,
여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합
자료항목의 중복을 없애고 자료를 구조화하여 저장함으로써 자료 검색과 갱신의 효율을 높일 수 있습니다.
또한 업무가 확대되어도 새로 파일을 준비할 필요가 없다는 장점을 가지고 있습니다.
데이터베이스의 특징
1. 데이터의 독립성
데이터베이스 크기를 늘리거나 성능 향상을 위해 데이터 파일을 늘리거나 새롭게 추가하더라도 관련된 응용 프로그램을 수정할 필요가 없다.
2. 데이터의 무결성
데이터는 여러경로로 들어오는데, 이때 여러 경로를 통해 잘못된 데이터가 발생하는 경우의 수를 방지하는 기능으로 데이터의 유효성 검사를 통해 데이터의 무결성을 구현하게 된다.
3.데이터의 보안성
인가된 사용자들만 데이터베이스나 데이터베이스 내의 자원에 접근할 수 있도록 계정 관리 또는 접근 권한을 설정함으로써 모든 데이터에 보안을 구현할 수 있다.
4. 데이터의 일관성
연관된 정보를 논리적은 구조로 관리함으로써 어떤 하나의 데이터만 변경했을 경우 발생할 수 있는 데이터의 불일치성을 배제할 수 있다.
또한 작업 중 일부 데이터만 변경되어 나머지 데이터와 일치하지 않는 경우의 수를 배제할 수 있다.
5. 데이터 중복 최소화
데이터베이스는 데이터를 통합해서 관리함으로써 파일 시스템의 단점 중 하나인 자료의 중복과 데이터의 중복성 문제를 해결할 수 있다.
데이터베이스의 성능
디스크 I/O를 어떻게 줄이냐에 따라 달려있다.
데이터를 읽는데 디스크 헤더의 위치 이동없이 얼마나 많은 데이터를 한번이 기록하느냐에 따라 결정된다.
따라서 순차적으로 I/O를 수행하는게 랜덤 I/O보다 빠르다.
DBMS
데이터베이스를 ‘데이터의 집합’이라고 정의한다면, 이런 데이터베이스를 관리하고 운영하는 소프트웨어를 DBMS(Database Management System)라고 합니다.
다양한 데이터가 저장되어 있는 데이터베이스는 여러 명의 사용자나 응용 프로그램과 공유하고 동시에 접근이 가능해야 합니다.
한가지 예로 은행의 예금 계좌는 많은 사람들이 가지고 있습니다.
여러 명의 예금 계좌 정보를 모아 놓은 것이 데이터베이스입니다.
은행이 가지고 있는 예금 계좌 데이터베이스에는 여러 명이 동시에 접근할 수 있습니다.
예금 계좌 주인, 은행 직원, 인터넷 뱅킹, ATM 기기 등에서 모두 접근이 가능한 것 처럼요.
이러한 것이 가능한 이유는 바로 DBMS가 있기 때문입니다.
DBMS의 종류
DBMS와 같은 소프트웨어는 특정 목적을 처리하기 위한 프로그램입니다.
예를 들어 문서를 작성하기 위해서는 한컴(HWP)이나 워드(Word)
표 계산을 위해서는 엑셀(Excel)
사진을 편집하기 위해선 포토샵(PhotoShop) 같은 소프트웨어를 설치 합니다.
마찬가지로 데이터베이스를 사용하기 위해서도 소프트웨어, 즉 DBMS를 설치해야 하는데
대표적으로 MySQL, 오라클(Oracle), SQL 서버, MariaDB 등이 있습니다.
소프트웨어 각각의 사용 방법과 특징이 다르지만 각 장점 중 자신에게 필요한 DBMS를 사용합니다.
- 대표적인 DBMS들
DBMS | 제작사 | 작동 운영체제 | 기타 | |
MySQL | Oracle | Unix, Linux, Windows, Mac | 오픈 소스(무료), 상용 | |
MariaDB | MariaDB | Unix, Linux, Windows | 오픈 소스(무료), MySQL 초기 개발자들이 독립해서 만듦 |
|
PostgreSQL | PostgreSQL | Unix, Linux, Windows, Mac | 오픈 소스(무료) | |
Oracle | Oracle | Unix, Linux, Windows | 상용 시장 점유율 1위 | |
SQL Server | Microsoft | Windows | 주로 중/대형급 시장에서 사용 | |
DB2 | IBM | Unix, Linux, Windows | 메인프레임 시장 점유율 1위 | |
Access | Microsoft | Windows | PC용 | |
SQLite | SQLite | Android, iOS | 모바일 전용, 오픈 소스(무료) |
- DBMS의 유형
DBMS의 유형은 크게 RDBMS ( 관계형 데이터베이스 관리 시스템 ) 과 NoSQL DBMS ( 비 관계형 데이터베이스 관리 시스템 ) 으로 나눌 수 있습니다.
자세한 설명은 아래 포스팅으로 대체하겠습니다.
SQL (Strucured Query Language)
관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어로 "구조적 질의 언어"라고 합니다.
SQL을 사용하여 RDBMS에서 데이터를 검색(SELECT) , 저장(INSERT), 수정(UPDATE), 삭제(DELETE) 등이 가능합니다.
SQL 문법의 종류.
- DDL(Data Definition Language, 데이터 정의 언어)
데이터베이스 스키마와 설명을 처리하도록 정의하는 언어입니다.
데이터베이스나 테이블 생성/변경/삭제 등의 작업이 포함됩니다.
CREATE : 데이터베이스 개체(테이블, 인덱스, 제약조건 등)의 정의
DROP : 데이터베이스 개체 삭제
ALTER : 데이터베이스 개체 정의 변경
- DML(Data Manipulation Language, 데이터 조작 언어)
데이터 검색, 삽입, 변경, 삭제 수행을 조작하는 언어입니다.
실질적으로 저장된 데이터를 관리하고 처리할 때 사용합니다.
SELECT : 테이블 데이터의 검색 결과 집합의 취득
INSERT : 행 데이터 또는 테이블 데이터의 삽입
DELETE : 데이터의 삭제
UPDATE : 표 업데이트
- DCL(Data Control Language, 데이터 제어 언어)
사용자 관리 및 사용자별로 릴레이션 또는 데이터를 관리하고 접근하는 권한을 다루기 위한 언어입니다.
COMMIT : 트랜잭션의 작업 결과를 반영
ROLLBACK : 트랜잭션의 작업을 취소 및 원래대로 복구
GRANT : 사용자에게 권한 부여
REVOKE : 사용자 권한 취소
SQL의 언어적 특성
SQL은 다음과 같은 언어적 특성을 가지며, 각 언어마다 가진 고유한 특성을 알아두어야 오류를 줄 일 수 있습니다.
1. SQL은 대소문자를 가리지 않습니다.
=> 단, 서버 환경이나 DBMS의 종류에 따라 데이터베이스 또는 필드명에 대해 대소문자로 구분하기도 합니다.
2. SQL 명령은 반드시 세미콜론(;) 으로 끝나야 합니다.
=> 그렇지 않을 시 명령어가 수행되지 않습니다.
3. 고유의 값은 따옴표( " " ) 로 감싸줘야합니다.
SELECT * FROM AAA WHERE NAME = "SHJ";
4. SQL에서 객체를 나타낼 때는 백틱 ( ` ` ) 으로 감싸줘야합니다.
SELECT `COST`, `TYPE` FROM `INVOICE`;
5. 주석은 일종의 도움말로, 주석 처리된 문장은 동작하지 않습니다. 주석은 문장 앞에 --를 붙여 사용합니다.
-- SELECT * FROM AAA;
6. 여러 줄 주석은 /* */ 로 감사줍니다.
참고자료
https://hongong.hanbit.co.kr/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-databasedb-dbms-sql%EC%9D%98-%EA%B0%9C%EB%85%90/
https://edu.goorm.io/learn/lecture/15413/%ED%95%9C-%EB%88%88%EC%97%90-%EB%81%9D%EB%82%B4%EB%8A%94-sql/lesson/767683/sql%EC%9D%B4%EB%9E%80
'◼ DB' 카테고리의 다른 글
데이터베이스 정규화(Normalization)란? 예시를 통해 쉽게 이해해보자 (0) | 2023.07.23 |
---|---|
[데이터베이스] DDL, DML, DCL이란? (0) | 2023.06.04 |
DB 락(Lock)과 Lock의 종류에 대해 알아보자. (0) | 2023.04.13 |
트랜잭션이란? 특징과 사용법에 대해 쉽게 알아보자 (1) | 2023.04.13 |
RDBMS와 NoSQL의 차이점 및 개념 완벽 정리 (2) | 2022.09.20 |