study hard!

Hits: 24

Database

“개인 혹은 여러 사용자들에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합!”

일반적으로 의미상 Database 인 것 들은 많이 있습니다

연도별로 수기장부를 모아서 관리하는 캐비넷 같은 것도 Database라고 할 수 있지 않을까~? 하는 개인적인 생각입니다 ㅎㅎ 허나 그런 것 들을 말하려고 하는게 아닌 전산적으로 관리하는 Database System을 기준으로 설명 드리려 합니다.

예전 장부로 관리하던 시절이 아님~+_+

당연하게 Database는 많은 사람들이 Data 를 같이 관리하기 위한 시스템상의 공간입니다, DB자체적으로 어떤 Action의 기능이 있다기 보다는 규칙들이 존재합니다, 이를 DBMS(Database Management System)이란 프로그램을 통하여 관리하게 됩니다.

DB는 다양한 필요와 목적에 의하여 생성되고 관리됩니다…세상의 모든 정보를 하나의 Database에 담을 수 있다면 얼마나 좋을까요….하지만 안타깝게도 현재로 그럴 수 없고….또 그럴 필요도 없습니다 ㅎㅎ

만약 이 글을 보시는 분께서 어떤 조직에 있으시다면 해당 조직에서 필요한 정보만을 위한 Database가 필요하겠죠…우리회사 정보만 가지고 있는 Database안에는 또다시 다양한 Group이 필요하겠죠~?

직원정보 / 자재정보 / 고객사정보 등등 이런것들을 Table이라는 단위로 구성합니다.

Table

Excel로 만들어본 간단한 회원정보

만약 문서(Excel)로 직원들의 목록을 관리한다고 가정 해 볼게요..위와 같이 가로X세로 표 모양으로 세로는 의미가 같은 Group으로 행을 추가하면서 한사람 한사람의 정보를 추가 해서 관리하는게 일반적인 방식일 듯 합니다.

Database에서의 Table도 Excel에서 열/행 과 같은 2차원 구조를 가졌습니다.

MSSQL DBMS 에서 DB안의 Table 구조로 만들어본 간단한 회원정보

해놓고 보니 그냥 똑같네요…..쩝…..ㅋㅋ 흠……아무튼 ㅋㅋㅋ – _-;;

실제 Data는 이런 형태로 하나의 주제로 이루어진 Table안으로 저장되어 집니다.

ID / NAME / EMAIL / PHONE 같은 하나의 항목들을 열(Column),

i6020345 / 홍길동 / jklee@layer3.co.kr / 010-xxxx-xxxx 라는 Data를 행(Row) 이라고 합니다.

즉 Table은 Column(열) 과 Row(행) 으로 이루저진 Data를 담는 그릇~? 같은거라고 보시면 됩니다!!

DBMS

위에서 gsIntranet 이라는 이름을 가진 Database가 있었고 Users라는 테이블이 있었습니다…이는 자체적으로는 Data를 저장하고 만 있는 상황입니다…그렇다면 이 Data를 어떻게 등록/수정/삭제/조회 같은 일들을 할까요….

우선 기본적으로 DBMS : Database Management System 이라는 Software를 통하여 Data들을 처리합니다, 또한 이 DBMS에서 저런 CRUD(Create / Read / Update / Delete : 생성 / 조회 / 수정 / 삭제)를 수행합니다.

Database도 관계형(Relational DBMS), 망형(Network DBMS), 계층형(Hierarchical DBMS) 등의 종류가 많이 있습니다만….이런 이야기는 나중에 진짜 요청을 주신는 분이 계시다면~~~~ 정리해 보는 것으로 하겠습니다..

이런 DBMS는 다양한 회사에서 다양한 목적으로 만들었기 때문에 종류가 다양합니다.

Oracle사의 Oracle, MySQL사의 MySql, Microsoft사의 MSSQL, 오픈소스 MariaDB => MySQL

등이 대표적입니다, 굳이 각 DBMS 특징을 알고 싶으시다면 검색 해 보시면 기가~~~막히게 정리된 정보들이 많이 있습니다, 만약 이중 1개의 DBMS를 직접 사용하게 되신다면 각 특징같은건 딱히 중요하지 않습니다 지금 내가 사용하게될 DBMS의 특징을 정확하게 파악하고 준비하는게 좋겠죠~?

SQL

Database가 뭔지 그안에 Table 어떻게 생겼는지 이제 친숙하시죠~? 그럼 CRUD(Create / Read / Update / Delete : 생성 / 조회 / 수정 / 삭제)를 한다던데 어떻게 할까요~~~~ 이 4개의 Action 은 SQL 언어로 명령되어 집니다.

SQL은 Structured Query Language의 약어입니다 말씀드렸던 DBMS의 종류처럼 몇가지 종류가 있고 사용되고있지만 여기서는 넘어가도록 하겠습니다.

문법~ 이라고 생각하시면 90%는 맞는 말입니다.

SQL 문법은 아래와 같이 나누어 집니다.

  • DDL(Data Definition Language) 정의어 : CREATE, ALTER, DROP 등등
    • 말 그대로 정의한다..ㅎㅎ? 생성하고, 생성된 구조를 수정하고(Data가 아닌 구조 수정), 삭제하고(Data가 아닌 구조를 날려버림!!!!ㄷㄷ) 등을 행위하는 언어입니다.
  • DML(Data Manipulation Language) 조작어 : SELECT, INSERT, UPDATE 등등
    • 정의어 보다는 Data를 직접 조작한다는 느낌으로 접근하면 괜찮을 듯 합니다 Data를 조회하고 Data를 넣고~ 있는 Data를 수정하는 언어입니다.
  • DCL(Data Control Language) 제어어 : GRANT, REVOKE 등등
    • 요건 나중에 조금더 친숙 해 지시면 특집 한번 가겠습니다 ㅎ~

그럼 마지막으로 위의 예시 데이터를 기준으로 어떻게 CRUD(Create / Read / Update / Delete : 생성 / 조회 / 수정 / 삭제)할 수 있는지 예시를 보여 드리겠습니다.

SELECT
  ID ,NAME ,EMAIL ,PHONE
FROM Users

SELECT 는 조회하는 DML 입니다, SELECT COLUMNS(컬럼 이름들 혹은 모두 조회하려면 * 를 입력) FROM 테이블명 으로 사용합니다, 즉 위의 SQL 문을 말로 풀면

“Users(회원) 테이블의 모든 정보를 모두 보여줘 입니다”

INSERT INTO Users
(ID ,NAME ,EMAIL ,PHONE)
VALUES
('NewMember','새친구','new@member.com','010-1234-5678')

INSERT INTO 는 Data를 생성하는 DML입니다 Table의 구조에 맞게 Column 에 Values를 매칭해서 넣는 방식입니다.

“Users(회원) 테이블에 ID는 NewMember NAME은 새친구 EMAIL은 new@member.com PHONE은 010-1234-5678 인 회원정보를 추가해줘 입니다.”

UPDATE Users
	SET NAME = '이정규'
WHERE ID = 'i6020345'

UPDATE 는 Data를 수정하는 DML입니다 SET 뒤에 Column내용은 변경할 내용이며 WHERE 뒤는 조건을 말합니다.

“Users(회원) 테이블에 ID가 i6020345 인 데이터에 NAME을 이정규 로 변경해줘 입니다.”

DELETE FROM Users
WHERE ID = 'i6020345'

DELETE 는 Data를 삭제하는 DML입니다 DELETE FROM 뒤에 원하는 Table을 넣고 WHERE 뒤에 조건을 넣습니다.

“Users(회원) 테이블에 ID가 i6020345 인 데이터를 삭제해줘 입니다.”

저는 모든 예시를 Microsoft 사의 MSSQL 이라는 DB와 DBMS를 사용하였습니다, 거의 동일하지만 복잡한 SQL을 사용하면 ORACLE, MySQL 등의 SQL 구문과 살작 다를 수 있습니다.

지금까지~ Database는 어떤 식으로 구성되고 동작하는지를 정말 아주 잠깐~+_+ (진짜에요….) 살펴 봤습니다 ㅎㅎ

조금 더 ~~~ 친숙 해 지셨나요~? 그렇다면 이런 Database는 어떻게 연결되어 질까요~

WebSite 라는 가정으로 도식화된 이미지 이긴 합니다만 저렇게 하나의 PC에 DB가 설치되어있고 Web Service나 혹은 TCP/IP 등의 기타 통신방식을 통하여 데이터를 CRUD(Create / Read / Update / Delete : 생성 / 조회 / 수정 / 삭제) 할 수 있습니다, 본인의 PC에 DBMS Software를 설치하고 DB서버에 접속하면 사용할 수 있거나 홈페이지 처럼 내부적으로 Database와 연동되어있는 System을 사용하면서 자연스럽게 DB서버에 접근하게 되는거죠~

많은 도움 되셨으면 하는 바램입니다~

Leave a Comment