데이터 베이스 개체
데이터베이스(Database) 개체(Database Objects)는 데이터베이스 내에서 데이터를 구조화하고 저장하기 위해 사용되는 요소를 의미한다. 주요 데이터 베이스에는 테이블 외에 인덱스, 뷰, 스토어드 프로시저, 트리거, 함수, 커서 등 이 있다.
인덱스(Index)
DB의 성능을 향상 시키기 위해 사용되는 개체 인덱스는 특정 열(또는 열 집합)을 기반으로 데이터의 빠른 검색을 가능하게 함
DB 테이블의 열에 대한 인덱스를 생성하면 해당 열의 값을 기준으로 정렬된 데이터 구조 생성
⇒ 쿼리의 실행 속도를 향상 시키고 데이터 접근을 효율적으로 만듦
인덱스 생성(CREATE INDEX)
인덱스 생성 전 [Execution Plan]
* Execution Plan은 데이터베이스 관리 시스템(DBMS)에서 쿼리의 실행 계획을 보여주는 도구로 인덱스, 조인 방법, 필터링 방법 등 세부정보를 볼 수 있다.
🔽 인덱스 생성 쿼리문
CREATE INDEX idx_member_name ON member(member_name);
인덱스 생성 후
뷰(View)
하나 이상의 테이블에서 선택한 열과 행을 가상으로 조합하여 만든 개체
뷰는 데이터에 대한 간편한 접근을 재공하며 데이터를 필터링하거나 특정 형태로 가공
뷰를 사용하면 복잡한 쿼리를 단순화하고 데이터의 일관성과 보안 유지 가능
뷰는 데이터를 실제로 저장하지 않고 필요할 때 마다 테이블의 데이터를 기반으로 동적 생성 ⇒ 바로가기와 같은 개념
뷰 생성(CREATE VIEW)
🔽 뷰생성 쿼리문
CREATE VIEW
member_view
AS
SELECT * FROM member;
스토어드 프로시저(Stored Procedure)
스토어드 프로시저는 DB에서 실행되는 일련의 작업을 수행하는 개체
스토어드 프로시저는 DB서버에 미리 저장되어 있으며 클라이언트에서 호출하여 실행하는 SQL에서 프로그래밍이 가능하도록 하는 개체
파라미터를 받아들이고 쿼리를 실행하며 결과를 반환
데이터의 일관성과 보안 유지, 재사용 가능한 로직을 중앙에서 관리할 수 있는 장점
스토어드 프로시저 생성(CREATE Stored Procedure)
🔽 뷰생성 쿼리문
DELIMITER //
CREATE PROCEDURE myProcedure()
BEGIN
SELECT*FROM member WHERE member_name = '나훈아';
END //
DELIMITER ;
-- DELIMITER // ~ DELIMITER; 문으로 묶어주기
CALL myProcedure();
-- 스토어드 프로시저 부르는 예약어 CALL
스토어드 프로시저(Stored Procedure) 생성
트리거(Trigger)
특정 이벤트(CRUD)가 발생할 때 자동으로 실행되는 작업을 정의하는 개체로 잘못된 데이터가 들어가는 것을 미연에 방지
트리거는 데이터의 일관성을 유지하거나 추가 로직을 수행하는 데 사용될 수 있음
DB 테이블에 트리거를 정의하면 해당 테이블에 수행되는 모든 변경 작업에 대해 자동으로 트리거가 실행
함수(Function)
함수는 커서(Cursor): 재사용 가능한 로직을 캡슐화하는 개체
함수는 특정 작업을 수행하고 결과를 반환하는데 사용
함수는 입력 값을 받아들이고, 계산, 변환, 검색 등 작업을 수행하여 결과 반환
함수는 SQL 문에서 쿼리의 일부로 사용될 수도 있고 스토어드 프로시저 내에서 호출되어 로직의 재사용성과 가독성을 향상시킴
커서(Cursor)
DB에서 쿼리의 결과 집합을 처리하기 위한 개체로 쿼리 결과를 임시 저장, 하나씩 데이터를 읽거나 조작하는 기능 제공
커서를 사용하면 순차적으로 결과를 탐색하거나 반복 처리 가능
스토어드 프로시저나 트리거 내에서 사용되며 데이터의 집합을 조작하거나 로직 구현에 유용
✅ 참고 할 만한 사이트
'LANGUAGE > MySQL' 카테고리의 다른 글
[MySQL] 필드 기본값(Default) 설정하기 (1) | 2023.06.04 |
---|---|
[MySQL] MySQL 자주 사용하는 쿼리문 / 쿼리문 실행 순서 정리 (0) | 2023.05.26 |
[SQL] 트랜잭션(Transaction)이란? ACID원칙 (1) | 2023.05.26 |
[SQL] 데이터베이스 언어: DDL, DML, DCL, TCL의 이해와 활용 (0) | 2023.05.25 |
[Database] 데이터베이스(Database)란? / DBMS와 RDBMS 그리고 SQL 알아보기 (0) | 2023.05.24 |