본문 바로가기
Study/데이터베이스

오라클 스키마 정의, 자료형, 제약조건

by ✲ 2018. 3. 30.
728x90
반응형

오라클 스키마 정의, 자료형, 제약조건 


자료형(Data Types)

오라클의 기본 자료형 


1) NUMBER 

- 숫자를 다루는데 사용하는 데이터 타입 

- number(10,2) 소수점 기준을 ㅗ10자리, 소수점 이하 2자리 

- 다른 시스템/언어와 호환성을 위해 int/float 허용 


2) 문자열 

2-1) CHAR(size) 고정길이 문자열 

- 예를들어 sample이라는 문자열을 CHAR(10)타입의 컬럼에 넣으면 'sample____'의 형태로 들어간다

- 이런 데이터를 읽어오면 trim()과 같은 공백 문자열 처리를 하고 사용해야 한다 

2-2) VARCHAR2(size) 가변길이 문자열 

2-3) LONG 

- 2GB 이내의 문자열을 처리하는 데이터 

2-4) Date 

- 날짜와 관련한 데이터를 저장하는 데이터 타입 

2-5) CLOB(Character Large Object) 

- 4GB 이하의 문자열을 저장하는 데이터 타입 

2-6) BLOB(Binary Large Object) 

- 4GB 이하의 바이너리 데이터를 저장하는 데이터 타입 



스키마 정의  


DDL(Data Definition Language) 

- 데이터베이스와 테이블 CRUD(Create, Retrieve, Update, Delete) 

- 테이블에 대한 정보는 메타데이터로 데이터사전에 저장 관리된다.


데이터베이스 생성 

CREATE DATABASE 데이터베이스명;


테이블생성 

CREATE TABLE 테이블명 (컬럼명1 데이터타입(크기), 컬럼명2 ...);


예제) 컬럼으로 이름(Name), 주소(Address), 전화번호(Telephone)를 가지는 BusinessCard 테이블을 정의하고 생성하시오. (단, 이름, 주소, 전화번호는 문자열(varchar2) 최대 길이 255자로 지정함)


create table BusinessCard(Name varchar2(255), Address varchar2(255), Telephone varchar2(255));


desc BusinessCard;   --생성 후 테이블 스키마 확인 


insert into BusinessCard values('Bob','Seocho-dong 123','123-4567');   --레코드 입력 

insert into BusinessCard values('Sam','Sindang-dong 456','321-4321');



제약조건(Constraint)  

입력 데이터의 제약조건을 걸어 해당되지 않는 데이터는 입력되지 않음 

- NOT NULL : 데이터가 NULL값을 받아들이지 않음 

- UNIQUE : 테이블에 동일한 값이 입력되어 있을 경우 받아들이지 않음 

- PRIMARY KEY : 기본키 제약조건 (UNIQUE, NOT NULL 조건) 

- FOREIGN KEY : 외래키 제약조건 

- CHECK : 입력 값 체크 (ex) age >= 0 ) 

- DEFAULT : 컬럼값이 입력되지 않으면 기본값을 입력 


예제) BusinessCard 테이블의 이름(Name)이 NOT NULL로 생성하시오 

create table BusinessCard(Name varchar(255) not null, Address varchar2(255), Telephone varchar2(255));



예제) BusinessCard 테이블의 Name이 동일한 값이 허용하지 않도로 생성하시오 

create table BusinessCard(Name varchar(255) uique, Address varchar2(255), Telephone varchar2(255));



예제) BusinessCard테이블의 Age 값은 0이상이어야 함 

create table BusinessCard(Name varchar(255), Address varchar(255), Telephone varchar(255),Age Ing, check(Age>0));


예제) BusinessCard테이블의 주소(Address)값이 저장되지 않으면 'SEOUL'로 입력되도록 하시오. 

create businessCard(Name varchar2(255), Address varchar2(255)default 'SEOUL', Telephone varchar2(255));


Insert into BusinessCard(name,telephone) values('sam','234-5678'); 



시퀀스(Sequence)

- 오라클에만 있는 Object 

- 자동번호 생성기 

- 기본키로 사용하기 편하도록 숫자를 정해진 규칙에 의해 생성 

- 다른 DBMS에서는 AUTO_INCREMENT 속성에 대응하는 개념 


CREATE SEQUENCE 시퀀스명 

START WITH N

INCREMENT BY N 


시퀀스 조회 함수 

CURRVAL()  : 현재 시퀀스 값 조회 

NEXTVAL()  : 새로운 시퀀스 값 얻어내는 함수 


예제) 시퀀스를 새로 생성고, 현재 시퀀스 값을 표시하시오 .

create table BusinessCard(id int, Name varchar(255), Address Varchar(255), Telephone Varchar(255));


create sequence businesscard_seq; 


select businesscard_seq.currval from dual; 




728x90
반응형

댓글