>  기사  >  데이터 베이스  >  mysql에 varchar2가 있나요?

mysql에 varchar2가 있나요?

青灯夜游
青灯夜游원래의
2023-03-30 10:25:032977검색

mysql에는 varchar2가 없고 varchar만 있습니다. VARCHAR은 최대 65,535자 길이의 가변 길이 문자열을 나타냅니다. MySQL은 VARCHAR 값을 1바이트 또는 2바이트 길이의 접두사에 실제 데이터를 더한 값으로 처리합니다. VARCHAR2는 가변 길이 문자열을 표현하는 오라클 타입으로 1~4000바이트의 값을 저장할 수 있다. 즉, 단일 바이트 문자 집합의 경우 최대 4000자까지 VARCHAR2 컬럼에 저장할 수 있다.

mysql에 varchar2가 있나요?

이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.

Mysql에는 varchar2가 없고 Oracle에만 varchar2가 있는데, 이는 바이트 길이를 수용할 수 있는 한자 수는 데이터베이스의 문자 집합에 따라 다릅니다.

mysql의 varchar 유형

VARCHAR은 길이가 65,535자에 달하는 가변 길이 문자열입니다. MySQL은 VARCHAR 값을 1바이트 또는 2바이트 길이의 접두사에 실제 데이터를 더한 값으로 처리합니다.

길이 접두사는 값의 바이트 수를 지정합니다. 열에 필요한 길이가 255바이트 미만인 경우 길이 접두사는 1바이트입니다. 열에 255바이트 이상이 필요한 경우 길이 접두사는 2바이트 길이입니다.

그러나 최대 길이는 최대 줄 크기(65,535바이트)와 사용된 문자 집합에 따라 제한됩니다. 이는 모든 열의 총 길이가 65,535바이트 미만이어야 함을 의미합니다.

아래 예를 살펴보겠습니다.

두 개의 열 s1과 s2가 있고 길이가 각각 32765(길이 접두사 +2) 및 32766(+2)인 새 테이블을 만듭니다. 최대 행 크기는 32765 + 2 + 32766 + 2 = 65535입니다.

USE testdb;

CREATE TABLE IF NOT EXISTS varchar_test (
    s1 VARCHAR(32765) NOT NULL,
    s2 VARCHAR(32766) NOT NULL
)  CHARACTER SET 'latin1' COLLATE LATIN1_DANISH_CI;

이 명령문으로 테이블이 성공적으로 생성되었습니다. 그러나 s1 열의 길이를 1만큼 늘리면

USE testdb;
CREATE TABLE IF NOT EXISTS varchar_test_2 (
    s1 VARCHAR(32766) NOT NULL, -- error
    s2 VARCHAR(32766) NOT NULL
)  CHARACTER SET 'latin1' COLLATE LATIN1_DANISH_CI;

MySQL에서는 다음과 같은 오류 메시지가 표시됩니다.

Error Code: 1118. Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs 0.000 sec

위에 표시된 것처럼 행 길이가 너무 커서 create 문이 실패했습니다.

MySQL에서는 VARCHAR 열의 길이보다 길이가 긴 문자열을 삽입하면 오류가 발생합니다. 다음 예를 고려하십시오.

USE testdb;

CREATE TABLE items (
    id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(3)
);

INSERT INTO items(title)
VALUES('ABCD');

이 예에서 MySQL은 다음과 같은 오류 메시지를 표시합니다.

1406 - Data too long for column 'title' at row 1

oracle의 varchar2 유형

가변 길이 문자열을 저장하려면 Oracle VARCHAR2 데이터 유형을 사용할 수 있습니다. VARCHAR2 열은 1~4000바이트의 값을 저장할 수 있습니다. 즉, 단일 바이트 문자 집합의 경우 최대 4000자를 VARCHAR2 열에 저장할 수 있습니다.

VARCHAR2 열이 있는 테이블을 생성할 때 최대 문자열 길이를 바이트 단위로 지정해야 합니다.

VARCHAR2(max_size BYTE)

또는 문자 -

VARCHAR2(max_size CHAR)

기본적으로 max_size 뒤에 BYTE 또는 CHAR가 명시적으로 지정되지 않은 경우 Oracle은 BYTE를 사용합니다. 즉, VARCHAR2(N) 열은 최대 N바이트의 문자를 보유할 수 있습니다.

Oracle은 VARCHAR2 열의 최대 길이를 초과하는 문자열을 저장하면 오류를 발생시킵니다.

예를 들어 최대 길이가 20인 VARCHAR2 열을 정의하면 단일 바이트 문자 집합에 최대 20자를 저장할 수 있습니다. 21자 이상이 저장되면 Oracle은 오류를 반환합니다.

또한 VARCHAR2(20) 열에 10자를 저장하면 Oracle은 20바이트가 아닌 10바이트만 저장에 사용합니다. 따라서 VARCHAR2 데이터 유형을 사용하면 테이블에서 사용하는 공간을 절약하는 데 도움이 될 수 있습니다.

VARCHAR2 값을 비교할 때 Oracle은 패딩되지 않은 비교 의미 체계를 사용합니다.

VARCHAR2 최대 길이

Oracle 12c부터 VARCHAR2 데이터 유형이 될 수 있는 최대 길이는 32767입니다. Oracle은 MAX_STRING_SIZE 매개변수를 사용하여 최대 길이를 제어합니다. MAX_STRING_SIZE가 STANDARD인 경우 VARCHAR2의 최대 크기는 4000바이트입니다. MAX_STRING_SIZE가 EXTENDED인 경우 VARCHAR2의 크기 제한은 32767입니다.

MAX_STRING_SIZE 매개변수의 값을 얻으려면 다음 쿼리를 사용하십시오.

SELECT
    name,
    value
FROM
    v$parameter
WHERE
    name = 'max_string_size';

위 쿼리 문을 실행하고 다음 결과를 얻습니다. -

SHOW PARAMETER max_string_size;

[관련 권장 사항: mysql 비디오 튜토리얼]

위 내용은 mysql에 varchar2가 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.