2016년 1월 20일 수요일

[oracle]insert문

일반적인 insert 문

문법

insert into 테이블이름 (컬럼,컬럼,컬럼,컬럼,...)
values (값,값,값,값,...)

*추가할 칼럼수와 values () 안에 입력되는 갯수 가 같아야한다.
*컬럼의 데이터 타입과 입력되는 데이터타입이 일치해야한다.
(오라클에서 자동 바인딩 되는 date 타입은 'YY/MM/DD', 'DD-MON-YY' 형식의 문자열로 입력 가능하다.)


*insert 시 발생될수 있는 오류
1. 컬럼수 불일치
2. 데이터 타입 불일치
3. pk로 설정된 타입에 중복입력및 미입력
4. null 또는not null 제약조건에 위배
5. fk로 설정된 (참조키)로 컬럼에 참조테이블에 기본키로 설정된 값이 없는경우
6. 고유기로 설정된 unique 값 이 아닐때 (중복)
7. check 제약조건 이 설정된 컬럼의 경우 지정 값 이외의 값이 입력 되었을때.
8. 입력된값의 데이터 크기가 칼럽의 크기보다 더 클때

해결 방법

1,2 번의 경우

describe 테이블명 으로 데이터 타입과 컬럼개수를 확인한다.

3,4,5,6,7 번의 경우

select * from user_constraints from '테이블명'  (대문자)
로 제약조건을 검색하여
serach_condition 컬럼의 제약조건사항을 확인한다.

5번의 경우 입력되는 컬럼값이 참조테이블의 기본키로 데이터가 들어있는지 확인한다.



서브쿼리가 있는 insert 문

문법

insert into 테이블명 (컬럼, 컬럼, 컬럼,...)
select 컬럼, 컬럼, 컬럼,... from 테이블 where 조건절

*insert 문의 칼럼수의 select 절의 칼럼수는 동일해야한다.
*insert 문의 칼럼과 select 절의 칼럼의 데이터타입이 일치해야한다.
*select 절의 컬럼순으로 데이터가 입력된다.


예)

Course 테이블에서 교수번호가 'P12' 인 교수의 개설과목을 T_course  테이블에 저장하기


insert into t_courese(course_id, title, c_number, professor_id)
select course_id, title, c_number, professor_id from course where professor_id = 'P12';




댓글 없음:

댓글 쓰기

[lunux]리눅스 폴더별 용량 확인

리눅스 폴더별 용량 확인 조회 하고자 하는 디렉토리 리스트가있는 경로로 이동후 du -h --max-depth=1