Perbezaan antara char dan varchar

Perbezaan antara char dan varchar

Kedua -duanya adalah jenis data dalam banyak bahasa pengaturcaraan dan sistem pangkalan data di mana 'char' merujuk kepada watak dan 'varchar' merujuk kepada watak yang berubah -ubah. Char dalam C mewakili jenis watak yang digunakan untuk menyimpan nilai rentetan, kebanyakannya watak dan bilangan bulat yang dikodkan UTF-8. Varchar, sebaliknya, adalah jenis data yang boleh mengandungi data dari mana -mana jenis panjang yang tidak pasti. Varchar merujuk kepada jenis data medan dalam sistem pengurusan pangkalan data. Walaupun kedua -duanya dapat menyimpan nilai rentetan sehingga panjang maksimum 8,000 aksara, char memerlukan lebih banyak penyimpanan daripada varchar. Secara teknikal, kedua -duanya digunakan untuk menyimpan data yang sama tetapi mereka berbeza dengan cara mereka disimpan dan diambil. Mari kita lihat perbezaan mereka secara terperinci.

Apa itu char?

Char adalah jenis data panjang tetap yang digunakan untuk menyimpan aksara bukan unicode, oleh itu nama (pendek untuk watak). Ia menduduki satu bait ruang untuk setiap watak yang dikodkan sebagai nombor - yang dari pengekodan ASCII. Jenis char juga boleh digunakan untuk mengisytiharkan bilangan bulat kecil. Untuk mengisytiharkan pemboleh ubah watak, kata kunci 'char' digunakan, yang bermaksud satu watak disimpan dalam satu bait.

Seperti jenis integer, char boleh ditandatangani atau tidak ditandatangani. Ia boleh memegang nilai char yang ditandatangani antara -128 hingga 127 dan bergantung pada saiz seni bina, ia juga boleh ditandatangani, memegang nilai antara 0 hingga 255. Apabila nilai char disimpan, mereka dilapisi dengan betul dengan ruang ke panjang yang ditentukan. Ruang trailing dikeluarkan apabila mereka diambil.

Sebagai contoh - jika anda mengisytiharkan pembolehubah jenis data char (7), maka ia akan selalu mengambil 7 bait data tanpa mengira sama ada anda menyimpan 1 aksara atau 7 aksara, yang bermaksud anda boleh menyimpan maksimum 7 aksara dalam lajur.

Apa itu Varchar?

Varchar, seperti namanya, adalah jenis data yang berubah-ubah yang boleh mengandungi sebarang jenis data dengan panjang bervariasi dari 0 hingga 65,535. Varchar Field boleh menyimpan nilai -nilai saiz sehingga had tertentu, bergantung pada pangkalan data. Ia boleh ditakrifkan sama ada dalam bahasa pengaturcaraan atau pada tahap pangkalan data. Saiz medan Varchar boleh menjadi apa -apa dari sifar hingga panjang medan maksimum yang diisytiharkan.

Untuk mengisytiharkan watak yang berubah -ubah, kata kunci 'Varchar' digunakan. Varchar mengambil ruang berubah, yang bermaksud ia hanya akan menggunakan bilangan bait yang sama dengan bilangan aksara. Ia membantu dalam mengelakkan pembaziran ruang kerana ia hanya menggunakan ruang yang diperlukan untuk saiz rentetan. Dalam sesetengah bahasa pengaturcaraan dan sistem pangkalan data, mana -mana ruang tambahan dikeluarkan secara automatik dari pangkalan data.

Sebagai contoh - jika anda mengisytiharkan pemboleh ubah varchar (10), ia akan menggunakan bilangan bait yang sama dengan bilangan aksara. Jadi, jika anda menyimpan hanya satu watak, maka hanya akan mengambil satu bait dan jika anda menyimpan 10 aksara, ia akan mengambil 10 bait, dengan itu mengelakkan pembaziran ruang pangkalan data.

Perbezaan antara char dan varchar

  1. Jenis data

'Char' adalah jenis data panjang tetap yang digunakan untuk menyimpan nilai rentetan aksara panjang tetap, sedangkan 'varchar' adalah jenis data panjang yang berubah-ubah yang digunakan untuk menyimpan data alfanumerik panjang berubah-ubah.

  1. Saiz simpanan

Saiz penyimpanan nilai aksara adalah sama dengan saiz maksimum lajur ini yang anda nyatakan semasa membuat jadual. Sebaliknya, saiz penyimpanan nilai varchar adalah panjang sebenar data yang dimasukkan, bukan saiz maksimum untuk lajur ini.

  1. Penyertaan data

Anda boleh menggunakan char apabila penyertaan data dalam lajur dijangka menjadi saiz yang sama, sementara sebaliknya, Varchar boleh digunakan apabila penyertaan data dalam lajur dijangka berbeza -beza.

  1. Peruntukan memori

Char menggunakan peruntukan memori statik manakala Varchar menggunakan peruntukan memori dinamik

  1. Panjang

Panjang pemboleh ubah char boleh mempunyai nilai dari 0 hingga 255, manakala panjang pembolehubah varchar berkisar antara 0 hingga 65,535.

  1. Permohonan

Penyertaan data konsisten dalam char yang digunakan untuk menyimpan data seperti nombor telefon, sedangkan Varchar digunakan untuk menyimpan data yang berbeza -beza seperti alamat.

Char vs. Varchar

Char Varchar
Digunakan untuk menyimpan nilai rentetan aksara panjang tetap. Digunakan untuk menyimpan data alfanumerik panjang berubah -ubah.
Panjangnya bervariasi dari 0 hingga 255. Panjangnya bervariasi dari 0 hingga 65,535.
Mengambil 1 byte setiap aksara untuk penyimpanan. Mengambil 1 byte per aksara ditambah 1 atau 2 bait tambahan untuk menyimpan maklumat panjang.
Saiz penyimpanan char adalah sama seperti yang diisytiharkan. Saiz penyimpanan Varchar bergantung pada rentetan tertentu yang disimpan.
Menggunakan peruntukan memori statik. Menggunakan peruntukan memori dinamik.
Char harus digunakan apabila panjang pemboleh ubah diketahui. Varchar hanya boleh digunakan apabila panjang pembolehubah tidak diketahui.
Ia hanya menerima watak. Ia menerima kedua -dua watak dan nombor.
Ia 50 peratus lebih cepat daripada Varchar. Lebih perlahan daripada char.
Saiz penyimpanan nilai char adalah sama dengan saiz maksimum untuk lajur. Saiz penyimpanan nilai varchar sama dengan panjang sebenar data yang dimasukkan, bukan saiz maksimum untuk lajur.

Ringkasan

  • Kedua -dua 'char' dan 'varchar' adalah jenis data dalam bahasa pengaturcaraan dan sistem pangkalan data yang berkongsi beberapa ciri umum dari segi fungsi dan teknikal. Walau bagaimanapun, mereka berbeza seperti cara mereka disimpan dan diambil.
  • Walaupun Char sebenarnya merujuk kepada watak, Varchar merujuk kepada watak yang berubah -ubah. Seperti namanya, char adalah jenis data panjang tetap manakala Varchar adalah jenis data yang berubah-ubah.
  • Char mengambil sehingga 1 byte setiap aksara, sedangkan Varchar juga mengambil masa sehingga 1 byte per aksara ditambah tambahan 1 atau 2 bait untuk menyimpan maklumat panjang. Untuk char, panjangnya bervariasi dari 0 hingga 255 dan untuk varchar, ia boleh menjadi apa -apa antara 0 dan 65,535.
  • Oleh kerana char tetap panjang, mana-mana ruang yang tinggal di lapangan empuk dengan kekosongan. Varchar, sebaliknya, adalah panjang yang berubah-ubah sehingga hanya memegang watak-watak yang anda berikan kepadanya.
  • Karakter yang tinggal di empuk dengan ruang putih apabila nilai disimpan dalam medan 'char', sedangkan 'varchar' tidak menambah ruang tambahan apabila anda memberikan data yang kurang daripada panjang yang ditentukan.