DDL은 데이터 정의어
데이터 정의어는 데이터베이스에 스키마 객체 생성, 변경, 제거 등을 수행한다.
테이블 뿐만 아니라 db에서 제공하는 뷰, 인덱스 등 다양한 객체들을 생성, 변경, 제거하는 것도 똑같이 수행된다.
테이블을 정의하기 위해서는 테이블의 어떤 필드들을 정의하고 어떤 데이터 타입인지, 자리를 얼마나 차지할 지 정보가 필요하다. 이를 수행하기 위해 데이터 타입을 정의해줘야 한다.
create table로 테이블을 생성하는데 테이블이 아닌 다른 객체를 생성하고 싶으면 table 대신 다른 객체명을 입력하면 된다.
필드명과 타입을 입력하고 NULL이나 디폴트 값 등의 제약조건을 작성해준다.
그리고 PRIMARY KEY(필드명) 으로 어떤 필드를 PRIMARY KEY로 설정할 지 정할 수 있다.
이런 식으로 생성할 수 있다. PRIMARY KEY는 위와 같이 필드를 정의할 떄 같이 적어도 되고 필드를 전부 정의하고 나서 마지막에 PRIMARY KEY(필드명)으로도 지정할 수 있다.
book 이라는 테이블을 생성한다
필드명은 isbn, title, price이고 각각의 자료형도 지정해준다.
테이블 수정은 alter를 이용한다.
컬럼을 추가하기 위해서는 add, 삭제하기 위해서는 drop을 사용한다.
change라는 키워드를 이용해서 컬럼을 수정할 수 있다.
필드명을 새 필드명과 작성한 타입, 제약조건으로 바꿔준다.
emp 테이블의 dept no와 dep 테이블의 dept no가 foriegn key 관계일 때 emp 테이블의 dept no는 dep 테이블에 있는 값만 넣을 수 있다.
이렇게 테이블간에 관련이 있을 때 제약조건으로 작용하여 테이블이 삭제되지 않을 수 있다.
employee 테이블에 데이터를 insert 하는데 deptno의 값을 department에 없는 값으로 넣자 foreign key 어쩌구 하면서 오류발생 하는것을 확인할 수 있다.
이러한 관계 때문에 department 테이블을 employee 테이블보다 먼저 삭제할 수는 없다.