본 자료는 Elice 플랫폼의 자료를 사용하여 정리하였습니다.
데이터베이스 소개
데이터와 정보
- 데이터 : 현실세계에서 수집된 단순한 사실과 값들을 모아 놓은 것
- 정보 : 데이터를 특정 목적에 의해 해석하거나 가공한 형태
데이터베이스 정의
- 데이터들의 집합
- 한 조직 안에서 여러 사용자와 응용프로그램이 공동으로 사용하는 데이터들을 통합하여 저장하고 운영하는 데이터
데이터베이스의 필요성
- 파일처리시스템의 한계
- 데이터구조가 바뀌면 응용프로그램의 구조도 바뀌어야한다. 데이터 종속
- 응용프로그램 별로 데이터를 생성할 수 있기 때문에 데이터가 중복될 수 있다.
- 데이터 무결성을 지킬 수 없다.
데이터베이스의 특징
- 실시간 접근성
- 사용자가 원할 때 언제든지 접근 가능해야 한다.
- 지속적인 변화
- 데이터의 삽입, 삭제, 갱신을 통해 최신데이터를 유지해야한다.
- 동시공유
- 여러 사용자가 동시에 이용할 수 있어야 한다.
- 내용에 대한 참조
- 데이터가 저장된 물리적인 위치가 아닌 값을 가지고 검색할 수 있어야 한다.
데이터베이스의 종류
데이터베이스 구분
- RDB : 관계형 모델을 기반으로 SQL을 이용해 데이터를 관리한다.
- NoSQL : 데이터 간의 관계를 정의하지 않고 RDB보다 유연한 모델을 이용한다.
관계형 데이터베이스
- 데이터를 행과 열을 가지는 테이블로 표현
- 테이블간의 관계를 이용해 데이터를 효과적으로 관리하여 데이터의 무결성을 보장
- 정의된 테이블(스키마)에 맞게 데이터가 삽입되므로 데이터의 안정성을 보장
- 데이터의 구조가 일관적인 경우에 주로 사용
RDBMS의 종류
- MySQL, PostgreSQL, MariaDB 등
NoSQL
- 데이터를 저장할 수 있는 유형의 제한이 없다.
- 새로운 유형의 데이터를 추가하기 용이
- 데이터의 구조가 일관적이지 않고 자주 변경되는 경우에 적합
- 대용량의 데이터를 더 빠르게 처리할 수 있다.
NoSQL의 종류
- MongoDB, Redis, Apache Cassandra 등
관계형 데이터베이스 만들기
구성요소
- 테이블은 행과 열로 구성
- 속성을 데이터의 특성을 나타내는 가장 작은 논리적 단위를 의미
- 튜플은 속성이 모여 구성된 각각의 행을 의미
- 속성이 가질 수 있는 값의 집합을 도메인이라고 한다.
관계
- 관계가 있다면 하나의 속성으로 테이블을 연결해서 데이터를 효과적으로 관리
테이블 정의하기
CREATE TABLE 테이블명(
속성1 데이터타입,
속성2 데이터타입,
...
);
정의된 테이블 확인
SHOW TABLES;
DESC 테이블명;
SQL 작성규칙
- SQL문법은 대문자로 작성하는 것을 권장
- 테이블명, 속성명은 소문자로 작성하는 것을 권장
- 이름은 항상 의미가 잘 드러나도록 작성
- 이름에 여러 단어를 혼합하는 경우
_
를 이용해 구분
--
을 이용해 주석을 나타낼 수 있다.
- 명령어 끝에는 세미콜론(
;
)을 작성
데이터 삽입하기
INSERT INTO 테이블명(속성1, ...) VALUES(속성값1, ...);
데이터 출력하기
SELECT 속성1, ... FROM 테이블명;
데이터베이스 정의어
SQL(Structured Query Language)
- 데이터 정의어(DLL) : 테이블과 같은 데이터 구조 정의
- 데이터 조작어(DML) : 데이터 조회 및 검색
- 데이터 제어어(DCL) : 데이터베이스에 접근하는 권한 관리
데이터 타입
- VARCHAR, INT, FLOAT, DATETIME 등
테이블 수정하기
ALTER TABLE customer ADD COLUMN birthday DATE NULL;
ALTER TABLE customer MODIFY COLUMN id varchar(15) NULL;
ALTER TABLE customer CHANGE COLUMN name korean_name varchar(10) NOT NULL;
ALTER TABLE customer DROP COLUMN address;
ALTER TABLE customer RENAME member;
테이블 삭제하기
DROP TABLE 테이블명