개발자/JSP

[SQL] DB Table 제약조건

푸루닉 2022. 12. 9. 11:01

- primary key 기본키 (서로 다른 레코드를 구분할 수 있는 대표값)
select의 조건으로 기본키를 사용하면, 오로지 한 개의 레코드만 조회할 수 있다
public DTO selectOne(int idx) { ... }

- unique 고유키 (다른 레코드의 컬럼값과 중복될 수 없음)
중복 불가
회원 관리 테이블이 있다면, 회원 번호는 기본키, ID는 고유키

- not null 필수값 (값을 반드시 입력해야함)
제약조건이 없으면, 값을 비워둘 수 있지만
not null이 있으면 반드시 값을 입력해야 한다. 없으면 추가하거나 수정할 수 없다

- dfault 기본값 (값을 입력하지 않았을 때 적용되는 값)
자동으로 채울 수 있는 값. 데이터 생성 시간이나 시퀀스를 활용한 값을 사용한다.

- check 특정값 (조건에 맞는 값만 입력할 수 있음)
최종학력, 혹은 성별 등 정해진 값만 입력받기 위한 장치
HTML의 select 혹은 radio와 연동하는 경우가 많다
정해진 범위의 숫자값을 입력받을 때도 사용할 수 있다

- foreign key 외래키 (다른 테이블의 특정 값을 참조하는 값)
다른 테이블의 데이터를 찹조해야만 한다
댓글은 게시글 번호를 가지고 있어야 작성할 수 있다
이때 댓글에는 게시글 테이블의 글번호 칼럼을 참조해야 한다
게시글에 없는 번호는 작성할 수 없다

 

create table member2 (
	idx		number		primary key,
	userid		varchar2(100)	unique not null,
	userpw		varchar2(255)	not null,
	username	varchar2(100)	not null,
	joinDate	date		default sysdate,
	gender		varchar2(10)	check(gender in('남성', '여성')),
	profileImg	varchar2(255)	
);
-- not null을 포함하지 않으면 필수 입력값이 아니므로 비워 둘 수 있다

desc member2;

commit;

-- 테이블 이름은 대문자로 작성하기
select * from user_constraints where table_name = 'MEMBER2';

select * from member2;

insert into member2 (idx, userid, userpw, username, gender) values (
    2,
    'test2',
    '1234',
    '테스트',
    '남성'
);
    
commit;

'개발자 > JSP' 카테고리의 다른 글

[JDBC] XML  (0) 2022.12.12
[JDBC] 시퀀스를 활용하여 idx값 출력 (제약조건++)  (0) 2022.12.09
[JDBC] 자바와 sql 연결 후 출력하는 방법  (0) 2022.12.06
[JSP] 세션(session)  (0) 2022.12.05
[JSP] 쿠키(Cookie)  (0) 2022.12.02