[MYSQL][01] 데이터베이스(DataBase, DB)-1
목차
1. 데이터베이스란?
2. 데이터베이스의 역할
3. 데이터베이스의 장단점
4. 데이터베이스 관리 시스템
5. 데이터베이스의 종류
6. SQL(Structured Query Language, SQL)이란?
7. SQL문법 종류
8. 데이터베이스 생성 및 삭제
9. 테이블 생성 및 삭제
10. 데이터 삽입, 조회, 수정, 삭제
1. 데이터베이스란?
공유(Share)할 목적으로 통합(Integrate) 관리를 위해 일정한 형태로 저장(Stored)한 데이터를 데이터베이스라고 한다.
데이터베이스의 정의 : ISOS
Integrated Data(통합된 데이터) : 중복을 최소화 한 데이터
Stored Data(저장된 데이터) : 컴퓨터가 접근가능한 위치에 저장된 데이터
Operational Data(운영 데이터) : 업무수행을 위해 반드시 필요한 데이터
Shared Data(공용 데이터) : 여러 응용시스템이 공동 소유 및 유지하는 데이터
데이터베이스 시스템의 특징 : R1C3
Real Time Accessibility(실시간 접근성) : 질의에 실시간 응답 처리
Continuous Evolution(지속적인 변화) : 최신 데이터를 동적으로 유지(삽입, 삭제, 수정)
Concurrent Sharing(동시 공유) : 목적이 다른 사용자가 동시에 원하는 데이터 공유
Content Reference(내용에 의한 참조) : 주소에 의한 참조가 아닌 사용자가 요구하는(질의에 따른) 데이터 내용을 참조
2. 데이터베이스의 역할
중복데이터의 배제가 아닌 최소화하여 목적에 맞게 관리
3. 데이터베이스의 장단점
장점
- 데이터 중복 방지
- 데이터를 중앙에서 관리하여 중복을 최소화, 일관성 있는 데이터를 유지
- 효율적인 저장공간 사용
- 중복을 제거하고, 데이터를 정규화하여 저장 공간을 절약
- 빠른 데이터 접근
- 인덱싱, 쿼리 최적화 등을 통해 빠르고 효율적인 데이터 검색이 가능
- 데이터 공유 용이
- 여러 사용자나 애플리케이션이 동일한 데이터를 접근하고 수정할 수 있어 협업 및 데이터 공유가 용이
- 데이터 무결성 보장
- 데이터베이스 관리 시스템(DBMS)은 무결성 제약조건을 통해 데이터의 정확성, 일관성을 보장
- 보안 강화
- DBMS는 사용자 권한, 인증, 암호화 등의 보안 기능을 제공하여 데이터 접근을 제어하고 보호
- 백업 및 복구 기능
- 데이터 손실을 방지하기 위한 백업 및 복구 기능이 제공되어 안전하게 데이터를 보호
단점
- 시스템 복잡성
- 설계, 구축 및 관리가 복잡하여 운영을 위해서 기술의 전문성이 필요
- 전문 인력 필요
- 관리 및 최적화, 문제 해결 등을 위해 전문가가 필요
- 운영 비용 증가
- 관리 및 유지보수, 라이센스 비용 등이 발생하여 운영 비용이 증가
- 백업 및 복구 시간
- 대규모 데이터베이스의 백업 및 복구는 시간이 많이 걸리고, 대량의 데이터 처리로 시스템에 부담
- 성능 문제
- 데이터베이스가 매우 크거나 복잡해질 경우, 쿼리 성능이 저하되거나 시스템 과부하 야기
- 보안 위험성
- 보안이 제대로 구성되지 않으면 해킹, 데이터 유출 등의 관리 위험성
4. 데이터베이스 관리 시스템 (DataBase Management System, DBMS)
데이터의 입력, 수정, 삭제, 조회 등을 제공하는 소프트웨어
5. 데이터베이스의 종류
5-1. 계층형 데이터베이스
부모 자식관계인 트리구조
5-2. 네트워크형 데이터베이스
- 데이터를 노드로 표현한 모델
5-3. Key-Value(키-값) 데이터베이스
- NoSQL의 한 종류
- 키 값을 일대일 대응
- 데이터 중복이 발생하며 비정형데이터 저장에 유리
5-4. 관계형 데이터베이스
실무에서 가장 많이 사용하는 데이터베이스 종류
관계형 데이터베이스의 구조
- 테이블(Table) = 릴레이션(Relation) : 행과 열의 값들의 모음, 도메인 특성에 따라 데이터를 논리적으로 그룹화
- 행(Row), 튜플(Tuple), 레코드(Record) : 관계된 데이터의 묶음, 각 행은 기본키(Primary Key, PK)로 구분 및 식별
- 열(Column), 필드(Field), 어트리뷰트(Attribute, 속성) : 고유한 이름과 타입이 있다.
※ 도메인(Domain) : 특정 속성(필드, 컬럼)의 허용 값의 타입과 범위
※ 도메인의 주요 특성
- 유형제한 : 특정 데이터 타입으로 제한(숫자, 문자열, 날짜 등)
- 범위제한 : 값의 범위를 정의
- 형식제한 : 값의 형식을 정의(이메일, 주소, 전화번호 등)
- 일관성보장
※ 도메인의 예시
- 성별 필드의 도메인 : 남, 여
- 학년 필드의 도메인 : 1,2,3,4
ERD(Entity Relationship Diagram)
테이블 간의 관계를 표현한 다이어그램
- 논리모델 : 요구사항을 수집 및 분석해 데이터베이스의 모양을 구성
- 물리모델 : 논리모델을 기반으로 실제 데이터를 저장할 수 있는 모델을 표현
대표적 DBMS
- SQL Server
- Oracle Database
- DB2
- PostregSQL
- MySQL
- SQLite
6. SQL(Structured Query Language, SQL)이란?
관계형 데이터베이스 관리시스템의 데이터를 관리하는 프로그래밍 언어
※ 구조(Structured) -> 정형화 되어 있다. -> 정형화된 데이터를 질의해서 다룬다.
※ NoSQL은 비정형 데이터를 다룬다.
※ 관계형 데이터베이스(Relational DataBase Management System, RDBMS)
7. SQL 문법의 종류
데이터 정의 언어(DDL), 데이터 조작 언어(DML), 데이터 제어 언어(DCL)
7-1. 데이터 정의 언어(Data Define Language, DDL)
데이터베이스를 정의하는 언어
- Create : 테이블 생성
- Alter : 테이블 수정
- Drop : 디비 또는 테이블 삭제
- Truncate : 테이블 초기화
7-2. 데이터 조작 언어(Data Manipulation Language, DML)
- Select : 데이터 조회
- Insert : 데이터 입력
- Update : 데이터 수정
- Delete : 데이터 삭제
7-3. 데이터 제어 언어(Data Control Language, DCL)
- Grant : 특정 디비 사용자에게 특정 권한 부여
- Revote : 권한 삭제
- Commit : 트랜잭션 작업을 완료
- Rollback : 트랜잭션 작업을 취소 및 이전상태로 복구
8. 데이터베이스 생성 및 삭제
8-1. mysql 접속
mysql -u root -p
Enter password : ******
mysql>
8-2. DDL - create : 데이터베이스 생성
mysql> create database myDatabase;
Query OK, 1 row affected(0.01 SEC)
8-3. 데이터베이스 목록 확인
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| mydatabase |
| information_schema |
| mysql |
| performance_schema |
| sakila |
| sys |
| world |
+--------------------+
7 rows in set (0.00 sec)
8-4. 데이터베이스 사용(선택)
mysql> use myDatabase;
Database changed
8-5. 테이블 조회
mysql> show tables;
Empty set (0.00 sec)
8-6. DDL - drop : 데이터베이스 삭제
mysql> drop database myDatabase;
Query OK, 0 rows affected (0.02 sec)
9. 테이블 생성 및 삭제
9-1. 테이블 생성
mysql> create table member (col1 int, col2 VARCHAR(50), col3 DATETIME);
Query OK, 0 rows affected (0.04 sec)
9-2. 테이블 생성 확인
mysql> show tables;
+----------------------+
| Tables_in_mydatabase |
+----------------------+
| member |
+----------------------+
1 row in set (0.00 sec)
9-3. 테이블 구조 확인
mysql> desc member;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| col1 | int | YES | | NULL | |
| col2 | varchar(50) | YES | | NULL | |
| col3 | datetime | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
9-4. 테이블 삭제
mysql> drop table member;
Query OK, 0 rows affected (0.01 sec)
9-5. 테이블 삭제 확인
mysql> show tables;
Empty set (0.00 sec)
10. 데이터 삽입, 조회, 수정, 삭제
10-1. 데이터 삽입
DML - insert(삽입) 기본형식
INSERT INTO 테이블이름 (열1, 열2, ...) VALUES (값1, 값2, ...);
mysql> INSERT INTO member(col1, col2, col3) VALUES (1,"col2 text", "2024-01-01");
Query OK, 1 row affected (0.01 sec)
10-2. 데이터 조회
DML - select(조회) 기본형식
mysql> select [열1, 열2, ... | * ] from 테이블명
※ 열을 콤마로 구분하여 직접 선택하거나 *를 사용하여 전체를 선택
mysql> select * from member;
+------+-----------+---------------------+
| col1 | col2 | col3 |
+------+-----------+---------------------+
| 1 | col2 text | 2024-01-01 00:00:00 |
+------+-----------+---------------------+
1 row in set (0.00 sec)
10-3. 데이터 삭제
DML - delete(삭졔) 기본 형식
DELETE FROM 테이블명 WHERE 조건;
mysql> delete from member where col1 = 1;
Query OK, 1 row affected (0.00 sec)
10-4. 데이터 조회
mysql> select * from member;
Empty set (0.00 sec)
반응형
'MYSQL' 카테고리의 다른 글
[MYSQL][06] 외래키(Foreign Key, FK)의 참조 무결성 (0) | 2024.11.25 |
---|---|
[MYSQL][05] KEY (0) | 2024.11.24 |
[MYSQL][04] SELECT (0) | 2024.11.22 |
[MYSQL][03] CREATE : 회원 테이블 생성 (0) | 2024.11.21 |
[MYSQL][02] 데이터베이스 및 테이블 생성 예제 (1) | 2024.11.20 |