Transcript PPT


DDL: 데이터 조작어
기본 패턴

테이블 명 및 구조는 다음과 같은 규칙

◦
◦
◦
◦
◦
CREATE TABLE 테이블명
( 컬럼명 컬럼 타입,
컬럼명 컬럼 타입,
…
)
◦ 테이블 명과 컬럼 명은 최대 30자까지 가능하다. (한글은 2
byte 씩임으로 최대 15자이다.)
◦ 테이블명과 컬럼명의 첫자는 문자(A-Z, a-z, ㄱ-ㅎ)으로 시
작되어야 한다.
◦ 한 테이블에는 최대 255개의 컬럼을 만들 수 있다

오라클에서 지원하는 데이터 타입의 종류
데이터타입
사용자 정의
스칼라
CHAR(N), NCHAR(N)
VARCHAR2(N), NVARCHAR2(N)
NUMBER(P,S)
DATE
RAW(N)
BLOB, CLOB, NCLOB, BFILE
LONG, LONG RAW
ROWID
내장
모음(collection)
관계
VARRAY
TABLE
REF
-3-
4장. 데이터 타입


문자형 데이터, 숫자형 데이터, 날짜형 데이터
문자형 데이터
CHAR(size)
고정길이
VARCHAR2(size)
가변길이
NCHAR(size)
고정길이 유니코드
NVARCHAR2(size)
가변길이 유니코드
최대 2000byte까지.
길이가 일정하거나 비슷
한 경우에 사용.
지정된 길이 보다 짧은 값
이 입력되면 남은 공간은
공백으로 채워짐
최대 4000byte까지.
데이터 길의 편차가 크거
나 NULL값이 많이 들어
올 경우 사용. 실무에서
가장 많이 쓰이는 타입
최대 크기 2000byte
UTF8 인코딩의 경우 size
*3byte의 크기.
AL16UTF16 인코딩의 경
우 size*2byte의 크기.
최대 크기 4000byte

숫자형데이타
NUMBER(precision,
scale)
가변 숫자 타입.
BINARY_FLOAT
BINARY_DOUBLE
32bit 부동 소수점
64bit 부동 소수점
실무에서 가장 많이
쓰이는 숫자 타입.
Precision(1~38) 은
전체 자리수이며 scal
e(-84~127)은 소수
점 이하 자리수를 의
미한다.
최대 크기는 21byte
이다.
4byte
8byte

날짜 타입
DATE
고정길이 날짜 타입
TIMESTAMP
DATE 타입의 확장형으
로 백만분의 1초 단위로
표현가능
시간대와 더불어 날짜 시
간을 표현
지역시간대와 더블어 날
짜 시간을 표현
연도와, 월 형태로 기간
을 표현
요일, 시, 분,초 형태로
기간을 표현
TIMESTAMP WITH TIME
ZONE
TIMESTAMP WITH LOC
AL TIMEZONE
INTERVAL YEAR TO M
ONTH
INTRERVAL DAY TO SE
COND

7byte이며 세기, 년도,
월,일, 시,분,초를 기록할
수 있다.
지역 시간과 그리니치 표
준시의 차이를 포함한다.
5byte
11byte
이외에도 대용량 객체를 위한 LOB(large object) 데이터 타
입이 있다. 이 타입은 텍스트, 그래픽 이미지, 동영상과 같
은 데이터를 저장하기 위한 데이터 타입으로 최대 4GB까
지 저장이 가능하다. 오라클에서는 BLOB, CLOB, NCLOB,
BFILE등이 있다

개요
◦ 고정 길이의 문자열을 저장하며 최대 2,000바이트까지 저장 가능
◦ 지정된 길이보다 짧은 데이터가 입력되는 경우, 나머지 공간은 공
백으로 채워짐
‘sql’
입력
char(7)
s
q
l
b
b
b
b
* b : 빈칸(공백)
◦ 특징
 데이터 입력시 사용자가 데이터를 입력하지 않으면 NULL 이 입력
 지정된 길이보다 긴 데이터가 입력되면 오류 발생
 주소 데이터와 같은 편차가 심한 데이터를 입력할 때 사용하면 저장 공
간이 낭비될 수 있음
 주민등록번호와 같이 길이가 일정하거나 비슷한 경우에 사용하는 것이
좋음
-7-

개요
◦ 가변 길이의 문자열을 저장하기 위해 사용하는 데이터 타입
◦ 최대 4,000 바이트 저장 가능
◦ 지정된 길이보다 짧은 문자열이 입력되면 뒷부분은 NULL로 처리되어 저
장공간을 낭비하지 않음
‘sql’
입력
varchar2(7)
s
q
l
◦ 특징
 데이터 입력시 사용자가 값을 입력하지 않으면 NULL 이 입력
 지정된 길이보다 긴 데이터가 입력되면 데이터가 입력되지 않고 오류 발생
 입력될 데이터의 편차가 심하거나 NULL 이 많이 입력되는 경우에 사용하는 것
이 효율적
 실무에서는 CHAR 데이터 타입보다 VARCHAR2 를 많이 사용
-8-

개요
◦ 숫자를 저장하며, 가변 길이 데이터 타입으로 최대 38 자
리까지 저장 가능
◦ 저장 가능한 숫자의 범위 : 1.010-130 ~ 96.9···
10125
◦ 소수는 NUMBER(precision, scale) 형식으로 입력




지정된 자리 이하에서 반올림되어 저장
precision : 소수점을 포함하는 전체 자리 수
scale : 소수점이하 자리 수
precision 을 지정하지 않고 숫자를 입력하는 경우
 입력되는 숫자 값의 크기만큼 저장공간이 할당됨
 scale 을 지정하지 않고 소수점을 입력하는 경우
 소수점 이하는 반올림되어 정수 값만 저장됨
-9-
4장. 데이터 타입

개요
◦ 세기, 년도, 월, 일, 시간, 분, 초의 날짜와 시간 정보를 저
장하기 위한 데이터 타입
◦ 7비트의 고정길이 필드에 저장
◦ 날짜나 시간에 대한 연산이나 이력 정보를 관리하기 위해
사용
◦ 퍼스널 오라클의 기본 날짜 형식 : YY/MM/DD 형식
 예 : ‘년/월/일(05/0101)’
- 10 -

기능
◦ TO_DATE 함수 사용 가능
 문자 형태로 저장된 데이터를 날짜 형식으로 변환 (6장에서 자세히 설명)
◦ SYSDATE 함수 사용 가능
 시스템의 현재 날짜와 시간을 반환하는 함수
◦ 주의
 날짜 데이터 입력시 월, 일을 지정하지 않으면 입력되는 시점을 기준으로 해당
월과 1일이 입력, 시간을 지정하지 않으면 12:00:00 로 입력
 시간 정보가 입력된 경우에는 ‘=‘ 비교시 시간 정보도 함께 비교
- 11 -

개요

종류
◦ 텍스트, 그래픽, 이미지, 동영상, 사운드 등과 같이 구조화되지
않은 대용량의 텍스트나 멀티미디어 데이터를 저장하기 위한
데이터 타입
◦ 최대 4GB까지 저장
◦ BLOB
 그래픽 이미지, 동영상, 사운드와 같이 구조화되지 않은 바이너리
데이터를 저장하기 위해 사용
◦ CLOB
 e-Book 과 같은 대용량의 텍스트 데이터 저장
◦ NCLOB
 국가별 문자셋(유니코드) 데이터 저장
◦ BFILE
 바이너리 데이터를 파일 형태로 저장, 읽기 전용이므로 내용 변경
불가능
- 12 -

개요
◦ 테이블에서 행의 위치를 지정하는 논리적인 주소 값
◦ 데이타베이스 전체에서 중복되지 않는 유일한 값
◦ 테이블에 새로운 행이 삽입되면 테이블 내부에서 의사 칼럼
(pseudo column) 형태로 자동적으로 생성
◦ 특정 레코드를 랜덤 액세스하기 위한 가장 빠른 방법
◦ ROWID 는 데이터베이스에 저장되지 않음
◦ SELECT 명령문으로 조회는 가능하나, INSERT, UPDATE와 같
은 DML 문으로 임의적으로 변경 불가능
◦ 형식
 데이터 객체 번호(data object number), 상대적 파일 번호
(relative file number), 블록 번호( block number), 행 번호(row
number) 로 구성
- 13 -
SQLPLUS를 이용한 실습
- 14 -
4장. 데이터 타입

직원 테이블 만들기

데이터 입력
◦ INSERT INTO 문
 INSERT INTO 테이블 명 (컬럼명1, …)
 VALUES (값1,… )

테이블의 모든 속성에 값을 넣음.

NULL 값의 입력
◦ 묵시적 NULL 입력 : 컬럼명의 생략
◦ 명시적 NULL 입력:

개요
◦ CREATE TABLE 명령문에서 서브쿼리 절을 이용하여 다른 테
이블의 구조와 데이터를 복사하여 새로운 테이블 생성 가능
◦ 서브쿼리의 출력 결과가 테이블의 초기 데이터로 삽입

기능
◦ CREATE TABLE 명령문에서 지정한 칼럼 수와 데이터 타입과
반드시 일치
◦ 칼럼 이름을 명시하지 않을 경우 서브쿼리 칼럼 이름과 동일
◦ 무결성 제약조건은 NOT NULL 조건만 복사
 기본 키, 참조 키와 같은 무결성 제약조건은 사용자의 재정의 필요
◦ 디폴트 옵션에서 정의한 값은 그대로 복사
- 18 -

STUDENT 테이블에서 학과 번호가 4인 학년 학생
들의 정보만을 추출하여 STUDENT 구조와 동일한
dept4student 테이블을 만들어라.

where 절에 항상 거짓인 조건을 지정


INSERT INTO~ sql
dept3student 테이블에 STUDENT 테이블 중 de
ptno가 3인 학생 정보를 입력

컬럼의 추가
◦ ALTER TABLE 테이블명
◦ ADD (컬럼명, 컬럼타입)
◦ employee 에 number(11) 타입의 phone 컬럼을 추가

컬럼의 제거
◦ ALTER TABLE~ DROP COLUMN
◦ phone 컬럼을 제거하자

컬럼의 변경
◦ ALTER TABLE~ MODIFY
◦ 기존 컬럼에 값들이 존재하지 않을 경우에만 자유롭게 타
입 및 크기를 변경
◦ 기존 컬럼에 값들이 존재 할 경우 데이터 타입의 변경은
CHAR와 VARCHAR2 내에서만 가능
◦ employee 테이블의 ename column을 vchar(3)으로 변
경

ename을 varchar(10)으로 수정

DROP TABLE 명령문

다음과 같이 dept3student 테이블을 삭제해 보자

UPDATE 명령문
◦ UPDATE 테이블명
◦ SET 컬럼명= 값
◦ [WHERE 조건]

Employee 테이블에서 enum이 3인 직원의 부서
번호를 30으로 수정하자

dept4student 테이블의 snum이 6인 학생의 학
과 번호(deptno)와 교수번호(profno)를 학생테이
블의 snum이 3인 학생과 같도록 수정하도록 하자
.

DELETE 명령문
◦ DELETE [FROM] 테이블명
◦ [WHERE 조건]
◦ WHERE 조건이 없으면 테이블내의 모든 튜플 삭제

dept4student 테이블에서 snum이 6인 학생 정
보를 삭제


delete 명령문을 수행해도 테이블은 남아 있다
테이블 자체를 삭제하는 명령문은 DROP TABLE
명령문이다.