31
7. 데데데 데데데

7. 데이터 조작어

Embed Size (px)

DESCRIPTION

7. 데이터 조작어. 테이블의 생성. DDL: 데이터 조작어 기본 패턴 CREATE TABLE 테이블명 ( 컬럼명 컬럼 타입 , 컬럼명 컬럼 타입 , … ) 테이블 명 및 구조는 다음과 같은 규칙 테이블 명과 컬럼 명은 최대 30 자까지 가능하다 . ( 한글은 2byte 씩임으로 최대 15 자이다 .) 테이블명과 컬럼명의 첫자는 문자 (A-Z, a-z, ㄱ - ㅎ ) 으로 시작되어야 한다 . 한 테이블에는 최대 255 개의 컬럼을 만들 수 있다. 데이터 타입의 종류. - PowerPoint PPT Presentation

Citation preview

Page 1: 7. 데이터  조작어

7. 데이터 조작어

Page 2: 7. 데이터  조작어

DDL: 데이터 조작어 기본 패턴

◦ CREATE TABLE 테이블명◦ ( 컬럼명 컬럼 타입 ,◦ 컬럼명 컬럼 타입 ,◦ …◦ )

테이블 명 및 구조는 다음과 같은 규칙◦ 테이블 명과 컬럼 명은 최대 30 자까지 가능하다 . ( 한글은 2byte

씩임으로 최대 15 자이다 .)◦ 테이블명과 컬럼명의 첫자는 문자 (A-Z, a-z, ㄱ - ㅎ ) 으로

시작되어야 한다 .◦ 한 테이블에는 최대 255 개의 컬럼을 만들 수 있다

테이블의 생성

Page 3: 7. 데이터  조작어

4 . 장 데이터 타입- 3

-

데이터 타입의 종류 오라클에서 지원하는 데이터 타입의 종류

데이터타입

사용자 정의 내 장

스칼라 모음 (collection) 관 계

CHAR(N), NCHAR(N)VARCHAR2(N), NVARCHAR2(N)NUMBER(P,S)DATERAW(N)BLOB, CLOB, NCLOB, BFILELONG, LONG RAWROWID

VARRAYTABLE

REF

Page 4: 7. 데이터  조작어

문자형 데이터 , 숫자형 데이터 , 날짜형 데이터 문자형 데이터

기본 데이타 타입

CHAR(size) 고정길이 최대 2000byte 까지 .길 이 가 일 정 하 거 나 비슷한 경우에 사용 .지정된 길이 보다 짧은 값 이 입 력 되 면 남 은 공간은 공백으로 채워짐

VARCHAR2(size) 가변길이 최대 4000byte 까지 .데 이 터 길 의 편 차 가 크거나 NULL 값이 많이 들 어 올 경 우 사 용 . 실 무 에 서 가 장 많 이 쓰이는 타입

NCHAR(size) 고정길이 유니코드 최대 크기 2000byteUTF8 인 코 딩 의 경 우 size*3byte 의 크기 .AL16UTF16 인 코 딩 의 경 우 size*2byte 의 크기 .

NVARCHAR2(size) 가변길이 유니코드 최대 크기 4000byte

Page 5: 7. 데이터  조작어

숫자형데이타

기본 데이타 타입

NUMBER(precision, scale)

가변 숫자 타입 . 실무에서 가장 많이 쓰이는 숫자 타입 .Precision(1~38) 은 전 체 자 리 수 이 며 scale(-84~127) 은 소 수 점 이 하 자리수를 의미한다 . 최대 크기는 21byte이다 .

BINARY_FLOAT 32bit 부동 소수점 4byteBINARY_DOUBLE 64bit 부동 소수점 8byte

Page 6: 7. 데이터  조작어

날짜 타입

이외에도 대용량 객체를 위한 LOB(large object) 데이터 타입이 있다 . 이 타입은 텍스트 , 그래픽 이미지 , 동영상과 같은 데이터를 저장하기 위한 데이터 타입으로 최대 4GB 까지 저장이 가능하다 . 오라클에서는 BLOB, CLOB, NCLOB, BFILE 등이 있다

기본 데이터 타입DATE 고정길이 날짜 타입 7byte 이 며 세 기 , 년

도 , 월 , 일 , 시 , 분 ,초를 기록할 수 있다 .

TIMESTAMP DATE 타 입 의 확장형으로 백만분의 1초 단위로 표현가능

TIMESTAMP WITH TIMEZONE

시간대와 더불어 날짜 시간을 표현

지역 시간과 그리니치 표 준 시 의 차 이 를 포함한다 .

TIMESTAMP WITH LOCAL TIMEZONE

지 역 시 간 대 와 더 블 어 날짜 시간을 표현

INTERVAL YEAR TO MONTH

연 도 와 , 월 형 태 로 기간을 표현

5byte

INTRERVAL DAY TO SECOND

요 일 , 시 , 분 , 초 형태로 기간을 표현

11byte

Page 7: 7. 데이터  조작어

- 7 -

CHAR 데이터 타입 개요

◦ 고정 길이의 문자열을 저장하며 최대 2,000 바이트까지 저장 가능◦ 지정된 길이보다 짧은 데이터가 입력되는 경우 , 나머지 공간은 공백으로

채워짐

◦ 특징 데이터 입력시 사용자가 데이터를 입력하지 않으면 NULL 이 입력 지정된 길이보다 긴 데이터가 입력되면 오류 발생 주소 데이터와 같은 편차가 심한 데이터를 입력할 때 사용하면 저장 공간이 낭비될

수 있음 주민등록번호와 같이 길이가 일정하거나 비슷한 경우에 사용하는 것이 좋음

char(7) s q l

‘sql’

입력

b b b b * : 빈칸 ( 공백 ) b

Page 8: 7. 데이터  조작어

- 8 -

VARCHAR2 데이터 타입 개요

◦ 가변 길이의 문자열을 저장하기 위해 사용하는 데이터 타입◦ 최대 4,000 바이트 저장 가능◦ 지정된 길이보다 짧은 문자열이 입력되면 뒷부분은 NULL 로 처리되어

저장공간을 낭비하지 않음

◦ 특징 데이터 입력시 사용자가 값을 입력하지 않으면 NULL 이 입력 지정된 길이보다 긴 데이터가 입력되면 데이터가 입력되지 않고 오류 발생 입력될 데이터의 편차가 심하거나 NULL 이 많이 입력되는 경우에 사용하는 것이

효율적 실무에서는 CHAR 데이터 타입보다 VARCHAR2 를 많이 사용

varchar2(7) s q l

‘sql’입력

Page 9: 7. 데이터  조작어

4 . 장 데이터 타입- 9

-

NUMBER 데이터 타입 개요

◦ 숫자를 저장하며 , 가변 길이 데이터 타입으로 최대 38 자리까지 저장 가능

◦ 저장 가능한 숫자의 범위 : 1.010-130 ~ 96.9··· 10125

◦ 소수는 NUMBER(precision, scale) 형식으로 입력 지정된 자리 이하에서 반올림되어 저장 precision : 소수점을 포함하는 전체 자리 수 scale : 소수점이하 자리 수 precision 을 지정하지 않고 숫자를 입력하는 경우

입력되는 숫자 값의 크기만큼 저장공간이 할당됨 scale 을 지정하지 않고 소수점을 입력하는 경우

소수점 이하는 반올림되어 정수 값만 저장됨

Page 10: 7. 데이터  조작어

- 10

-

DATE 데이터 타입 개요

◦ 세기 , 년도 , 월 , 일 , 시간 , 분 , 초의 날짜와 시간 정보를 저장하기 위한 데이터 타입

◦ 7 비트의 고정길이 필드에 저장◦ 날짜나 시간에 대한 연산이나 이력 정보를 관리하기 위해 사용◦ 퍼스널 오라클의 기본 날짜 형식 : YY/MM/DD 형식

예 : ‘년 / 월 / 일 (05/0101)’

Page 11: 7. 데이터  조작어

- 11

-

DATE 데이터 타입 기능

◦ TO_DATE 함수 사용 가능 문자 형태로 저장된 데이터를 날짜 형식으로 변환 (6 장에서 자세히 설명 )

◦ SYSDATE 함수 사용 가능 시스템의 현재 날짜와 시간을 반환하는 함수

◦ 주의 날짜 데이터 입력시 월 , 일을 지정하지 않으면 입력되는 시점을 기준으로 해당 월과

1 일이 입력 , 시간을 지정하지 않으면 12:00:00 로 입력 시간 정보가 입력된 경우에는 ‘ =‘ 비교시 시간 정보도 함께 비교

Page 12: 7. 데이터  조작어

- 12

-

LOB 데이터 타입 개요

◦ 텍스트 , 그래픽 , 이미지 , 동영상 , 사운드 등과 같이 구조화되지 않은 대용량의 텍스트나 멀티미디어 데이터를 저장하기 위한 데이터 타입

◦ 최대 4GB 까지 저장 종류

◦ BLOB 그래픽 이미지 , 동영상 , 사운드와 같이 구조화되지 않은 바이너리

데이터를 저장하기 위해 사용◦ CLOB

e-Book 과 같은 대용량의 텍스트 데이터 저장◦ NCLOB

국가별 문자셋 ( 유니코드 ) 데이터 저장◦ BFILE

바이너리 데이터를 파일 형태로 저장 , 읽기 전용이므로 내용 변경 불가능

Page 13: 7. 데이터  조작어

- 13

-

ROWID 데이터 타입 개요

◦ 테이블에서 행의 위치를 지정하는 논리적인 주소 값◦ 데이타베이스 전체에서 중복되지 않는 유일한 값◦ 테이블에 새로운 행이 삽입되면 테이블 내부에서 의사 칼럼 (pseudo col-

umn) 형태로 자동적으로 생성◦ 특정 레코드를 랜덤 액세스하기 위한 가장 빠른 방법◦ ROWID 는 데이터베이스에 저장되지 않음◦ SELECT 명령문으로 조회는 가능하나 , INSERT, UPDATE 와 같은 DML

문으로 임의적으로 변경 불가능◦ 형식

데이터 객체 번호 (data object number), 상대적 파일 번호 (relative file number), 블록 번호 ( block number), 행 번호 (row number) 로 구성

Page 14: 7. 데이터  조작어

4 . 장 데이터 타입-

14 -

ROWID 데이터 타입

SQLPLUS 를 이용한 실습

Page 15: 7. 데이터  조작어

직원 테이블 만들기

데이터 입력◦ INSERT INTO 문

INSERT INTO 테이블 명 ( 컬럼명 1, …) VALUES ( 값 1,… )

데이터 생성 및 데이터 입력

Page 16: 7. 데이터  조작어

테이블의 모든 속성에 값을 넣음 .

NULL 값의 입력◦ 묵시적 NULL 입력 : 컬럼명의 생략

◦ 명시적 NULL 입력 :

데이터 입력

Page 17: 7. 데이터  조작어

현재까지의 데이타

Page 18: 7. 데이터  조작어

- 18

-

서브쿼리를 이용한 테이블 생성 개요

◦ CREATE TABLE 명령문에서 서브쿼리 절을 이용하여 다른 테이블의 구조와 데이터를 복사하여 새로운 테이블 생성 가능

◦ 서브쿼리의 출력 결과가 테이블의 초기 데이터로 삽입 기능

◦ CREATE TABLE 명령문에서 지정한 칼럼 수와 데이터 타입과 반드시 일치

◦ 칼럼 이름을 명시하지 않을 경우 서브쿼리 칼럼 이름과 동일◦ 무결성 제약조건은 NOT NULL 조건만 복사

기본 키 , 참조 키와 같은 무결성 제약조건은 사용자의 재정의 필요

◦ 디폴트 옵션에서 정의한 값은 그대로 복사

Page 19: 7. 데이터  조작어

STUDENT 테이블에서 학과 번호가 4 인 학년 학생들의 정보만을 추출하여 STUDENT 구조와 동일한 dept4student 테이블을 만들어라 .

서브 쿼리를 이용한 테이블생성

Page 20: 7. 데이터  조작어

where 절에 항상 거짓인 조건을 지정

테이블의 구조 복사

Page 21: 7. 데이터  조작어

INSERT INTO~ sql dept3student 테이블에 STUDENT 테이블 중

deptno 가 3 인 학생 정보를 입력

서브 쿼리를 이용한 데이터 입력

Page 22: 7. 데이터  조작어

컬럼의 추가◦ ALTER TABLE 테이블명◦ ADD ( 컬럼명 , 컬럼타입 )

◦ employee 에 number(11) 타입의 phone 컬럼을 추가

테이블 구조의 변경

Page 23: 7. 데이터  조작어

컬럼의 제거◦ ALTER TABLE~ DROP COLUMN

◦ phone 컬럼을 제거하자

테이블 구조의 변경

Page 24: 7. 데이터  조작어

컬럼의 변경◦ ALTER TABLE~ MODIFY ◦ 기존 컬럼에 값들이 존재하지 않을 경우에만 자유롭게 타입 및

크기를 변경◦ 기존 컬럼에 값들이 존재 할 경우 데이터 타입의 변경은

CHAR 와 VARCHAR2 내에서만 가능

◦ employee 테이블의 ename column 을 vchar(3) 으로 변경

테이블 구조의 변경

Page 25: 7. 데이터  조작어

ename 을 varchar(10) 으로 수정

Page 26: 7. 데이터  조작어

DROP TABLE 명령문

다음과 같이 dept3student 테이블을 삭제해 보자

테이블의 삭제

Page 27: 7. 데이터  조작어

UPDATE 명령문

◦ UPDATE 테이블명◦ SET 컬럼명 = 값◦ [WHERE 조건 ]

데이터의 변경

Page 28: 7. 데이터  조작어

Employee 테이블에서 enum 이 3 인 직원의 부서 번호를 30 으로 수정하자

Page 29: 7. 데이터  조작어

dept4student 테이블의 snum 이 6 인 학생의 학과 번호 (deptno) 와 교수번호 (profno) 를 학생테이블의 snum 이 3 인 학생과 같도록 수정하도록 하자 .

서브 쿼리를 이용한 UPDATE

Page 30: 7. 데이터  조작어

DELETE 명령문◦ DELETE [FROM] 테이블명◦ [WHERE 조건 ]◦ WHERE 조건이 없으면 테이블내의 모든 튜플 삭제

dept4student 테이블에서 snum 이 6 인 학생 정보를 삭제

데이터의 삭제

Page 31: 7. 데이터  조작어

delete 명령문을 수행해도 테이블은 남아 있다 테이블 자체를 삭제하는 명령문은 DROP TABLE

명령문이다 .