카테고리 없음

얄팍한 코딩지식 - 갖고노는 MySQL 섹션4. MySQL 더 깊이 알아가기

정현3 2022. 6. 1. 22:13

0. 기본키 - PRIMARY KEY

-> 값 넣지 않아도 됨

-> 테이블마다 하나만 가능

-> 각 행을 고유하게 '식별'가능 -> 기본적으로 '인덱스'생성

: person_id 가 '기본키'라서 구분가능하다.

AUTO_INCREMENT

: 새 행 생성시 1씩 증가

-> 기본적으로 '기본키'와 함께 붙어다닌다

UNIQUE

: 중복입력 불가

VARCHAR 

: 가변사이즈(경제적) -> 실제 글자수 +1

DATETIME 

: 입력된 시간을 그대로 저장 '그 값 자체로'

1. 외래키 - FOREIGH KEY

-> null값이거나, or 부모테이블 '기본키'값과 같아야 한다

-> 다른 테이블의 '기본키'와 연결된다. "내가 1일때 쟤한테는 5다"

CASCADE : '자식 테이블'의 해당 행도 '수정' or '삭제'

-> 부모테이블에서 정하는것임

2. 뷰 - 가상의 테이블

-> '쿼리'를 테이블로 비슷하게 저장한다

: 실제 테이블이 아닌 실제 테이블에서 수행한 SELECT문을 실제테이블들을 JOIN하거나 '서브쿼리'등으로 이어서 표에 결과물을 출력한것을 실제테이블처럼 사용한다.

3. 인덱스

: 테이블에서 '특정 컬럼'이나 '다수의 컬럼'에 대한 '목차(색인)'을 생성한다

: 컬럼들에 대한 '목차' 생성 - 검색 가속화

: 조회는 빠르나, 테이블의 내용변경(추가, 삭제, 수정)시 시간 더 소모

-> PRIMARY(기본키)는 '인덱스'를 따로 지정할 필요가 없다.

4. 트랜잭션

: 외부가 아닌 내부적으로 움직이고 그걸 유추하는 방식

: 모든 구문이 성공 or 실패로 이어진다 : 원자성 -> 더 나뉘지 않음

: 은행 송금 예시 -> "거래 오류시 하나라도 실패하면 전체가 실패로 처리한다 "

ROLLBACK : '창고'에 들어가기전에 '책상'에서 취소 -> '백지화'

" 스프링에서 '쿼리'를 내부적으로 '트랜잭션'으로 실행하겠다"

COMMIT : 메모리상의 변화를 '영구저장'하는 '창고'로 넣는다.

SAVEPOINT : ROLLBACK할 '중간 지점' 설정

5. '사용자'와 '권한 다루기'

권한 : 원하는 권한만 주어 민감할 수 있는 권한은 '제한'한다.

 

< 1강. 기본키와 고유키, 그리고 외래키 >

< 2강 . 뷰 - 가상의 테이블 >

< 3강. 인덱스 - 검색을 빠르게!! >

< 4강. 트랜잭션 - 함께가 아니면 하지 않아 !! >

< 5강. 사용자와 권한 다루기 >