오늘은 완주 50% 기념으로 혼공족장님에게 선물받은 와플을 먹으며 공부를 시작해보겠습니당!
완주까지 화팅~
05-1 테이블 만들기
테이블
- 엑셀 시트와 비슷한 구조
- 테이블 구조를 만드는 방식 2가지
- GUI (마우스로 클릭)
테이블 설계
- 회원테이블, 구매테이블 만들기
- 회원테이블 아이디 : PK
- 구매테이블 아이디 : FK
GUI로 테이블만들기
- GUI 환경에서 FOREIGN KEY를 설정하는 것은 까다로워서 apply 후 쿼리문이 나왔을 때 쿼리를 수정해서 FOREIGN KEY를 지정한다. (캡처 못함)
행 추가
member 테이블에 행 추가
- GUI 환경에서 입력한 후 apply 버튼을 통해 추가할 수 있다.
- apply 버튼 눌렀을 때 보이는 쿼리문 (아까 이런 화면에서 FOREIGN KEY를 지정해주었다)
buy 테이블에 행 추가
- 오류가 발생
-> 외래키로 받는 mem_id에 APN을 입력했는데 회원테이블에 APN이 없기 때문
SQL 쿼리로 테이블 만들기
- 쿼리문으로 다시 만들기 위해 지움ㅜ
- 쿼리문으로 테이블 다시 만들기
05-2 제약조건으로 테이블을 견고하게
- 제약조건: 데이터가 완전무결하게 도와준다
- 제약조건 - 기본키, 외래키, NOT NULL 등
제약조건
- 데이터의 무결성을 지키기 위해 제한하는 조건
- 데이터의 무결성: 데이터에 결함이 없음
제약조건의 종류
- PRIMARY KEY
- FOREIGN KEY
- UNIQUE
- CHECK
- DEFAULT
- NULL값 적용
기본키 제약조건
- 기본키: 데이터를 구분할 수 있는 식별자
- 중복될 수 없으며 NULL 값이 입력될 수 없음
- ex. 회원 아이디, 주민번호, 이메일
- 기본키로 생성한 것은 자동으로 클러스터형 인덱스가 생성된다.
- 테이블에는 기본키를 1개만 가질 수 있다.
- 아이디, 주민번호, 이메일 컬럼이 다 있어도 컬럼 하나만 기본키가 된다.
- mem_id 컬럼을 기본키로 지정
- 확인
- 컬럼 정보를 다 입력 후, 맨 뒤에 기본키를 지정할 수도 있다
- 테이블을 일단 만들고,
ALTER TABLE~
을 해도 된다
외래키 제약조건
- 기준테이블과 참조테이블
- 기준테이블은 무조건 PRIMARY KEY 또는 UNIQUE여야 한다.
- 만들기
- 기준테이블의 PK와 참조테이블의 FK의 컬럼명이 같지 않아도 되나 권장하지 않는다.
기준테이블의 열이 변경되는 경우
- 기준테이블의 값이 변경된다면? (ex. BLK가 PINK로 변경)
- 변경되지 않는다~
- 기준테이블의 값을 삭제한다면? (ex. BLK가 삭제)
- 삭제되지 않는다~
-> PK, FK로 맺어진 경우 PK의 값은 변경, 삭제되지 않으며 컬럼도 삭제되지 않는다.
- 그래도 꼭 변경하고 싶다면?
- 기준테이블의 값을 변경할 경우, 참조테이블의 값도 자동으로 변경될 수 있다~
- ON UPDATE CASCADE
기준테이블의 값이 변경될 경우, 참조테이블의 값도 자동으로 변경된다
ON DELETE CASCADE
기준테이블의 값을 삭제할 경우, 참조테이블의 값도 자동으로 삭제된다
고유키 UNIQUE
제약조건
- 중복되지 않는 유일한 값을 입력해야하는 조건
- 기본키와 비슷하지만 차이점은 NULL값을 허용한다.
- 왜 사용? 아이디를 PK로 지정한 경우, 이메일을 UNIQUE로 지정한다.
CHECK 제약조건
- 데이터를 입력할 때 특정 값 또는 특정 조건만 입력하게 한다.
기본값 정의
- 값을 입력하지 않았을 때 자동으로 입력될 값을 미리 지정하는 것
- 값을 넣지 않았을 때 디폴트 값이 자동으로 들어갔다.
NULL값 허용
NULL
null 값 허용
NOT NULL
null값 비허용
- 이름 컬럼은
not null
조건 건다.
05-3 가상의 테이블: 뷰
뷰
- 데이터베이스의 개체 중의 하나
- 실체가 있는 것이 아니다.
- 가상의 테이블. 테이블이라고 생각해도 큰 무리는 없다
- 테이블인 것 처럼 접근된다.
- 뷰에는 진짜 데이터가 없고 SELECT문만 있다.
뷰 만들기
뷰 조회
- 뷰를 조회할 때와 테이블을 조회할 때 결과 똑같다.
뷰를 사용하는 이유
보안
- 테이블에서 중요한 정보를 제외하고 뷰를 만들 수 있다. (ex.개인정보)
- 중요데이터에 접근하지 못하는 사람은 뷰를 통해 작업할 수 있다.
복잡한 SQL을 단순하게 만들 수 있다.
뷰의 실제 작동
생성
- ALIAS를 컬럼명으로 하는 뷰를 생성할 수 있다.
- 띄어쓰기를 하고 싶을 때는 백틱을 사용해야한다.
뷰 수정
ALTER VIEW
를 사용한다.
- 컬럼명에 한글을 쓰는 것은 권장하지 않으나 꼭 써야한다면 테이블이 아니라 뷰에 사용하는 것이 좋겠다.
삭제
조회
- VIEW에서는 PK가 확인되지 않는다.
SHOW CREATE VIEW 뷰 이름
: 뷰를 만들었던 구문을 확인하고 싶을 때
뷰를 통한 데이터 수정
-
데이터 수정
-
데이터 신규 입력
-
뷰에 데이터 신규 입력 시 입력이 될 수도 있고, 오류가 날 수도 있다.
-
현재 오류나는 이유: 실제 테이블에서 NOT NULL
인 조건을 입력하지 않았기 때문
-
일반적으로 뷰에 데이터를 입력하는 것은 바람직하지 않다.
-
조건에 맞지 않는 데이터 신규 입력
-
167이상인 것만 보여주는 뷰 생성 - 167이하인 값을 입력 - 다시 167이상인 것만 보여주는 뷰 조회할 때 167 이하인 값이 보이지 않는다.
-
이럴 때는 뷰를 생성할 때 CHECK 조건을 넣어서 167이하인 값을 입력하지 않는 것이 좋겠다.
뷰와 테이블
- 뷰를 만들고 테이블을 삭제할 경우 테이블은 삭제 가능. 뷰 조회는 안된다. 참조하는 테이블이 없기 때문
기본미션
p. 226의 market_db의 회원 테이블(member) 생성하고, p. 229 데이터 입력한 후 인증하기
선택미션
p. 271 확인 문제 4번 풀고 인증하기
기존에 뷰가 있으면 덮어쓰고, 없으면 새로 생성해라
CREATE OR REPLACE VIEW