본문 바로가기

데이터베이스(DB)/Oracle
[Oracle] 데이터 조작(DML)

// DML : 데이터 조작

- 데이터 삽입: INSERT

- 데이터 선택(검색) : SELECT

- 데이터 변경: UPDATE

- 데이터 삭제: DELETE


//데이터 삽입 : INSERT

- 테이블에 데이터를 추가하는 명령어 (행 추가)

- INSERT INTO 테이블명(컬럼리스트) VALUES (값리스트)

create table tblMemo (
    
    seq number(3) primary key,
    name varchar2(50),
    memo varchar2(1000) not null,
    regdate date default sysdate
    
);


1. 표준(권장)
    - 원본 테이블에 정의된 컬럼 순서와 개수대로 컬럼리스트를 만들고 그에 따라 값리스트를 구성하는 방법

insert into tblMemo (seq, name, memo, regdate) 
            values(seqMemo.nextVal, '홍길동', 'memo', sysdate);



2. 컬럼리스트 순서 변경
    - 원본 테이블에 정의된 컬럼 순서대로 컬럼리스트를 만드는 것이 아니라 자유롭게 순서를 바꾸어 컬럼리스트를 만들고 그에 따라 값리스트를 구성하는 방법
    - 컬럼리스트의 순서와 값리스트의 순서를 반드시 일치시켜야 한다.★★★★★★

insert into tblMemo (name, memo, regdate, seq)             
            values('gildong', 'memo2', sysdate, seqMemo.nextVal);



3. null 조작
    3-1. null 상수 사용 > 명시적       

insert into tblMemo (seq, name, memo, regdate)
              values(seqMemo.nextVal, null, 'memo', sysdate);


    3-2. 컬럼 생략 > 암시적       

 insert into tblMemo (seq, memo, regdate)
             values(seqMemo.nextVal, 'memo', sysdate);



4. default 조작
    ※주의! null 상수를 사용하면 사용자의 의사를 우선해서 default가 동작하지 않음.

    4-1. default 상수 사용 > 명시적       

insert into tblMemo (seq, name, memo, regdate)
             values(seqMemo.nextVal, 'honggildong', 'memo', default);


    4-2. 컬럼 생략 > 암시적       

insert into tblMemo (seq, name, memo)
             values(seqMemo.nextVal, 'honggildong', 'memo');


    
5. 단축 표현
    - 원본 테이블에 정의된 모든 컬럼에 해당하는 값리스트를 insert 할 때는 컬럼리스트를 생략할 수 있다.
    ※원본 테이블의 컬럼 순서와 값리스트의 순서가 일치해야 한다. > 값리스트의 순서를 절대 변경할 수 없다!!

insert into tblMemo values(seqMemo.nextVal, 'honggildong', 'memo', sysdate);



6. 테이블 복사

    6-1. 새 테이블 생성 후 값 복사

create table tblMemoCopy (
    
    seq number(3) primary key,
    name varchar2(50),
    memo varchar2(1000) not null,
    regdate date default sysdate

);

insert into tblMemoCopy select * from tblMemo;



    6-2. 새 테이블 생성 시 값 복사
        - 컬럼 구조는 복사가 되는데, 제약 사항은 복사되지 않는다.★★★★★
        - 실사용은 힘들고, 개발용으로 대용량의 더미가 필요한 경우에 사용

  create table tblMemoCopy as select * from tblMemo;

- 표준 방법으로 insert

insert into tblMemo (seq, name, memo, regdate) 
            values(seqMemo.nextVal, '홍길동', 'memo', sysdate);

- 테이블 복사

insert into tblMemoCopy select * from tblMemo;

//데이터 선택(검색) : SELECT

- SELECT <값목록> FROM <테이블명>

    ~ 모든 값 검색

SELECT * FROM MEMBER;


    ~ 원하는 필드만, 원하는 순서대로 검색

SELECT ID, PWD FROM MEMBER;


    ~ 원하는 필드만, 원하는 이름으로 설정하여 검색

SELECT ID USER_ID, PWD PASSWORD FROM MEMBER;
--SELECT ID AS USER_ID, PWD AS PASSWORD FROM MEMBER;


** 원하는 이름으로 설정할 때 공백을 사용하고 싶다면 ""로 감싸주면 된다.
    > 예약어나 컬럼명은 기본적으로 대소문자를 구분하지 않지만, 이름 설정에 ""를 사용하면 그대로 들어가니 주의!


//데이터 변경 : UPDATE

- 데이터를 수정하는 명령어

- 원하는 행의 원하는 컬럼값을 수정하는 명령어

- UPDATE 테이블명 SET 컬럼명=값>  [, 컬럼명=값] x N [where절];


- 모든 행의 값 변경하기

UPDATE MEMBER SET PWD='111'

- 특정 행의 값만 변경하기

UPDATE MEMBER SET PWD='123' WHERE ID = 'hanee';

UPDATE MEMBER SET PWD='111', NAME='하니' WHERE ID = 'hanee';

- 대한민국 수도를 서울에서 세종으로 변경하기

update tblCountry set capital = '세종' where name = '대한민국';

//데이터 삭제 : DELETE

- DELETE [FROM] 테이블명 [where절]

 


    ~ 테이블의 모든 행 삭제

DELETE MEMBER;

    ~ 특정 행의 값만 삭제하기

DELETE MEMBER WHERE ID='sorrel';

'데이터베이스(DB) > Oracle' 카테고리의 다른 글

[Oracle] 연산자  (0) 2023.02.13
[Oracle] 트랜잭션 처리  (0) 2023.02.11
[Oracle] 테이블 수정  (0) 2023.02.08
[Oracle] 데이터 형식  (0) 2023.02.07
[Oracle] 테이블 생성  (0) 2023.02.07