본문 바로가기
Web programming/SQL & DB

DB, DBMS, SQL 정의

by Skilly 2020. 4. 6.

 

DB (Data Base)

데이터들을 저장하는 곳.  데이터를 베이스화 한다.

 


 장점 

- 데이터 공유 : 실시간으로 데이터 조회, 수정 등의 업무처리 가능

- 최신 데이터를 유지하며 접근이 용이 함

- 개별 시스템마다 있던 데이터 파일의 중복을 없애는 방법으로 결함을 줄임

 

 

 단점 

- 동시성 : 서로 다른 곳에서 동시에 데이터를 사용(참조)하려는 경우

- 보안 : 네트워크에 있다보니, 보안 문제가 발생 할 수 있음

- 성능 : 대용량 디스크로 엑세스가(CPU에서 메모리를 읽거나 쓰기) 집중되면 과부화 발생. (이러한 단점을 보완하기 위해 데이터베이스에 관리시스템(DBMS)을 사용)

 

 

 

 

DBMS (Data Base Management System)

데이터베이스 관리 시스템

 

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

사용자 또는 다른 프로그램의 요구를 처리하고 적절히 응답하여 데이터를 사용할 수 있도록 해 줌

(DBMS에게 명령하기 위한 언어인 SQL을 알아야 함!)

 

 

 기능 

- 정의 : 데이터에 대한 형식, 구조, 제약조건들을 명세하는 기능이다. 이때 데이터베이스에 대한 정의 및 설명은 카탈로그나 사전의 형태로 저장
- 구축 : DBMS가 관리하는 기억 장치에 데이터를 저장하는 기능
- 조작 : 특정한 데이터를 검색하기 위한 질의, 데이터베이스의 갱신, 보고서 생성 기능 등을 포함

- 동시공유 : 여러 사용자와 프로그램이 데이터베이스에 동시에 접근하도록 하는 기능

- 보호 : 하드웨어나 소프트웨어의 오동작 또는 권한이 없는 악의적인 접근으로부터 시스템을 보호

- 유지보수 : 시간이 지남에 따라 변화하는 요구사항을 반영할 수 있도록 하는 기능

- 참조관계 : 중복되는 데이터를 집중화 하다보니, 참조 관계에 의해 참조 해야 함 (참조 됨 = 부모 데이터, 참조 함 = 자식 데이터)  (위키백과 참조)

 

 

 장점 

- 데이터 통제와 보안 강화 됨

- 애플리케이션 프로그램들의 개발과 관리가 용이

- 데이터의 접근성이 용이 함

- DBMS는 자료와의 관계성을 정의하기 때문에 자료 통합성이 증진 됨

 

 

 

 

 

SQL (Structured Query Language)

구조적인(기본 단위) 명령 언어

 

데이터를 관리하기 위해 설계된 특수 목적의 프로그램 언어.

DBMS에게 질의를 위한 명령어로 구조화된 데이터를 정의, 조작, 제어 함

 

 

 

 SQL의 종류 

 

- DDL (Data Definition Language)
   : 데이터 정의어 (어떠한 데이터의 구조를 정의하는 명령어) create / alter / drop

- DML (Data Manipulation Language)
   : 데이터 처리어 select / insert / update / delete

- DCL (Data Control Language)
   : 데이터 제어어 grant / revoke

- TCL (Transation Control Language)
   : 데이터 조작어에 의해 변경된 내용을 관리 commit / rollback / savepoint

 

 


 

DML* (Data Manipulation Language)

 

: 데이터 조작어

SELECT : 데이터를 조회 (SELECT*FROM)  

SELECT * FROM MEMBER; 

 

- INSERT : 데이터를 추가 (INSERT INTO ~ VALUES( , );) 

INSERT INTO MEMBER VALUES(50, 'YH', '010-1234-1212'); -- ID가 50인 회원의 레코드(로우)를 추가   
INSERT INTO TABLE VALUES('IDXX', 'HYONI', '010~'); 

 

UPDATE : 데이터를 변경 (UPDATE ~ SET 00 = ' ' WHERE ID = ' ';)  

UPDATE MEMBER SET NAME = 'HYOEUN' WHERE ID = 'IDXX'; 

 

- DELETE : 데이터를 삭제 (DELETE FROM ~ WHERE ID = ' ';) 

DELETE FROM MEMBER WHERE ID = 'IDXX'; 

 


 

DDL* (Data Definiton Language)

 

: 데이터 정의어 (테이블, 인덱스, 뷰, 트리거 등 SQL문을 수행하는 대상을 의미하는 '객체'를 생성, 변경, 제거 할 때 사용)

 

 

DROP : 객체(테이블, 인덱스, 뷰, 트리거 등)를 제거

DROP TABLE DEPT02;


ALTER : 기존 테이블을 변경 (ALTER TABLE ~ MODIFY수정/ADD추가/DROP삭제. . ( );) 

ALTER TABLE DEPT01 MODIFY DEPTNO(40); 
ALTER TABLE DEPT01 ADD DNAME(100); 
ALTER TABLE DEPT01 DROP COLUMN AGE; 

 

- CREATE : 스키마, 도메인, 테이블, 뷰, 인덱스를 정의 및 생성

CREATE TABLE : 새로운 테이블 정의 및 생성 

CREATE TABLE DEPT01(

      DEPTNO   NUMBER(4),
      DNAME   VARCHAR2(10),
      LOC   VARCHAR2(10),
      AGE NUMBER,
      REGDATE   DATE
);

 


CREATE SCHEMA 
: 스키마를 정의하는 명령어 (스키마는 하나의 응용(사용자)에 속하는 테이블과 구성 요소 등을 그룹 지을 때 사용)

CREATE SCHEMA 스키마명 AUTHORIZATION 사용자ID

    
CREATE DOMAIN
: 도메인을 정의하는 명령어 (도메인이란 하나의 속성이 취할 수 있는 값의 범위가 SQL에서 지원하는 전체 데이터 타입의 값이 아니고 일부분 일 때, 사용자는 그 값의 범위를 도메인으로 정의할 수 있음)

CREATE DOMAIN 도메인명 data_type[Default 묵시값 정의] [CONSTRAINT VALID 도메인명 CHECK(범위값)]

 

CREATE INDEX
: 인덱스를 정의하는 명령어 (인덱스는 검색을 빠르게 하기 위해 만든 보조적인 데이터 구조)

CREATE [UNIQUE] INDEX <인덱스명> ON 테이블명({속성명[ASC[DESC][,속성명[ASC | DESC]]}) [CLUSTER]

 

CREATE VIEW 
: 뷰를 정의하는 명령어 (뷰는 하나 이상의 테이블로부터 유도되는 이름을 갖는 가상 테이블(Virtual Table)) 

CREATE VIEW 뷰명[(속성명[(속성명[,속성,..])] AS SELECT문

 

UNIQUE가 사용된 경우 :
중복값 없는 속성으로 인덱스를 생성 / 생략된 경우 - 중복값을 허용하는 속성으로 인덱스를 생성 



 

RENAME : 테이블 이름 변경 (RENAME ~ TO ~;) 

RENAME DEPT01 TO DEPT02; 

 

TRUNCATE : 테이블의 모든 내용을 제거 (TRUNCATE TABLE ~;) 

TRUNCATE TABLE DEPT02;

 


 

TCL* (Transation Control Language)

 

: 데이터 조작어(즉각 반영 및 저장되는 것이 아님)에 의해 변경된 내용을 관리   

트랜젝션 : 논리적인 실행(작업 수행) 단위


COMMIT : 변경된 내용을 영구적으로 저장 
ROLLBACK : 변경되기 이전 상태로 되돌림 
SAVEPOINT : 특정 위치까지 저장 혹은 이전 상태로 되돌릴 수 있는 지정점을 만듬

 

UPDATE MEMBER SET PWD = '111', NAME='홍길동' WHERE ID ='IDXX';
COMMIT;
ROLLBACK;

 


 

DCL* (Data Control Language) 

: 데이터를 사용할 수 있는 (CREATE SESSION) 권한을 사용자에게 부여하거나 제거하기 위해 사용하는 명령어  

GRANT : 사용자에게 작업을 허용하는 특정 권한을 부여 

GRANT CREATE SESSION TO OraUser01; 

 

REVOKE : 사용자로부터 특정 권한을 제거 

REVOKE CREATE SESSION FROM OraUser01; 

 

 

 

 

 

 

 

반응형