Hari ini, apabila saya membangkitkan PR dengan pengurus saya (Ia berkenaan prosedur kedai), pengurus saya bertanyakan beberapa soalan kepada saya tentang perkara itu.
Suka, Mengapa anda mengisytiharkan jenis data rentetan sebagai varchar(n) dan bukannya nvarchar(n) dan soalan berasaskan senario lain?
Anda mungkin juga pernah menghadapi situasi yang sama dengan warga emas atau guru di kolej.
Walaupun saya memberi jawapan kepadanya, perdebatan itu menimbulkan persoalan kepada saya tentang asas saya.
Dan saya memutuskan untuk menyemak semula dari awal.
Semasa menyemak, saya melihat beberapa perkara, yang saya fikir untuk berkongsi dengan anda semua, jadi saya menulis artikel ini.
Apabila kami mencipta pangkalan data, 2 fail dijana di belakang tabir.
Walaupun, kami boleh mengkonfigurasi bilangan fail yang perlu dijana. Dan jika kita mengkonfigurasi lebih daripada 2 fail terdapat kategori ke-3 iaitu :
Setiap kali kami melakukan sebarang transaksi DB, ia mula-mula disimpan dalam fail log dan setelah transaksi selesai, ia akan dikemas kini ke dalam fail data Utama.
Saiz lalai dan paling rendah bagi setiap fail ialah 8 MB dan maksimum tiada had. Dan untuk pangkalan data, menurut Microsoft, satu pangkalan data boleh mencapai 524 PB.
Jika anda telah menggunakan pertanyaan "pilih", anda mungkin pernah mendengar tentang pertanyaan "Cetak" juga.
Mari kita fahami bila hendak menggunakan yang mana.
Pada asasnya pertanyaan "pilih" mengembalikan data jadual dalam format grid manakala pertanyaan "Cetak" mengembalikan data sebagai teks.
Jadi apabila kami perlu melakukan operasi pada data jadual kami menggunakan pertanyaan "pilih" dan kebanyakannya untuk mencetak log atau ralat kami menggunakan pertanyaan "cetak".
Sekarang, Mari kita bincangkan soalan temuduga yang paling digemari.
Char:
Char menyimpan maks8000aksara, dan tahan 1 bait setiap ruang aksara.
Jika kami tidak menyatakan saiz, secara lalai SQL memperuntukkan 1 bait kepadanya dan hanya memegang satu aksara.
Jika kami memberikan lebih banyak input daripada saiz yang ditentukan, ia akan memotong data secara automatik.
Char mengikutperuntukan memori statik, jadi jika kita memperuntukkan saiz 20-bait dan menyimpan 10 aksara, SQL masih memperuntukkan semua storan 20-bait dan baki 10 bait akan dianggap sebagai pembaziran ruang.
Varchar:
Varchar boleh menyimpanmaks 2GBdata dan menyimpan 1 bait setiap ruang aksara. Walaupun ia menyimpan sehingga8000 baitdata dalam jadual apa-apa sahaja selain daripada itu disimpan dalam fail teks.
Jadi anda mungkin perasan hadnya sebagai 8000 bait dalam berbilang artikel.
Untuk mengisytiharkan lajur untuk menyimpan data 2GB, kami boleh menggunakan varchar(maks).
Varchar mengikutperuntukan memori dinamik. Jadi jika kita memperuntukkan saiz 20 bait dan menyimpan 10 aksara, SQL akan memperuntukkan hanya storan 10 bait dan baki 10 bait akan disimpan.
Nvarchar:
Nvarchar mengikuti sifat yang sama seperti varchar, satu-satunya perbezaan ialah ia menggunakan 2 bait untuk menyimpan satu aksara.
kerana ia mengikut data standard Unicode, untuk menyokong berbilang bahasa.
Dan char, varchar mengikut data standard ASCCI.
Terdapat satu lagi jenis data yang dipanggilTeks, tetapi ia telah ditamatkan, jadi anda boleh mengabaikannya.
Terdapat satu artikel yang saya dapati sangat berguna semasa penyelidikan saya. Ia mempunyai maklumat terperinci tentang semua jenis data.
Anda boleh melaluinya untuk mendapatkan maklumat lanjut.
Jika anda rasa saya telah terlepas sesuatu atau perlu mengemas kini, sila komen. Ia akan membantu saya serta komuniti kita.
Atas ialah kandungan terperinci Mengapa Saya Meninjau Semula Asas Pelayan MS SQL: Menyelam Dalam Jenis Data Rentetan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!