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 |