Jenis data Mysql

MySQL menyimpan data. Selagi ia adalah data, kami akan menentukan jenis data. Jenis data tertentu ditentukan dalam medan jadual. Kemudian, jenis data yang sepadan mesti digunakan dalam data yang dimasukkan. Juga, patuhi keperluan panjang 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 ruang (pada asasnya tidak digunakan dalam kerja bukan saintifik, tiada penjelasan akan diberikan)

Jenis integer

MySQL数据类型所占字节值范围
tinyint1字节-128~127
smallint2字节-32768~32767
mediumint3字节-8388608~8388607
int4字节范围-2147483648~2147483647
bigint8字节+-9.22*10的18次方

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 itu boleh dipanjangkan kepada panjang yang ditentukan. Sebagai contoh, menyatakan bahawa jenis medan ialah INT(6),
memastikan bahawa nilai yang mengandungi kurang daripada 6 digit secara automatik berlapik 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 int kecil yang tidak ditandatangani untuk mewakili jantina. Gunakan 0 untuk mewakili perempuan dan 1 untuk mewakili lelaki. Gunakan 2 untuk mewakili tidak diketahui.
  2. Begitu juga dengan zaman manusia, integer tidak bertanda boleh digunakan semasa membuat medan jadual. Kerana umur manusia belum lagi mempunyai 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

Jenis data MySQLbait yang diduduki Julat nilai
float(m, d)4 baitTitik terapung Ketepatan Tunggal jenis, m jumlah nombor, d tempat perpuluhan
ganda(m, d)8 bait Jenis titik terapung berketepatan ganda , m jumlah nombor, d tempat perpuluhan
perpuluhan(m, d)
MySQL数据类型所占字节值范围
float(m, d)4字节单精度浮点型,m总个数,d小数位
double(m, d)8字节双精度浮点型,m总个数,d小数位
decimal(m, d)
decimal是存储为字符串的浮点数
Perpuluhan ialah titik terapung nombor disimpan sebagai rentetan

Nota:

  1. Titik terapung ialah nilai yang tidak tepat dan mungkin kurang tepat
  2. Dan perpuluhan dipanggil nombor titik tetap. Dalam MySQL, ia pada dasarnya 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 watak

MySQL数据类型所占字节值范围
CHAR0-255字节定长字符串
VARCHAR0-255字节变长字符串
TINYBLOB0-255字节不超过255个字符的二进制字符串
TINYTEXT0-255字节短文本字符串
BLOB0-65535字节二进制形式的长文本数据
TEXT0-65535字节长文本数据
MEDIUMBLOB0-16 777 215字节二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215字节中等长度文本数据
LOGNGBLOB0-4 294 967 295字节二进制形式的极大文本数据
LONGTEXT0-4 294 967 295字节极大文本数据
VARBINARY(M)允许长度0-M个字节的定长字节符串值的长度+1个字节
BINARY(M)M允许长度0-M个字节的定长字节符串
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. Jenis VARCHAR, sebaliknya, menganggapnya sebagai nilai maksimum dan hanya menggunakan panjang yang sebenarnya diperlukan untuk menyimpan rentetan
Jenis ini tidak berlapik dengan ruang, tetapi nilai yang lebih panjang daripada penunjuk masih 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 gumpalanApabila 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 dan fail bunyi.
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

MySQL数据类型所占字节值范围
date3字节日期,格式:2014-09-18
time3字节时间,格式:08:42:30
datetime8字节日期时间,格式:2014-09-18 08:42:30
timestamp4字节自动存储记录修改的时间
year1字节年份
Nota:

    Jenis masa jarang digunakan dalam sistem web. Ramai orang suka menggunakan int untuk menyimpan masa. Apabila memasukkan, cap waktu unix dimasukkan 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.
  1. Anda boleh memilih jenis di atas mengikut situasi sebenar
  2. Sesetengah orang menggunakan jenis datetime untuk menyimpan masa bagi memudahkan paparan dalam pengurusan pangkalan data.
Jenis komposit

Jenis ENUM hanya membenarkan satu nilai diperoleh daripada koleksi manakala jenis SET membenarkan sebarang bilangan nilai diperoleh daripada koleksi.

Jenis ENUM

Jenis ENUM adalah serupa dengan pilihan tunggal kerana ia hanya membenarkan satu nilai diperoleh dalam koleksi. 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 ke 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 mengalih keluar 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:

BUAT JADUAL JIKA TIDAK WUJUD demo (
id int(11) BUKAN NULL,
username varchar(50) NOT NULL,
password char(32) NOT NULL,
content longtext NOT NULL,
createtime datetime NOT NULL,
sex tinyint(4) NOT NULL
) ENJIN=CHARSET LALAI InnoDB=utf8;

Tetapan atribut medan lain

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, ikuti pernyataan medan integer atau titik terapung:

tidak ditandatangani

ZEROFILL (0 padding) 0 ( bukan ruang) boleh digunakan untuk melengkapkan nilai output. Gunakan pengubah suai ini untuk menghalang pangkalan data MySQL daripada menyimpan nilai negatif.

Apabila mencipta, ikuti pernyataan medan integer atau titik terapung:

sifar

lalaiAtribut lalai memastikan bahawa Apabila tiada nilai tersedia, nilai pemalar ditetapkan 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 batal Jika a 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 batal

null ditentukan untuk lajur Dengan atribut nol, lajur boleh kekal kosong tanpa mengira sama ada lajur lain dalam baris telah 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.

Meneruskan pembelajaran
  • Cadangan kursus
  • Muat turun perisian kursus