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.010-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 명령문이다.