▶ DDL
● Data Definition Language 데이터 정의어
● Database 객체를 생성 create /수정 alter /삭제 drop하는 명령어
● 실행즉시 db에 반영되므로, TCL처리(commit,rollback)가 필요없다.
select object_type from all_objects;
-- 사용자 소유한 객체, 사용권한을 위임받은 객체를 모두 조회가능한 Data Dictionary
테이블 생성시 주석처리 확실히 comment on table/column
▶ CREATE
● 객체를 생성하는 명령어
● 컬럼작성시 컬럼명 자료형 [기본값] [제약조건] 순으로 작성
▶ CONSTRAINT
● 제약조건. 테이블의 컬럼에 대해서 데이터 무결성을 지키기 위해 설정하는 조건
● 데이터 무결성이란... 데이터가 일관되고, 정확하게 유지되는 것
1. not null (C) : 해당컬럼에 null값을 허용하지 않는다.
2. unique (U) : 레코드별로 해당컬럼에 중복을 허용하지 않는다.
3. primary key (P) : 식별자 컬럼을 지정. 레코드를 구별하기 위한 고유값을 가진 컬럼. 테이블당 하나만 허용.
4. foreign key (R) : 외래키. 부모테이블의 특정컬럼값만 사용가능하도록 제약.
5. check (C) : 해당 컬럼의 값의 범위/목록을 제한 (도메인을 설정하는 제약조건)
● 제약조건 조회 user_constraints
● 컬럼명 확인 user_cons_columns
▶ 제약조건 작성법 2가지
● 1. 테이블 레벨 - 컬럼 작성과 동일한 레벨에 작성
● 2. 컬럼 레벨 - 컬럼 설정시 옆에 작성
▶ NOT NULL
● 제약조건을 컬럼레벨에만 작성할 수 있다.
● 필수 입력 항목
● 테이블 레벨 작성
▶ UNIQUE
● 중복 허용 안됨
● null 허용 안함
▶ PRIMARY KEY
● 기본키. 레코드를 식별할 수 있는 식별자컬럼에 지정하는 제약조건.
● 테이블당 하나의 PK만 지정할 수 있다.
● 해당컬럼은 null을 허용하지 않고, 레코드별로 고유해야 한다.
● 단일컬럼 PK | 복합컬럼 PK
● 유니크제약 조건이 걸릴 만한 조건 ex) 아이디, , 이메일, 등... 단, 암호화처리 해야되는건 위험하다(전화번호, 주민번호)
● 하나의 행을 식별할 용도로 pk컬럼을 자주 사용
고유하기 때문에 가능
● 복합 pk 컬럼중 하나라도 null일 수 없다.
▶ FORIEGN KEY
● 외래키. 참조무결성을 위한 제약조건
● 부모테이블(참조되는 테이블)의 존재하는 값만 자식테이블(참조하는 테이블. 외래키)에서 사용이 가능하도록 제한함.
● 부모테이블의 참조컬럼은 pk/uq제약조건이 걸려있어야 한다.(중복값이 있는 컬럼을 참조할 수 없다.)
RDBMS = 테이블관의 관계/연결의 조건
● fk제약조건 삭제 옵션
● 1. on delete restricted (기본값) 부모레코드 먼저 삭제 불가
● 2. on delete set null 부모레코드 삭제시 자식레코드의 fk컬럼을 null로 변환
● 3. on delete cascade 부모레코드 삭제시 자식레코드 삭제
▶ CHECK
● 해당컬럼의 값의 범위, 목록을 제한하는 제약조건
● null허용
▶ ALTER
● table객체에 대한 alter구문은 컬럼/제약조건에 대한 수정시 사용한다
● 1. add 컬럼 / 제약조건 추가
● 2. modify 컬럼(자료형, default값, not null) 변경
not null은 수정
modify name not null
● 3. rename 컬럼 / 제약조건 이름 변경
● 4. drop 컬럼 / 제약조건 삭제
'Database' 카테고리의 다른 글
[SQL]DCL,TCL (0) | 2022.04.29 |
---|---|
[SQL]TOP-N (0) | 2022.04.27 |
[SQL] DML (0) | 2022.04.20 |
[SQL] 그룹함수 (0) | 2022.04.19 |
[SQL] join , set operator, (0) | 2022.04.18 |