Ⅰ. 개요.
:: 여러 응용프로그램 또는 유저들이 공유 * 이용 할 수 있도록 체계적으로 통합&저장 한 데이터들의 집합.
== 데이터들을 저장하고 조회하는 프로그램.
@ '데이터베이스(DB)' 는 단순한 저장소를 넘어서 데이터 중복이 있을 경우,
이를 통합하여서 구조적이고 효율적으로 데이터를 저장합니다.
1 ) 데이터베이스의 데이터 특징.
- '데이터베이스(DB)'가 구조적인 형태를 유지하며 데이터를 저장하기 위해서는 아래 규칙을 준수해야 합니다.
2 ) 데이터베이스의 기능적 특징.
1. 최소한의 중복 [ minimal redundancy ]
-> 중복의 정도를 최소한으로만 허용하는 통합 데이터 ( intergrated data)
2. 실시간 접근성 [ Real-Time-Accesibility ]
-> 데이터베이스는 사용자의 요구에 신속*정확하게 응답이 가능해야 합니다
ex) 검색, 주문 등의 작업.
3. 지속적이고 동적인 변화 [ continuous Evolution ]
-> 데이터이 insert,Delete,Update 로 항상 최신의 데이터를 유지해 현실세계를 반영합니다.
4. 실제 데이터에 의해 참조 가능 [ minimal redundancy ]
-> DB에 있는 데이터를 참조할 때 사용자의 요구에 따른 데이터 내용으로 데이터의 위치나 주소값을 찾음.
5. 동시 공용 [ minimal redundancy ]
-> 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있엉 ㅑ합니다
ex) 여러 고객이 같은 종류의 상품을 동시에 주문.
3 ) 데이터베이스의 목표.
1. 지속적인 "데이터 관리" & "데이터 보호"
2. 데이터 안정성 보장
3. 데이터 무결정 보장.
☆ 데이터베이스를 관리하기 위해 필요한 SW 패키지 집합체.
◆ DBMS 발전 과정.
1) 파일 시스템 ( ISAAM, VSAM )
2) 계층형(Hierahical) HDBMS (IMS , System2000)
- 데이터를 트리 구조로 표현하는 방식,
- 데이터 접근 속도가 빠르지만, 데이터의 중복이 많고 구조 변경이 어려우며 관계 표현에 제한이 있습니다.
3) 네트워크형(Network) NDBMS (IDS , TOTAL, IDMS)
- 데이터를 그래프 구조로 표현하는 방식 (노드, 링크)
- HDBMS 보다 관계 표현이 유연하고 '다대다' 관계를 지원하지만,
구성과 설계가 복잡하고 데이터 종속성을 해결하지 못했습니다.
4) 관계형(Relational) RDBMS ( Oracle, My-SQL, DB2, SQL Server, Sybase...)
- 데이터를 테이블 형태로 표현하는 방식 ( 테이블 간 외래키로 관계 표현 )
- 데이터 중복을 최소화하고 구조 변경이 쉬우며, SQL을 사용해 데이터를 쉽게 조작할 수 있는 장점. !
- ACID 원칙을 준수하여, 데이터 무결성과 일관성을 보장합니다.
5) 객체지향(Object Oriented) ODBMS ( Object Store, UniSQL)
- 데이터를 객체 형태로 표현하는 방식
- 성능 이슈와 표준화 부족, SQL 호환 X 등의 단점.
6) NO SQL(Not Only SQL)
- 테이블 형태의 관계형 모델이 아닌 여러가지의 모델로 데이터를 표현하는 방식.
[ Document, Key-Value, Graph 등으로 데이터를 나타낼 수 있음 ]
- 어느 한 가지 형태의 데이터베이스를 지칭하지 않고, RDBMS의 테이블 형태가 아닌 형태를 띈 DB를 총칭
- RDBMS 보다 확장성과 가용성이 높고 유연한 스키마를 가지지만,
데이터의 일관성이 항상 보장되지 않고 기존 SQL과 호환되지 않는다는 단점이 존재합니다.
- 대용량 데이터나 분산 처리에 매우 빠르게 대응 가능하기 때문에 SNS에 활용됩니다.
- MongoDB, HBase, Cassandra, Redis.
◆ DBMS 제품.

◆ Data Warehouse : DW
※ 분석을 위하여 여러 개의 데이터 저장소들에 흩어져 있는 각종 데이터를 하나의 저장소로 모은 데이터베이스.
● 일반적인 operational DB 와는 구별되는 analytics DB
● Data warehousing : DW를 구축하고 사용하는 프로세스.
◆ Database Object
※ DB의 구성 요소 중 테이블이 가장 중요합니다.
- 이 외에도 여러 종류의 자료 형태가 존재하는데, 이러한 DB를 구성하는 개별 단위 요소를 객체(Object)라고 합니다.
◎ data model : 현실 자료를 추상화하여, 정형화된 형태로 표현하는 방식.
◎ database model
● DBMS 가 지원하는 공식 언어로 기술된 DB 구조나 형식.
● DBMS 와 결합하는데 사용되는 데이터 모델.
◎ 관계형 데이터 모델 ( relation data model )
: 테이블 형식(2차원 구조)을 이용하여, 데이터를 정의하고 설명하는 데이터 모델.
◎ 관계형 데이터 베이스 : 관계형 데이터 모델을 이용한 데이터베이스.
◆ Relation Data Model [관계형 데이터 모델]

✅ relation data model 용어.
◎ tuple (튜플, 레코드)
√ 유일성(uniqueness) : 테이블 내에는 2개 이상의 동일 튜플이 존재할 수 없음.
√ 튜플들은 순서를 갖지 않음.
◎ attribute(속성, column, 통계데이터에서는 variable)
√ 순서를 갖지 않음.
√ 속성값(attribute value)는 반드시 원자값(atomic value)
◎ table schema
√ DBMS에서 데이터 구조를 기술.
◎ database schema
√ shcema : 구조와 표현법에 대한 정의.
◎ key : 테이블에서 특정 튜플을 식별 가능하게 하는 속성의 집합.
√ super key : 아무런 제약없이 튜플을 구분할 수 있는 속성의 집합
ex) 학번, 주민등록번호 등
√ candidate key : 키 중 최소한의 속성만으로 구성된 키
ex) 주민등록번호
√ primary key : 후보키 중 하나만을 선택하여 식별자로 사용.
√ foreign key : 다른 테이블의 기본키를 참조,
Ⅳ. SQL 개요.
◇ SQL [ Structured Query Language ]
:: DBMS를 다루기 위한 표준언어, 응용프로그램과 DBMS 사이의 중간 다리 역할 담당.
✅ SQL의 역할 분류.
1) DBMS를 제어.
2) 데이터를 정의
3) 데이터를 조작
1. DCL ( "Data Control Language" , "데이터 제어 언어" )
1) DB에서 데이터 엑세스를 제어.
2) 데이터베이스에서 접근하고 객체들을 사용하도록 권한부여 (GRANT)
또는 권한을 회수(REVOKE) 하는 명령어.
2. DDL ( "Data Definition Language" , "데이터 정의 언어" )
1) 데이터의 저장 구조를 정의하는 언어 ( 테이블 등)
2) DB 스키마, 테이블스키마를 정의*수정*삭제/ 인덱스의 생성 및 삭제를
[ CREATE : 생성 / ALTER : 변경 / DROP : 삭제 / RENAME : 이름변경 / 완벽제거 : TRUNCATE ]
● DROP vs TRUNCATE

3. DML ( "Data Manipulation Language" , "데이터 조작언어" )
1) 데이터에 접근 및 조작하는 언어.
2) 튜플의 검색, 삽입, 삭제 수정과 같은 명령문.
● SELECT : 데이터 조회 명령어로, RETRIEVE 라고도 함.
● INSERT, UPDATE, DELETE : 데이터에 변형을 가하는 명령어 ( 삽입, 수정 삭제 )
4. TCL( "Transaction Control Language" , "트랜젝션 제어어" )
1) 논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션)별로 제어하는 명령어.
● COMMIT
● ROLLBACK
● SAVEPOINT
✅ SQL의 역할별 구문 작성법.
1. SQL 데이터 제어문 : 데이터베이스 객체 이용권한 부여.
- GRANT
- DENY
- REVOKE
ex) GRANT CREATE TABLE TO '사용자 계정'
2. SQL 데이터베이스/테이블 정의문 : DB 객체 생성, 삭제, 수정
- CREATE : 생성
- DROP : 삭제
- ALTER : 수정
ex) CREATE DATABASE [데이터베이스_이름]
3. SQL 데이터 조작문 : 테이블 검색, 삽입, 갱신, 삭제
- SELECT
- INSERT
- UPDATE
- DELETE