서노썬
sun noes sun
서노썬
전체 방문자
오늘
어제
  • 카테고리 (142)
    • Java (89)
      • Day1 (20)
      • Day2 (16)
      • Day3 (4)
      • Day4 (5)
      • Day5 (2)
      • Day6 (2)
      • Day7 (4)
      • Day8 (6)
      • Day9 (3)
      • Day10 (0)
      • Day11 (0)
      • Day12 (0)
      • Day13 (3)
      • Day14 (0)
      • Day15 (0)
      • Day16 (0)
      • Day19 (0)
      • Day20 (0)
      • Day21 (2)
      • Day22 (4)
      • Day23 (2)
      • Day24 (5)
      • Day25 (4)
      • Day27 (2)
      • Day28 (3)
      • Day29 (1)
      • Day30 (1)
      • Day31 (0)
      • Day32 (0)
      • Dat33 (0)
      • Day34 (0)
      • Day35 (0)
      • Day36 (0)
    • HTML (37)
      • Day36 (20)
      • Day37 (3)
      • Day38 (2)
      • Day39 (8)
      • Day40 (3)
    • SQL (4)
      • Day40 (4)
      • Day41 (0)
      • Day42 (0)
      • Day43 (0)
      • Day44 (0)
      • Day45 (0)
    • JSP (0)
      • Day46 (0)
      • Day75 (0)
    • PYTHON (0)
      • Day75 (0)
      • Day76 (0)
    • Photo (12)

블로그 메뉴

  • 홈
  • 방명록

인기 글

최근 글

태그

  • java데이터타입
  • java메뉴입력
  • 자바
  • 자바연산자
  • Java
  • 논리연산자
  • 자바break
  • 자바continue
  • java자료형
  • 자바자료형

티스토리

hELLO · Designed By 정상우.
서노썬

sun noes sun

SQL/Day40

[SQL] varchar 와 char의 차이 & 사용

2022. 2. 14. 01:48

 varchar 

Variable Character Field 로 '가변길이 문자열'을 의미. 길이가 변할 수 있는 문자열이다.

 

예를 들어 varchar(30)는 30byte까지 넣을 수 있는 가변길이 문자열이고, varchar(50)은 50byte까지, varchar(70)은 70byte까지 넣을 수 있는 가변길이 문자열이다.

 

30byte는 영문자 기준으로 30자리까지 넣을 수 있는 자료형이다. 알파벳 1개가 1byte를 차지하지만, 한글은 2byte를 차지하게 되므로 한글은 해당하는 byte의 반을 넣을 수 있다.

 

varchar(30) : 30byte / 영문 30 / 한글 15

varchar(50) : 50byte / 영문 50 / 한글 25

varchar(70) : 70byte / 영문 70 / 한글 70


 char 

varchar와 마찬가지로 char(30)은 30byte, char(50)은 50byte, char(70)은 70byte에 해당하는 길이의 문자열이다.

 

char(30) : 30byte / 영문 30 / 한글 15

char(50) : 50byte / 영문 50 / 한글 25

char(70) : 70byte / 영문 70 / 한글 70


 varchar 와 char의 차이 & 사용 

위에서처럼 varchar는 '가변길이 문자열'로써 입력하는 문자열의 길이만큼 자리를 차지하게 된다.

 

varchar(30)이라는 30byte의 자리를 주었을 때 최대 30개의 자리가 생기지만, 30byte보다 적은 10byte만 입력했을 경우 남은 20byte는 공백으로 입력되지 않고 10byte만 입력된다.

 

varchar(30)일 때, nice를 입력하면 4byte만 입력되고 남은 26byte는 입력되지 않는다. happy를 입력하면 5byte만 입력되고 남은 25byte는 입력되지 않는다. 안녕하세요를 입력하면 10byte만 입력되고 남은 20byte는 입력되지 않는다.

 

반면, char의 경우 가변길이 문자열이 아니기 때문에 입력하는 문자열의 길이에 상관없이 지정하는 자리만큼을 차지하게 된다.

 

char(30)이라는 30byte의 자리를 주었을 때, 30byte보다 적은 10byte를 입력하더라도 남은 20byte는 입력되지 않는 것이 아니라 공백으로 입력되어 30byte가 모두 입력된다.

 

char(30)일 때, nice를 입력하면 4byte만 입력되어도 'nice                          ' 가 되어 공백포함 30byte가 입력된다. char(30)일 때, happy를 입력하면 5byte만 입력되어도 'happy                         ' 가 되어 공백포함 30byte가 입력된다. char(30)일 때, 안녕하세요를 입력하면 10byte만 입력되어도 '안녕하세요                    ' 가 되어 공백포함 30byte가 입력된다.

 

이렇게 char는 입력되지 않은 자리는 공백으로 입력되어 자리를 차지하게 된다.

 

varchar는 보통 이름, 주소, 회사명과 같은 고정적이지 않은 길이의 문자열에 사용되고, char는 보통 고정적으로 사용되는 주민등록번호나 핸드폰 번호에 사용된다.

 

varchar는 가변길이 문자열로 데이트 공간 절약의 측면에서는 char보다 효율적이지만, 고정적인 char에 비해 검색 속도가 훨씬 떨어진다.

'SQL > Day40' 카테고리의 다른 글

[SQL] DELETE & TRUNCATE & DROP 차이점  (0) 2022.02.14
[SQL] 사용자 계정 추가 & 기본 사용법  (0) 2022.02.14
[SQL] MySQL 설치 & 환경 변수 잡아주기  (0) 2022.02.02
    'SQL/Day40' 카테고리의 다른 글
    • [SQL] DELETE & TRUNCATE & DROP 차이점
    • [SQL] 사용자 계정 추가 & 기본 사용법
    • [SQL] MySQL 설치 & 환경 변수 잡아주기

    티스토리툴바