DDL(alter) 문은 암시적으로 commit을 수행합니다. 따라서, insert -> insert -> alter 가 수행되었다면 사실 insert -> insert -> alter -> (commit)과 동일한 의미라는 것이죠. 이전에 수행된 것 까지 모두 수행됩니다.
Number 타입의 경우 이미 row가 입력되어 있는 경우에는 Alter 문을 사용해서 데이터 타입의 크기를 축소할 수 없습니다. 데이터 타입의 크기를 변경하여 기존의 데이터의 퀄리티가 문제가 될 수도 있으니까요.
Drop 을 사용하여 테이블 T1을 삭제하려고 할때, 만약 테이블 T2가 T1의 PK를 FK로서 사용하고 있다면, T1을 삭제할 수 없습니다. 그래도 삭제하려면, CASCADE CONSTRAINTS를 사용하면 되기는 하죠. 하지만, 이건 쓰지마세요. 참조하고 있는 테이블들을 다 날려버리거든요 호호.
PK는 null을 허용하지 않지만, Unique Constraint의 경우는 null을 허용합니다. 따라서, PK로 설정된 column에는 Null 값이 들어올 수 없지만, unique constraint로 설정된 column에는 Null값이 들어올 수 있습니다. 그리고, 이미 null이 이미 들어와 있더라도 또 null이 들어오는 것도 문제가 없죠.
CHAR(4)의 경우는 4칸보다 작은 크기의 스트링이 들어오면 빈칸을 채워서 4칸으로 만들고, VARCHAR(4)의 경우는 1칸이 들어오면 1칸을 그대로 저장합니다.
DELETE는 DML 문이고, TRUNCATE는 DDL문입니다. DELETE Table을 하면, 아직 commit이 되지 않았으므로 rollback이 가능한데, TRUNCATE Table은 commit이 되었기 때문에 Rollback이 불가능하죠.
댓글남기기