VIEW
창문이 파란색처럼 생겼으면 보이는 부분 안에서 어디든 조회 가능~!~!
테이블 2개를 JOINJOIN 해서 보는 경우
이런 식으로 창문을 보여주는 것이 VIEW – 가상의 테이블을 만들어 주는 것!
DB에서 실습해보기
1. JOIN 사용해서 테이블 이어 주기
- 이 형식을 보려면 JOIN을 했어야 했는데 이 자체를 VIEW로 만들어버릴 수 있다!
2. 뷰 생성 - CREATE VIEW
1. SYS계정에서 권한 부여
2. CREATE VIEW
3. VIEW 확인해보기
- 삭제 안 해주면 TABLE 계속 존재하는 것처럼 계속 존재한다~~
외부에서 우리 DB의 ID 정보를 보고 싶어 한다??
- VIEW를 만들어서 주고 읽기만 가능 권한 해준다.
- VIEW는 조회 용도로 사용한다고 생각 / 수정, 변경 안된다고 보면 된다.
- VIEW JOIN 가능
VIEW 끝
제약조건
[ NOT NULL / DEFAULT / CHECK / PRIMARY KEY / UNIQUE / FOREIGN KEY ]
1. NOT NULL : NULL 값 허용하지 않음
2. DEFAULT : 기본으로 들어갈 값
3. CHECK : 체크 조건 검사를 통과해야만 데이터 저장 가능
4. UNIQUE : 중복 방지
5. PRIMARY KEY : 기본키(식별자) ( NOT NULL, UNIQUE )
- 이 칼럼에서 유일한 식별자로 사용하겠다~가 제일 중요한 기능!
- PK 지정하면 인덱스 칼럼을 만들어주는데 ID보다는 NO에 하는 게 낫다.
6. FOREIGN KEY : 외래 키
- 다른 테이블의 어떤 칼럼을 참조할 때 연결
- 연결되면 부모 테이블 / 자식 테이블 관계로 된다.
- > 자식은 부모 테이블에 있는 ~~~~ 칼럼을 확인해라 – 이 칼럼에 없는 값은 들어가지 않도록 제약
CONSTRAINT 제약조건 이름 FOREIGN KEY(외래키 설정 칼럼) REFERENCES 참조할 부모테이블(칼럼);
- - 제약조건 / 이름 / 외래키(칼럼) / 참조할칼럼(테이블(칼럼))
맨뒤에 STUDENT(NO)에서 NO는 삭제 가능
- WHY?
- 그 테이블의 기본키를 자동적으로 참조하게 해 준다..
- 칼럼명은 중요하지 않다. - 어떤 칼럼을 참조하는지가 중요
- 타입은 맞아야 한다..
+@FOREIGN KEY - 값 입력 테스트해보기
- >STD_NO에 1을 넣으려고 하면 – NO칼럼에 1이라는 값이 있어야 한다!!
- >참조하는 부모 테이블 칼럼에 있는 값만 자식 칼럼에 올 수 있다!
실습 1
- 부모테이블에 존재하는 1번 학생에게
- 자식 테이블에서 A 주겠다. -- 성공
실습 2
- 부모 테이블에 존재하지 않는 5번 학생에게
- 자식 테이블에서 A 주겠다. -- 실패
##CEHCK
- 우리가 걸어놓은 제약조건의 이름으로 에러 나는 것 확인!
- 제약조건 이름 잘 지어놓으면 어떤 에러인지 파악 쉽겠구나~
+@FOREIGN KEY - 조건 추가 CASCADE || SET NULL
## ON DELETE CASCADE
조건 추가해주기~
부모 테이블에서 1번 학생을 없애버리면?
- 자식 테이블에서 참조하고 있었는데 에러 난다.
- 이것을 방지 –- 1번 학생이 삭제될 시 참조하고 있는 자식의 데이터도 같이 삭제되었으면 좋겠다.
- ( = 부모 테이블의 ROW 삭제될 경우 – 참조하고 잇는 자식 테이블의 ROW도 삭제되도록 )
- CASCADE
## ON DELETE SET NULL
부모 테이블에서 1번 학생을 없애버리면??
- 자식 테이블에서 참조하고 있었는데 에러 난다.
- 이것을 방지 – 1번 학생이 삭제될 시 참조하고 있는 자식 테이블의 값은 NULL로 변경되도록
- ( = 부모 테이블의 ROW 삭제될 경우 – 참조하고 잇는 자식 테이블의 ROW에 NULL로 변경)
- SET NULL
## 굳이 삭제하거나 NULL 값을 만들 필요 없다.
- 존재해도 문제안 되니까
- 데이터는 중요하니까
- 다른 방식으로 처리한다 (Y/N 칼럼으로 )
제약조건 끝
시퀀스 - SEQUENCE
- CREATE SEQUENCE 시퀀스 이름;
- 함수 - [ NEXTVAL , CURRVAL ]
- 이전 값 보는 함수는 X
- 시퀀스는 DB 객체 중에 하나인데 어떤 친구냐면
- 값을 1씩 증가시켜주는 작업을 할 때 사용하는 친구
NEXTVAL 함수 사용해보기
- 실행할 때마다 1씩 증가하는 값을 계속 보여줌
실행할 때마다 1씩 증가하는 값을 계속 보여줌
CURRVAL 함수 사용해보기
- 현재의 시퀀스 값 조회 함수
## CHECK
- 시퀀스를 생성하자마자 현재 값 조회하면 – 안된다.
- NEXTVAL 함수 1번 이상 사용한 것에 대해서 조회 가능
SEQUENCE 생성
- 시퀀스 생성 값 설정하기
#CACHE 설명
- 시퀀스가 NEXTVAL가 다음 값을 가져오려고 – 마지막 값이 저장된 곳에 가서 확인하고 다음 값 찾고 반환 처리 , 번거롭다.
- 그렇게 안 하고 CACHE 20 해주면 -> 현재 시퀀스 1이라는 거 확인하면 1~20까지 시퀀스가 숫자를 미리 들고 있다. 들고 있다가 NEXTVAL 호출될 때마다 들고 있던 것 하나하나씩 주는 방식.( 번호 확인하는 번거로움 없어짐 )
- 시퀀스가 이미 20까지 들고 있고 시퀀스 넘버는 21로 바꿔놓은 상태임으로 --> 들고 있던 20번까지 사용 안 하고 1 , 2, 3번까지만 사용했더라도 --> 컴퓨터 껐다가 다시 접속해서 NEXTVAL 사용하면 21이 출력된다.
- 결론 : NOCACHE로 설정해주는 것이 좋다.
SEQUENCE 사용
- 이클립스에 회원번호 입력에 내가 직접 지정해주었었는데
- 이제는 내가 지정 X --- 자동으로 지정되도록 변경해주기
- 내가 만든 시퀀스를 입력해준다!
- ? 로 할 필요 없이 직접 쿼리 날려주면 된다.!.!
- 테이블에 자료 이미 있을 시 처리 필요
- 1. 시퀀스 넘버 맞춰준 다음에 실행하거나 / 2. 시퀀스 시작 값을 맞춰 주거나
REVIEW
VIEW
창문이라는 예시가 이해하기 좋게 다가왔다.
내가 만들어 놓은 창문에 보이는 것들은 다 조회 가능!
매번 JOIN을 해야 하는 무거운 것보다
VIEW로 만들어 놓고, TABLE처럼 사용 가능했다.
내 입맛에 맞춰 잘 만들어 놓으면
유용할 듯싶었다.
다만 VIEW는 수정/변경이 안 되는 것이라고 보며
삭제 후 다시 만들어야 한다!
제약조건 부분에서는
FOREGIN KEY -
부모 테이블에 존재해야지 자식 테이블에 존재할 수 있다.
CASCADE나 SET NULL 말고 - YN체크 칼럼 많이 사용
회사는 고객의 데이터를 쉽게 지우지 않는다.
DELETE는 무서운 명령어라고 하셨다 ㅎㅎㅎ
하긴. 10년 전 사진도 저장되어있고
내가 삭제한 사진도 휴지통이나 삭제한 사진으로 남아있는 것을 보면.
시퀀스는 배워서 바로 DB에서 활용해 보았는데
직접 입력하는 기능이 아닌 시작될 때 하나씩 늘려주는
. NEXTVAL 함수 잘 체크해놔야 할 듯!
후후 이번 주는 배운 내용들로 미니 프로젝트를 준비하고 있는데
오늘 배운 내용도 적용시켜서 퀄리티 업업 시키기!
'Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원 > 5월' 카테고리의 다른 글
22.05.27 - 회원 관리 기능 구현 [ 회원 정보 수정, 회원 탈퇴 ] (0) | 2022.06.01 |
---|---|
22.05.26 - 게시판 기능 구현 [ 등록, 목록 조회, 상세 조회 ] (0) | 2022.05.30 |
22.05.24 - 회원가입, 로그인 기능 구현 !! (0) | 2022.05.27 |
22. 05. 23 - 3차 시험! - 데이터베이스 구현 test (0) | 2022.05.25 |
22. 05. 20 - JOIN [ INNER, OUTER ] 집합연산자(UNION, INTERSECT, UNIONALL, MINUS ) (0) | 2022.05.24 |