본문 바로가기
수업 일지/Oracle(SQL)

25일차 - 숫자/날짜/문자 타입/제약조건/시퀀스

by 쿠쿠씨 2022. 2. 7.
반응형

 

 

SQL의 데이터 형식

 

NUMBER 타입

 

NUMBER

→ 자릿수를 지정하지 않으면 최대 38자리까지 나타낼 수 있습니다.

 

NUMBER(p,s)

→ p는 최대 유효 자릿수(정밀도)를 나타내고, s는 소수점 이하 자릿수를 나타냅니다.

→ 소수점 이하 자릿수가 s보다 작을 경우 오류가 발생합니다

→ 소수점 이하 자릿수가 s보다 클 경우 반올림하여 s 자릿수를 맞춥니다. 

→ s 자릿수를 맞춘 후의 유효 자릿수가 p보다 클 경우 오류가 발생합니다. 

 

연습 예제

→ 테이블을 생성하고, 컬럼의 형식을 지정합니다. 

 

→ 모든 형식을 맞추어 정상 실행됩니다.

 

→ col2의 자릿수가 5를 초과하여 오류가 발생합니다.

 

→ 1) col3 소수점 3째 자리에서 반올림하여 12345.68 값이 저장됩니다.

→ 2) col3의 유효 자릿수가 7을 초과하여 오류가 발생합니다.  

 

→ 1) col4 소수점 6째 자리에서 반올림하여 0.00013 값이 저장됩니다.

→ 2) col4의 소수점 자리수가 5보다 작아서 오류가 발생합니다.

 

날짜 타입 : DATE, TIMESTAMP

 

DATE

→ 날짜를 저장합니다. 

→ YYYY-MM-DD 형식을 입력합니다.

 

TIMESTAMP 

→ 날짜와 시간을 저장합니다. 

→ DEFAULT 키워드로 값을 지정 안했을 때 현재 시간을 입력할 수 있습니다.

 

연습 예제

→ ccol TIMESTAMP DEFAULT SYSDATE : 컬럼 값을 입력 안해도 현재 시간이 저장된다.

 

문자 타입 : CHAR, VARCHAR2, NCHAR, NVARCHAR2

 

CHAR(길이)

→ 고정 길이, 단위는 바이트입니다. (UTF-8 : 한글은 3바이트, 영문/숫자/기호는 1바이트입니다.)

글자의 개수가 고정된 경우에 사용하는 것이 좋습니다.

→ 남는 메모리에는 공백이 채워집니다.

 

 

VARCHAR2(길이)

→ 가변 길이, 단위는 바이트입니다.

글자의 개수가 변동되는 경우에 사용하는 것이 좋습니다.

→ 길이는 최대 길이이고, 실제 메모리는 데이터의 크기만큼 사용합니다.

 

NCHAR(길이)

→ 고정 길이, 단위는 문자 개수입니다.

→ 특징은 CHAR와 같습니다.

 

NVARCHAR2(길이)

→ 가변 길이, 단위는 문자 개수입니다.

→ 특징은 VARCHAR2와 같습니다.

 

연습 예제

→ 테이블을 생성하고 컬럼 형식을 지정합니다.

 

→ '가나다라'는 12바이트이므로 오류가 발생합니다.

→ abcde 뒤에는 5개의 공백이 있습니다.

 

→ '가나다라'는 12바이트이므로 오류가 발생합니다.

→ abcde 뒤에는 공백이 없습니다.

 

→ '가나다라마바사아자차카'는 11글자이므로 오류가 발생합니다.

→ '가나다라' 뒤에는 6개의 공백이 있습니다.

→ '가나다라마바사아자차카'는 11글자이므로 오류가 발생합니다.

→ '가나다라' 뒤에는 공백이 없습니다.

 

예제: 쇼핑몰

 

고객 테이블

 

상품 테이블

 

구매 테이블

 

고객 정보 입력

 

상품 정보 입력

 

구매 정보 입력

*중요*

1. custom 테이블의 custom_id, product 테이블의 pcode는 중복되면 안됩니다.

기본 키(Primary Key)를 사용한다.

2. product 테이블의 price, quantity 등의 컬럼은 필수 데이터로 반드시 저장되어야 합니다.

NOT NULL 제약조건을 사용한다.

3. custom과 product 테이블에 없는 custom_id, pcode 컬럼 값을 사용하면 부정확한 데이터입니다.

외래 키(FOREIGN KEY)를 사용한다.

 

제약조건

 

무결성 : 데이터에 결함이 없음

제약조건은 데이터의 무결성을 지키고 데이터의 상태를 일관되게 유지하기 위한 조건입니다.

 

기본 키(Primary Key)

중복된 값과  NULL 값을 허용하지 않습니다.

→ 테이블의 행을 식별하는 것이 목적입니다.

→ 테이블은 기본 키를 1개만 가질 수 있습니다.

 

기본 키 설정 방법

1) CREATE TABLE 문에 PRIMARY KEY 키워드 넣기

2) CREATE TABLE 문에 CONSTRAINT 기본키이름 PRIMARY KEY 키워드 넣기

3) CREATE TABLE 문 마지막 행에 PRIMARY KEY(열 이름) 키워드 넣기

 (CONSTRAINT 기본키이름 → 생략 가능합니다.)

 

외래 키(FOREIGN KEY)

→ 두 테이블 사이의 관계를 연결해주어 무결성을 보장합니다.

→ 다른 테이블에서 값을 참조합니다. 다른 테이블은 기본 키가 설정되어 있어야 합니다.

 

외래 키 설정 방법

CREATE TABLE 문 마지막 행에

CONSTRAINT 외래키이름 FOREIGN KEY (열 이름) REFERENCES 참조하는테이블(열 이름) 키워드 넣기

 (CONSTRAINT 외래키이름 → 생략 가능합니다.)

참조하는 테이블의 열 이름이 기본 키 또는 고유 키여야 합니다.

 

오류(외래키 위반, 무결성 제약조건 위반)

1) 기본 키 custom_id 컬럼에 없는 값('mina012'가 아닌 값)을 입력하여 오류가 발생합니다.

2) 기본 키 pcode 컬럼에 없는 값('dk_143'이 아닌 값)을 입력하여 오류가 발생합니다.

 

NOT NULL

→ NULL 값을 허용하지 않습니다.

 

설정 방법

→ CREATE TABLE 문에 NOT NULL 키워드 넣기

 

시퀀스(SEQUENCE)

 

→ 일련번호를 자동으로 증가시켜 사용할 수 있는 기능입니다.

→ 한 번 만들어져 사용하던 시퀀스는 값을 되돌릴 수 없습니다.

→ 시퀀스를 새로 만들고 싶다면 삭제하고 다시 만들어야 하며, 이 경우 데이터도 삭제하고

 시퀀스를 생성한 뒤 데이터를 추가해야 합니다.

 

시퀀스 생성과 삭제 방법 

→ CREATE 문과 DROP 문으로 시퀀스를 생성, 삭제합니다.

 

→ View Sequence 메뉴에서 시퀀스 범위를 설정할 수 있습니다. 

 

→ 시퀀스를 저장할 기본키 컬럼을 생성합니다.

→ 값에 시퀀스명.nextval 을 입력합니다.

 

 

오늘의 예제

 

7. LIKE 키워드를 이용하여 부분 일치 조회를 할 수 있습니다.

→ LIKE '%1%'  : 1을 포함하는 것 조회

→ LIKE '1%'  : 1로 시작하는 것 조회

→ LIKE '%1'  : 1로 끝나는 것 조회

8. pcode에 대문자 또는 소문자 'on' 을 포함하는 것을 조회합니다.

→ WHERE LOWER(pcode) LIKE '%on%'

 

 

데이터 모델링

 

현실의 데이터를 데이터베이스로 구축하기 위한 과정입니다.

데이터 요구사항을 정의하고 분석하여 모델링합니다.

 

데이터 모델링의 종류

 

개념적 데이터 모델링

→ 개체-관계 모델(ER Model)

 

개체(entity) : 현실 세계에서 발생하는 사건의 대상이 되는 것입니다.

관계(relationship) : 현실 세계의 사건입니다.

 

ex)

쇼핑몰에서 물건을 구입한다 → 관계(사건)

회원과 상품, 배송지 주소, 결제 정보(카드, 계좌), 상품공급업체 → 개체

상품을 입고, 출고한다 → 관계

 

 

 

 

 

 

 

반응형

댓글