https://www.evernote.com/shard/s401/nl/152133992/3dd2986b-8306-441a-9a02-9f160f6cff96?title=10.29
수업중 필기.
1.제약사항(Constraint)
: 테이블에 필요한 값만 넣기위해 설정, 제약사항명은 유일해야한다.
-primary key
*column level constriant : 컬럼설정 바로뒤에 제약사항을 설정하는것
create table 테이블명(
컬럼명 데이터형(크기) constraint 제약사항명 제약사항종류,
~
);
*table level constraint : 테이블 생성시 컬럼을 모두 정의한후 설정하는 것
create table 테이블명(
컬럼명 데이터형(크기),
~,
constraint 제약사항명 제약사항종류(컬럼명,,,),
conatraint 다음제약사항명~~~,
);
: 컬럼값에 null을 허용하지 않으면서(모두 값을 가지면서) 유일하게 관리해야 할때 사용. 만족하지 않으면 Error난다.
-order by나 rank함수 없이도 조회시 PK기준정렬한다.
-다른테이블(자식테이블)이 foreign key로 참조할수 있고, 컬럼 하나또는 하나이상일수 있다.
-여러칼럼으로 pk구성시 모든컬럼에 동일값이 들어가는 경우에만 Error난다.
-user constrains 테이블에서 조회할수 있는데 select * from user_constraints; 로 조회가능하다.
-sys~로 된 명은 시스템이 알아서 준것으로 지정하지 않았을때 이렇게 저장된다. 구분하기 쉽지않아 제약사항명을 정해주는것을 권장한다.
-조회시에 status가 enabled로 비활성화 되어있으면 제약사항에 위배되어도 저장할수있다.
-단, 다시 활성화시에 문제가 발생하는 데이터를 수정하거나 지워야할수있다.
-테이블을 지울때 제약사항명도 휴지통으로 이동되며, 휴지통을 비워야 완벽히 사라진다.
-최초레코드삽입시,성공하게 되어있고
-같은필드값이 들어갈경우, 문자열에 null이 입력되는경우('' or 컬럼생략insert) Error
-여러개의 칼럼이 pk로 구성되는경우 테이블단위 제약사항으로 설정가능하다. 여러개 모두 중복값을 가질때, 하나라도 null추가시 Error
-foreign key
*column level constriant : 컬럼설정 바로뒤에 제약사항을 설정하는것
create table 테이블명(
컬럼명 데이터형(크기) constraint 제약사항명 제약사항종류 references 부모테이블명(컬럼명),
~
);
*table level constraint : 테이블 생성시 컬럼을 모두 정의한후 설정하는 것
create table 테이블명(
컬럼명 데이터형(크기),
~,
constraint 제약사항명 제약사항종류(컬럼명,,,),
conatraint 다음제약사항명~~~,
);
: 다른테이블의 PK컬럼값과 동일한 값으로만 추가할때 설정. 테이블간의 관계를 형성시키고 참조키를 가진테이블은 자식테이블, 참조하는 테이블은 부모테이블이다. 이 관계를 도식화해놓은 것을 ERD라고 한다.
-중복값 허용, null허용 , 대신에 값이 들어온다면 부모테이블과 같은 값만 받을 수 있다.
-하나의테이블에 여러개 설정이 가능하며, 부모테이블에서 자식레코드가 발견돼면 삭제할수 없다.
-(on delete cascade옵션을 설정하면 부모레코드 삭제시 모든 자식레코드 함께 삭제
-자식테이블의 컬럼명은 부모테이블의 컬럼명과 같을 필요는 없으나 데이터형과 크기는 동일하게 설정.
-예제보는중
-unique
-check
-not null
-(제약사항은 아니지만) default
2.Alter (다양한것을 바꾸어준다)
-alter의 여러쓰임