본문 바로가기

MLOps 개발자 양성과정/mysql

[Day- 29]

JOIN

 

OUTTER JOIN

LEFT /RIGHT  왼쪽 테이블 모두 출력

 

CROSS JOIN

상호조인- 한쪽 테이블의 모든 행들과 다른 쪽의 테이블의 모든 행을 조인

행의 개수 두 테이블 개수를 곱한 수 만큼 실행 - 테스트 데이터 만들 때 사용

 

SELF JOIN

자기 자신과 자기 자신이 조인

 

 

UNION

UNION ALL 

- 열의 개수가 같아야 함

- 데이터 형식이 서로 호환되어야 함

 


chap 03

1) 인덱스

색인의 기능, 테이블의 열 단위에 생성

인덱스를 적절히 사용하느냐에 따라 시스템의 성능이 차이가 날 수 있음.

 

* 데이터베이스 튜닝

: 데이터베이스 성능을 향상시키거나 응답하는 시간을 단축시키는 것

 

CREATE TABLE indexTbl (first_name varchar(14), last_name varchar(16), hire_date date);
INSERT INTO indexTbl
	SELECT first_name, last_name, hire_date
    FROM employees.employees
    LIMIT 500;
    
-- index 안만들고 => Full table scan
SELECT * FROM indextbl WHERE first_name = 'Mary';

-- index 만들고 => Non-Unique Key Lookup
CREATE INDEX idx_indexTBL_firstname On indexTbl(first_name);
SELECT * FROM indextbl WHERE first_name = 'Mary';

 

2) 뷰.

가상의 테이블. 실제 존재하는 데이터가 아닌 진짜 테이블에 링크된 개념

뷰는 존재해 SELECT하면 진짜 테이블의 데이터를 조회하는 것과 동일한 결과

CREATE  VIEW uv_memberTBL
AS
	SELECT memberName, memberAddress FROM memberTbl;

SELECT * FROM uv_memberTbl;

뷰의 실체 SELECT문. 뷰에 접근하게 되면 뷰 생성시에 입력한 SELECT문이 그떄 작동

 

3) 스토어드 프로시저

SQL을 하나로 묶어서 편리하게 사용하는 기능

프로시저 만들어 놓은 후 호출하는 방식으로 자주 사용

SELECT * FROM memberTbl WHERE memberName = '당탕이';
SELECT * FROM productTbl WHERE productName = '냉장고';

-- 스토어드 프로시저
DELIMITER //
CREATE PROCEDURE myProc()
BEGIN
	SELECT * FROM memberTbl WHERE memberName = '당탕이' ;
    SELECT * FROM productTbl WHERE productName = '냉장고' ;
END //
DELIMITER ;

-- 프로시저 호출
CALL myProc() ;

 

4) 트리거

방아쇠, 테이블에 부착되어서 INERT, UPDATE, DELETE 작업이 발생되면 실행되는 코드

 

ex) 회원 탈퇴 시 회원 테이블에서 정보 삭제하지만 

INSERT INTO membertbl VALUES ('figure', '연아', '경기도 군포시 당정동');
SELECT * FROM memberTbl;

UPDATE memberTbl set memberAddress = '서울 강남구 역상돔' WHERE memberName = '연아';
SELECT * FROM memberTbl;

DELETE FROM memberTbl WHERE memberNAme = '연아';
SELECT * FROM memberTbl;
CREATE TABLE deletedMemberTbl (
	memberID Char(8),
    memberName char(5),
    memberAddress char(20),
    deletedDAte date
);

DELIMITER //
CREATE TRIGGER trg_deletedMemberTbl
	AFTER DELETE
    ON membertbl
	FOR EACH ROW
BEGIN
	INSERT INTO deletedMemberTbl
		VALUES (OLD.memberID, OLD.memberName, OLD.memberAddress, CURDATE() );
END //
DELIMITER ;

SELECT * FROM memberTbl;
DELETE From memberTbl WHERE memberName = '당탕이';
SELECT * FROM memberTbl;
SELECT * FROM deletedmembertbl;

 

백업

백업과 복원


5. MySQL과 응용 프로그램의 연결

- 데이터베이스를 어떤 프로그램과 연결할거야? 

JDBC

ODBC- 조금 더 복잡

 


chap04

데이터베이스 모델링

 

ㆍ 프로젝트의 진행 단계

(웹이나 )

소프트웨어 개발 방법론

waterfall (폭포수) 방식

중간에 문제점이 발생될 경우 다시 거슬러 올라가기 어려움

 

(/게임, 시장이 계속 변화하는 산업-> 주로 asile이나  나선형 프로토타입 방식?)

 

ㆍ 데이터베이스 모델링

: 현 세계에서 사용되는 작업이나 사물들을 DBMS의 데이터베이스 개체로 옮기기 위한 과정

   ex) 물건을 산다라는 행위도 테이블로 변환

- 3단계 

  개념적 모델링 → 논리적 모델링 → 물리적 모델링

- 정규화/비정규화

 

L자형 테이블 공간 낭비

 

관계형

1대 다 관계

 

 

'MLOps 개발자 양성과정 > mysql' 카테고리의 다른 글

[Day-30]  (0) 2023.02.03
[Day-28]  (0) 2023.02.01
[DAY-27] SELECT, INSERT  (0) 2023.01.31
[Day-26] SQL 기본  (0) 2023.01.30