✔ MYSQL

◼ 정보 보호의 3요소

◾ CIA Triad

▫ 기밀성(Confidentiality) : 허락되지 않은 자가 정보의 내용을 알 수 없도록 하는 것

▫ 무결성(Integrity) : 허락되지 않은 자가 정보의 내용을 임의로 수정할 수 없도록 하는 것

▫ 가용성(Availability) : 허락된 자가 정보에 접근하고자 할 때 바로 접근할 수 있는 것

 

파일처리시스템의 발생 가능한 문제

데이터 중복의 문제

데이터 종속의 문제

무결성 훼손의 문제

동시 접근의 문제 

 

DBMS

- 파일처리시스템의 문제를 해결하기 위해 나온 것

 

◾ 계층형 DBMS

- 각 계층이 트리 형태를 띠고 1:N 관계를 가짐

- 한번 구축하면 구조를 변경하기 힘듦

- 접근의 유연성이 불편함

 

◾ 망형 DBMS

- 1:1, 1:N, N:M 관계가 지원되어 효과적이고 빠른 데이터 추출이 가능

- 매우 복잡한 내부 포인터 사용

- 프로그래머가 모든 구조를 이해해야 프로그램을 작성할 수 있음

 

◾ 관계형 DBMS

- 모든 데이터는 테이블에 저장

- 테이블 간의 관계는 기본키(PK)와 외래키(FK)를 사용하여 맺음(부모, 자식 관계)

- 다른 DBMS에 비해 업무 변화에 따라 바로 순응할 수 있고 유지, 보수 측면에서도 편리

- 대용량 데이터를 체계적으로 관리할 수 있음

- 데이터의 무결성도 잘 보장됨

- 시스템 자원을 많이 차지하여 시스템이 전반적으로 느려지는 단점이 있음

 

트랜잭션

 

데이터베이스 모델링의 개념

- 데이터의 의미를 파악하고, 데이터와 관련하는 업무 프로세스를 개념적으로 정의하고 분석하는 작업 

- 사용자 요구사항 분석 → 개념적 데이터 모델링 → 논리적 데이터 모델링 → 물리적 데이터 모델링 → 내부 스키마

 

ER 모델 (Entity-개체, Relation-관계)

- 개념적 모델링 단계에서 사용하는 데이터 모델

- 개체개체 사이의 관계를 정형화시킨 모델

 

◾ 구성 요소

▫ 개체 집합

▫ 관계 집합

▫ 속성

 

 용어

1. 개체

- 실세계에 존재하는 다른 객체와 구별되는 유무형의 사물

- 다른 개체와 구별되는 이름을 가지고 있고, 각 개체만의 고유한 특성이나 상태, 즉 속성을 하나 이상 가지고 있음

 

2. 개체 집합

- 같은 속성을 공유하는 개체들의 모음

 

3. 속성

- 개체나 관계가 가지고 있는 고유한 특성

단순 속성 더 작은 요소로 나눌 수 없는 속성 ex) 학번, 이름, 등등
복합 속성 더 작은 요소로 나눌 수 있는 속성 ex) 생년월일
단일값 속성 하나의 개체에 하나의 값만 가지는 속성 ex) 학번, 이름, 등등
다중값 속성 하나의 개체에 여러 값을 가지는 속성 ex) 전화번호
유도 속성 다른 속성의 값으로 유추할 수 있는 속성 ex) 나이(생년월일로 부터 유도 가능)
저장 속성 유도 속성을 위해 사용될 수 있는 속성 유도속성 제외

 

제약 조건

1. 사상수 (매핑 카디널리티)

- 관계 집합에 있는 개체 집합들에 대해 얼마만큼 관계를 맺을 수 있는지를 나타낸 수

1 대 1 관계 1:1
1 대 다 관계 1:N 
다 대 다 관계 N:M

 

2. 참여 제약 조건

전체적 참가 모든 개체가 관계 집합에 참여하는 조건
부분적 참가 일부 개체가 관계 집합에 참여하는 조건

 

3. 특수 관계(관계의 종속성)

강한 개체 약한 개체 집합과 연결되는 일반 개체 집합
약한 개체 다른 개체의 존재 여부에 의존적인 개체

 

4. 특수 속성

관계 집합의 속성 두 개체 집합의 관계에서 생성되는 값을 저장하는 속성
재귀적 관계 한 개체 집합이 자기 자신과 관계 집합을 형성하는 관계

 

관계 데이터 모델의 기본 용어

1. 릴레이션(테이블)

- 하나의 개체에 관한 데이터를 테이블의 구조로 저장한 것

 

릴레이션의 특성

a. 레코드의 유일성

- 중복된 레코드의 존재가 불가능

 

b. 레코드의 무순서성- 레코드의 순서는 의미 없음

 

c. 칼럼의 무순서성- 칼럼은 순서가 없음, 이름과 값으로 구분

 

d. 칼럼의 원자성- 모든 값들은 나눌 수 없는 단 하나의 원자값만 사용

 

릴레이션의 구성

a. 릴레이션 스키마

- 릴레이션의 논리적 구조

- 릴레이션의 이름과 릴레이션에 포함된 모든 속성의 이름으로 정의

- 자주 변하지 않음

- 아이디, 이름, 나이, 등급 → 스키마

 

b. 릴레이션 인스턴스

- 릴레이션에 존재하는 레코드의 집합

- 삽입, 삭제, 수정이 자주 발생

 

2. 속성

- 릴레이션의 열

- 필드, 칼럼

 

3. 레코드

- 릴레이션의 행

- 튜플

 

4. 차수(degree)

- 하나의 릴레이션에서 속성의 전체 개수

 

5. 카디널리티(cardinality)

- 하나의 릴레이션에서 레코드의 전체 개수

 

6. 널(Null)

- 속성 값을 모르거나 해당되는 값이 없음(아직 기록되지 않은 값)

 

7. 키

- 각 개체를 구별하는 데 사용되는 유일한 값을 가지는 속성의 집합

- 각 개체 인스턴스를 식별하는 데 사용되는 속성

- 개체를 찾는 역할

- 관계 집합의 특정 관계를 찾는 역할

 

키의 속성

유일성 : 하나의 릴레이션에서 모든 레코드는 서로 다른 키 값을 가져야 함

최소성 : 꼭 필요한 최소한의 속성들로만 키를 구성함

 

키의 종류

슈퍼키 유일성을 만족하는 속성 또는 속성들의 집합 ex) 학번, 아이디, (학번, 아이디)
후보키 유일성과 최소성을 만족하는 속성 ex) 학번, 아이디, HP번호
기본키 후보키 중에서 기본으로 사용하기 위해 선택한 키 (Primary Key) ex) 학번
대체키 기본키로 선택되지 않은 후보키 ex) 아이디, HP번호
외래키 다른 릴레이션의 기본키를 참조하는 속성 (Foreign Key)
- 참조하는 릴레이션 : 외래키를 가진 릴레이션
- 참조되는 릴레이션 : 외래키가 참조되는 기본키를 가진 릴레이션

 

관계형 모델의 제약 조건

1. 영역 제약 조건

- 칼럼에 정의된 영역에 속한 값으로만 칼럼 값이 결정

 

2. 키 제약 조건

- 키는 레코드를 고유하게 구별하는 값으로 구성

 

3. 개체 무결성 제약 조건

- 어떠한 기본키 값도 Null이 될 수 없음

 

4. 참조 무결성 제약 조건

- 외래키는 반드시 존재하는 레코드의 기본키만 참조 가능

- 외래키는 Null 값을 가질 수 있음

 

데이터 타입

- 칼럼이 가질 수 있는 값의 범위(도메인)를 결정

- 프로그래밍 언어의 데이터 타입과 유사

 

▪정수

TINYINT 1 Byte -128 ~ 127
SMALLINT 2 Byte -32768 ~ 32768
INT 4 Byte  -20억 ~ 20억
BIGINT 8 Byte  

 

▪ 실수

고정 소수형 부동 소수형
DECIMAL(M,N) 전체 M자리, 소수점 이하 N자리 FLOAT 4 Byte
NUMERIC   FLOAT(P) 소수점 이하 P개 자리
    DOUBLE 8 Byte

 

▪ 날짜 및 시간

날짜 데이터 타입
DATE YYYY-MM-DD
YEAR YYYY
시간 데이터 타입
TIME  HH:mm:ss
날짜 및 시간 데이터
DATETIME YY-MM-DD HH:mm:ss
TIMESTAMP  

 

▪ 문자

CHAR(N) 최대 길이가 N인 고정길이 문자열
VARCHAR(N) 최대 길이가 N인 가변길이 문자열
TEXT, CLOB 길이가 최대 2~4GB인 가변길이 문자열
ENUM 유한 개의 문자열 집합 중 하나의 값을 선택
ex) 성별 - ENUM('남', '여'), 혈액형 - ENUM('A', 'B', 'O', 'AB'

 

◼ TABLE

- 실제 데이터를 저장하는 공간

- 테이블을 구성하는 각 속성의 이름, 데이터 타입, 기본 제약 사항을 정의

- 테이블은 스키마 안에 존재하기 때문에 스키마(Database) 생성 후 테이블 생성

 

◾ 제약 조건

- 테이블과 테이블에 존재하는 데이터를 보다 무결하게 관리하기 위한 목적

- 테이블 조작 시 정의된 제약 조건을 만족시키는지 지속적으로 검사

PRIMARY KEY 기본키 지정 (UNIQUE, NOT NULL)
FOREIGN KEY 외래키 지정, ※ REFERENCES로 참조 릴레이션 및 컬럼명 지정
ex) FOREIGN KEY(키 이름) REFERENCES 테이블 이름(키 이름)
NOT NULL NULL이 될 수 없음
UNIQUE 동일한 칼럼 값을 가질 수 없음
AUTO_INCREMENT 레코드가 추가될 때 자동적으로 index가 1부터 1씩 증가
CHECK 컬럼 값이 특정 조건 준수 여부 지정

 

SQL (Structured Query Language)

- RDBMS의 데이터 관리를 위해 설계된 언어

- 1986년 ANSI, 1987년 ISO에서 표준으로 제정

- 비절차적 언어, 필요한 데이터만 기술

 

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

- 데이터 베이스 내 개체를 생성, 삭제하고 그 구조를 조작하는 명령어

- 데이터가 준수해야 하는 제약 조건을 기술

- CREATE, ALTER, DROP

 

▫ 생성 (CREATE)

# Database 생성
CREATE DATABASE [DB 이름];

# 생성한 DATABASE 사용
USE [DB 이름];

# Table 생성
CREATE TABLE [테이블 이름] (
[속성 이름] [타입] [제약 조건]
id VARCHAR(20) PRIMARY KEY,
name VARCHAR(10) not null,
age INT not null,
);

 

▫ 수정 (ALTER)

# 테이블 수정(속성 추가)
ALTER TABLE [테이블 이름] ADD [추가할 속성 이름] [타입] [제약 조건];

# 테이블 수정(속성 삭제)
- 속성과 관련된 제약조건이나 참조하는 속성이 있을 경우 
  관련된 것 부터 삭제 후 속성 삭제 가능
ALTER TABLE [테이블 이름] DROP [속성 이름];

# 제약 조건 추가 및 삭제
ALTER TABLE [테이블 이름] ADD CONSTRAINT [제약 조건 이름] [제약 조건 내용]
ALTER TABLE [테이블 이름] DROP CONSTRAINT [제약 조건 이름]

 

▫ 삭제 (DROP)

# Database 삭제
DROP DATABASE [DB 이름];

# Table 삭제
DROP TABLE [테이블 이름];

 

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

- DDL에 의해 정의된 테이블에 데이터를 조작하는 언어

- 데이터에 대한 생성, 검색, 삭제, 수정

- INSERT, UPDATE, DELETE, SELECT

 

▫ 삽입 (INSERT)

- 테이블에 적합한 레코드를 삽입

- 테이블에 새로운 레코드 삽입

- 모든 속성 또는 부분 속성에 대한 속성 값 삽입

# Insert문
insert into [테이블] (컬럼1, 컬럼2, 컬럼3) values(값1, 값2, 값3);

insert into Book (BookName, Publisher, Price) values ('미드의정석', '대상혁', 20000);

 

▫ 검색 (SELECT)

- 테이블에서 조건을 만족하는 컬럼 검색

# Select문
SELECT [ALL/DISTINCT] [속성명] FROM [테이블];

FROM : 질의를 적용할 테이블 지정
ON / WHERE : 조인 조건 / 검색할 레코드 조건 지정
GROUP BY : 레코드를 그룹화하기 위한 그룹 조건 지정

# ALL과 DISTINCT
ALL : 중복 허용(기본 값)
DISTINCT : 중복 제거

# AS
- 속성의 이름을 바꿔서 출력(별칭)
SELECT BookName AS title FROM Book;

# 조건 검색
- 조건을 만족하는 데이터만 검색
- 비교 및 논리 연산자와 함께 사용
SELECT BookName, Price FROM Book WHERE Publisher='대한미디어';

# LIKE를 이용한 문자 검색
- LIKE를 이용하여 부분적으로 일치하는 데이터 검색
- '문자열'을 이용하는 조건에만 사용 가능
- $ : 0개 이상, _ : 1개
SELECT * FROM Book WHERE LIKE '문자열%'; // 문자열로 시작
SELECT * FROM Book WHERE LIKE '$문자열'; // 문자열로 끝남
SELECT * FROM Book WHERE LIKE '$문자열$'; // 문자열이 포함됨
SELECT * FROM Book WHERE LIKE '$문자열_'; // 문자열로 시작하고 뒤에 1글자가 있음

# Null 검색
- Null 값 유무 검색
- IS NULL, IS NOT NULL 사용
SELECT * FROM Book WHERE Phone IS NULL;
SELECT * FROM Book WHERE Phone IS NOT NULL;

# 정렬 검색
- 검색 내용을 정렬해서 출력
- ORDER BY 구문 사용
- ASC(오름차순) / DESC(내림차순)
※ Null 값은 오름차순에선 맨 마지막, 내림차순에선 맨 먼저 출력
SELECT * FROM Book ORDER BY Name ASC;

# 집계함수를 이용한 검색
- 특정 속성 값을 통계적으로 계산한 결과를 검색하기 위해 사용
- WHERE 절에서는 사용할 수 없고, SELECT나 HAVING 절 에서 사용 가능
- 집계함수 계산 시 NULL 제외
COUNT : 속성 값의 개수
MAX : 속성 값의 최댓값
MIN : 속성 값의 초솟값
SUM : 속성 값의 합계
AVG : 속성 값의 평균
※ SUM, AVG는 숫자 데이터에서 사용 가능
SELECT AVG(Price) FROM Book;

# 그룹 질의
- 특정 기준으로 레코드를 그룹화 하고 각 레코드 그룹에 대해 집계 함수를 적용하는 질의
- Select 절에 그룹의 기준과 집계 함수만
SELECT 질의 GROUP BY 컬럼 HAVING 조건;

# 조인
- 2개 이상의 테이블을 연결하여 데이터를 검색하는 것
- 조인 속성 : 조인 검색을 위해 테이블을 연결해주는 속성
- 연결하려는 테이블 간 조인 속성의 이름은 달라도 되지만 도메인은 같아야 함
- 일반적으로 외래키를 조인 속성으로 이용함
- FROM 절 검색에 필요한 모든 테이블을 나열
- WHERE 절에 조인 속성의 값이 같아야 함을 의미하는 조인 조건 제시
- 속성 이름 앞에 해당 속성이 소속된 테이블의 이름을 표시
- 내부 조인 : 조인 조건을 만족하는 레코드만 결합하여 출력
- 외부 조인 : 조인 조건에 맞지 않는 레코드도 질의 결과에 출력

# 내부 조인
## 표준
SELECT 컬럼1, 컬럼2, .... FROM 테이블1 INNER JOIN 테이블2 ON 조인 조건 [WHERE 검색 조건];
또는
## 오라클
SELECT 컬럼1, 컬럼2, ... FROM 테이블1, 테이블2 WHERE 검색 조건 AND 테이블1.칼럼a = 테이블2.칼럼b;

# 외부 조인

# 부속 질의문(다중 질의문)
- SELECT 문 안에 또 다른 SELECT 문을 포함하는 질의
- 부속 질의문은 괄호로 묶어서 작성
- 부속 질의문을 먼저 수행하고 그 결과를 이용해 상위 질의문 수행
- 부속 질의문과 상위 질의문을 연결하는 연산자 필요
- 단일행(결과가 한 행) : 비교 연산자
- 다중행(결과가 여러 행)
	IN		결과 중 일치하는 것이 있으면 참
    NOT IN	결과 중 일치하는 것이 없으면 참
    EXISTS	결과 값이 하나라도 존재하면
    NOT EXISTS	결과 값이 하나도 존재하지 않으면
    ALL		모두 비교한 결과가 참이면
    ANY or SOME	비교한 결과가 하나라도 참이면

 

▫ 수정 (UPDATE)

- 조건을 만족하는 레코드의 특정 속성 값을 수정

# Update
UPDATE [테이블] SET 속성1=값1, 속성2=값2, ... (WHERE 조건);

UPDATE Book SET BookName = '롤의 정석' WHERE Publisher = '페이커';

 

▫ 삭제 (DELETE)

- 조건에 일치하는 레코드 집합을 테이블에서 삭제할 때 사용

- 기본키로 참조되는 경우 삭제가 안됨

# Delete
DELETE FROM [테이블] [WHERE 조건문];

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

- 권한을 주고 회수하는 명령어

- GRANT, REVOKE

 

TCL (트랜잭션 제어어, Transaction Control Language)

- COMMIT, ROLLBACK, SAVEPOINT


✔ MySQL WorkBench 설치

1. mysql-installer-community-8.0.17.0.msi 다운로드

 

설치 타입 - Custom

 

MySQL Server 8.0.17 -X64

MySQL Workbench 8.0.17 - x64

Samples and Examples 8.0.17 - X86

 

나머지 전부 Next

+ Recent posts