티스토리 뷰

데이터조작어(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'2001700 );
 
-- 문자나 날짜는 ' ' 로 묶는다
-- 기본 컬럼 순서대로 값 나열 함 ( 컬럼 리스트 나열 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'201170020 );
 
-- 테이블 순서를 알면 컬럼 이름을 안 써도 되지만
 
-- 컬럼 순서 모를 때
-- 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'NULLNULL );
 
-- 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 = ;
 
-- 서브쿼리를 이용한 테이블 생성
-- 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

공지사항
최근에 올라온 글
Total
Today
Yesterday