데이터베이스
정의
관련된 데이터가 모여진 집합체 ⇒ 지속적으로 데이터를 입력하고 경신하며, 축적된 데이터를 바탕으로 의미 있는 정보를 추출할 수 있음
- 통합 데이터
- 공유 데이터
- 저장 데이터
- 운영 데이터
- 의사 결정 데이터
특징
- 실시간 접근
- 지속적인 변화
- 동시 공유
- 내용에 의한 참조
데이터베이스 관리 시스템 DBMS
DBMS 정의
⇒ 사용자 또는 응용 시스템과 데이터베이스 간 인터페이스 역할 담당
실제 데이터베이스를 관리하는 시스템 소프트웨어, 데이터베이스 사용자가 데이터베이스에 저장된 데이터를 관리(추가, 삭제, 갱신 등) 할 수 있도록 이들의 중간에서 사용자 요구사항을 처리함
e.g) MySQL, MSSQL, Oracle, Infomix 등
DBMS 기능
- 데이터 정의
- 스키마 정의, 테이블, 인덱스, 동의어, 시퀀스 등과 같은 스키마 객체를 생성, 변경, 삭제
- CREAT TABLE, ALTER TABLE, DROP TABLE, CREAT INDEX 등
- 데이터 조작
- 테이블이나 뷰와 같은 스키마 객체에 저장된 데이터를 조작하는 기능, 새로운 데이터를 입력, 수정 또는 삭제하는 기능
- INSERT, UPDATE, DELETE 등
- 데이터 제어
- 데이터의 정확성과 안전성을 유지하기 위한 기능
- 데이터의 정확성을 유지를 위한 트랜잭션 관리나 접근 권한 관리 기능
- COMMIT, ROLLBLACK, GRANT, REVOKE 등
DBMS 장점
- 중복 최소화
- 공유
- 일관성 유지
- 무결성 유지
- 보안 보장
- 요구 조정
DBMS 장점
- 운영비 증대
- 자료 처리의 복잡화
- 복잡한 예비와 회복
- 시스템 취약성
데이터베이스 모델링과 SQL
종류
관계형 데이터베이스
- 데이터를 표와 같은 형태로 정리 (MySQL)
분산형 데이터베이스
- 네트워크 상의 여러 다른 지점에 분산되어 있거나 중복되어 있는 형태
객체 지향형 데이터베이스 모델
- 객체 클래스와 서브 클래스로 정의된 데이터가 서로 일치하는 형태
SQL (Structured Query Language)
- 데이터 조회, 수정이 가능한 데이터베이스 표준 언어
관계형 데이터베이스 모델의 구조
개념
- 수치 집합론을 적용해 2차원 형식의 테이블 구조에 데이터를 저장하고 검색, 수정, 삭제
테이블 (table)
- 2차원 테이블 구조의 데이터를 저장하는 기본 단위로 '릴레이션(relation)' 이라고도 하며, 필드와 레코드로 구성
필드 (fileld)
- 열(Column) 방향의 데이터베이스 테이블의 항목 하나하나를 가리키며 속성(attribute)라고도 함
레코드 (record)
- 행 (row) 방향의 필드에 저장되는 한 세트의 정보를 가리키며 튜플(tuple)이라고도 함
MySQL
특징
- SQL에 기반을 둔 관계형 DBMS 중 하나
- Oracle, IBM, Infomix 등 고가의 데이터베이스에 비해 무료 데이터베이스며 성능과 보안이 우수
- 리눅스, 유닉스, 윈도우 등 거의 모든 운영체제에서 사용 가능함
- C, C++, Java, PHP, Python 등 다양한 프로그래밍 언어를 지원
장점
- 공개 소프트웨어로 무료, 상업적 목적의 경우 별로 라이센스 구매
- 다른 DBMS에 비해 상대적으로 처리속도가 상당히 빠르고, 대용량의 데이터도 쉽게 처리 가능
- 보안성이 우수
명령어
show tables;
: 테이블 목록 확인create database $table_name;
: 새로운 데이터 베이스 생성desc $table_name;
: 테이블 구조를 출력select $filed1, $filed2 from $table_name;
: 특정 필드에 데이터 검색alter table $table_name add $new_filed $new_filed_type [first or after $filed_name];
: 테이블에 새로운 필드를 추가하는 명령alter table $table_name drop $delete_filed;
: 테이블의 특정 필드를 삭제alter table $table_name change $previus_filedName $new_filedName;
: 특정 필드를 변경하는 명령alter table $table_name modify $filed_name $new_type;
: 테이블의 특정 필드의 타입 수정alter table $previous_table rename new_table;
: 테이블의 이름을 수정insert into $table_name ($filed1, $filed2) values ($filed1_value, $field2_value);
: 특정 필드에 새로운 데이터(row)를 입력update $table_name set $fileld = $filed(new_data) where $filed = $filed_value
: 특정 필드에 입력된 데이터를 변경하는 명령어create database $database_name;
: 데이터베이스 생성show database $database_name;
: 데이터베이스 확인drop database $database_name;
: 데이터베이스 삭제
테이블 명령어
varchar
: 가변 크기 문자형, 입력한 문자 수 만큼만 메모리를 사용char
: 고정 크기 문자형, 무조건 지정한 최대 문자 수 만큼 메모리를 사용$type not null
: 필수 항목primary key(num)
: 기본 키, 유일한 값
레코드 명령어
insert into ~ values ~
: 레코드 삽입select ~ from ~
: 특정 필드에 해당하는 데이터 검색select ~ from ~ where ~
: 조건에 맞는 레코드 검색select ~ from ~ where ~ like ~
: 특정 문자열이 포함된 레코드 검색select ~ from ~ order by ~
: 오름차순으로 레코드 정렬select ~ from ~ order by ~ desc
: 내림차순으로 레코드 정렬update ~ set ~ where ~
: 레코드 수정delete from ~ where ~
: 레코드 삭제inner Join
: 조인하는 테이블의 일치하는 값 출력