데이터베이스

데이터베이스_K_Digital_chapter07

강용민 2022. 8. 19. 14:26

DML(Data Manipulation Langague ) - 데이터 조작어

데이터베이스의 테이블에 들어있는 데이터를 조회, 변형(데이터 삽입, 수정, 삭제)의 명령어들을 의미한다.

  • insert : 테이블에 새로운 레코드 추가 시 사용되는 명령어
  • update : 테이블에 기존 레코드 변경 시 사용되는 명령어
  • delete : 테이블에 기존 레코드 제거 시 사용되는 명령어
  • merge : 두개의 테이블의 내용 병합 시 사용되는 명령어

Insert

  • 레코드를 테이블에 추가하는 명령어이다.
  • 표기법 : insert into 테이블명(컬럼명1, 컬럼명2,...) values(값1, 값2,...)
  • 컬럼명 부분은 생략 가능하다. 대신 모든 컬럼에 데이터를 추가해야한다.

컬럼명을 기술해야 하는 경우

  • 모든 컬럼에 값을 설정하지 않는 경우
  • 스키마 순서와 상관없이 순서를 개발자가 지정할 때
  • DB구조가 자주 변경되는 경우 컬럼명을 기술하는 것이 안전함.

null 값 입력방법

  • 컬럼을 기술하지 않기
  • 빈 문자열 값을 설정
  • null로 직접 입력
insert into dept2 (dcode,dname,pdept,area)
values ( 9000,'특수판매팀', 1000, '임시지역');

위 코드는 dept2라는 테이블에 9000번 부서를 추가하는 코드이다.

그림과 같이 맨 마지막 행에 추가된 것을 확인할 수 있다.

코드에서처럼 테이블에 각 컬럼을 입력하고, 컬럼 형식에 맞는 values들을 차례대로 입력하면 된다.

update

  • 기존의 레코드를 컬럼의 값을 ㅅ정
  • 표기법 : update 테이블명 set 컬럼1=값1, 컬럼2 = 값2, ...
    [where 조건문] => 변경되는 레코드를 선택 조건
update professor set bonus=00 where position = '조교수';

위 코드는 교수테이블에서 직급이 조교수인 교수의 보너스를 99로 변경한다.

이때 where조건문을 조교수로 한정했기에 모든 레코드의 bonus가 99로 변경되는 것이 아닌 postion이 '조교수'인 레코드만 변경된다.

update professor set pay = pay*1.15 where pay <= 230 
and position = (select position from professor where name = '장혜진');

위 코드는 장혜진 교수와 같은 직급의 교수 중 급여가 300이하인 교수의 급여만 15%인상하는 코드이다.

delete

  • 레코드 삭제 명령어
  • 표기법 : delete [from] 테이블명
    [where 조건문] => 삭제될 레코드 조건. 없는 경우 모든 레코드가 삭제된다.
delete from dpt2 wher dcode=9000;

위 코드는 dpt2 테이블의 decode 값이 9000번인 레코드를 삭제하는 코드이다.

이 때 where 조건문을 통해 decode가 9000번인 레코드만 삭제할 수 있도록 한다.

 

DDL(Data Definition Language) - 데이터 정의어

테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 (생성, 변경, 삭제, 이름변경) 데이터 구조와 관련된 명령어들을 의미한다.

  • create : 객체를 생성하는 명령어
  • alter :객체를 수정하는 역할을 하는 명령어
  • drop : 객체를 삭제하는 역할을 하는 명령어
  • truncate : 객체와 데이터를 분리하는 역할을 하는 명령어
  • 객체 : table, index, user, sequence,...

특징

  • commit, rollback의 의미가 없다.
  • DDL 명령어가 실행되면 자동으로 commit된다.
    rollback을 하고싶으면, rollback 먼저 실행후, ddl 명령어를 실행 해야한다.

자료형

테이블등을 생성할 때, 각 속성마다 자료형을 설정해줘야 한다.

자료형은 정말 많지만 그 중 몇개만 작성해보면 다음과 같다.

  • number, integer : 숫자형태의 데이터 저장 자료형
  • char, varchar, varchar2 : 문자형태의 데이터 저장 자료형
  • date : 날짜 및 시간 정보를 저장 자료형

create

  • 데이터 베이스, 테이블등을 생성하는 명령어
  • 표기법 : create 객체 객체명 ( 컬럼1 자료형1, 컬럼2 자료형2, ...)
  • default를 사용하여 새로운 레코드에 값이 없을 경우 기본으로 제공하는 데이터를 설정할 수 있다.
create table ddl_test2(
	no number(3),
    name varchar(10) default '홍길동',
    birth date default sysdate
);

위 코드는 ddl_test2라는 테이블을 생성하며, 속성으로는 no, name, birth가 있다.

각 자료형은 number, varchar, date이며, name의 경우 '홍길동'을 디폴트 값으로 주어 새로운 레코드에 name의 값이 정해지지 않았을 경우 '홍길동'이라는 값이 레코드에 들어간다.

birth의 경우도 값이 없을 경우 현재날짜를 기본값으로 지정해 놓았다.

insert into ddl_test2 (no) values(1);
insert into ddl_test2 values (2,'김삿갓','90-01-01');

위 코드를 이용해 ddl_test2에 레코드를 넣고 확인해보면 다음과 같이 나온다는것을 알 수 있다.