반응형
12-23 19:41
Today
Total
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
관리 메뉴

개발하는 고라니

[Database] Database와 SQL 본문

Database

[Database] Database와 SQL

조용한고라니 2021. 4. 16. 11:32
반응형

Database와 DBMS

사실 데이터베이스가 존재하기 전부터 데이터를 관리하고 있었다. 위의 그림을 대학 캠퍼스라고 보면, 행정실, 도서관, 과사무실 이라고 보았을 때, 데이터를 각각 관리하였다. 그런데 학생의 데이터는 모든 곳에서 사용이 되는데, 동기화가 잘 안되는 것이다. 예를 들어 책을 빌리는 과정을 생각해보면, 휴학생에게는 도서 대출이 안된다. 유재석 학생이 오늘 복학했고, 도서관에서 도서를 대출하려고 했는데, 아직 데이터상 처리가 안되어있는 것이다. 행정실과 도서관의 데이터 동기화(복사본)는 그날 저녁에 이루어지므로 아직 휴학생처리가 되어있는 것이다.

 

이처럼 데이터가 실시간으로 반영이 안되는 것, 그리고 데이터의 복사본을 갖고있는 문제가 데이터 결함으로 이어질 수 있다는 문제점이 있다.

 

이를 해결할 수 있는 방법은, 데이터를 각자 갖고있는게 아닌, 데이터를 'base'화 시켜서 사용하는 것이. 즉 데이터를 한 곳에 모아서 관리하고, 데이터의 중복을 없애는 것을 생각한 것이다. 그런데 여기서도 문제점이 있다. 내가 홍길동이라는 이름을 수정하려고 했는데, 동시에 누군가 이를 지워버린다면..? 그리고 성능과 보안의 문제점도 존재한다. 이를 누군가 관리해주어야 하는데, 이를 관리해주는 역할이 데이터베이스 관리 시스템(DBMS)이다. (동시성, 권한, 성능 ..)

정리하자면, 데이터베이스는 파일, 데이터를 갖고 있지만, 우리는 데이터베이스에 직접 접근하는 것이 아닌 DBMS를 이용해 간접적으로, DBMS를 통해 데이터를 주고받고 한다.

 

우리는 관계형 데이터베이스 관리 시스템(RDBMS)를 주로 이용한다.

SQL

SQL은 Structure Query Language의 약자로 데이터베이스를 사용하기 위한 언어이다. 데이터베이스를 사용한다는 말은 사실 말이 안되는 것이고, 데이터베이스 관리 시스템(DBMS)를 사용한다고 하는 것이 맞다.

 

  • DDL : CREATE / ALTER / DROP (테이블을 조작)
  • DML : SELECT / INSERT / UPDATE / DELETE (데이터를 조작)
  • DCL : GRAND / REVOKE (권한/허가를 조작)

DDL (Data Definifion Language)

테이블 생성하기 - CREATE

CREATE TABLE MEMBER33(
    ID NUMBER,
    PWD VARCHAR2(10),
    NAME NVARCHAR2(25),
    GENDER NCHAR(2),
    AGE NUMBER(3),
    BIRTHDAY CHAR(6),
    PHONE VARCHAR2(13)
);

테이블 수정하기 - ALTER

ALTER TABLE MEMBER32 ADD REGDATE TIMESTAMP;

ALTER TABLE MEMBER32 DROP COLUMN AGE;

ALTER TABLE MEMBER32 MODIFY ID NVARCHAR2(20);

/* 단, DBMS 마다 조금씩 상이할 수 있음 */

테이블 삭제하기 - DROP

DROP TABLE MEMBER33;

DML (Data Manipulation Langauage)

데이터 삽입하기 - INSERT

//INSERT INTO [TABLE] VALUES [VALUE 목록]

//EX)
INSERT INTO MEMBER VALUES(
    'NEWLEC', 111', '홍길동'
);

INSERT INTO MEMBER(ID, PW, NAME) VALUES(
    'NEWLEC', '111', '홍길동'
);

데이터 선택하기 - SELECT

SELECT * FROM MEMBER;

SELECT ID, PWD FROM MEMBER;

SELECT ID, PWD FROM MEMBER WHERE ID = 1;

데이터 수정하기 - UPDATE

UPDATE MEMBER SET PWD = '111';

UPDATE MEMBER SET PWD = '111', NAME = '홍길동';

UPDATE MEMBER SET PWD = '111', NAME = '홍길동' WHERE ID = 'NEWLEC';

데이터 삭제하기 - DELETE

DELETE MEMBER;

DELETE MEMBER WHERE ID = 'ABC';

DCL (Data Control Language)

 

 

트랜잭션 처리를 위한 COMMIT / ROLLBACK

※ 트랜잭션

 

 

COMMIT / ROLLBACK

테이블에 데이터를 삽입(INSERT)하게 되면 우선 임시 저장소에 들어가게된다. 이는 테이블에 영속적으로 저장된 것이 아니다. 단지 임시로 저장됬을 뿐이다. 이를 COMMIT 해야만 테이블에 정상적으로 들어가게 된다. 만일 이를 다시 되돌리고 싶다하면 ROLLBACK하면 된다.

반응형

'Database' 카테고리의 다른 글

[Database] Transaction과 격리 수준  (0) 2021.10.17
Comments