반응형
Notice
Recent Posts
Recent Comments
Link
NOW OR NEVER
[DataBase] 데이터 정의어(DDL) 본문
반응형
데이터 정의어(DDL)
- create : 테이블 생성
- alter : 이미 있는 테이블 구조 변경
- drop : 테이블 삭제
create 문
- 테이블을 구성하고 속성과 속성에 관한 제약을 정의하고 기본키 및 외래키를 정의하는 명령
- create table 테이블이름(속성이름 데이터타입 제약, ... )
- 속성들은 ,로 구분
데이터 타입
- 정수형 : number
- 가변형 문자타입 : varchar2(글자수)
- varchar2의 괄호 안은 최대 늘어날 수 있는 크기(글자 수)를 뜻한다.
- 넣은 데이터가 3바이트라면 3바이트만큼만 차지한다.
- ex) varchar(20) : 최대 20바이트까지 저장할 수 있다. 단 한글은 3바이트 차지한다.
제약
- 속성이름 데이터타입 [not null | unique | default 기본값 | chect 체크조건] [primary key | foreign key]
not null
- 생략할 수 없음
- not null 인지만 판단하고 중복은 허용한다.
unique
- 중복할 수 없음
- 해당 컬럼의 값이 유일해야 할 때 설정하는 제약
- unique는 유일한지만 판별하기 때문에 null인 값을 허용한다.
check
- 조건을 만족해야 함
- check(조건식)
- 컬럼의 값이 특정조건을 만족해야 하는 경우 설정
- 조건 만족하지 않을 경우 에러 발생 : 체크 제약조건이 위배되었습니다
default
- 기본 값 설정
- 값을 넣을 때 값을 생략할 경우 기본값이 자동으로 추가됨 or 아니면 기본 값 넣을 자리에 default 작성해도 기본 값추가됨
- 값을 넣는다면 기본값은 무시됨
primary key
- 기본 키 설정
- 다른 레코드와 구별하기 위해 생략할 수 없고, 중복할 수 없도록 설정하는 것을 말함
- 다른 레코드와의 구별을 위하여 식별자로 사용할 때에 설정(주 식별자)
- 관계형 데이터베이스에서 모든 테이블에는 반드시 주 식별자를 설정하여야 한다.
- 때로는 두 개 이상의 컬럼이 합쳐져서 주 식별자가 되기도 한다.
- 설정 방식
- 컬럼 레벨에서의 설정 : primary key 설정할 때 컬럼에서 설정(컬럼이름 자료형 primary key)
- 테이블 레벨에서의 설정 : 맨 뒤에서 몰아서 설정(테이블 맨 뒤에 primary key(컬럼명1,컬럼명2,...))
- 2개 이상의 컬럼이 합쳐진 primary key 설정하기 : 테이블 레벨에서 설정 혹은 테이블 구조 변경(alter 문)으로 설정
- not null + unique와 비슷 : null을 허용하지 않고 중복을 허용하지 않는다
foreign key
- 참조 키(외래 키) 설정
- 참조키 : 어떤 칼럼의 값이 이미 있는 다른 테이블의 값을 참조해야 하는 경우에 사용하는 것
- 부모 테이블 : 참조되는 이미 있는 테이블
- 자식 테이블 : 참조하는 테이블
- 부모 테이블과 자식 테이블은 참조 키로 서로 관계(주종관계: 부모 자식 관계) 있다라고 한다.
- 오라클을 관계형 데이터 베이스(RDB : Relational DataBase)라 한다.
- 관계형 데이터 베이스 테이블을 개체(entity)라 표현하기도 한다.
- 참조 키를 설정 할 때 반드시 부모 테이블의 primary key로 설정된 주 식별자만이 참조 키로 설정될 수 있다.
- 어떤 컬럼의 값이 반드시 이미 있는 다른 컬럼의 값을 참조해야 되는 경우 참조키 설정
- 이미 있는 다른 테이블의 값을 반드시 참조해야 하는 것을 말함
- 설정방식
- 컬럼 레벨에서의 설정 : 컬럼 자료형 references 다른테이블(컬럼)
- 테이블 레벨에서의 설정 : 맨 뒤에서 몰아서 설정(테이블 맨 뒤에 foreign key(컬럼이름) references 다른테이블(컬럼))
- 참조 키를 설정 후 자식테이블에 레코드 생성시 부모테이블에 레코드가 반드시 먼저 insert가 되어 있어야 한다.
- 참조되고 있는 자식테이블이 있는 부모테이블을 삭제할 수 없다. 그래서 관계에 있는 테이블을 삭제할 때에는 자식테이블을 먼저 삭제해야 한다.
- foreign key(속성이름) references 다른테이블(컬럼) on delete cascade : 참조 키를 설정할 때 부모의 참조하고 있는 레코드가 삭제될 때 연쇄하여 자식의 레코드도 삭제하기 위한 옵션
개체 무결성과 참조 무결성
- 개체 무결성
- 모든 레코드(tuple)는 primary key로 설정된 주 식별자에 의해서 구별이 가능해야 함을 말한다.
- primary key는 null이 될 수 없고 중복을 허용하지 않는다.
- 이것을 만족하지 않는 경우를 개체 무결성에 위배된다라고 말한다.
- 참조 무결성
- 참조 키로 설정된 컬럼의 값은 반드시 부모테이블에 나타난 값이여야 한다.
- 그렇지 않은 경우 참조 무결성에 위배된다라고 말한다.
insert 문
- 테이블에 자료를 추가하는 방법
- insert into 테이블이름 values(값1, 값2, ...)
- 값의 수와 순서는 테이블의 구조와 동일해야 한다.
- insert into 테이블이름(컬럼이름1, 컬럼이름2, ...) values(값1, 값2,...)
- 컬럼이름 순으로 값이 와야 한다.
- not null로 설정된 컬럼의 이름은 반드시 값을 지정해줘야 한다.
alter 문
- 테이블의 구조 변경
- 새로운 컬럼 추가: alter table 테이블명 add 컬럼명 자료형;
- 컬럼 자료형 변경 : alter table 테이블명 modify 컬럼명 자료형;
- 컬럼 삭제 : alter table 테이블명 drop column 컬럼명;
- 컬럼에 null/not null 부여 : alter table 테이블명 modify 컬럼명 null / not null;
- 해당 컬럼 값 중 null 포함되어 있을 경우 부여 불가능
- 컬럼에 primary key 설정 : alter table 테이블명 add primary key(컬럼명);
- 다른 레코드와 식별하고자 할 때 컬럼명이 두 개 이상을 가져와 합쳐 primary key(=주 식별자)로 설정할 수 있다.
- 컬럼에 foreign key 설정 : : alter table 테이블명 add foreign key(컬럼명) references 부모테이블(컬럼명);
drop문
- drop table 테이블명
- 테이블을 삭제하는 명령(데이터만 삭제 : delete 테이블 where 조건문)
'Back-End > Database' 카테고리의 다른 글
[DataBase] 내장 함수 (0) | 2022.04.26 |
---|---|
[DataBase] 데이터 조작어(DML) - 명령어 (0) | 2022.04.25 |
[DataBase] 데이터 베이스 연동 프로그램 (0) | 2022.04.23 |
[DataBase] 데이터조작어(DML) - Sub Query (0) | 2022.04.22 |
[DataBase] 데이터조작어(DML) - Join (0) | 2022.04.21 |