Rumah  >  Artikel  >  pangkalan data  >  Adakah mysql mempunyai varchar2?

Adakah mysql mempunyai varchar2?

青灯夜游
青灯夜游asal
2023-03-30 10:25:033033semak imbas

Mysql tidak mempunyai varchar2, hanya varchar. VARCHAR mewakili rentetan panjang boleh ubah, yang boleh mencapai sehingga 65,535 aksara panjang; MySQL menganggap nilai VARCHAR sebagai awalan panjang 1-bait atau 2-bait ditambah dengan data sebenar. VARCHAR2 ialah jenis Oracle yang mewakili rentetan panjang berubah-ubah dan boleh menyimpan nilai daripada 1 hingga 4000 bait, yang bermaksud bahawa untuk set aksara bait tunggal, sehingga 4000 aksara boleh disimpan dalam lajur VARCHAR2.

Adakah mysql mempunyai varchar2?

Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.

Mysql tidak mempunyai varchar2, hanya varchar2, yang mewakili panjang bait yang boleh ditampung adalah berkaitan dengan set aksara pangkalan data.

Jenis varchar MySQL

VARCHAR ialah rentetan panjang boleh ubah yang panjangnya boleh mencapai 65,535 aksara. MySQL menganggap nilai VARCHAR sebagai awalan panjang 1-bait atau 2-bait ditambah dengan data sebenar.

Awalan panjang menentukan bilangan bait nilai. Jika lajur memerlukan kurang daripada 255 bait, awalan panjang ialah 1 bait. Jika lajur memerlukan lebih daripada 255 bait, awalan panjang ialah dua bait panjang.

Walau bagaimanapun, panjang maksimum dihadkan oleh saiz baris maksimum (65,535 bait) dan set aksara yang digunakan. Ini bermakna jumlah panjang semua lajur hendaklah kurang daripada 65,535 bait.

Mari kita lihat contoh.

Buat jadual baharu dengan dua lajur s1 dan s2, dengan panjang masing-masing 32765 (awalan panjang +2) dan 32766 (+2). Ambil perhatian bahawa 32765 + 2 + 32766 + 2 = 65535, iaitu saiz baris maksimum.

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;

Pernyataan ini berjaya mencipta jadual. Walau bagaimanapun, jika kita menambah panjang lajur s1 sebanyak 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 akan mengeluarkan mesej ralat:

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

Seperti yang ditunjukkan di atas, panjang baris terlalu besar, jadi kenyataan cipta gagal.

MySQL akan mengeluarkan ralat jika anda memasukkan rentetan yang panjangnya lebih besar daripada panjang lajur VARCHAR. Pertimbangkan contoh berikut:

USE testdb;

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

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

Dalam contoh ini, MySQL mengeluarkan mesej ralat berikut:

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

jenis varchar2 oracle

Untuk menyimpan rentetan panjang berubah-ubah, anda boleh menggunakan jenis data Oracle VARCHAR2. Lajur VARCHAR2 boleh menyimpan nilai dari 1 hingga 4000 bait. Ini bermakna untuk set aksara bait tunggal, sehingga 4000 aksara boleh disimpan dalam lajur VARCHAR2.

Apabila mencipta jadual dengan lajur VARCHAR2, panjang rentetan maksimum dalam bait mesti ditentukan:

VARCHAR2(max_size BYTE)

atau dalam aksara -

VARCHAR2(max_size CHAR)

Secara lalai, Oracle menggunakan BYTE jika tiada BYTE atau CHAR dinyatakan secara eksplisit selepas max_size. Dalam erti kata lain, lajur VARCHAR2(N) boleh menampung sehingga N bait aksara.

Oracle mengeluarkan ralat jika anda menyimpan rentetan yang saiznya melebihi panjang maksimum lajur VARCHAR2.

Sebagai contoh, jika anda mentakrifkan lajur VARCHAR2 dengan panjang maksimum 20, anda boleh menyimpan sehingga 20 aksara dalam set aksara bait tunggal. Jika 21 atau lebih aksara disimpan, Oracle mengembalikan ralat.

Selain itu, jika anda menyimpan 10 aksara dalam lajur VARCHAR2(20), Oracle hanya menggunakan 10 bait untuk storan dan bukannya 20 bait. Oleh itu, menggunakan jenis data VARCHAR2 boleh membantu anda menjimatkan ruang yang digunakan oleh jadual anda.

Apabila membandingkan nilai VARCHAR2, Oracle menggunakan semantik perbandingan tidak berlapik.

Panjang maksimum VARCHAR2

Bermula dari Oracle 12c, panjang maksimum yang boleh menjadi jenis data VARCHAR2 ialah: 32767. Oracle menggunakan parameter MAX_STRING_SIZE untuk mengawal panjang maksimum. Jika MAX_STRING_SIZE ialah STANDARD, saiz maksimum VARCHAR2 ialah 4000 bait. Jika MAX_STRING_SIZE EXTENDED, had saiz VARCHAR2 ialah 32767.

Untuk mendapatkan nilai parameter MAX_STRING_SIZE, sila gunakan pertanyaan berikut:

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

Laksanakan pernyataan pertanyaan di atas dan dapatkan keputusan berikut -

SHOW PARAMETER max_string_size;

[Cadangan berkaitan:tutorial video mysql

Atas ialah kandungan terperinci Adakah mysql mempunyai varchar2?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn