글

라벨이 제약조건인 게시물 표시

데이터베이스 - 제약조건 관리

이미지
제약조건 관리 제약조건 추가 이미 테이블을 만든 상태에서 새롭게 제약 조건을 추가하는 것도 가능하다. 이 때 사용하는 것은 alter문이다. 문법은 다음과 같다. 이제 alter문을 사용해서 제약조건을 추가해보도록 하겠다. 먼저 테이블을 하나 만들어주자. 사원 번호에 대해서 일단 primary key를 적용한다. 이 테이블에 대해서 alter문을 통해 foreign key를 추가해보도록 하겠다. primary key인 사원번호에 대해서 참조하도록 한다. 제대로 제약 조건이 추가되었는지 확인해보자. P 타입의 primary key 제약 조건뿐만 아니라 R 타입의 foreign key 제약 조건 역시 추가되었음을 확인할 수 있다. 제약 조건 삭제 제약 조건을 삭제하는 경우 역시 alter ~ drop constraint 문을 사용한다. 위에서 생성했던 제약 조건을 한번 지워보도록 하자. 제대로 삭제가 되었는지 확인하자. cascade 조건 만약에 primary key를 삭제한다면 어떻게 될까? 당연히 앞서서 배웠 듯이 참조하고 있는 foreign key가 존재하기 때문에 오류 메시지를 출력할 것이다. 하지만 primary key를 삭제하는 동시에 이를 참조하고 있던 foreign key까지 한번에 삭제하는 방법이 있다. 이를 cascade 조건이라고 한다. 위에서 만들었던 사원 테이블에서 다시 foreign key를 추가하고 다음의 명령을 실행해보자. primary key를 삭제하는데 일단 오류 메시지가 출력되지 않는다. 그리고 해당 제약 조건을 참조했을 때, primary key 뿐만 아니라 foreign key까지 모두 삭제되는 것을 확인할 수 있다. 제약조건 비활성화 / 활성화 우리가 만든 제약조건에 대해서 삭제, 추가 외에도 비활성화, 그리고 이를 다시 활성화할 수 있다. 이에 대해서 알아보도록 하겠다....

데이터베이스 - 제약조건 종류

이미지
제약 조건 종류 not null 조건 not null 제약 조건은 해당 칼럼에 대해서 null값이 입력되지 않도록 제한한다. 그리고 not null 제약 조건의 경우에는 칼럼 수준에서만 이를 지정할 수 있다. 두 개의 제약조건을 만들고, 테이블을 생성하였다. 이 때, s_name에 대해서는 not null이라는 제약을 걸면서 제약조건의 이름을 정하지 않았지만, s_hiredate에 동일하게 not null이라는 제약조건을 걸지만 이에 대해서 이름을 지정해주었다. 이제 데이터를 삽입해보겠다. 먼저 정상적인 데이터를 삽입해본다. 다음은 제약조건에 어긋나는 데이터를 삽입해 보겠다. 이제 제약 조건에 대해서 user_constraints 테이블로부터 가져와보도록 하자. 하나의 제약 조건은 sys_c0010321이라는 이름으로 저장되어 있고, 나머지 하나는 sawon_s_hiredate_nn이라는 우리가 지정해준 이름으로 제약 조건이 저장되어 있다. 전자의 경우 이것이 무엇을 의미하는 제약 조건인지 알 수 없기 때문에 관리하는데 어려움이 있다. 따라서 제약 조건의 이름을 지정해주는 것이 관리하는데 유리하다. 게다가 제약조건의 타입이 C로 설정되어 있는데, 이는 뒤에서 배우겠지만 check 조건을 의미한다. unique 조건 unique 제약조건은 칼럼에 중복된 값이 입력되지 않도록 제한한다.  unique 조건을 연습하기 위해서 다음처럼 테이블을 하나 만들자. 이 때 부서번호에 대해서 unique 제약조건을 걸어둔다. 그리고 이를 확인하기 위해 다음처럼 행 데이터들을 삽입해보자. 중복된 부서번호 입력 시 제약 조건 위배라는 오류 메시지가 출력되고 있음을 확인할 수 있다. 이렇게 중복된 데이터에 대해서는 unique 조건이 적용되고 있는데, null값에 대해서는 어떨까? 부서 번호가 null 행 데이터를 두 개 삽입했다. null이라는 것은 중복 검사의 대...

데이터베이스 - 제약조건 확인하기

이미지
제약조건 확인 우리가 테이블 생성 시 만들었던 제약 조건을 확인해보도록 하자. 이를 위해서 cmd 창에서 다음과 같은 select문을 입력한다. 제약조건에 대한 내용은 user_constraints라는 딕셔너리 뷰에서 제공한다. 일단 제약 조건에 대한 내용이 출력되기는 하지만, 굉장히 보기가 불편하다. 이를 좀 더 편하게 보도록 하겠다. 또 다른 클라이언트 프로그램인 sql developer를 활용해보도록 하겠다. 먼저 sql developer에서 동일한 사용자로 접속한다. 그리고 질의 작성기에 똑같이 select문을 작성하자. 그리고 위의 초록색 재생버튼을 클릭하면 해당 질의문을 실행한다. 그 결과를 살펴보자. 우리가 cmd 창에서 봤던 것보다 훨씬 보기 편한 테이블의 형태로 출력된다. constraint_type은 해당 제약 조건이 unique인지 primary key인지 등을 식별해주고, 제약 조건의 이름, 그리고 해당 제약조건이 적용되는 테이블까지 출력되고 있다. 이 외에도 원하는 테이블을 들어가서 제약조건 탭으로 들어가면 제약조건에 대한 내용이 동일하게 출력된다. 칼럼명까지 확인하기 제약 조건이 걸려 있는 테이블뿐만 아니라 칼럼에 대해서까지 확인이 가능하다. 이를 위해서는 user_cons_columns라는 딕셔너리 뷰를 참조하여 column_name을 검색한다.