데이터베이스 1 - 개념, 특징, SQL, 조인, 부속질의, 인덱스, 저장프로그램 ...
2022.04.16
출처 도서 - MySQL로 배우는 데이터베이스 이론과 실습
- 데이터베이스
- 데이터의 집합.
- 데이터 표준화를 통해 중복제거 등 데이터 무결성을 유지한다.
- 동시성 제어를 통해 데이터 일관성을 유지한다.
- 대용량 데이터 속에서 데이터 호출과 갱신의 효율성을 높인다.
- 하드디스크에 존재하며, 인덱스/데이터 사전 등으로 구성되어 있다.
- DBMS(데이터베이스 관리 시스템)
- 데이터 정의, 구조, 값을 관리한다 <- 설계 과정
- 데이터는 DB에서, 데이터 구조는 DBMS에서 분리하여 관리하여 서로의 변화에 영향을 받지 않음
-> 데이터 독립성 - 데이터베이스를 관리하는 소프트웨어로 주기억장치에 상주 -> cpu, 메모리 소모
- SQL 컴파일러, 트랜잭션/파일/버퍼 관리자 등으로 구성되어있다.
- SQL(구조적 질의 언어)
- DDL : CREATE, ALTER, DROP
- DML : SELECT, INSERT, DELETE, UPDATE
- DCL : GRANT, REVOKE
- 데이터 모델
- 객체 관계 데이터 모델 : 객체 속성값(테이블 pk) 사용
- 테이블 속성 특징
- 원자성 : 단일값을 가진다.
-> 취미라는 속성이 있다면, [독서, 운동] 값이 들어갈 수 있다.
-> 두 가지 값을 넣고 싶다면, 취미1/취미2로 속성을 추가 및 분리해야한다. - 도메인 값(타입)은 일정해야하며, 속성값의 이름은 중복되지 않아야한다 -> 데이터 표준화 및 일관성 확보
- 중복된 튜플은 존재하지 않는다. -> 보통은 auto increment int id를 pk로 구분시킴
- 기본키(primary key) : 튜플을 식별할 수 있는 후보키 중 선정된 대표키
- 외래키(foreign key) : 두 테이블을 연결하는 키;
일대일관계에서는 주인(자주 사용하는 테이블)의 외래키에 주인이 아닌 테이블의 pk가 추가됨
일대다관계에서는 부모의 pk가 자식(주인)의 외래키에 추가됨- 참조 무결성 제약조건 : restricted, cascade(같이 삭제), default, null
JPA에서는 생성 시에도 cascade 옵션을 통해 자식 테이블을 같이 생성 가능(save 메서드 없이도)
- 참조 무결성 제약조건 : restricted, cascade(같이 삭제), default, null
- 원자성 : 단일값을 가진다.
- 기본 SQL
select
from
from - inner join - on
from - left join / right join - on
from - full join
where (between, in, like 와일드문자, and ...)
group by - having
order by 속성값 desc/asc
- 집계함수
SUM, AVG, MIN, MAX, COUNT
- 집계함수
-
- group by - having 사용 시 주의사항
select 시 group by에서 사용한 속성값과 집계함수만 출력가능
having 조건절에는 집계함수만 사용가능하다 - where 조건절과 구분하기
- group by - having 사용 시 주의사항
- 조인
- 일반조인
from 테이블 나열 + where 조건절
join + on
- 일반조인
-
- 외부조인 outer join
- 부속질의
대량데이터가 있을 경우, 모든 데이터를 합쳐서 연산하는 조인보다 성능이 좋음
select, from, where 절에 추가적인 SQL문 추가
exists 조건 사용하면 유용
- 내장함수
ABS, CONCAT, LPAD(대체), SUBSTR, LENGTH, IFNULL
ADDDATE, DATE, DATEDIFF, DATE_FORMAT, STR_TO_DATE ...
- 뷰
가상의 테이블; 기존의 테이블들을 가공하여 필요한 정보들만 출력
CREATE VIEW 뷰이름 AS SELECT 문
- 인덱스
하드디스크에서 데이터를 읽어오는 것은 액세스 시간이 소요되며
이러한 연산속도를 개선하기 위해 인덱스를 활용
인덱스를 중심으로 정렬하여 인덱스에 포함된 컬럼을 조건을 사용하여
대용량 데이터 속에서 소량의 데이터를 호출할 때 빠르게 조회할 수 있음
- 저장 프로그램
1. 프로시저
- 프로시저 생성
CREATE PROCEDURE <이름>(<변수이름> <변수타입>, ...)
BEGIN
SET @<변수> = 0;
DECLARE <변수이름> <변수타입>;
...
END
- 프로시저 생성
-
- 명령문
DELIMITER
IF THEN - ELSE - END IF
LOOP | WHILE | REPEAT
RETURN
- 명령문
-
- 프로시저 호출
CALL <프로시저 이름>();
- 프로시저 호출
2. 함수
프로시저는 CALL 명령어로 실행되는 프로그램이고, 함수는 Select문에 호출되어 값을 반환하는 용도로 사용
CREATE FUNCTION <함수이름>(<변수이름> <변수타입>) RETURN INT
BEGIN
...
END
3. 트리거
CREATE TRIGGER ...
INSERT DELETE UPDATE문과 함께 실행
댓글을 작성해보세요.