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;
'Web programming > SQL & DB' 카테고리의 다른 글
ROWNUM / OUDER BY / 순위를 반환하는 함수 ROW_NUMBER, RANK, DENSE_RANK (0) | 2020.04.13 |
---|---|
서브쿼리와 서브쿼리의 중첩 / 쿼리문 작성 및 실행 순서 (0) | 2020.04.13 |
관계 연산자, 패턴 연산자, 정규 표현식 (0) | 2020.04.10 |
데이터를 삽입하는 명령어 DML (0) | 2020.04.07 |
데이터를 정의하는 명령어 DDL / Character 형식 (0) | 2020.04.07 |