티스토리 뷰
데이터조작어(DML)
테이블에 새로운 행 추가( INSERT )
테이블의 기존 행 수정( UPDATE )
테이블의 기존 행 삭제( DELETE )
트랜잭션(Transaction )
논리적인 작업 단위
여러 DML이 모여서 하나의 트랜잭션이 구성됨
DML 작업 후 COMMIT, ROLLBACK 으로 트랜잭션 종료해야함
COMMIT
- INSERT 나 UPDATE, DELETE 한 내용들을 확실하게 DB에 저장(영구히 반영하겠다.)
- 취소가 안 된다.
1 | COMMIT; | cs |
ROLLBACK
- 작업 후 미리보기시 마음에 안 들면 취소
- 해당 내용을 취소하고 저장하지않겠다 라는 의미
- 이전에 COMMIT 한 곳 까지만 복구
- COMMIT 한 후에 ROLLBACK은 안 된다.
1 | ROLLBACK; | cs |
미리보기(임시 데이터 상태 ) = 트랜잭션 상태
1. INSERT 구문
문법
1 2 3 4 5 | INSERT INTO table [ ( column [ , column ... ] ) ] VALUES ( value [ , value ... ] ); -- INSERT 절은 한 번에 한 행씩 삽입해야 한다. -- [ ] 는 생략 가능하다. | cs |
1 2 3 4 5 6 | SELECT * FROM departments; -- 부서 아이디가 겹치면 안된다. 부서번호 확인 -- 테이블 만들 때 어떤 순서로 만들었냐( DB 저장 순서 )에 따라 컬럼이 나열된다. -- DB 저장 순서 == 기본 컬럼 | cs |
1 2 3 4 | DESC departments; -- departments 테이블 구조 확인 -- 기본 컬럼 순서대로 보여 준다. | cs |
departments 테이블의 DEPARTMENT_ID 가 270번으로 끝이 나있다.
추가로 280번을 삽입
1 2 3 4 5 | INSERT INTO departments VALUES ( 280, 'IT', 200, 1700 ); -- 문자나 날짜는 ' ' 로 묶는다 -- 기본 컬럼 순서대로 값 나열 함 ( 컬럼 리스트 나열 X ) | cs |
1 2 3 4 5 | SELECT * FROM departments ORDER BY departments_id DESC; -- 제대로 들어가있는지 확인 ( 최근 정렬 ) | cs |
1 2 3 4 5 6 7 8 9 10 11 | INSERT INTO departments ( department_name, manager_id, lacation_id, department_id ) VALUES ( 'Oracle', 201, 1700, 20 ); -- 테이블 순서를 알면 컬럼 이름을 안 써도 되지만 -- 컬럼 순서 모를 때 -- 1. 마음대로 컬럼명 적기 -- 2. 컬럼명 적은 순서대로 값 넣기 | cs |
1 2 3 4 5 | SELECT * FROM departments ORDER BY departments_id DESC; -- 제대로 들어가있는지 확인 ( 최근 정렬 ) | cs |
1 2 3 4 5 6 7 8 9 | COMMIT; -- 저장하기 -- 이때까지는 미리보기 상태였다. -- COMMIT을 해야 데이터가 반영이 된다. -- 다만, -- 데이터베이스가 여러 사용자에게 열려있다면 -- COMMIT 을 해주지않으면 나만 여태까지 작업한 자료를 볼 수 있다. -- COMMIT 을 해줘야 반영이 되어서 다른 사람도 볼 수 있다. | cs |
1 2 3 4 | INSERT INTO departments VALUES ( 300, 'Java', NULL, NULL ); -- NULL 특수한 값 | cs |
1 2 3 4 5 | SELECT * FROM departments ORDER BY departments_id DESC; -- 제대로 들어가있는지 확인 ( 최근 정렬 ) | cs |
1 2 3 4 5 6 7 8 9 | INSERT INTO departments( department_id, department_name ) VALUES ( 310, 'Jsp' ); -- 짝이 반드시 맞아야 한다. -- 일부만 컬럼명 적으면 자동으로 NULL 값이 들어간다. -- NULL 값 넣는 것 2가지 방법 -- NULL 삽입 : 명시적 방법 -- NULL 생략 : 암시적 방법 | cs |
1 2 3 4 5 | SELECT * FROM departments ORDER BY departments_id DESC; -- 제대로 들어가있는지 확인 ( 최근 정렬 ) | cs |
1 2 3 4 5 6 7 8 9 | COMMIT; -- 저장하기 -- 이때까지는 미리보기 상태였다. -- COMMIT을 해야 데이터가 반영이 된다. -- 다만, -- 데이터베이스가 여러 사용자에게 열려있다면 -- COMMIT 을 해주지않으면 나만 여태까지 작업한 자료를 볼 수 있다. -- COMMIT 을 해줘야 반영이 되어서 다른 사람도 볼 수 있다. | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 | CREATE TABLE copy_emp AS SELECT * FROM employees WHERE 1 = 2 ; -- 서브쿼리를 이용한 테이블 생성 -- VALUES 대신에 서브 쿼리 사용 -- DML(데이터 조작어)0에도 사용 가능 -- 서브 쿼리 사용 -- : 다른 테이블로부터 데이터 복사해오기 -- 한 번에 여러 행 가능 -- employees와 구조가 똑같은 copy_emp 테이블 생성 -- ( employees 테이블을 복사한다. ) | cs |
1 2 3 4 5 6 | DESC copy_emp; -- copy_emp 테이블 구조 확인 -- employees 테이블 복사가 잘 되었는지 확인한다. -- 복사가 잘 되었으면은 -- employess 구조가 똑같이 나온다. | cs |
1 2 3 | DESC employees; -- employees 테이블 구조 확인 | cs |
1 2 3 4 5 | SELECT * FROM copy_emp; -- copy_emp 테이블에 데이터를 넣지않았기때문에 -- 데이터는 아무것도 없다. | cs |
1 2 3 4 5 | INSERT INTO copy_emp SELECT * FROM employees; -- employees는 테이블의 모든 것을 copy_emp 테이블로 복사한다. | cs |
1 2 3 4 | SELECT * FROM copy_emp; -- copy_emp 테이블에 employees 데이터 들어갔는지 확인하기 | cs |
1 2 3 4 5 6 7 8 9 | COMMIT; -- 저장하기 -- 이때까지는 미리보기 상태였다. -- COMMIT을 해야 데이터가 반영이 된다. -- 다만, -- 데이터베이스가 여러 사용자에게 열려있다면 -- COMMIT 을 해주지않으면 나만 여태까지 작업한 자료를 볼 수 있다. -- COMMIT 을 해줘야 반영이 되어서 다른 사람도 볼 수 있다. | cs |
'부산 ITWILL 학원 실습 > ORACLE' 카테고리의 다른 글
[SQL 활용] 7. 데이터조작어( DML ) - DELETE 구문 (0) | 2018.07.27 |
---|---|
[SQL 활용] 7. 데이터조작어( DML ) - UPDATE 구문 (0) | 2018.07.27 |
[SQL 활용] 6. 함수 사용하기 (0) | 2018.07.27 |
[Oracle VM VirtualBox] GUI 툴 SQL Developer 실행하기 (0) | 2018.07.27 |
[SQL 활용] 5. Subquery (0) | 2018.07.27 |