jenis data
Dalam MySQL kami membahagikan jenis data kepada jenis berikut:
1 Jenis angka (integer, titik terapung)
2 Jenis rentetan
3. Tarikh dan jenis masa
4. Jenis komposit
5. Jenis Penuh
Panjang jenis integer adalah berbeza, dan proses penggunaan sebenar juga berbeza.
MySQL memanjangkan standard SQL dalam bentuk penunjuk lebar paparan pilihan supaya apabila nilai diambil daripada pangkalan data, nilai boleh dipanjangkan kepada panjang yang ditentukan. Sebagai contoh, menyatakan bahawa medan adalah jenis INT(6),
memastikan bahawa nilai yang mengandungi kurang daripada 6 digit secara automatik diisi dengan ruang apabila diambil daripada pangkalan data. Ambil perhatian bahawa menggunakan penunjuk lebar tidak menjejaskan saiz medan atau julat nilai yang boleh disimpan. Nota:
1 Apabila mencipta medan jadual, kita boleh menggunakan integer kecil tidak bertanda (tinyint) untuk mewakili jantina. Gunakan 0 untuk mewakili perempuan dan 1 untuk mewakili lelaki. Gunakan 2 untuk mewakili tidak diketahui.
2. Begitu juga untuk umur manusia, integer tidak bertanda boleh digunakan semasa membuat medan jadual. Kerana umur manusia tiada nombor negatif
3 Dalam penggunaan sebenar. Berapakah nilai maksimum yang perlu disimpan dalam perniagaan kita. Apabila kami mencipta jadual, kami memilih jenis untuk menyimpan nilai tersebut.
Jenis titik terapung
Nota:
1 nilai, mungkin terdapat ketidaktepatan
2 Dan perpuluhan dipanggil nombor titik tetap. Secara dalaman, MySQL pada asasnya disimpan sebagai rentetan. Dalam penggunaan sebenar, jika terdapat penyimpanan nombor titik terapung dengan keperluan yang agak tinggi untuk jumlah dan ketepatan wang, adalah disyorkan untuk menggunakan jenis perpuluhan (nombor titik tetap).
Jenis aksara
Jenis
*CHAR * digunakan untuk rentetan panjang tetap dan mesti ditakrifkan dengan pengubah suai saiz dalam kurungan. Pengubah suai saiz ini berjulat dari 0-255. Nilai yang lebih besar daripada panjang yang ditentukan akan dipotong, manakala nilai yang lebih kecil daripada panjang yang ditentukan akan dilapisi dengan ruang.
*VARCHAR * Anggap saiz ini sebagai saiz nilai Jika panjangnya tidak mencukupi, gunakan ruang untuk menggantikannya. Walaupun jenis VARCHAR menganggapnya sebagai nilai maksimum dan hanya menggunakan panjang yang sebenarnya diperlukan untuk menyimpan rentetan
jenis itu tidak akan berlapik dengan ruang, tetapi nilai yang lebih panjang daripada penunjuk masih akan dipotong.
Oleh kerana jenis VARCHAR boleh menukar panjang nilai yang disimpan secara dinamik berdasarkan kandungan sebenar, menggunakan jenis VARCHAR apabila anda tidak pasti berapa banyak aksara yang diperlukan oleh medan boleh menjimatkan ruang cakera dan meningkatkan kecekapan storan.
Jenis teks dan jenis gumpalan Apabila keperluan panjang medan melebihi 255, MySQL menyediakan dua jenis: TEXT dan BLOB. Kesemuanya mempunyai subjenis berbeza bergantung pada saiz data yang disimpan. Data besar ini digunakan untuk menyimpan blok teks atau jenis data binari seperti imej,
fail bunyi, dsb.
Terdapat perbezaan dalam klasifikasi dan perbandingan antara jenis TEXT dan BLOB. Jenis BLOB adalah sensitif huruf besar-besaran, manakala TEXT bukan sensitif huruf besar-besaran. Pengubah suai saiz tidak digunakan pada pelbagai subjenis BLOB dan TEXT.
Jenis Masa
Nota:
1. Jenis masa jarang digunakan dalam sistem web. Cap waktu unix dimasukkan semasa memasukkan, kerana kaedah ini lebih mudah untuk pengiraan. Gunakan fungsi jenis tarikh dalam perniagaan bahagian hadapan untuk menukar cap waktu unix kepada masa yang boleh dikenali orang.
2. Anda boleh memilih jenis di atas mengikut situasi sebenar
3. Bagi memudahkan melihat dalam pengurusan pangkalan data, sesetengah orang menggunakan jenis datetime untuk menyimpan masa.
Jenis komposit
Jenis ENUM hanya membenarkan satu nilai diperoleh daripada koleksi sementara Jenis SET membenarkan sebarang bilangan nilai diperoleh daripada koleksi.
Jenis ENUM
Jenis ENUM hanya membenarkan satu nilai diperoleh dalam koleksi, yang serupa dengan satu pilihan. Lebih mudah difahami apabila berurusan dengan data yang saling eksklusif, seperti jantina manusia. Medan jenis ENUM boleh mengambil nilai daripada koleksi atau menggunakan nilai nol Sebarang input lain akan menyebabkan MySQL memasukkan rentetan kosong ke dalam medan. Di samping itu, jika kes nilai yang dimasukkan tidak sepadan dengan kes nilai dalam koleksi, MySQL secara automatik akan menggunakan kes nilai yang dimasukkan untuk menukarnya kepada nilai yang konsisten dengan kes koleksi.
Jenis ENUM boleh disimpan sebagai nombor secara dalaman dalam sistem, dan diindeks bermula dari 1. Jenis ENUM boleh mengandungi sehingga 65536 elemen, satu daripadanya dikhaskan oleh MySQL untuk menyimpan maklumat ralat ini diwakili oleh indeks 0 atau rentetan kosong.
MySQL menganggap nilai yang muncul dalam koleksi jenis ENUM sebagai input sah, dan sebarang input lain akan gagal. Ini menunjukkan bahawa lokasi rekod yang salah boleh didapati dengan mudah dengan mencari baris yang mengandungi rentetan kosong atau indeks angka 0 yang sepadan.
Jenis SET Jenis SET adalah serupa tetapi tidak sama dengan jenis ENUM. Jenis SET boleh memperoleh sebarang bilangan nilai daripada koleksi yang telah ditetapkan. Dan seperti jenis ENUM, sebarang percubaan untuk memasukkan nilai yang tidak dipratentukan dalam medan jenis SET akan menyebabkan MySQL memasukkan rentetan kosong. Jika anda memasukkan rekod yang mengandungi unsur undang-undang dan haram, MySQL akan mengekalkan unsur undang-undang dan mengalih keluar unsur haram.
Jenis SET boleh mengandungi sehingga 64 elemen. Dalam elemen SET nilai disimpan sebagai urutan diskret "bit" yang mewakili elemen sepadannya. Bit ialah cara yang mudah dan cekap untuk mencipta koleksi tersusun elemen.
Dan ia juga mengeluarkan elemen pendua, jadi adalah mustahil untuk mengandungi dua elemen yang sama dalam jenis SET.
Untuk mencari rekod haram daripada medan jenis SET cuma cari baris yang mengandungi rentetan kosong atau nilai binari 0.
Penggunaan jenis
Kami telah mempelajari begitu banyak jenis, hanya gunakan jenis yang sepadan semasa membuat pernyataan jadual.
Contohnya:
CREATE TABLE IF NOT EXISTS demo ( id int(11) NOT NULL, username varchar(50) NOT NULL, password char(32) NOT NULL, content longtext NOT NULL, createtime datetime NOT NULL, sex tinyint(4) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Tetapan atribut lain bagi medan
TIDAK TANDA (tidak ditandatangani) Terutamanya digunakan untuk jenis integer dan titik terapung, gunakan tanpa tanda. Iaitu, tidak ada sebelumnya - (tanda tolak).
Digit storan yang lebih panjang. Julat nilai integer kecil ialah -128~127. Selepas menggunakan unsigned, 0-255 panjang boleh disimpan.
Apabila mencipta, tambahkan mengikut pernyataan medan integer atau titik terapung:
tidak ditandatangani
ZEROFILL (0 padding) 0 (bukan ruang) boleh digunakan untuk nilai output pelengkap sebenar . Gunakan pengubah suai ini untuk menghalang pangkalan data MySQL daripada menyimpan nilai negatif.
Tambah berikutan pernyataan medan integer atau titik terapung apabila mencipta:
sifar
lalai Atribut lalai memastikan pemalar ditetapkan jika tiada nilai tersedia Nilai, nilai ini mestilah pemalar kerana MySQL tidak membenarkan penyisipan nilai fungsi atau ekspresi. Selain itu, sifat ini tidak boleh digunakan dengan lajur BLOB atau TEXT. Jika atribut NULL telah ditentukan untuk lajur ini, nilai lalai akan menjadi NULL jika tiada nilai lalai ditentukan, jika tidak, nilai lalai akan bergantung pada jenis data medan.
Apabila mencipta, ikuti pernyataan medan integer atau titik terapung:
'nilai' lalai
bukan null Jika lajur ditakrifkan sebagai bukan nol, nilai nol tidak akan dibenarkan untuk dimasukkan ke dalam lajur. Adalah disyorkan untuk sentiasa menggunakan atribut bukan nol dalam situasi penting kerana ia menyediakan pengesahan asas bahawa semua nilai yang diperlukan telah dihantar kepada pertanyaan.
Apabila mencipta, ikuti pernyataan medan integer atau titik terapung:
bukan null
null Apabila menentukan atribut null untuk lajur, lajur boleh kekal kosong, dan Tanpa mengira sama ada lajur lain dalam baris diisi. Ingat, null bermaksud "tiada" tepat, bukan rentetan kosong atau 0.
Cuma jangan isytiharkan tidak batal selepas pernyataan medan integer atau titik terapung semasa mencipta.