[SQL] SQL 문장의 구성요소 (문자형)
복습
https://shins99.tistory.com/72
[SQL] 관계형 데이터베이스(relational database)
복습 https://shins99.tistory.com/71 [SQL] 데이터베이스(DataBase) 복습 https://shins99.tistory.com/70 [SQL] SQL(Structured Query Language) SQL(Structured Query Language) 구조화된 질의 언어 - (데이터베이스의 모든 작업을 통제
shins99.tistory.com
SQL 문장의 구성요소
Tibero에서 제공하는 데이터 타입
문자형 | CHAR, VARCHAR, VARCHAR2, NCHAR, NVARCHAR, NVARCHAR2, RAW, LONG, LONG RAW |
숫자형 | NUMBER, INTEGER, FLOAT |
날짜형 | DATE, TIME, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE |
간격형 | INTERVAL YEAR TO MONTH, INTERVAL DAY TO SECOND |
대용량 객체형 | CLOB, BLOB, XMLTYPE |
내재형 | ROWID |
문자형
- 문자형은 문자열을 표현하는 데이터 타입
(CHAR, VARCHAR, VARCHAR2, NCHAR, NVARCHAR, NVARCHAR2, RAW, LONG, LONG RAW 타입 등이 있음)
CHAR
- CHAR 타입은 문자열을 저장하는 데이터 타입
(항상 고정된 문자열 길이를 가짐)
CHAR(size[BYTE|CHAR])
CHAR 타입의 특징
- 문자열은 최대 2,000bytes나 2,000자까지 선언 가능 Tibero에서는 CHAR 타입으로 정의한 컬럼에 입력된 문자열을 데이터베이스의 문자 집합에 맞게 변환하여 저장
(이때 변환된 문자열은 2,000bytes나 2,000자를 초과 불과)
- 변환된 문자열의 길이가 2,000bytes나 2,000자를 넘으면 에러 발생
- 문자열의 길이는 byte와 문자를 기준으로 지정 가능
(BYTE로 선언할 경우엔 2,000bytes까지 저장 가능)
(CHAR로 선언할 경우엔 2,000자까지 저장 가능)
- CHAR로 문자열의 길이를 선언할 때 실제 컬럼의 길이는 데이터베이스가 사용하는 문자 집합에 따라 좌우됨
(한 문자가 몇 byte로 표현되는지에 따라 그 길이가 달라짐)
- CHAR(10 BYTE), CHAR(10 CHAR)의 형태로 선언
(뒷부분에 아무런 옵션도 지정하지 않고 CHAR(10)의 형태로 선언하면, byte로 문자열의 길이가 지정)
- SQL 문장에서 CHAR 타입의 값을 표현할 때에는 항상 작은따옴표(' ')를 사용
- 문자열의 길이가 0인 값은 NULL로 인식
CHAR 타입을 설명하는 예
PRODUCT_NAME CHAR(10)
(선언된 길이보다 짧은 문자열이 입력되면 남은 부분은 공백 문자(space)로 채워짐)
VARCHAR
VARCHAR 타입도 CHAR 타입과 마찬가지로 문자열을 저장하는 데이터 타입
( CHAR 타입과 다른 점은 문자열 길이가 일정하지 않은 가변 길이를 갖는다는 점)
VARCHAR(size[BYTE|CHAR])
VARCHAR 타입의 특징
- 문자열은 최대 4,000bytes나 4,000자까지 선언가능
- Tibero에서는 VARCHAR 타입으로 정의한 컬럼에 입력된 문자열을 데이터베이스의 문자 집합에 맞게 변환하여 저장
(변환된 문자열은 4,000bytes나 4,000자를 초과 불가)
- 변환된 문자열의 길이가 4,000bytes나 4,000자를 넘으면 에러가 발생
- 문자열의 길이는 byte와 문자를 기준으로 지정 가능
(BYTE로 선언할 경우엔 2,000bytes까지 저장 가능)
(CHAR로 선언할 경우엔 2,000자까지 저장 가능)
- CHAR로 문자열의 길이를 선언할 때 실제 컬럼의 길이는 데이터베이스가 사용하는 문자 집합에 따라 좌우됨
(한 문자가 몇 byte로 표현되는지에 따라 그 길이가 달라짐)
- VARCHAR(10 BYTE), VARCHAR(10 CHAR)의 형태로 선언
(뒷 부분에 아무런 옵션도 지정하지 않고 VARCHAR(10)의 형태로 선언하면, byte로 문자열의 길이가 지정)
- SQL 문장에서 CHAR 타입의 값을 표현할 때에는 항상 작은따옴표(' ')를 사용
- 문자열의 길이가 0인 값은 NULL로 인식
VARCHAR 타입을 설명하는 예
EMP_NAME VARCHAR(10)
(VARCHAR 타입은 선언된 문자열 길이의 범위 내에서 입력된 문자열 길이와 동일한 길이를 가짐)
VARCHAR2
VARCHAR2 타입은 VARCHAR 타입과 완전히 동일
NCHAR
NCHAR 타입은 유니코드 문자열을 저장하기 위한 타입
(항상 고정된 문자열 길이를 가짐)
NCHAR(size)
NCHAR 타입의 특징
- 기본적으로 VARCHAR 타입과 유사하지만, 문자열의 길이가 문자 기준이다.
- 타입의 길이가 데이터베이스의 다국어 문자 집합에 따라 정해짐
(UTF8인 경우엔 size의 최대 3배, UTF16인 경우엔 size의 최대 2배가 됨)
- NVARCHAR 타입의 문자열의 최대 길이는 4,000자
- SQL 문장에서 NVARCHAR 타입의 값을 표현할 때에는 항상 작은따옴표(' ')를 사용
- 문자열의 길이가 0인 값은 NULL로 인식
NVARCHAR
NVARCHAR 타입은 NCHAR과 마찬가지로 유니코드 문자열을 저장하기 위한 타입
(NCHAR 타입과 다른 점은 문자열 길이가 일정하지 않은 가변 길이를 갖는 점)
NVARCHAR(size)
NVARCHAR 타입의 특징
- 기본적으로 VARCHAR 타입과 유사하지만, 문자열의 길이가 문자 기준이다.
- 타입의 길이가 데이터베이스의 다국어 문자 집합에 따라 정해짐
(UTF8인 경우엔 size의 최대 3배, UTF16인 경우엔 size의 최대 2배가 됨)
- NVARCHAR 타입의 문자열의 최대 길이는 4,000자
- SQL 문장에서 NVARCHAR 타입의 값을 표현할 때에는 항상 작은따옴표(' ')를 사용
- 문자열의 길이가 0인 값은 NULL로 인식
NVARCHAR2
NVARCHAR2 타입은 NVARCHAR 타입과 완전히 동일
RAW
RAW 타입은 임의의 바이너리 데이터를 저장하는 데이터 타입
(바이너리 데이터는 선언된 최대 길이 내에서 임의의 길이를 가짐)
RAW 타입이 CHAR, VARCHAR 타입과 다른 점 :
- RAW 타입은 데이터 중간에 NULL 문자('\0')가 올 수 있지만 CHAR, VARCHAR 타입은 그렇지 않음
- RAW 타입은 NULL 문자로 데이터의 끝을 나타낼 수 없으므로 항상 길이 정보를 같이 저장함
RAW(size)
RAW 타입의 특징
- 최대 2,000bytes까지 선언 가능
- 선언된 길이 내에서 가변 길이를 가짐
- 데이터 중간에 NULL 문자('\0')가 올 수 있음
- 입출력을 수행할 때 RAW 타입의 데이터는 16진수로 표현
( 4bytes의 데이터는 16진수로 '012345AB'로 표현되며 필요한 경우 맨 앞이 0으로 시작되어야 함)
LONG
- LONG 타입은 VARCHAR 타입을 확장한 데이터 타입
- VARCHAR 타입과 마찬가지로 문자열이 저장됨
LONG
LONG 타입의 특징
- 최대 2GB까지 선언 가능
- 테이블 내의 한 컬럼에만 선언 가능
- LONG RAW 타입의 컬럼에 대해서는 인덱스를 생성 불가
- LONG RAW 타입의 컬럼을 포함한 로우가 디스크에 저장될 때에는 다른 컬럼의 값과 함께 동일한 디스크 블록에 저장
(길이에 따라 여러 디스크 블록에 걸쳐 저장될 수 있음)
- LONG RAW 타입의 데이터에 접근할 때는 항상 순차적으로만 접근할 수 있으며, 임의의 위치에 대해 연산 불가
LONG RAW
- LONG RAW 타입은 RAW 타입을 확장한 데이터 타입
- RAW 타입과 마찬가지로 바이너리 데이터가 저장 됨
LONG RAW
LONG RAW 타입의 특징
- 최대 2GB까지 선언 가능
- 테이블 내의 한 컬럼에만 선언 가능
- LONG RAW 타입의 컬럼에 대해서는 인덱스를 생성 불가
- LONG RAW 타입의 컬럼을 포함한 로우가 디스크에 저장될 때에는 다른 컬럼의 값과 함께 동일한 디스크 블록에 저장
(길이에 따라 여러 디스크 블록에 걸쳐 저장될 수 있음)
- LONG RAW 타입의 데이터에 접근할 때는 항상 순차적으로만 접근할 수 있으며, 임의의 위치에 대해 연산 불가