저번에 이어서 오늘은 자세한 sql 코드들을 노트정리 해보자
point3. DDL (Data Definition Language)
- 테이블(Table) 생성
- db를 사용하기 위해서는 테이블을 먼저 생성해야 한다.
테이블 관리 sql문
sql문 | 설명 |
Create Table | - 새로운 테이블을 생성한다. - 테이블을 생성할 때 기본키, 외래키, 제약사항 등을 설정할 수 있다. |
Alter Table | - 생성된 테이블을 변경한다. - 칼럼을 추가하거나 변경, 삭제할 수 있다. - 기본키를 설정하거나, 외래키를 설정할 수 있다. |
Drop Table | - 해당 테이블을 삭제한다. - 테이블의 데이터구조뿐만 아니라 저장된 데이터도 모두 삭제된다. |
- 기본적인 테이블 생성
Create Table 문 | 설명 |
Create Table | - 테이블 생성을 의미 - " ( ) " 사이에 칼럼을 쓰고 마지막은 세미콜론으로 끝난다. |
칼럼 정보 | - 테이블에 생성되는 칼럼 이름과 데이터 타입을 입력한다. - 칼럼 이름은 영문, 한글, 숫자 모두 가능하다. |
데이터 타입 | - number는 칼럼의 데이터타입을 숫자형 타입으로, varchar2 는 가변형 길이 문자열로 지정할 때 사용한다. - char는 칼럼 데이터 타입을 고정된 크기의 문자로 지정할때, date는 날자형 타입으로 지정할 때 사용한다. |
기본키 | 기본키를 지정할때 칼럼 옆에 primary key를 입력한다. |
테이블 구조 확인
DESC 테이블명 - 테이블 구조를 확인할 수 있다.
- 제약조건 사용
- 위의 예를 보면(주석부분) "constraint" 를 사용하여 기본키(empno) 와 기본키의 이름(emppk)을 지정할 수 있다.
- 만약 주석의 경우에서 두개의 기본키를 지정하고자 한다면 "constraint emppk primary key(empno, ename)"으로 지정하면 된다.
- sal 칼럼은 number(10,2) 로 지정했는데 이는 소수점 둘째 자리까지 저장하게 된다.
- Oracle db 에서 "sysdate"는 오늘의 날자를 조회한다. 이를 default 옵션을 사용해서 오늘 날짜를 기본값으로 지정할 수 있다.
- 외래키(foregin key)를 지정하려면, 먼저 마스터 테이블이 생성되어야 한다. 즉, 사원과 부서 테이블에서는 부서가 마스터 테이블이 된다.
- 테이블 생성 시 CASCADE 사용
- 테이블 생성 시 CASCADE 옵션을 사용할 수 있다. CASCADE 옵션은 참조관계 (기본키와 외래키 관계)가 있을 겅우 참조되는 데이터를 자동으로 반영할 수 있는 것이다.
기본키와 외래키를 설정해줬다.
DEPT 테이블에서 항목을 지웠더니 EMP 테이블의 항목도 같이 지워진다.
- 즉, ON DELETE CASCADE 옵션은 자신이 참조하고있는 테이블(DEPT)의 데이터가 삭제되면 자동으로 자신(EMP) 도 삭제되는 옵션이다.
- ON DELETE CASCADE 옵션을 사용하면 참조 무결성을 준수할 수 있다. 참조 무결성이란, 마스터테이블(DEPT)에는 해당 부서번호(DEPTNO)가 없는데, 슬레이브 테이블(EMP)에는 해당 부서번호가 있는 경우를 참조 무결성 위배로 볼 수 있다.
- 테이블(Table) 변경
ALTER TABLE 문
- 칼럼 변경같은 경우 modify 문을 사용하면 데이터 타입을 변경하거나 데이터의 길이를 변경할 수 있다.
- 칼럼 변경할 때 제약 조건을 설정할 수도 있다.
- 칼럼의 데이터타입을 변경할 때 기존 데이터가 있는 경우 에러가 발생한다. (기존과 변경하려는 자료형이 다를때)
- 테이블(Table) 삭제
DROP TABLE EMP;
- DROP TABLE 은 테이블의 구조와 데이터를 모두 삭제한다.
DROP TABLE EMP CASCADE CONSTRAINT;
- "CASCADE CONSTRAINT" 옵션은 해당 테이블의 데이터를 외래키로 참조한 슬레이브 테이블과 관계된 제약사항도 삭제할 때 사용
- 뷰(View) 생성과 삭제
- 뷰 란 테이블로부터 유도된 가상의 테이블이다.
- 실제 데이터를 가지고 있지 않고 테이블을 참조해서 원하는 칼럼만을 조회할 수 있게 한다.
- 뷰는 데이터 딕셔너리에 sql문 형태로 저장하되 실행시에 참조된다.
뷰의 특징
- 참조한 테이블이 변경되면 뷰도 변경된다.
- 뷰의 검색은 참조한 테이블과 동일하게 할 수 있지만, 뷰에 대한 입력, 수정, 삭제 시에는 제약이 있다.
- 특정 칼럼만 조회시켜서 보안성을 향상시킨다.
- 한번 생성된 뷰는 변경할 수 없고 변경을 원하면 삭제 후 재생서해야한다.
- alter문을 사용해서 뷰를 변경할 수 없다.
뷰의 장점과 단점
장점 | 단점 |
- 특정 칼럼만 조회할 수 있기 때문에 보안 기능이 있다. - 데이터 관리가 간단하다. - SELECT문이 간단해진다. - 하나의 테이블에 여러 개의 뷰를 생성할 수 있다. |
- 뷰는 독자적인 인덱스를 만들 수 없다. - 삽입, 수정, 삭제 연산이 제약도니다. - 데이터 구조를 변경할 수는 없다. |
오늘은 여기까지
28일이 시험이니까 적어도 20일 전까지는 모든 진도를 한번 끝내보자
'파이썬 > SQLD' 카테고리의 다른 글
[SQLD] 시험준비 3주 1일차 - DML2 (0) | 2022.05.16 |
---|---|
[SQLD] 시험준비 2주 5일차 - DML (0) | 2022.05.14 |
[SQLD] 시험준비 2주 3일차 - SQL 기본 및 활용 - SQL 종류 (0) | 2022.05.10 |
[SQLD] 시험준비 2주 2일차 - SQL 기본 및 활용 - 관계형db (0) | 2022.05.07 |
[SQLD] 시험준비 2주 1일차 - 데이터 모델과 성능 문제 + 데이터 모델링의 이해 단원 정리 문제 (0) | 2022.05.05 |