* SQL SCHEMA
- SQL에서의 스키마는 테이블을 포함한 각종 데이터베이스 객체들을 그룹핑하는 단위
- java의 package, C++의 namespace와 같음
- 테이블의 전체 이름은 <schema 이름>.<테이블명>
- 사용자에게 자신의 이름에 해당하는 schema 생성
1. 테이블 생성 명령어
create table <테이블 이름>
(
컬럼1 자료형1 [constraint 제약조건명] [제약조건],
컬럼2 자료형2 [constraint 제약조건명] [제약조건],
.
.
.
);
* not null : 해당 컬럼이 null 값을 가져서는 안됨을 나타냄
sname nchar(3) constraint snmae_always_exists not null
혹은
snmae nchar(3) not null
* primary key 제약 조건
- 해당 컬럼이 기본키임을 나타냄
- 테이블에 최대 한 번만 정의 가능
- null이 될 수 없음(개체무결성)
sno number(3) primary key
혹은
sno number(3) primary key(sno)
* unique 제약 조건
- 해당 컬럼의 값과 동일한 행이 존재할 수 없음을 나타냄
- 후보키 개념과 유사
- not null을 포함하지 않음
* foreign key 제약조건
- 해당 컬럼이 외래키임을 나타냄
- references 키워드를 통해 부모 테이블 및 피참조 컬럼 설정
sno number(3) references STUDENT(sno)
혹은
sno number(3), foreign key(sno) references STUDENT(sno)
- foreign key 옵션
- RESTRICT : 자식 행이 있으면 delete/update 불가(디폴트)
- CASCADE : 부모 행을 delete/update 하면 자식 행도 함께 delete/update (개체무결성)
- SET NULL : 부모 행을 delete하면 자식 행의 외래 키값을 null로 설정
* default 제약조건
- 기본값을 지정함
- 해당 컬럼의 값을 지정하지 않는 경우, 기본 값으로 설정
ex) year integer default 1
* check 제약조건
- 컬럼의 값이 만족해야 할 조건 명시
- 테이블이 변경될 때마다 check 제약조건이 지켜지고 있는지 확인됨
- 제약조건이 위반되면 에러와 함께 명령 취소
year number(1) default 1 check (year>=1 and year<=4)
혹은
year number(1) default 1, check (year>=1 and year<=4)
* alter table : 테이블의 정의 변경
- 컬럼 추가 및 삭제, 컬럼 자료형의 변경
alter table student drop column year;
- 제약 조건의 변경
alter table student add year number(1) default 1;
alter table student modify year integer default 2;
* drop table : 테이블 정의 및 모든 데이터 삭제
drop table STUDENT;
drop table STUDENT cascade constraints (연관된 외래키 정의도 삭제)
2. 카탈로그 보기
- all_catalog : 모든 테이블, 시퀀스, 뷰 등을 유지
- all_tables : 모든 테이블에 대한 상세한 정보 유지
- all_tab_columns : 모든 컬럼에 대한 정보 유지
- all_constraints : 모든 제약 조건에 대한 정보 유지
'CS > 데이터베이스' 카테고리의 다른 글
[DB] 6. SQL DML(INSERT, UPDATE, DELETE) (0) | 2022.07.15 |
---|---|
[DB] 6. SQL DML(SELECT) (0) | 2022.07.15 |
[DB] 6. SQL Basic (0) | 2022.07.15 |
[DB] 5. 관계 대수와 관계 해석 (0) | 2022.06.28 |
[DB] 4. 관계 데이터베이스 (0) | 2022.06.19 |