일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- spring 프로젝트
- 삭제 구현
- spring 쇼핑몰
- 스프링 HikariCP
- 로그아웃 기능 구현
- 스프링 프로젝트 기본 설정
- 스프링 프로젝트
- ResponseEntity
- 쇼핑몰 포트폴리오
- 스프링 메일 전송
- 정규표현식
- 스프링 파일 삭제
- 스프링 이미지
- 회원가입 기능
- 파일 업로드
- 인증번호 전송
- 스프링 게시판 구현
- 스프링 포트폴리오
- BCrypt 적용
- 이미지 출력
- 스프링 게시판
- 스프링 쇼핑몰 프로젝트
- oracle 설치방법
- 로그인 기능
- 쇼핑몰 프로젝트
- Bcrypt
- 스프링 쇼핑몰
- 스프링 업로드
- 스프링 프로젝트 설정
- arraylist
Archives
- Today
- Total
Kim VamPa
SQL 데이터 유형 본문
728x90
반응형
"SQL 전문가 가이드"책을 개인 공부 후 자료를 남기기 위한 목적이기에 내용 상에 오류가 있을 수 있습니다.
목표
- SQL 데이터 유형에 대해 공부한다.
- CHAR vs VARCHAR 차이점 에 대해 이해한다.
목차
1. 데이터 유형
2. CHAR vs VARCHAR 비교
1. 데이터 유형
데이터베이스의 테이블에 특정 자료를 입력할 때, 그 자료를 받아들일 공간을
자료의 유형별로 나누는 기준
- 특정 칼럼을 정의할 때 선언한 데이터 유형은 그 칼럼이 받아들일 수 있는 자료의 유형을 규정합니다.
- 선언한 유형이 아닌 종류의 데이터가 들어오려고 하면 데이터베이스는 에러를 발생시킵니다.
- 데이터 유형과 내장형 함수부분에서 각 회사 제품마다 차이가 있다.
(ex.
ANSI/ISO 기준 : NUMERIC Type의 하위개념 으로 NUMERIC, DECIMAL, DEC, SMALLINT, INTEGER, INT, BIGINT, FLOAT, REAL, DOUBLE PRECISION 존재
Orcle 기준 : NUMBER 한 가지 숫자 타입의 데이터 유형만 지원)
자주 쓰이는 데이터 유형정리("SQL 전문가 가이드")
- CHARACTER(s)
- 고정 길이 문자열 정보(Oracle, SQL Server 모두 CHAR로 표현)
- s는 기본 길이 1바이트, 최대 길이 Oracle 2,000바이트, SQL Server 8,000바이트
- s만큼 최대 길이를 갖고 고정 길이를 가지고 있으므로 할당된 변수 값의 길이가 s보다 작을 경우에는 그차이 길이만큼 공간으로 채워진다. - VARCHAR(s)
- CHARCTER VARYING의 약자로 가변 길이 문자열 정보(Oracle은 VARCHAR2로 표현, SQL Server는 VARCHAR로 표현)
- s는 최소 길이 1바이트, 최대 길이 Oracle 4,000바이트, SQL Server 8,000바이트
- s만큼의 최대 길이를 갖지만 가변 길이로 조정이 되기 때문에 할당된 변수값의 바이트만 적용된다.(Limit 개념) - NUMERIC
- 정수, 실수 등 숫자 정보 (Oracle은 NUMBER로, SQL Server는 10가지 이상의 숫자 타입을 가지고 있음)
- Oracle은 처음에 전체 자리 수를 지정하고, 그 다음 소수 부분의 자리 수를 지정한다. 예를 들어, 정수 부분이 6자리이고 소수점 부분이 2자리인 경우에는 'NUMBER(8,2)'와 같이 된다. - DATE
- 날짜와 시각 정보
- Orcle은 1초 단위, SQL Server는 3.33ms(Millisecond) 단위 관리 - 위의 4가지 유형 외에도 ANSI/ISO 에서는 Binary String Type, Binary Large Object String Type, National Character String Type, Bollean Type 등의 다양한 유형이 있다.
2. CHAR vs VARCHAR
- '저장 영역'과 '문자열'을 통한 비교
- CHAR은 고정 길이 문자열 정보 이기 때문에 입력되는 데이터의 크기가 얼마든 '고정된 데이터 크기'가 저장 영역을 차지합니다.
- VARCHAR은 가변 길이 문자열 정보이기 때문에 '실제 입력 되는 데이터 크기'만 저장 영역을 차지합니다.
- 따라서 VARCHAR 길이가 다양한 칼럼과, 정의된 길이와 실제 데이터 길이에 차이가 있는 칼럼에 적합합니다. - '비교 방법'을 통한 비교
- CHAR에서는 문자열을 비교할 때 '공백(BLANK)'을 채워서 비교한다. 공백 채우기 비교에서는 우선 짧은 쪽의 끝에 공백을 추가하여 2개의 데이터가 같은 길이가 되록한다. 그리고 앞에서부터 한 문자씩 비교한다
=> 끝의 공백만 다른 문자열은 같다고 판단된다.
- VARCHAR에서는 맨처음부터 한 문자씩 비교하고 공백도 하나의 문자로 취급하므로 끝의 공백이 다르면 다른 문자로 판단한다.
ex) CHAR 유형
'AA' = 'AA '
- 길이가 짧은 왼쪽 'AA'에 오른쪽의 데이터와 길이가 같도록 공백이 추가된 후 앞에서부터 한 문자씩 비교되기때문에 같은 문자열로 인식합니다.
ex) VARCHAR 유형
'AA' ≠ 'AA '
- 오른쪽 공백또한 하나의 문자열로 인식하기 때문에 두 문자열 데이터는 같지 않다.
- VARCHAR을 예를 들어 설명하면 VARCHAR(20)으로 0바이트를 설정하더라도 실제 'Kim VapPa' 으로 데이터가 입력된 경우 9바이트의 공간만 차지합니다.
- 따라서 주민등록번호, 학생등록번호, 사번 처럼 고정된 길이의 문자열을 같지 않는다면 데이터 유형은 VARCHAR 유형을 적용하는 것이 바람직합니다.
- VARCHAR, NUMERIC 유형에서 '( )' 을 통해 정의한 길이나 자릿수의 의미는 해당 데이터 유형이 가질 수 있는 최대한의 한계값을 정의 한 것입니다.
Reference
- "SQL 전문가 가이드"(kdata 한국데이터산업진흥원)
Date
- 2020.03.26 작성
728x90
반응형
'공부 > 데이터베이스' 카테고리의 다른 글
[윈도우 10]Oracle Database XE 설치방법 (0) | 2020.04.03 |
---|---|
[윈도우10]MySQL 8.0.18 설치 방법 (0) | 2020.04.02 |
[윈도우10]Oracle 11g 데이터베이스 설치방법 (0) | 2020.04.01 |
데이터베이스 정리 (0) | 2020.03.25 |
데이터베이스란 무엇인가? (0) | 2019.11.28 |
Comments