NOW OR NEVER

[DataBase] 데이터 조작어(DML) - 명령어 본문

Back-End/Database

[DataBase] 데이터 조작어(DML) - 명령어

LAURA 2022. 4. 25. 17:49
반응형

데이터 조작어(DML)

insert

  • 새로운 레코드(튜플) 삽입

기본 문법

  • insert into 테이블이름 values (값리스트)
    • 값 리스트는 테이블의 구조와 동일해야 한다.
    • ex) insert into book values(1,'재미있는 자바', '쌍용', 3000);
  • insert into 테이블이름 [(속성리스트)] values (값리스트)
    • 값 리스트는 속성리스트와 동일해야 한다.
    • ex) insert into book(bookname, publisher, price, bookid) values('즐거운 자바', '한빛', 40000,2);
    • not null이나 primary key는 반드시 속성리스트에 포함시켜야 한다.
  • null 제약
    • ex) insert into book values(3,'즐거운 오라클', null, null); or insert into book values(bookid, bookname) values(3,'즐거운 오라클');

bulk insert

  • 대량 삽입 : 한꺼번에 여러 개의 튜플을 삽입(이미 있는 테이블의 레코드(들)을 검색해서 insert하기)
  • insert into 테이블명1[(속성리스트)] select 속성이름(들) from 테이블명2; : 테이블 1에 테이블2에 관해 검색한 것들 insert 함
  • 속성리스트 작성할 경우 select 문도 그에 맞춰 작성
    • ex) insert into newbook(bookname, publisher, price, bookid) select bookname, publisher, price, bookid from book;

update

  • 자료의 수정
  • 특정 속성 값을 수정하는 명령어
  • 기본문법 : update 테이블이름 set 속성이름1=값1[, 속성이름2 = 값2,...] [where 조건식]
  • 한꺼번의 여러 개의 컬럼 수정 가능
  • 조건식
    • 조건식이 없으면 모든 레코드의 값 수정됨
    • 조건식이 있으면 조건식을 만족하는 레코드의 값이 수정됨
  • update 할 때 값이 오는 자리에 sub query 올 수 있음
    • update 테이블1이름 set 속성이름=(select 속성이름 from 테이블2이름 where 테이블2조건식 ) where 테이블1조건식

delete

  • 테이블에 있는 기존 튜플 삭제
  • 기본문법: delete [from] 테이블명 [where 조건식]
  • 조건식
    • 조건식이 없으면 테이블의 모든 레코드 삭제
    • 조건식이 있으면 조건식을 만족하는 레코드가 삭제
  • 해당 컬럼(속성)을 참조하고 있는 자식레코드가 있는 경우에 삭제할 때는 참조되고 있는 자식레코드를 먼저 삭제해야 한다.

rollback과 commit

  • commit; : 현재까지의 작업을 dbms에 반영
  • rollback; : DML 작업을 가장 최근의 commit 지점까지 취소
  • DCL이나 DDL은 자동 커밋 : dcl와 ddl 명령어 쓴 경우 그 이전의 한 dml의 내역이 다 반영이 되어 버린다. 그래서 rollback을 하더라도 돌아가지 못하므로 의미가 없다.

Tips

  • []는 생략 가능

  • conn c##sist/sist : 해당 사용자 계정으로 연결

  • 속성 = 컬럼= 필드, 레코드 = 튜플 = 행

  • 입력된 값이 sql상에서 한글 깨짐 현상 해결 : server.xml - 마우스 오른 쪽 - open with - xml editor - ctril + f Connector 검색 - 아래와 같이 변경

    <Connector 
      connectionTimeout="20000" 
      port="8000" 
      protocol="HTTP/1.1" 
      redirectPort="8443" 
      URIEncoding ="utf-8"/>
  • dual : 가상의 테이블

Comments