728x90
반응형

데이터베이스란 ? 

 

대량의 정보를 컴퓨터가 효율적으로 접근할 수 있도록 가공 및 저장한 것 

 

DBMS란 ?

 

다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합

 

DBMS를 쓰지 않는다면

 

다수의 사람이 데이터를 공유하기 어렵다 

대량의 데이터를 다루기 어렵다 (txt,xls 등)

읽기/쓰기를 자동화하려면 프로그래밍 기술이 필요하다. 

만일의 사고에 대비 어렵다.

 

관계형 데이터베이스 - RDB 

 

관계형 데이터베이스는 키와 값의 간단한 관계를 2차원 표(테이블)형식으로 나타낸 데이터베이스이다. 

하나의 데이터베이스 안에는 여러 개의 테이블이 존재할 수 있다.

 

테이블

 

테이블은 행과 열로 이루어져 있다. 

 

테이블의 행은 레코드라고 브르며 데이터 한 건에 해당 

하나의 테이블은 적게는 수백개 많게는 수백만개의 레코드를 지님. 

 

 

테이블의 열에 해당하는 칼럼은 각기 구분하기 쉽게 이름을 붙여 분류 

칼럼은 특정한 데이터 타입을 가진다.

 

RDBMS는 일반적으로 클라이언트가 요청을 보내면 서버가 처리해주는 C/S구조로 되어있다.

클라이언트가 요청을 보낼때에 주로 사용하는 언어가 SQL이다.

 

사용자가 데이터를 조회하고 싶을때에 SQL문으로 작성한 요청을 RDBMS에 보내면 RDMBS는 요청된 데이터를 반환한다. 이 때 RDMBS는 2차원 표 형태의 데이터를 반환한다.

 

RDBMS의 종류 

 

어떤 RDBMS를 쓰는지에 따라 SQL 문법이 조금씩 달라진다. 쓰이는 인기 있는 RDBMS는 

아래와 같다.

 

Oracle DB - 가장 오래되었고 신뢰도도 높다. 뛰어난 기술력과 안정성을 가지고 있다. 대규모의 애플리케이션,

특히 은행 업계에서 쓰이며 유료로 사용 

MySQL - 오픈 소스이기 때문에 널리 쓰인다. 웹 개발 특히 PHP를 이용한 개발에 흔히 쓰인다. 오라클이 인수한 후

불안감 때문에 다른 곳으로 넘어가는 경우가 보임

Maria DB -오라클이 MySQL을 인수하면서 라이선스 문제가 불확실해지자 이에 반발하여 만들어졌다.

MySQL 5.5를 기반으로 만들어져 사용법이 거의 유사하고 호환성도 뛰어나다.

PostgreSQL - 버클리 대학의 프로젝트로 만들어진 오픈 소스 ORDBMS이다. 

(ORDBMS : 객체 - 관계형 데이터베이스 관리 시스템) SQL의 확장성과 표준을 준수하고 풍부한 기능을 지원한다.

SQL Server - 마이크로소프트가 개발한 RDBMS이기 때문에 윈도우 시스템 환경 지원 

SQLite - DB를 서버가 아닌 파일로 저장하는 DBMS이다. 기기에 가벼운 DB를 저장하는 목적으로 설계되었으며

대표적으로 안드로이드,iOS,mac OS에서 사용 

 

SQL 명령어 

 

DDL - 데이터베이스 스키마와 설명을 처리하는 정의하는 언어. 데이터베이스나 테이블 생성/변경/삭제 등의 작업이 여기 포함된다. 

DML - 데이터검색,삽입,변경.삭제를 수행하여 조작하는 언어.실질적으로 저장된 데이터에 처리할 때 사용 

DCL - 데이터에 접근할 수 있는 권한을 관리하는 언어

TCL - 트랜잭션을 다루는 언어 

 

반응형
728x90
반응형

전체적인 구조

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

데이터베이스의 데이터를 관리하는데 사용됩니다. DML명령은 자동으로 커밋되지 않습니다. 즉 DML명령에 의한 변경은 데이터베이스에 영구적이지 않으므로 롤백할 수 있습니다.

 

DML(INSERT,UPDATE,DELETE,SELECT) 명령어의 경우, 조작하려는 테이블을 메모리 버퍼에 올려놓고 작업을 하기 때문에

실시간으로 테이블에 영향을 미치는 것은 아니다. 따라서 버퍼에서 처리한 DML 명령어가 실제 테이블에 반영되기 위해서는 COMMIT 명령어를 입력하여 TRANSACTION을 종료해야 한다. 그러나 SQL Server의 경우는 DML의 경우도 AUTO COMMIT으로 처리되기 때문에 실제 테이블 반영하기 위해 COMMIT 명령어를 입력할 필요가 없다.

 

데이터베이스에서 데이터를 검색.(RETREVE라고도 함)

 

 SELECT    - ALL : 기본 옵션이므로 별도로 지정하지 않아도 되며,
중복되는 데이터가 있더라도 모두 출력 
 - DISTINCT : 중복된 데이터가 있는 경우 1건만 출력
INSERT 테이블에 데이터를 삽입(추가)
UPDATE 테이블 내의 기존 데이터를 수정
DELETE 테이블에서 데이터를 삭제
테이블의 전체 데이터를 삭제하는 경우, 시스템 활용 측면에서는 삭제된 데이터를 로그로 저장하는 DELETE TABLE보다는 시스템 부하가 적은 TRUNCATE TABLE을 권고한다.
단, TRUNCATE TABLE의 경우 삭제된 데이터의 로그가 없어서 ROLLBACK이 불가능하므로 주의해야 한다.
그러나 SQL Server의 경우 사용자가 임의적으로 트랜잭션을 시작한 후 
TRUNCATE TABLE을 이용하여 데이터를 삭제한 이후 오류가 발견되어
다시 복구를 원할 경우 ROLLBACK문을 이용하여 
테이블 데이터를 원 상태로 되돌릴 수 있다.
 
MERGE UPSERT 작업 (INSERT 또는 UPDATE)
데이터가 테이블에 존재하지 않으면 INSERT,존재하면 UPDATE를 수행한다.
CALL PL/SQL 또는 Java 서브 프로그램 호출
EXPLAIN PLAN 데이터 접근 경로를 해석
(SQL문이 어떻게 실행/작동하는지에 대한 점검/분석을
할 수 있도록 도와 준다)
LOCK TABLE  동시성 제어

 

DDL (Data Definition Language, 데이터 정의어) - Auto Commit 

데이터베이스 구조 또는 스키마를 정의하는데 사용

주의 : 직접 데이터베이스의 테이블에 영향을 미치기 때문에 DDL명령어를 입력하는 순간. 명령어에 해당하는 작업이 즉시 (AUTO COMMIT) 완료된다는 것을 기억하기 바란다. 

               

CREATE 데이터베이스의 객체를 생성
ALTER 데이터베이스의 구조를 변경
DROP 데이터베이스의 객체를 삭제 (테이블의 모든 데이터와 구조를 삭제)
RENAME 데이터베이스의 객체 이름을 변경
COMMENT 데이터에 주석등을 추가
TRUNCATE 테이블에 할당된 모든 공간을 포함하여 모든 레코드를 제거.
(테이블 객체의 저장공간 재사용 가능)

 

DCL (Data Control Language,데이터 제어 언어) - Auto Commit

 

데이터베이스에 권한 부여

주의 : 직접 데이터베이스의 테이블에 영향을 미치기 때문에 DCL 명령어를 입력하는 순간. 명령어에 해당하는 작업이 즉식 완료된다는 것을 기억하기 바란다.

 

GRANT 데이터베이스에 대한 사용자의 액세스 권한을 제공.
(특정 사용자만 특정 작업을 할 수 있도록 지정 가능)
REVOKE GRANT명령으로 주어진 액세스 권한을 철회

TCL (Transaction Control Language, Transaction 제어 언어)

데이터의 보안,무결성,회복,병행 수행제어 등을 정의하는데 사용 

COMMIT 트랜잭션의 작업 결과를 저장 반영 (트랜잭션 완료)
ROLLBACK 데이터베이스를 마지막 COMMIT된 시점의 상태로 복원
데이터에 대한 변경 내용은 논리적인 트랜잭션으로 그룹화 될 수 있다.
SAVEPOINT 저장점을 정의하면 롤백할때 트랜잭션에 포함된 전체 작업을 롤백하는 것이 아니라 현 시점에서 SAVEPOINT까지 트랜잭션의 일부만 롤백할 수 있다. 따라서 복잡한 대규모 트랜잭션에서 에러가 발생했을때 SAVEPOINT까지의 트랜잭션만 롤백하고 실패한 부분에 대해서만 
다시 실행할 수 있다. (일부 툴에서는 지원이 안 될 수 있음)
복수의 저장점을 정의할 수 있으며, 동일이름으로 저장점을 정의했을때는
나중에 정의한 저장점이 유효하다.
SET 
TRANSACTION
Transaction 지정

 

출처 : https://iamfreeman.tistory.com/entry/DBMS-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%96%B8%EC%96%B4-DDL-DML-DCL-TCL-%EC%9D%98-%EC%A0%95%EC%9D%98

반응형

'IT > DB' 카테고리의 다른 글

SQL 개념 정리  (0) 2021.10.20
왜 데이터베이스 튜닝을 해야할까 ?? -  (0) 2021.10.14
쿼리란 ?  (0) 2021.10.14
DBMS와 SQL이란  (0) 2021.08.19
[DB]SQL Query문 간단하게 정리 (SELECT,INSERT,UPDATE,DELETE 쿼리문 사용법)  (0) 2021.08.11

+ Recent posts