데이터베이스 1 - 개념, 특징, SQL, 조인, 부속질의, 인덱스, 저장프로그램 ...
출처 도서 - 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, nullJPA에서는 생성 시에도 cascade 옵션을 통해 자식 테이블을 같이 생성 가능(save 메서드 없이도) 기본 SQLselectfrom from - inner join - on from - left join / right join - on from - full joinwhere (between, in, like 와일드문자, and ...)group by - havingorder by 속성값 desc/asc 집계함수SUM, AVG, MIN, MAX, COUNT group by - having 사용 시 주의사항select 시 group by에서 사용한 속성값과 집계함수만 출력가능having 조건절에는 집계함수만 사용가능하다 - where 조건절과 구분하기 조인 일반조인from 테이블 나열 + where 조건절join + on 외부조인 outer join 부속질의대량데이터가 있을 경우, 모든 데이터를 합쳐서 연산하는 조인보다 성능이 좋음select, from, where 절에 추가적인 SQL문 추가exists 조건 사용하면 유용 내장함수ABS, CONCAT, LPAD(대체), SUBSTR, LENGTH, IFNULLADDDATE, DATE, DATEDIFF, DATE_FORMAT, STR_TO_DATE ... 뷰가상의 테이블; 기존의 테이블들을 가공하여 필요한 정보들만 출력CREATE VIEW 뷰이름 AS SELECT 문 인덱스하드디스크에서 데이터를 읽어오는 것은 액세스 시간이 소요되며이러한 연산속도를 개선하기 위해 인덱스를 활용인덱스를 중심으로 정렬하여 인덱스에 포함된 컬럼을 조건을 사용하여대용량 데이터 속에서 소량의 데이터를 호출할 때 빠르게 조회할 수 있음 저장 프로그램1. 프로시저 프로시저 생성CREATE PROCEDURE <이름>(<변수이름> <변수타입>, ...)BEGIN SET @<변수> = 0;DECLARE <변수이름> <변수타입>;...END 명령문DELIMITERIF THEN - ELSE - END IFLOOP | WHILE | REPEATRETURN 프로시저 호출CALL <프로시저 이름>(); 2. 함수프로시저는 CALL 명령어로 실행되는 프로그램이고, 함수는 Select문에 호출되어 값을 반환하는 용도로 사용CREATE FUNCTION <함수이름>(<변수이름> <변수타입>) RETURN INTBEGIN...END 3. 트리거CREATE TRIGGER ...INSERT DELETE UPDATE문과 함께 실행