일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- tomcat
- distinct
- Bootstrap
- JavaScript
- ||
- rownum
- 모조칼럼
- Oracle SQL
- HTML
- oracle
- sql developer
- CRUD
- github
- 답변형 게시판
- group by
- 부트스트랩
- Java
- HTTP Status 500
- jQuery
- 이클립스
- 한글 인코딩
- git
- Oracle DB
- HTTP Status 404
- JSP
- 과정평가형
- alias
- SQL
- 성적프로그램
- 제약조건
Archives
초급의 끄적거림
[SQL] 제약조건 (constraint) 1 본문
[★★ 제약조건 (constraint) ★★]
1) 정의 : 테이블의 해당 칼럼에 원치 않은 데이터가 입력/변경/삭제 되는 것을 방지하기 위해 테이블 생성 또는 변경시 설정하는 조건 (최대한 무결한 DB를 만들기 위해 제약조건 설정, 강제성 有)
2) 종류
primary key | - 기본키, 유일성, null 값을 인정하지 않음 (=px) - 테이블당 1개만 가능 |
foreign key | - 외래키, 자식테이블이 부모테이블 칼럼을 참조 - references 부모테이블(칼럼명) |
unique | - 중복을 허용하지 않음 (pk와 비슷하지만 pk는 절대로 null을 허용하지 않고 unique는 null 값 1번 허용, 두 번은 중복이라서 안 됨) - 테이블에 1개 이상 가능 |
check | 특정 데이터만 입력가능 |
not null | 빈 값을 허용하지 않음 |
+) default는 조건이라고 보기는 어려움
[제약조건을 테이블에 반영]
1) 제약조건을 반영한 테이블 생성하기
- 주로 만드는 조건 형식 : constraint 테이블명_칼럼명_제약조건줄임말 primary key (제약조건)
→ constraint 테이블명_칼럼명_제약조건줄임말 : 이름을 주는 것, 굳이 필요는 없음 (자동 생성)
create table c_emp(
id number(5) constraint c_emp_id_pk primary key
,name varchar2(25) constraint c_emp_name_nn not null
,salary number(7,2) default 0
,phone varchar2(15) constraint c_emp_phone_ck check(phone like '1234-%'
,dept_id number(7) constraint c_emp_dept_id_fk references dept (deptno)
);
주석>
id~~ primary key | - 칼럼명 한글X, number(5) : 최대 5자리까지 허용 (0~99999) - id의 성격이 특정된 것이기 때문에 유일성을 가지고 있는 제약조건 primary key 이용 |
name ~ not null | - 이름도 pk를 사용할 수 있지만 이름은 동명이인의 경우가 있어서 pk, unique 빈도 ↓, 주로 not null 사용 |
salary ~ default 0 | - default 0 : 제약 조건이라하기는 어렵지만 데이터가 아무 값도 들어오지 않으면 0을 넣으라는 의미 |
phone ~check | - default 0 : 제약 조건이라 하기에는 어렵지만 데이터가 아무 값도 들어오지 않으면 0을 넣으라는 것. - '1234-%' : 앞글자가 반드시 1234- 로 시작해야한다는 의미 - check() 의 괄호에는 기본적으로 사용하는 sql문이 들어갈 수 있음 |
dept_id ~ references | - dept가 있는 부모테이블을 아직 안 만들었기 때문에 오류 발생 ※ 오류보고 -ORA-00942: table or view does not exist - 부모테이블이 없을 때는 오류가 나다가 부모테이블 (dept)을 만들고 난 뒤에는 오류없이 테이블이 생성되는 것을 볼 수 있음 |
2) 제약조건 이름 검색
- 제약조건 목록 확인 (데이터사전)
select * from user_constraints; - 접두어가 user인 경우, 사용자가 만든 제약조건을 검색
select * from user_constraints where table_name='DEPT'; -- table_name이 DEPT 인 것의 제약조건의 목록
select * from user_constraints where table_name='C_EMP'; -- table_name이 C_EMP 인 것의 제약조건의 목록
3) 제약조건은 수정할 수 없고 삭제만 가능함.
- alter table 테이블명 drop constraint 제약조건명;
: 제약조건명이 c_emp_name_nn 를 삭제 하시오.
alter table c_emp drop constraint c_emp_name_nn
4) 제약조건 추가하기
- alter table 테이블명 add constraint 제약조건명 바꿀 제약조건;
- not null 로 제약조건을 바꿈
: alter table 테이블명 modify(필드 자료형 제약조건명(=not null);
: name에 not null 조건을 지우고 unique 조건 추가
alter table c_emp add constraint c_emp_name_un unique(name);
★ not null 제약조건은 add로 할 수 없고 modify 이용
: name에 not null 조건 추가
alter table c_emp modify(name varcar2(25) constraint c_enp_name_nn not null);
select * from usert_constraints where table_name='C_EMP'; -- 실행을 통해 c_emp_name_nn 으로 변경 된 것을 확인 할 수 있음
'DB > Oracle' 카테고리의 다른 글
[SQL] 제약조건 (constraint) 2 (0) | 2019.07.20 |
---|---|
[SQL] Oracle SQL Developer 기본적인 사용법 (0) | 2019.07.20 |
[SQL] Oracle SQL Developer 설치 / 접속 (0) | 2019.07.20 |
[SQL] DCL/DDL/DML 명령어 & 기본 명령어 (0) | 2019.07.19 |
[SQL] Sequence (시퀀스), 오라클DB 함수 (0) | 2019.06.25 |
Comments