본문 바로가기

SQL/혼공학습단 8기 - SQL

week1 - 테이블 생성 및 기본 추출 쿼리문 작성, 데이터베이스 개체 설명

기본 미션

🐯 Chapter 01 ~ 02 p. 80 - shop_db의 회원 테이블(member)에서 아이유 회원에 대한 정보만 추출한 후 결과화면 인증샷

추가 미션

🐱 데이터베이스 개체 3가지 설명하기

데이터 베이스 개체란? 데이터베이스 안에 저장되는 개체. 모든 데이터베이스 개체는 독립적으로 존재하는 것이 아니라 테이블과 상호 연관이 있다. 

1. 인덱스 INDEX

- 책의 제일 뒷부분의 '찾아보기'와 비슷한 개념으로 데이터를 조회할 때 결과가 나오는 속도를 획기적으로 빠르게 해준다.

-- INDEX 생성 및 확인
CREATE INDEX idx_member_name ON member(member_name);

2. 뷰 VIEW

- 테이블과 상당히 동일한 성격의 데이터베이스 개체로 '가상의 테이블'이라고 할 수 있다.

- 실제 데이터를 가지고 있지 않으며, 진짜 테이블에 링크된 개념임. like as 윈도우즈OS의 '바로가기 아이콘'과 비슷한 개념.

- 데이블의 일부를 제한적으로 표현할 때 주로 사용.

- 뷰를 활용하면 보안도 강화하고, SQL문도 간단하게 사용할 수 있다. 

-- View 생성 및 이용
CREATE VIEW member_view AS SELECT * FROM member;
SELECT * FROM member_view;

 

3. 스토어드 프로시져 Stored Procedure

- MySQL에서 제공하는 기능으로 SQL에서 프로그래밍 언어처럼 코딩이 가능하도록 해준다.

- 여러개의 SQL문을 하나로 묶어서 편리하게 사용 할 수 있다. 

- C, Java, Python과 같은 언어에서 사용되는 연산식, 조건문, 반복문 등을 사용 할 수 있다. 

-- Stored Proceduer 실습
-- 일반 쿼리문
SELECT * FROM member WHERE member_name = '나훈아';
SELECT * FROM product WHERE product_name = '삼각김밥';

-- Stored Proceduer 쿼리문 생성
DELIMITER //
CREATE PROCEDURE myProc()
BEGIN 
	SELECT * FROM member WHERE member_name = '나훈아';
	SELECT * FROM product WHERE product_name = '삼각김밥';
END //
DELIMITER ;

-- Stored Proceduer 쿼리문 불러오기
CALL myProc();

-- Stored Proceduer 삭제하기 
DROP PROCEDURE myProc;

4. 트리거 Trigger

- 잘못된 데이터가 들어가는 것을 미연에 방지 하는 기능으로 INSERT, UPDATE, DELETE와 같이 DML(Data Manipulation Language) 문이 작동할때 자동으로 실행되는 프로그래밍 기능. 

- 트리거를 활용하면 데이터가 삭제될 때 해당 데이터를 다른곳에 자동으로 백업 할 수 있다. 

-- 테이블에 트리거 부착하기
DROP TRIGGER IF EXISTS myTrigger;
DELIMITER $$
CREATE TRIGGER myTrigger
	AFTER DELETE
    ON trigger_table
    FOR EACH ROW
 BEGIN
 	SET @msg = '~~이 삭제됨'; -- 트리거 실행시 작동되는 코드들
 END $$
 DELIMITER;

-- 트리거의 경우 따로 섹션을 만들어 기재 할 예정.

 

5. 스토어드 함수 Stored Function

- 스토어드 프로시저와 비슷 하지만 사용 방법이나 용도가 다르다

- MySQL에서 제공하지 않는 함수를 사용 하고 싶을때 직접 만들어서 사용하는 함수 (MySQL에서 제공하는 함수를 내장함수(built-in function)이라고 한다.)

- 어떤 계산을 통해서 하나의 값을 반환하는데 주로 사용

- RETURN문으로 반환할 값의 데이터 형식을 지정하고, 본문 안에서는 RETURN문으로 하나의 값을 반환.

- 스토어드 함수의 매개변수는 모두 입력 매개변수 (IN을 붙이지 않는다)

- 스토어드 함수를 부를때는 CALL이 아닌 SELECT 문 안에서 호출, 함수 안에서는 SELECT문 사용 못함

- 스토어드 함수를 사용하려면 생성권한을 허용해주어야 하며 이는 한번만 설정해주면 이후에는 신경 쓰지 않아도 됨

-- 스토어드 함수 생성권한 허용 
SET GLOBAL log_bin_trust_function_creators = 1;

-- 스토어드 함수 생성 방식
DELIMITER $$
CREATE FUNCTION 스토어드함수이름(매개변수)
	RETURN 반환형식
BEGIN
	이 부분에 프로그래밍 코딩
    RETURN 반환값;
END$$
DELIMITER;
SELECT 스토어드함수이름();

-- 기존에 작성된 스토어드 함수의 내용을 확인 하기 위한 쿼리문
SHOW CREATE FUNCTION 함수이름;

6. 커서 

- 테이블을 한 행씩 처리하기 위한 방식.

- 커서는 대부분 스토어드 프로시저와 함께 사용된다. 

- 커서의 작동 순서 ① 커서 선언하기 ② 반복 조건 선언하기 ③ 커서 열기 [④ 데이터 가져오기 ⑤ 데이터 처리하기] 이부분을 반복 ⑥ 커서 닫기

- 커서는 DECLARE로 선언하며, 그 내용은 SELECT 문

- 커서는 행이 끝날 때까지 계속 반복. 행의 끝을 판단하기 위해 변수 endOfRow를 준비하고 TRUE값인지 체크하는 방식 사용