목차
1. 데이터베이스 개요
데이터베이스
- 원시 데이터(Raw Data)와 데이터베이스 관리시스템(DBMS: 데이터베이스로의 접근을 관리하고 통제하는 소프트웨어)의 집합체
- 통합된 기록의 자기 설명 집합체(self-describing collection of integrated records)
- 메타데이터 (데이터에 대한 데이터)
데이터베이스 매니지먼트 시스템(DBMS)
- 사용자, 데이터베이스 응용 프로그램, 데이터베이스 간 상호 작용하는 소프트웨어(프로그램)
- 파일을 이용해서 여러 명이 데이터를 저장하는 경우 데이터 종속성, 중복성 문제가 발생할 수 있다.
- 데이터의 일관성, 무결성을 유지
- MS aCCESS, MS SQL, MySQL, Oracle 등
2. 관계형 데이터베이스
- 목적: 높은 수준의 데이터 독립성 / 데이터 의미론, 일관성 및 중복 문제를 다루는 실질적인 토대
- 데이터 모델의 세가지 구성 요소: 구조 부문, 조작 부문, 무결성 원칙
- 관계형 데이터베이스 모델의 주요 구성요소
관계(relation) | 2차원의 테이블 (행과 열로 구성) |
속성(attributes) | 관계에서 이름을 가진 하나의 열(column) 또는 필드(field) |
튜플(tuple) | 관계에서 각 행(row) 또는 레코드(record) |
- 널(Null) : 값이 특정 레코드에 적용되지 않거나, 아직 제공되지 않았음
- 차수(degree) : 열의 수
- 카디날리티(cardinality) : 행의 수
관계형 테이블의 특성
- 다른 모든 테이블과 구분되는 이름을 가진다.
- 테이블의 각 셀은 정확하게 하나의 value를 가진다.
- 각 필드(컬럼)는 구분되는 이름을 가진다.
- 필드(컬럼)의 순서는 중요하지 않다.
- 중복되는 레코드는 없어야 한다.
- 레코드의 순서는 이론적으로는 중요하지 않다. 그러나 실무적으로 그 순서는 레코드에 접근하는 효율성에 영향을 미칠 수 있다.
관계형 키
- 레코드를 유일하게 식별해 낼 수 있는 식별자
- 일반적으로 하나의 플드를 키로 지정하나, 여러개의 필드로 구성 가능
- 두 개 이상의 필드로 구성된 키를 복합키(composite key)라고 한다.
수퍼 키 (super key) | 테이블안의 레코드를 유일하게(중복X) 식별해주는 속성(컬럼, 필드) |
후보 키 (candidate key) | 슈퍼 키 중 더 이상 줄일 수 없는(irreducible) 형태 |
기본 키 (primary key) | 레코드(튜플)를 유일하게 구분할 수 있는 속성으로 null이 아니고 유일하여야 한다. |
대체 키 (alternate key) | 후보 키가 여러개일때 기본 키를 제외한 나머지 후보 키 (보조 키, 인덱스) |
외래 키 (foreign key) | 테이블 A, B가 관계 있는 경우, B가 참조하는 A의 기본 키를 나타내는 A의 속성 |
관계의 무결성 (Relational integrity)
: 데이터의 정확성 또는 유효성을 의미하는 것으로, 이를 갖추기 위한 제약조건
도메인 제약조건 | 속성 값의 기본 값 또는 가능한 값들의 범위 지정. 데이터 형식(type)을 통해 값들의 유형 제한 |
키 제약조건 | 키 컬럼(필드)에 중복된 값이 존재해서는 안된다. |
기본키와 무결성 | 테이블의 기본 키를 구성하는 어떤 컬럼도 null 값을 가질 수 없다. |
외래키와 무결성 | 테이블 B의 외래 키가 테이블 A의 기본 키를 참조할 때, 아래 두 조건 중 하나가 성립되면 참조 무결성 제약조건 만족 - 외래 키의 값은 A의 어떤 레코드의 기본키 값과 같다. - 외래 키가 자신을 포함하고 있는 테이블의 기본 키를 구성하고 있지 않으면 null 값을 가진다. |
삽입 | 참조되는 테이블에 새로운 레코드가 삽입되는 그 자체는 참조 무결성 제약조건을 위배하지 않는다. 다만 새로 삽입되는 레코드의 기본 키 어트리뷰트 값에 따라서 도메인, 키 제약조건을 위배할 수 있다. |
삭제 | 참조되는 테이블에 새로운 레코드가 삭제되는 그 자체는 참조 무결성 제약조건을 위배하지 않는다. 다만 레코드가 삭제되면 참조 무결성 제약조건을 위배하는 경우가 생길 수 있다. |
- 제한(restricted): 참조 무결성 제약조건을 위배한 연산을 거절하는 것
- 연쇄(cascade): 참조되는 테이블에서 레코드를 삭제하고, 참조하는 테이블에서도 레코드를 함께 삭제
3. SQL (Structured Query Language)
데이터 조작 언어
- SQL은 구조적 질의 언어. 관계형 테이블과 데이터베이스 테이블에서 검색, 갱신 등을 하는데 사용되는 표준언어
- 다양한 DBMS에서 여러 가지 버전 존재
- Oracle 기준 SQL 쿼리 실행 테스트 웹사이트: http://sqlfiddle.com/
SQL의 종류 - DDL, DML, DCL
데이터 정의어 (DDL: Data Definition Language)
: 테이블 등의 데이터 구조를 정의하는데 사용되는 명령어
Create | 테이블 생성 |
ALTER | 테이블 변경 |
DROP | 테이블 삭제 |
RENAME | 테이블명 변경 |
데이터 조작어 (DML: Data Manipulation Language)
: 테이블에 데이터를 검색, 삽입, 수정, 삭제하는데 사용하는 문장. SELECT문은 특별히 질의어(Query)라고 한다.
SELECT | 테이블에서 조건에 맞는 레코드 검색 |
INSERT | 테이블에서 새로운 레코드 삽입 |
DELETE | 테이블에서 조건에 맞는 레코드 삭제 |
UPDATE | 테이블에서 조건에 맞는 레코드의 내용 변경 |
데이터 제어어 (DCL: Data Control Language)
: 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어
COMMIT | 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고 데이터베이스 조작 작업이 정상적으로 완료됨을 관리자에게 알려줌 |
ROLLBACK | 데이터베이스 조작 작업이 비정상 종료 시, 원래 상태로 복구 |
GRANT | 데이터베이스 사용자에게 사용권한 부여 |
REVOKE | 데이터베이스 사용자의 사용권한 회수 |
SQL 사례
테이블 생성
CREATE TABLE 테이블명(
컬럼명1 데이터타입 [디폴트 형식],
컬럼명2 데이터타입 [디폴트 형식],
CONSTRAINT 기본키 인덱스명 PRIMARY KEY (기본키 컬럼명),
CONSTRAINT 외래키 인덱스명 FOREIGN KEY (외래키 컬럼명) REFERENCES 참조테이블명 (기본키 컬럼명)
);
|
제약조건
: 사용자가 원하는 조건의 데이터만 유지하기 위해 특정 컬럼에 설정하는 제약
PRIMARY KEY (기본키) |
- 테이블에 저장된 레코드를 고유하게 식별하기 위한 기본키 정의 - 하나의 테이블에 하나의 기본키 제약만 정의 가능 - 기본키 제약을 정의하면 DBMS는 자동으로 UNIQUE 인덱스를 생성 기본키를 구성하는 컬럼에는 NULL 입력 불가 |
FOREIGN KEY (외래키) |
- 관계형 데이터베이스 테이블 간의 관계 정의를 위해 기본키를 다른 테이블의 외래키로 복사하는 경우 생성 - 외래키 지정시 참조 무결성 제약 옵션 선택 가능 |
NOT NULL | - NULL 값 입력 금지 - 디폴트 상태에서는 모든 컬럼에서 NULL 허가하나, 이 제약을 지정함으로써 해당 컬럼은 입력 필수 됨 |
CHECK | - 입력할 수 있는 값의 범위 제한 |
테이블 컬럼 추가
ALTER TABLE 테이블명
ADD 추가할컬럼명 데이터타입;
테이블 컬럼 삭제
ALTER TABLE 테이블명
DROP 삭제할 컬럼명 [CASCADE 또는 RESTRICT 또는 SET NULL];
다른 개체가 삭제할 개체를 참조하고 있는 경우
- CASCADE: 함께 삭제
- RESTRICT: 삭제 안됨
- SET NULL: 참조하고 있는 값을 NULL로 변경
테이블명 변경
ALTER TABLE 기존테이블명
RENAME TO 변경테이블명;
SELECT 문
기본 형식 | SELECT 컬럼명 또는 표현식 FROM 테이블명; |
모든 컬럼 조회 | SELECT * FROM 테이블명; |
원하는 컬럼만 조회 | SELECT 컬럼명 FROM 테이블명; |
원하는 조건만 조회 | SELECT 컬럼명 FROM 테이블명 WHERE 조건; |
중복된 값을 제거하고 조회 | SELECT DISTINCT 컬럼명 FROM 테이블명; |
INSERT 문
INSERT INTO 테이블명 (컬럼명1, 컬럼명2, ..., 컬럼명 n)
VALUES (값1, 값2, ..., 값n);
JOIN 문
: 두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법
- INNER JOIN
: 교집합으로, 기준이 되는 테이블과 JOIN한 테이블의 중복된 값을 보여준다.
SELECT 테이블명1.컬럼명1, 테이블명2.컬럼명2
FROM 기준 테이블명
INNER JOIN 조인할 테이블명
ON 기준 테이블명.기준키 = 조인할 테이블명.기준키;
- LEFT OUTER JOIN
: (A테이블의 모든 데이터)와 (A테이블과 B테이블의 중복값)을 보여준다.
SELECT 테이블명1.컬럼명1, 테이블명2.컬럼명2
FROM 기준 테이블명
LEFT OUTER JOIN 조인할 테이블명
ON 기준 테이블명.기준키 = 조인할 테이블명.기준키;
- RIGHT OUTER JOIN
: (B테이블의 모든 데이터)와 (A테이블과 B테이블의 중복값)을 보여준다.
SELECT 테이블명1.컬럼명1, 테이블명2.컬럼명2
FROM 기준 테이블명
RIGHT OUTER JOIN 조인할 테이블명
ON 기준 테이블명.기준키 = 조인할 테이블명.기준키;
연산자
비교 연산자 |
= | 같다 |
> | 크다 | |
>= | 크거나 같다 | |
< | 작다 | |
SQL 연산자 |
BETWEEN A AND B | A와 B의 값 사이에 있다 (A와 B값 포함) |
IN(LIST) | LIST 중 어느 하나라도 일치하면 된다 | |
LIKE '비교문자열' | 비교문자열 형태가 일치하면 된다 (% 사용) | |
IS NULL | NULL 값의 경우 | |
논리 연산자 |
AND | 앞의 조건과 뒤의 조건을 동시에 만족해야 한다 |
OR | 앞의 조건 또는 뒤의 조건 중 하나만 만족하면 된다 | |
NOT | 뒤에 오는 조건에 반대되는 결과를 되돌려 준다 | |
부정비교 연산자 |
!= | 같지 않다 |
^= | 같지 않다 | |
<> | 같지 않다 | |
NOT 컬럼명 = | ~와 같지 않다 | |
NOT 컬럼명 > | ~보다 크지 않다 |
KICPA ALLDEMY (https://kicpa-alldemy.com/)의 재무빅데이터분석사2급 데이터베이스 강의를 학습하고 개인 학습용으로 정리한 글입니다.
'ETC > 각종정보' 카테고리의 다른 글
[재무빅데이터분석사 2급] Python 정리 (0) | 2023.06.13 |
---|---|
[재무빅데이터분석사 2급] 기초통계 정리 (0) | 2023.06.02 |
고수익 블로그 찾는 방법 + 티스토리 분석 사이트에서 인기글, 키워드 확인하기!! (0) | 2023.03.28 |
티스토리 시작할 때 세팅 - 콘텐츠, 스킨, 플러그인 등 (0) | 2023.03.05 |
ChatGPT 사용법, 활용법 - 보고서 작성, 아이디어 탐색 등 (0) | 2023.02.27 |
댓글