제약 조건 조회하기테이블에 제약 조건을 설정하면 과연 시스템에 기록이 될까?그렇다.설정된 제약조건을 딕셔너리에 저장되는데,이 딕셔너리를 조회하여 테이블에 설정되어 있는 제약 조건을 확인할 수 있다.특정 테이블의 제약 조건 조회하기SELECT table_name, column_name, constraint_nameFROM user_cons_columnsWHERE table_name = '테이블명(대문자로)'여기서 각 열은 다음과 같은 의미를 갖는다.table_name: 제약 조건이 적용된 테이블의 이름column_name: 제약 조건이 적용된 컬럼의 이름constraint_name: 제약 조건의 이름user_cons_columns 시스템 뷰를 사용하여 사용자가 소유한 특정 ..
DISABLE(비활성화)되어 있던 제약 조건을 ENABLE(활성화)하는 옵션도 NOVALIDATE / VALIDATE 로 두 가지가 있다.ENABLE NOVALIDATEENABLE NOVALIDATE 옵션은 제약 조건을 ENABLE하는 시점까지 해당 테이블에 들어 있는 데이터는 검사하지 않고 ENABLE한 시점부터만 제약 조건을 검사하는 옵션이다. 이와 달리, ENABLE VALIDATE 옵션은ENABLE VALIDATEENABLE VALIDATE는 제약 조건은 ENABLE하는 시점까지 테이블에 입력되어 있던 모든 데이터를 전부 검사하며,신규로 입력되는 데이터도 전부 검사하는 옵션이다.주의사항 1즉, ENABLE 옵션을 지정하는 순간 지금까지 입력한 모든 데이터를 검사하기 때문에, LOCK이란 것을 설정..
DISABLE의 종류NOVALIDATE'validate'. 즉, '확인'이라는 뜻이다.즉, 'novalidate'라는 것은 '확인하지 않는다'라는 뜻이다.이제 실제로 실습을 한번 해보겠다.PRIMARY KEY 설정이 돼있는 컬럼에 중복 데이터 삽입해보기INSERT INTO t_users VALUES(1, 'kevin');INSERT INTO t_users VALUES(1, 'kevin');*-- ERROR at line 1: unique constraint 쏼라쏼라이렇게 PRIMARY KEY가 설정되어 있는 컬럼이라 중복 데이터를 허용하지 않는다.이제 제약조건을 확인하지 않기 위해 NOVALIDATE설정을 적용해보겠다.NOTVALIDATE로 수정하기ALTER TLABE t_usersDISABLE NOVA..
ON DELETE CASCADE와 ON UPDATE CASCADE먼저, 사용하는 방법(예시)부터 빠르게 알아보자.부모 테이블 생성(기본 키 설정)CREATE TABLE superTable ( user_id VARCHAR2(100), CONSTRAINT super_user_id_PK PRIMARY KEY (user_id) );자식 테이블(sonTable1) 생성 - ON DELETE CASCADECREATE TABLE sonTable1 ( info_id VARCHAR2(100), user_id VARCHAR2(100), CONSTRAINT son_user_id FOREIGN KEY(user_id) REFERENCES superTable(use..
제약조건을 어디다 쓰죠?{#제약조건을-어디다-쓰죠}우리는 프로그램을 작성할 때, 올바른 데이터들만 입력받아야 한다.올바른 데이터란 뭔가요?프로젝트마다(업무 규칙에따라) 달라지겠지만,보통 올바른 데이터란 서버에서 처리할 수 있는 데이터라고 생각한다.서버에서 처리할 수 있는 데이터라고 통칭하기에는 A 프로젝트에서는 A 라는 값을 입력받아도 괜찮지만 B 프로젝트에서는 "Bb"값을 입력받으면 안 될 수도 있다.그게 뭔 소리에요..?프로젝트를 몇번 진행해보지 않은 사람들은 충분히 이해가 되지 않을 수 있다.예를 들어,A 프로젝트에서는 공지사항 등의 연락이 앱의 알람으로 보낼 수 있기 때문에 회원가입 시 고객의 전화번호가 굳이 필요하지 않아서 NULL을 허용한다.반면,B 프로젝트에서는 공지사항 등의 연락이 앱의 알..
MySQL - DATE_FORMAT(Column, 'DATE FORMAT')구분기호상세기호역할년%Y년도 - 4자리(2021, 2019, 2059, ...)%y년도 - 2자리(21, 19, 59 , ...)월%M긴 월(영문)%b짧은 월(영문)%m숫자 월 - 2자리(01, 02, 03, ... , 12)%c숫자 월 - 자리 수에 맞게(1, 2, 3, ... , 12)일%d일자(01, 02, 03, ... , 12)%W긴 요일 이름(영문)%e일자(1, 2, 3, ..., 12) 시%H시간(24시간)%I시간(12시간)분%i분 초%S초 Oracle SQL - TO_CHAR(Column Name, 'DATE FORMAT')DATE FORMAT대표적인 날짜 포맷 방식으로는년YYYY: 2021(년)YY: 21(..