제약조건(constraint)
정의
- 테이블의 해당 칼럼에 원치않는 데이터가 입력/변경/삭제되는 것을 방지하기 위해 테이블 생성 또는 변경 시 설정하는 조건
종류
- PRIMARY KEY : 기본키, 유일성 NULL값을 인정하지 않음 -> 테이블당 1개만 가능
- FOREIGN KEY : 외래키, 자식테이블이 부모테이블 칼럼을 참조 -> REFERENCES 부모테이블(칼럼명)
- UNIQUE : 중복을 허용하지 않음 -> 테이블에 1개 이상 가능
- CHECK : 특정 데이터만 입력가능
- NOT NULL : 빈값을 허용하지 않음
예시
- 주민번호는 PK / 이메일,핸드폰번호는 UNIQUE
제약조건을 반영한 테이블 생성
제약조건은 중복사용 가능
CONSTRAINT 제약조건명 은 생략할 수 있음
예시) PRIMARY KET 만 쓸 수 있음
1 |
|
1-1) 제약조건 이름 검색하기
제약조건 목록 확인(데이터사전)
테이블 네임으로 검색할때는 대문자!
1 |
|
1-2) 제약조건 삭제
제약조건은 수정할 수 없고 삭제만 가능
1 |
|
1-3) 제약조건 추가
1 |
|
1-4) NOT NULL 제약조건
NOT NULL 제약조건은 ADD로 할 수 없고 MODIFY로 가능
1 |
|
2-1) id 칼럼에 PK제약 조건 추가하기
1 |
|
2-2) CHECK 제약조건
CHECK 제약조건에 걸렸을 때의 오류 메시지
ORA-02290: check constraint (JAVA0514.C_EMP_CK) violated
1 |
|
2-3) UNIQUE 제약조건
오류메시지
ORA-00001: unique constraint (JAVA0514.C_EMP_UN) violated
1 |
|
2-4) FOREIGN KEY 제약조건
부모테이블에 없는 데이터가 들어가려고 하면 오류남.
ORA-02291: integrity constraint (JAVA0514.C_EMP_DEPT_ID_FK) violated - parent key not found
1 |
|
DISTINCT
칼럼에 중복내용이 있으면 대표값 1개만 출력
- 형식
1 |
|
- 예시
1 |
|
GROUP BY 절
칼럼에 동일 내용끼리 그룹화를 시킨다.
대표값 1개만 출력
GROUP BY에 의한 결과값이 오로지 1개만 존재하는 값만 조회할 수 있어서 집계함수와 많이 쓰인다
- 형식
1 |
|
- 집계함수
1 |
|
성적테이블(연습용)로 GROUP BY절 연습하기
- 성적 테이블 구조
1 |
|
- 성적 데이터 입력(행 삽입)
1 |
|
문) 각 주소별 인원수
1 |
|
주소별 인원수를 구한 후 주소순으로 정렬
1 |
|
주소별 인원수를 구한 후 인원수 순으로 내림차순 정렬
1 |
|
주소별 국어점수 평균을 구한 후 국어점수 평균순으로 내림차순 정렬
1 |
|
지역별 국,영,수 최고점을 지역별 순으로 정렬해서 조회
1 |
|
문) 지역별로 그룹핑을 하고, 만일 지역이 같다면 2차 그룹으로 수학 점수별 그룹핑 하기
1차 값이 동일하다면 그 그룹내에서 2차 그룹이 가능하다!!
1 |
|
문) aver 칼럼값 구하고 aver칼럼값이 50인 이상 레코드 대상으로 지역별 국영수 평균을 반올림 소수점 한자리까지 구한 후 조회
평균구하기
1 |
|
aver칼럼 50 이상 조회
1 |
|
지역별 국영수 평균 반올림 소수점 한자리 조회
1 |
|
GROUP BY 와 쓰는 조건절
HAVING 조건절
- 그 외에 WHERE조건절과 ON 조건절 (테이블 조인할때!) 사용하는 조건절 들이 있다.
1 |
|
문) 지역별 국어점수 평균을 구한 후 그 평균이 80점 이상인 지역만 조회
1 |
|
국어평균 60~79점 사이만 조회
1 |
|