1. 자료입력
- 생성된 테이블에 새로운 자료를 삽입하는 명령
(사용형식)
INSERT INTO 테이블명[(컬럼명1,컬럼명2,...)]
VALUES(값1, 값2,...);
⇒ '컬럼명'과 '값'의 갯수와 순서, 데이터 타입이 일치해야 한다
⇒ '(컬럼명1,컬럼명2,...)'을 기술하는 경우 컬럼속성이 'NOT NULL'인 경우 '컬럼명'을 생략할 수 없다
(컬럼속성이 'NOT NULL'이 아닌 경우 '컬럼명'을 생략할 수 있으며 해당 컬럼에 배정되는 '값'도 생략해야 한다.
⇒ '(컬럼명1,컬럼명2,...)'이 생략되면 테이블에 기술된 컬럼 순서와 갯수만큼 '값'을 기술해야한다.
예제) 사원테이블에 다음 자료를 입력하시오
[자료]
사원ID 201703010003 200908050012 202001050001
사원명 홍길동 이미나 강감찬
주소 대전시 중구 대흥동 대전시 유성구 봉명동 서울시 성북구 장위동
전화번호 010-1234-5678 042-234-6789 010-0987-1234
직무명 구매 관리 설계
부서명 총무부 인사부 개발부
INSERT INTO EMP
VALUES('201703010003','홍길동','대전시 중구 대흥동',
'010-1234-5678','구매','총무부');
INSERT INTO EMP(EMP_ID,ADDRESS,EMP_NAME,JOB_TITLE)
VALUES('200908050012','대전시 유성구 봉명동','이미나','관리');
INSERT INTO EMP (EMP_ID,EMP_NAME,ADDRESS,TEL_NUM,JOB_TITLE,DEPT_NAME)
VALUES('202001050001','강감찬','서울시 성북구 장위동',
'010-0987-1234','설계','개발부');
UPDATE EMP
SET TEL_NUM='042-234-6789',
DEPT_NAME='인사부'
WHERE EMP_ID='200908050012';
SELECT * FROM EMP;
COMMIT;
ROLLBACK;
2. INSERT 문 (CONT....)
예제 ) 사업장테이블(CONST_SITE)에 다음자료를 삽입하시오
[자료]
사업장번호 : W1001
사업장명 : 다살아신축아파트 공사
사업장주소 : 대전시 대덕구 법동 345-10
사업장전화번호 : 042-6667-8889
공사금액 :
투입인원 : 3,456명
시공일자 : 오늘날짜
예상완공일 :
완공일자 :
비고 : 공사중
INSERT INTO CONST_SITE(SITE_ID,SITE_NAME,SITE_ADDRESS,SITE_TEL_NUM,
INPUT_PERSON_AMT,REMARKS)
VALUES('W1001', '다살아아파트','대전시 대덕구 법동 345-10','042-6667-8889', 3456, '0');
⇒ NOT NULL 인것은 반드시 들어가야한다. 컬럼명을 쓸때 생략되어질수 없다.
⇒ 나머지는 NULLALB 이기때문에 생략되어질수있다. 컬럼명을 기술하지 않아도된다.
⇒ 테이블 설계시의 컬럼과 이름이 똑같이 해야한다.
⇒ STIE_NAME을 20BYTE로 잡아놧는데 크기가 넘어가면 변경해줘야한다.
⇒ 한글은 글자당 3BYTE
⇒ VARCHAR(50)한것을 30만썻다하면 VARCHAR2는 20은 반납하게된다.
⇒ NUMBER(정수자리수, 소수자리수)
⇒ 숫자는 ' '를 붙이지 않는다.
⇒ 비고는 0으로 공사중표현
⇒ 순서를 확인한다.
⇒ DEFAULT가 SYSDATE라서 넣지않아도 오늘날자가 들어간다.
⇒ NULLABLE 인데 DEFAULT 값을 정의하지않으면 무조건 NULL이들어간다
⇒ 공사금액은 DEFAULT값이 0으로되어있어 입력하지않으면 0으로저장된다.
예제) 근무테이블(WORK) '이미니'사원정보를 입력하시오
사원번호 : '200908050012'
사업장ID : 'W1001'
근무시작일 : 오늘
근무종료일 : 모름
직무 : 관리
⇒ JOB_TITLE이 여러 테이블에 걸쳐있다.
한곳에서만 변경되면 업데이트어노말리가 발생 데이터의 일관성이 파괴될수있다.
⇒ 칼럼은 다쓸꺼라 바로 VALUES. 테이블생성시 입력한 컬럼의 순서대로 데이터를 입력해준다.
⇒ 모르는값은 ' '로 입력한다 WHITE SPACE = NULL값으로 처리된다. 오라클에서만
INSERT INTO WORK VALUES('W1001','200908050012',SYSDATE,'관리','');
3. DROP ( 개체삭제 )
- 오라클 개체 삭제 명령
- ROLLBACK의 대상이 아님 (삭제는 ROLLBACK의 대상이 아니다)
(사용형식)
DROP 개체종류 개체명;
예제) EMP 테이블을 제거하시오
DROP TABLE EMP;
⇒ 실행하면 삭제가 되지않는다.
⇒ 오류 : An attempt was made to drop a table with unique or primary keys referenced by foreign keys in another table.
⇒ 방법1. 연관되어있는 하위 테이블부터 드롭시키고 관계가 모두 짤린다음에 드롭시킬수있다
⇒ 방법2. 드롭으로 왜래키설정을 지워서 관계를 자르고 드롭시킬수있다.
⇒ 방법3. 리커시블, 관계를 맺고있는 하위의 테이블 부터 모두 지워버린다. (쓰지말아야함)
⇒ 같은 컬럼은 DATA_TYPE 과 수까지 같아야한다. 공백도 안됨.
4. DELETE ( 테이블 내의 자료 삭제 )
- DELETE 문 사용
- 외부테이블에서 참조된 행을 삭제 불가
- ROLLBACK이 적용됨 ⇒ 직전의 COMMIT 상태로 돌아감
⇒ WORK 테이블에서 이미나는 삭제가능 EMP 에서 이미나는 삭제불가능 WORK테이블에 참조되고있어서
⇒ 부모테이블의 참조되어지는 행은 삭제가 불가능하다.
(사용형식)
DELETE 테이블명
[WHERE 조건];
. WHERE 절이 생략되면 '테이블'의 모든자료 삭제
예제) 사원테이블에서 '이미나'사원정보를 제거하시오
DELETE EMP
WHERE EMP_NAME='이미나';
⇒ 삭제되지 않는다 integrity constraint (HJG.FK_WORK_EMP) violated - child record found
⇒ WORK에서 참조하고 있기 때문에 삭제되지 않는다.
예제) 사원테이블에서 '강감찬'사원정보를 제거하시오
DELETE EMP
WHERE EMP_NAME='강감찬';
⇒ 삭제가 된다.
SELECT * FROM EMP;
⇒ 강감찬이 삭제된것을 확인할 수 있다.
ROLLBACK;
⇒ 삭제되었던 것을 다시 되돌린다.
⇒ DROP, CREATE 는 롤백적용이안된다.
DROP TABLE WORK;
⇒ WORK TABLE이 삭제됨
ROLLBACK;
⇒ 롤백이 되지않는다.
⇒ WORK TABLE을 삭제했기때문에 EMP CONST_SITE 모두 삭제할수 있다.
⇒ 참조중인것을 삭제했기 때문에
'데이터베이스 > ORACLE' 카테고리의 다른 글
6. 숫자형 ( NUMBER ) (0) | 2021.03.15 |
---|---|
5. 문자열 ( VARCHAR, CLOB ) (0) | 2021.03.15 |
4. SQL명령 / 자료형 ( CHAR ) (0) | 2021.03.15 |
3. ALTER (0) | 2021.03.15 |
1. CREATE TABLE (0) | 2021.03.15 |