DB

DB - 데이터베이스의 개념, 특징, 키워드, DBMS, DDL, DCL, DML

suji0730 2024. 7. 5. 15:17

 

1) 데이터베이스의 개념

1. 통합된 데이터(integrated data) : 여러 곳에 사용하던 데이터를 통합하여 하나로 저장한 데이터(데이터 중복 최소화)

2. 저장된 데이터(stored data) : 컴퓨터가 접근할 수 있는 저장 매체(디스크)에 저장된 자료

3. 운영데이터(operational data) : 조직의 고유한 업무를 수행하는 데 존재 가치가 확실하고 없어서는 안 될 반드시 필요한 자료(조직과 관련없이 저장되는 데이터나 임시로 저장된 데이터는 운영데이터에 속하지 않음)

4. 공용데이터(shared data) : 개인 또는 국한된 업무를 위해 사용하는 데이터가 아니라 공동으로 사용되는 데이터. 여러 응용 시스템들이 공동으로 소유하고 유지하는 데이터

 

2) 데이터베이스의 특징

1. 실시간 접근성(Real-Time Accessibillity) : 수시적이고 비정형적인 질의(조회)에 대하여 실시간 처리에 의한 응답이 가능해야 한다.

2. 계속적인 변화(Continuous Change) : 데이터베이스의 상태는 동적. 즉 데이터의 삽입, 수정, 삭제 등의 작업 수행 시 항상 최신의 데이터 유지

3. 동시공용(Concurrent Sharing) : 서로 다른 업무 또는 여러 사용자가 동시에 같은 데이터를 이용할 수 있다. 데이터베이스에 접근하는 사용자 데이터 요청 프로그램이 여러 개가 있다.

4. 내용에 의한 참조(Reference by Content) : 데이터베이스에 있는 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해서가 아니라 사용자가 요구하는 데이터 내용으로 데이터를 참조

 

3) 데이터베이스의 키워드

1. 스키마 : 데이터베이스, 테이블의 구조와 속성에 대한 정보

2. 테이블(릴레이션) : 특정한 형태의 데이터로 이루어진 구조화(행과 열)된 목록

3. 열(column, attribute) : 저장하려는 데이터를 대표하는 이름과 특성(모든 테이블에 한 개 이상의 열로 구성)

4. 행(row, tuple, record) : 테이블에 삽입되는 단일 구조 데이터 항목

5. 식별자(key) : 하나의 테이블에 구성되어 있는 여러개의 속성 중 테이블을 대표할 수 있는 속성

6. 도메인 : 각 속성이 가질 수 있는 값의 범위(ex :성적 = 0~100). 도메인은 원자값(더 이상 쪼개질 수 없는 속성)을 가짐. 동일한 도메인을 여러 속성에서 사용 가능(ex : 금액 도메인 지정 -> 상품테이블, 주문테이블 사용)

7. Degree(차수) : 테이블이 가지고 있는 열(column)의 수

8. Cadinality(카디널리티) : 테이블이 가지고 있는 행(row, tuple)의 수

 

 

4) 데이터베이스 관리시스템(DBMS : DataBase Management System)

- 데이터베이스를 관리하며 응용프로그램들이 데이터 베이스를 공유하며 사용할 수 있는 환경을 제공하는 소프트웨어

 

5) 관계형 DBMS

- 관계형 데이터 모델 개념을 바탕으로 데이터를 저장, 관리하는 데이터베이스

- 테이블, 행, 열의 정보를 구조화한 데이터베이스 유형

- 대표 DBMS : Oracle, MySQL, MS SQL Server, PostgreSQL, MariaDB

 

6) 데이터베이스를 통합으로 관리하는 시스템(클라이언트-서버시스템)

- 클라이언트(client) : 외부에서 데이터를 요청하는 쪽(데이터 요청자)

- 서버(server) : 데이터를 소유하고 있는 쪽(데이터 제공자)

 

 

7) DBMS 필수 기능

1. 정의 기능(Data Definition)

-모든 응용 프로그램들이 요구하는 데이터 구조를 지원하기 위해 데이터베이스에 저장될 데이터의 타입과 구조에 대한 정의, 이용방식, 제약조건 등을 명시하는 기능

 

2. 조작 기능(Data Manipulation)

- 데이터 검색, 삽입, 갱신, 삭제 등을 체계적으로 처리하기 위해 사용자와 데이터베이스 사이의 인터페이스 수단을 제공하는 기능

 

3. 제어 기능(Data Control)

- 데이터베이스를 접근하는 갱신, 삽입, 삭제 작업이 정확하게 수행되어 데이터의 무결성이 유지

- 정당한 사용자가 허가된 데이터만 접근할 수 있도록 보안을 유지하고 권한을 검사

- 여러 사용자가 데이터베이스를 동시에 접근하여 데이터를 처리할 때 처리결과가 항상 정확성을 유지하도록 병행제어(Concurrency Control)을 할 수 있어야 한다.

 

 

8) cmd에서 mysql 접속

mysql - u root -p

root password 입력

데이터베이스 확인 : show databases;

 

 

9) SQL : 관계형 데이터베이스 관리시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수목적의 프로그래밍 언어

1. DDL(Data Definition Language, 데이터 정의어)

- 데이터베이스 객체(테이블, 뷰, 스키마 등)의 구조를 정의하고 관리하는 명령어
- CREATE, ALTER, DROP, TRUNCATE

 

1-1. CREATE : 데이터베이스 오브젝트 생성

CREATE [데이터베이스객체종류] [객체의이름] [옵션];
ex:) CREATE DATABASE KSMARTDB DEFAULT CHARACTER SET UTF8

 

1-2. ALTER : 데이터베이스 오브젝트 변경

ALTER [데이터베이스객체종류] [객체의이름] [옵션];
ex:) ALTER TABLE MEMBERS CHANGE COLUMN m_name mbr_nm varchar(20);

 

1-3. DROP : 데이터베이스 오브젝트 삭제

DROP [데이터베이스객체종류] [객체의이름];
ex:) DROP DATABASE KSMARTDB;

 

1-4. TRUNCATE : 데이터베이스 오브젝트 내용 삭제

TRUNCATE [데이터베이스객체종류] [객체의이름];
ex:) TRUNCATE TABLE MEMBERS;

 

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

- 데이터베이스 테이블에 데이터를 조회, 삽입, 수정, 삭제하는데 사용되는 명령어
- SELECT, INSERT, UPDATE, DELETE

 

2-1. SELECT : 테이블의 내용을 조회

SELECT [조회할 컬럼] FROM [테이블] WHERE [조건] GROUP BY [그룹] HAVING [조건]
ex:) SELECT * FROM MEMBERS WHERE mbr_id = 'id001';

 

2-2. INSERT : 테이블에 신규 데이터 삽입

INSERT INTO [테이블] (컬럼1, ...컬럼n) VALUES (데이터1, ....데이터n) 
ex:) INSERT INTO MEMBERS (mbr_id, mbr_nm) VALUES('id001', '홍01');

 

2-3. UPDATE : 테이블의 데이터 수정

UPDATE [테이블] SET [컬럼=수정값] WHERE [조건] 
ex:) UPDATE MEMBERS SET mbr_nm = '홍1' WHERE mbr_id = 'id001';

 

2-4. DELETE : 테이블의 데이터 삭제

DELETE FROM [테이블] WHERE [조건]
ex:) DELETE FROM MEMBERS WHERE mbr_id='id001';

 

3. DCL(Data Control Language, 데이터 제어어)

- 데이터베이스 객체 및 테이터의 사용권한을 관리하는데 사용되는 명령어
- GRANT, REVOKE

 

3-1. GRANT : 데이터베이스 사용자 권한 부여

GRANT [권한] ON [객체의이름] TO [사용자];
ex:) GRANT ALL PRIVILEGES ON KSMARTDB.* TO 'KSMARTID'@'%';

 

3-2. REVOKE : 데이터베이스 사용자 권한 회수

REVOKE [권한] ON [객체의 이름] FROM [사용자];
ex:) REVOKE ALL ON KSMARTDB.* FROM KSMARTID;

 

 

10) 주석

-- 한줄 주석 
/* 여러줄 주석 */

11) 

1.database 생성

create [데이터베이스 객체] [객체이름] [옵션];
create database ksmart52db default character set utf8;

2. database를 접근하는 사용자 계정을 추가(생성)한다.
계정아이디@'%' -> 계정일치하는 모든 아이피
identified by 비밀번호
CREATE user 'ksmart52id'@'%' IDENTIFIED BY 'ksmart52pw';

3. 생성된 사용자 계정 조회
USE mysql;
SELECT * FROM user;

4. 특정 데이터베이스 권한부여(사용자계정)
DCL GRANT [권한] ON [데이터베이스객체] TO [사용자계정];
GRANT ALL PRIVILEGES ON ksmart52db.* TO 'ksmart52id'@'%';

5. 권한 설정 후 MySQL 메모리 반영
FLUSH PRIVILEGES;

*옵션. 사용자 권한 회수
DCL REVOKE [권한] ON [데이터베이스객체] FROM [사용자계정];
REVOKE ALL ON ksmart52db.* FROM ksmart52id;

6. DDL 테이블 삭제
drop [데이터베이스객체] [테이블명]
DROP TABLE members;


7. DDL truncate 테이블의 내용을 삭제
TRUNCATE table members;

8. 데이터 삽입
INSERT INTO members(mbr_id, mbr_nm, mbr_addr, mbr_daddr, mbr_zip, mbr_telno, mbr_email, mbr_reg_date)
VALUES
('id001','홍01','전북 전주시 기린대로 499', '3층 한국스마트정보교육원', '54888','010-0001-0001','홍01@ksmart.or.kr', CURDATE()),
('id002','홍02','전북 전주시 기린대로 499', '3층 한국스마트정보교육원', '54888','010-0002-0002','홍02@ksmart.or.kr', CURDATE());

9. alter 회원테이블의 특정 컬럼 식별자 등록
ALTER TABLE members ADD PRIMARY KEY (mbr_id);

10. DML 테이블 조회

select 순서 : from -> where -> select -> order by
order by 오름차순(기본값) : asc(오름차순), desc(내림차순)
SELECT
mbr_id AS memberId, mbr_nm AS memberName, m.mbr_addr AS memberAddress, m.mbr_daddr AS memberDAddr, m.mbr_zip AS memberZip, m.mbr_telno AS memberTelNo, m.mbr_email AS memberEmail,
m.mbr_reg_date AS memberRegDate
FROM members m WHERE m.mbr_addr = '전북 전주시 기린대로 499' ORDER BY memberId DESC;