Perbezaan Antara CHAR dan VARCHAR dalam SQL
Kedua-dua CHAR dan VARCHAR digunakan untuk menyimpan rentetan aksara dalam SQL, tetapi ia berbeza dengan ketara dari segi storan, prestasi dan penggunaan. Berikut ialah perbandingan terperinci:
1. Definisi
CHAR:
Jenis data aksara panjang tetap. Ia sentiasa menggunakan jumlah ruang storan yang tetap, tanpa mengira panjang data yang disimpan.
VARCHAR:
Jenis data aksara panjang berubah-ubah. Storan yang digunakan bergantung pada panjang sebenar data yang disimpan.
2. Gelagat Penyimpanan
-
CHAR:
- Memperuntukkan saiz maksimum yang ditetapkan untuk setiap nilai.
- Jika rentetan yang disimpan lebih pendek daripada saiz yang ditentukan, ia berlapik dengan ruang untuk mengisi ruang yang tinggal.
- Contoh: CHAR(10) akan sentiasa menggunakan 10 bait, walaupun rentetannya ialah "Hello" (5 bait).
-
VARCHAR:
- Hanya menggunakan storan sebanyak yang diperlukan untuk rentetan, ditambah 1 atau 2 bait tambahan untuk menyimpan panjang rentetan.
- Contoh: VARCHAR(10) menyimpan "Hello" (5 bait) akan menggunakan 6 atau 7 bait (5 untuk rentetan 1/2 untuk panjang).
3. Prestasi
-
CHAR:
- Lebih pantas untuk rentetan panjang tetap kerana panjangnya telah ditetapkan dan tidak perlu mengurus panjang berubah semasa pengambilan data.
- Sesuai untuk menyimpan data dengan panjang yang konsisten, seperti poskod atau kod negara.
-
VARCHAR:
- Lebih cekap dari segi storan untuk data panjang boleh ubah tetapi lebih perlahan untuk operasi disebabkan oleh overhed mengurus panjang.
4. Kes Penggunaan
-
CHAR:
- Terbaik untuk data panjang tetap seperti:
- Kod negara (cth., "AS", "UK")
- Kod pos
- Kod produk
- Memastikan penyimpanan dan pengambilan yang konsisten.
-
VARCHAR:
- Sesuai untuk data panjang berubah-ubah seperti:
- Nama (cth., "John", "Alexander")
- Alamat e-mel
- Penerangan atau ulasan
5. Panjang Maksimum
-
CHAR:
- Menyokong sehingga 255 aksara (bergantung pada sistem pangkalan data).
-
VARCHAR:
- Boleh menyimpan sehingga 65,535 aksara dalam sesetengah sistem pangkalan data (cth., MySQL), tetapi maksimum sebenar bergantung pada saiz baris dan enjin pangkalan data.
6. Contoh
Menggunakan CHAR:
CREATE TABLE countries (
country_code CHAR(3) NOT NULL
);
INSERT INTO countries (country_code) VALUES ('US'), ('UK'), ('IN');
Salin selepas log masuk
- Walaupun "AS" disimpan, ia akan menduduki 3 bait ('AS ' dengan padding).
Menggunakan VARCHAR:
CREATE TABLE users (
username VARCHAR(50)
);
INSERT INTO users (username) VALUES ('Alice'), ('Alexander');
Salin selepas log masuk
-
"Alice" menduduki 6 bait (5 bait untuk rentetan 1 untuk panjang) dan "Alexander" menduduki 10 bait.
7. Jadual Ringkasan
Aspect |
CHAR |
VARCHAR |
Length |
Fixed-length |
Variable-length |
Storage |
Always uses the defined size. |
Uses only the required size length metadata. |
Performance |
Faster for fixed-length strings. |
Slightly slower due to length management. |
Padding |
Pads with spaces for shorter data. |
No padding; stores exact string. |
Use Case |
Fixed-length data. |
Variable-length data. |
Max Length |
255 characters. |
Up to 65,535 characters. |
Aspek |
CHAR
|
VARCHAR |
Panjang
|
Panjang tetap |
Panjang boleh ubah |
Storan
|
Sentiasa menggunakan saiz yang ditentukan. |
Hanya menggunakan metadata panjang saiz yang diperlukan. |
Prestasi |
Lebih pantas untuk rentetan panjang tetap. |
Lebih perlahan kerana pengurusan panjang. |
Padding
|
Pad dengan ruang untuk data yang lebih pendek. |
Tiada padding; menyimpan rentetan tepat. |
Kes Penggunaan |
Data panjang tetap. |
Data panjang boleh ubah. |
Panjang Maks
|
255 aksara. |
Sehingga 65,535 aksara. |
Kesimpulan
Gunakan CHAR untuk data panjang tetap di mana ketekalan dalam saiz adalah penting dan kecekapan storan bukanlah kebimbangan utama.
Gunakan VARCHAR untuk data panjang boleh ubah untuk menjimatkan ruang storan dan mengendalikan panjang rentetan yang fleksibel.
Hai, saya Abhay Singh Kathayat!
Saya seorang pembangun timbunan penuh dengan kepakaran dalam kedua-dua teknologi hadapan dan belakang. Saya bekerja dengan pelbagai bahasa pengaturcaraan dan rangka kerja untuk membina aplikasi yang cekap, berskala dan mesra pengguna.
Jangan ragu untuk menghubungi saya melalui e-mel perniagaan saya: kaashshorts28@gmail.com.
Atas ialah kandungan terperinci CHAR vs VARCHAR dalam SQL: Perbezaan Utama Diterangkan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!