Rumah > Artikel > pangkalan data > Apakah jenis medan mysql?
Terdapat 5 jenis jenis medan mysql: 1. Jenis integer, terutamanya digunakan untuk menyimpan nombor integer, termasuk INT, BIGINT, TINYINT, dll. 2. Nombor titik terapung dan jenis nombor titik tetap, digunakan untuk simpan perpuluhan, nombor titik terapung ialah FLOAT dan DOUBLE, nombor titik tetap termasuk PERPULUHAN 3. Jenis rentetan, digunakan untuk menyimpan data rentetan, dsb.
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
Setiap medan dalam pangkalan data harus mempunyai jenis data yang sesuai yang mengehadkan atau membenarkan data disimpan dalam lajur tersebut. Contohnya, jika medan menyimpan nombor, jenis data yang sepadan hendaklah jenis angka.
Jika anda menggunakan jenis data yang salah, ia mungkin menjejaskan fungsi dan prestasi aplikasi secara serius, jadi semasa mereka bentuk jadual, anda harus memberi perhatian khusus kepada jenis data yang digunakan dalam lajur data. Menukar lajur yang mengandungi data bukanlah perkara remeh dan berbuat demikian boleh mengakibatkan kehilangan data. Oleh itu, jenis data dan panjang yang betul mesti ditetapkan untuk setiap lajur semasa membuat jadual.
Jenis data medan MySQL boleh dibahagikan secara kasar kepada 5 jenis, iaitu jenis integer, jenis titik terapung dan jenis titik tetap, jenis tarikh dan masa, jenis rentetan, jenis binari, dll.
Nota: Jenis integer dan jenis titik terapung boleh secara kolektif dirujuk sebagai jenis data berangka.
1. Jenis integer
Jenis integer juga dipanggil data numerik digunakan terutamanya untuk menyimpan nombor integer.
MySQL menyediakan pelbagai jenis data angka.
Jenis integer utama yang disediakan oleh MySQL ialah TINYINT, SMALLINT, MEDIUMINT, INT dan BIGINT, dan kekangan autoincrement AUTO_INCREMENT boleh ditambahkan pada medan atributnya. Jadual berikut menyenaraikan jenis angka dalam MySQL.
类型名称 | 说明 | 存储需求 |
---|---|---|
TINYINT | 很小的整数 | 1个字节 |
SMALLINT | 小的整数 | 2个宇节 |
MEDIUMINT | 中等大小的整数 | 3个字节 |
INT (INTEGHR) | 普通大小的整数 | 4个字节 |
BIGINT | 大整数 | 8个字节 |
Seperti yang anda lihat daripada jadual di atas, jenis integer yang berbeza memerlukan bilangan bait yang berbeza untuk disimpan bilangan bait terbesar ialah jenis BIGINT Semakin banyak bait yang digunakan oleh jenis, semakin luas julat nilai yang boleh diwakilinya.
Julat nilai setiap jenis data boleh didapati berdasarkan bilangan bait yang diduduki. Sebagai contoh, TINYINT memerlukan 1 bait (8bit) untuk menyimpan, maka nilai maksimum nombor tidak bertanda TINYINT ialah 28-1, iaitu 255 nilai maksimum nombor bertanda TINYINT ialah 27-1, iaitu 127;
2. Jenis titik terapung dan titik tetap
MySQL menggunakan nombor titik terapung dan titik tetap untuk mewakili perpuluhan.
Terdapat dua jenis titik terapung, nombor titik terapung ketepatan tunggal (FLOAT) dan nombor titik terapung berketepatan dua (DOUBLE) hanya terdapat satu jenis titik tetap, iaitu PERPULUHAN.
Kedua-dua jenis titik terapung dan jenis titik tetap boleh diwakili oleh (M, D), di mana M dipanggil ketepatan, menunjukkan jumlah bilangan digit D dipanggil skala, menunjukkan bilangan digit perpuluhan .
Julat nilai jenis nombor titik terapung ialah M (1~255) dan D (1~30, dan tidak boleh lebih besar daripada M-2), yang masing-masing mewakili lebar paparan dan bilangan tempat perpuluhan. M dan D adalah pilihan dalam FLOAT dan DOUBLE, dan jenis FLOAT dan DOUBLE akan disimpan pada ketepatan maksimum yang disokong oleh perkakasan. Nilai D lalai untuk DECIMAL ialah 0 dan nilai M ialah 10.
Jadual berikut menyenaraikan jenis perpuluhan dan keperluan storan dalam MySQL.
类型名称 | 说明 | 存储需求 |
---|---|---|
FLOAT | 单精度浮点数 | 4 个字节 |
DOUBLE | 双精度浮点数 | 8 个字节 |
DECIMAL (M, D),DEC | 压缩的“严格”定点数 | M 2 个字节 |
Jenis DECIMAL berbeza dengan FLOAT dan DOUBLE. DOUBLE sebenarnya disimpan dalam bentuk rentetan Julat nilai maksimum yang mungkin bagi DECIMAL adalah sama dengan DOUBLE, tetapi julat nilai berkesan ditentukan oleh M dan D. Jika M diubah dan D ditetapkan, julat nilai akan menjadi lebih besar apabila M menjadi lebih besar.
Seperti yang anda boleh lihat daripada jadual di atas, ruang storan PERPULUHAN tidak tetap, tetapi ditentukan oleh nilai kejituan M, yang menduduki M 2 bait.
Julat nilai jenis FLOAT adalah seperti berikut:
Julat nilai yang ditandatangani: -3.402823466E 38~-1.175494351E-38.
Julat nilai tidak ditandatangani: 0 dan -1.175494351E-38~-3.402823466E 38.
Julat nilai jenis DOUBLE adalah seperti berikut:
Julat nilai yang ditandatangani: -1.7976931348623157E 308~-2.22850733
Julat nilai tidak ditandatangani: 0 dan -2.2250738585072014E-308~-1.7976931348623157E 308.
Petua: Sama ada ia jenis titik tetap atau titik terapung, jika ketepatan yang ditentukan pengguna melebihi julat ketepatan, ia akan dibundarkan untuk diproses.
FLOAT dan DOUBLE akan lalai kepada ketepatan sebenar (ditentukan oleh perkakasan komputer dan sistem pengendalian) apabila ketepatan tidak ditentukan secara lalai kepada (10, 0) jika ketepatan tidak ditentukan .
Kelebihan nombor titik terapung berbanding nombor titik tetap ialah ia boleh mewakili julat yang lebih besar apabila panjangnya tetap;
Akhir sekali, izinkan saya menekankan: Dalam MySQL, nombor titik tetap disimpan dalam bentuk rentetan Apabila keperluan ketepatan agak tinggi (seperti mata wang, data saintifik), lebih baik menggunakan PERPULUHAN. jenis, dan dua jenis apungan yang lain adalah lebih baik nombor titik juga terdedah kepada masalah semasa melakukan operasi tolak dan perbandingan, jadi anda perlu memberi perhatian apabila menggunakan nombor titik terapung dan cuba mengelakkan perbandingan titik terapung.
3. Jenis tarikh/masa
Terdapat banyak jenis data yang mewakili tarikh dalam MySQL: YEAR, TIME, DATE, DTAETIME, TIMESTAMP . Apabila hanya merekod maklumat tahun, anda hanya boleh menggunakan jenis YEAR.
Setiap jenis mempunyai julat nilai undang-undang Apabila nilai haram ditentukan, sistem akan memasukkan nilai "sifar" ke dalam pangkalan data.
Jadual berikut menyenaraikan jenis tarikh dan masa dalam MySQL.
类型名称 | 日期格式 | 日期范围 | 存储需求 |
---|---|---|---|
YEAR | YYYY | 1901 ~ 2155 | 1 个字节 |
TIME | HH:MM:SS | -838:59:59 ~ 838:59:59 | 3 个字节 |
DATE | YYYY-MM-DD | 1000-01-01 ~ 9999-12-3 | 3 个字节 |
DATETIME | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | 8 个字节 |
TIMESTAMP | YYYY-MM-DD HH:MM:SS | 1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC | 4 个字节 |
Jenis YEAR
Jenis YEAR ialah jenis bait tunggal yang digunakan untuk mewakili tahun, hanya memerlukan 1 bait untuk storan. YEAR boleh ditentukan dalam pelbagai format, seperti berikut:
TAHUN dinyatakan dalam rentetan 4 digit atau format nombor 4 digit, antara '1901' hingga '2155'. Format input ialah 'YYYY' atau YYYY Contohnya, jika anda memasukkan '2010' atau 2010, nilai yang dimasukkan ke dalam pangkalan data ialah 2010.
TAHUN diwakili sebagai rentetan 2 digit dalam julat '00' hingga '99'. Nilai dalam julat '00' hingga '69' dan '70' hingga '99' ditukar kepada nilai YEAR dalam julat 2000 hingga 2069 dan 1970 hingga 1999 masing-masing. '0' mempunyai kesan yang sama seperti '00'. Nilai yang dimasukkan di luar julat akan ditukar kepada 2000.
TAHUN dinyatakan sebagai nombor 2 digit, antara 1 hingga 99. Nilai dalam julat 1 hingga 99 dan 70 hingga 99 ditukar kepada TAHUN dalam julat 2001 hingga 2069 dan 1970 hingga 1999 nilai masing-masing. Ambil perhatian bahawa di sini nilai 0 akan ditukar kepada 0000, bukan 2000.
Petua: Julat integer dua digit berbeza sedikit daripada julat rentetan dua digit. Contohnya, untuk memasukkan tahun 3000, pembaca mungkin menggunakan format angka 0 untuk mewakili TAHUN, tetapi sebenarnya, nilai yang dimasukkan ke dalam pangkalan data ialah 0000, bukan 3000 seperti yang dijangkakan. Hanya '0' atau '00' dalam format rentetan boleh ditafsirkan dengan betul sebagai 3000, nilai YEAR haram akan ditukar kepada 0000.
Jenis MASA
Jenis MASA digunakan untuk nilai yang hanya memerlukan maklumat masa dan memerlukan 3 bait untuk storan. Formatnya ialah HH:MM:SS. HH mewakili jam, MM mewakili minit, dan SS mewakili saat.
Julat nilai jenis MASA ialah -838:59:59~838:59:59 Sebab mengapa bahagian jam begitu besar ialah jenis MASA bukan sahaja boleh digunakan untuk mewakili masa hari (mesti kurang daripada 24 jam), Ia juga boleh menjadi masa sejak peristiwa atau masa antara dua peristiwa (yang boleh melebihi 24 jam, atau negatif).
Nilai MASA boleh ditentukan menggunakan pelbagai format, seperti ditunjukkan di bawah.
Rentetan dalam format 'D HH:MM:SS'. Sintaks "tidak ketat" ini juga boleh digunakan: 'HH:MM:SS', 'HH:MM', 'D HH' atau 'SS'. D di sini mewakili hari, yang boleh mengambil nilai antara 0 dan 34. Apabila memasukkan ke dalam pangkalan data, D ditukar kepada jam dan disimpan dalam format "D*24 HH".
Format 'HHMMSS', rentetan tanpa pemisah atau nilai berangka dalam format HHMMSS, dengan mengandaikan masa yang bermakna. Sebagai contoh, '101112' difahami sebagai '10:11:12', tetapi '106112' adalah haram (ia mempunyai bahagian minit yang tidak bermakna) dan akan menjadi 00:00:00 apabila disimpan.
Petua: Berhati-hati apabila memberikan nilai singkatan ke lajur TIME: tanpa titik bertindih, MySQL menganggap bahawa dua digit paling kanan mewakili saat apabila mentafsir nilai. (MySQL mentafsir nilai TIME sebagai masa lalu dan bukannya masa semasa). Sebagai contoh, pembaca mungkin berfikir '1112' dan 1112 bermakna 11:12:00 (iaitu, 12 minit selepas pukul 11), tetapi MySQL mentafsirkannya sebagai 00:11:12 (iaitu, 11 minit dan 12 saat ). Begitu juga '12' dan 12 ditafsirkan sebagai 00:00:12. Sebaliknya, jika titik bertindih digunakan dalam nilai TIME, ia pasti dianggap sebagai masa dalam sehari, iaitu, '11:12' bermaksud 11:12:00, bukan 00:11:12.
Jenis TARIKH
Jenis TARIKH digunakan apabila hanya nilai tarikh diperlukan, tanpa bahagian masa dan memerlukan 3 bait untuk storan. Format tarikh ialah 'YYYY-MM-DD', di mana YYYY mewakili tahun, MM mewakili bulan dan DD mewakili hari.
Apabila memberikan nilai kepada medan jenis DATE, anda boleh menggunakan jenis rentetan atau sisipan data jenis angka, selagi ia mematuhi format tarikh DATE. Seperti yang ditunjukkan di bawah:
Tarikh yang dinyatakan dalam format aksara 'YYYY-MM-DD' atau 'YYYYMMDD', julat nilai ialah '1000-01-01'~'9999 - 12-3'. Sebagai contoh, masukkan '2015-12-31' atau '20151231', dan tarikh yang dimasukkan ke dalam pangkalan data ialah 2015-12-31.
Mewakili tarikh dalam format rentetan 'YY-MM-DD' atau 'YYMMDD', dengan YY mewakili nilai tahun dua digit. MySQL mentafsir peraturan untuk nilai tahun dua digit: nilai tahun dalam julat '00~69' ditukar kepada '2000~2069', dan nilai tahun dalam julat '70~99' ditukar kepada '1970~1999'. Sebagai contoh, jika anda memasukkan '15-12-31', tarikh yang dimasukkan ke dalam pangkalan data ialah 2015-12-31 jika anda memasukkan '991231', tarikh yang dimasukkan ke dalam pangkalan data ialah 1999-12-31;
Tarikh dinyatakan dalam format angka YYMMDD, serupa dengan yang sebelumnya, nilai tahun dalam julat 00~69 ditukar kepada 2000~2069, dan nilai tahun dalam julat 80~99 ditukar kepada 1980~1999. Sebagai contoh, jika anda memasukkan 151231, tarikh yang dimasukkan ke dalam pangkalan data ialah 2015-12-31, dan jika anda memasukkan 991231, tarikh yang dimasukkan ke dalam pangkalan data ialah 1999-12-31.
Gunakan CURRENT_DATE atau NOW() untuk memasukkan tarikh sistem semasa.
Petua: MySQL membenarkan sintaks "santai": sebarang tanda baca boleh digunakan sebagai pemisah antara bahagian tarikh. Sebagai contoh, '98-11-31', '98.11.31', '98/11/31' dan '98@11@31' adalah setara dan nilai ini akan dimasukkan ke dalam pangkalan data dengan betul.
Jenis DATETIME
Jenis DATETIME digunakan untuk nilai yang perlu mengandungi maklumat tarikh dan masa serta memerlukan 8 bait untuk storan. Format tarikh ialah 'YYYY-MM-DD HH:MM:SS', dengan YYYY mewakili tahun, MM mewakili bulan, DD mewakili hari, HH mewakili jam, MM mewakili minit dan SS mewakili detik.
Apabila memberikan nilai kepada medan jenis DATETIME, anda boleh memasukkan data jenis rentetan atau jenis angka, asalkan ia mematuhi format tarikh DATETIME, seperti yang ditunjukkan di bawah.
Tarikh yang diwakili dalam format rentetan 'YYYY-MM-DD HH:MM:SS' atau 'YYYYMMDDHHMMSS', julat nilai ialah '1000-01-01 00:00: 00 '~'9999-12-3 23:59:59'. Sebagai contoh, jika anda memasukkan '2014-12-31 05:05:05' atau '20141231050505', nilai DATETIME yang dimasukkan ke dalam pangkalan data ialah 2014-12-31 05:05:05.
Tarikh yang diwakili dalam format rentetan 'YY-MM-DD HH:MM:SS' atau 'YYMMDDHHMMSS', dengan YY mewakili nilai tahun dua digit. Sama seperti sebelumnya, nilai tahun dalam julat '00~79' ditukar kepada '2000~2079', dan nilai tahun dalam julat '80~99' ditukar kepada '1980~1999'. Sebagai contoh, jika anda memasukkan '14-12-31 05:05:05', DATETIME yang dimasukkan ke dalam pangkalan data ialah 2014-12-31 05:05:05 jika anda memasukkan 141231050505, DATETIME yang dimasukkan ke dalam pangkalan data ialah 2014; -12-31 05:05:05 .
Tarikh dan masa dalam format angka YYYYMMDDHHMMSS atau YYMMDDHHMMSS. Sebagai contoh, jika anda memasukkan 20141231050505, DATETIME yang dimasukkan ke dalam pangkalan data ialah 2014-12-31 05:05:05 jika anda memasukkan 140505050505, DATETIME yang dimasukkan ke dalam pangkalan data ialah 2014-12-31:05.
Petua: MySQL membenarkan sintaks "santai": sebarang tanda baca boleh digunakan sebagai pemisah antara bahagian tarikh atau bahagian masa. Contohnya, '98-12-31 11:30:45', '98.12.31 11 30 35', '98/12/31 11*30*45' dan '98@12@31 11^30^45' adalah Setara, nilai-nilai ini boleh dimasukkan dengan betul ke dalam pangkalan data.
Jenis TIMESTAMP
Format paparan TIMESTAMP adalah sama dengan DATETIME, lebar paparan ditetapkan pada 19 aksara dan format tarikh ialah YYYY- MM-DD HH:MM :SS, memerlukan 4 bait untuk storan. Walau bagaimanapun, julat nilai lajur TIMESTAMP adalah lebih kecil daripada julat nilai DATETIME, iaitu '1970-01-01 00:00:01'UTC~'2038-01-19 03:14:07'UTC. Apabila memasukkan data, pastikan ia berada dalam julat nilai yang sah.
Petua: Waktu Sejagat Selaras (Bahasa Inggeris: Waktu Sejagat Selaras, Bahasa Perancis: Temps Universel Coordonné) juga dikenali sebagai Waktu Bersatu Dunia, Waktu Piawai Dunia dan Waktu Selaras Antarabangsa. Singkatan Bahasa Inggeris (CUT) dan Perancis (TUC) adalah berbeza, dan sebagai kompromi, singkatan itu ialah UTC.
TIMESTAMP dan DATETIME, sebagai tambahan kepada bait storan yang berbeza dan julat yang disokong, perbezaan terbesar ialah:
DATETIME Apabila menyimpan data tarikh, Ia disimpan dalam format input sebenar, iaitu, apa sahaja yang dimasukkan disimpan, tanpa mengira zon waktu
Nilai TIMESTAMP disimpan dalam format UTC (Universal Standard Time) dan disimpan dalam format yang betul Tukar kepada zon waktu semasa, dan kemudian tukar kembali ke zon waktu semasa apabila mendapatkan semula. Iaitu, apabila membuat pertanyaan, nilai masa yang dipaparkan adalah berbeza bergantung pada zon waktu semasa.
Petua: Jika anda menetapkan nilai DATE kepada objek DATETIME atau TIMESTAMP, bahagian masa nilai yang terhasil ditetapkan kepada '00:00:00', jadi nilai DATE mengandungi tiada maklumat masa. Jika objek DATE diberikan nilai DATETIME atau TIMESTAMP, bahagian masa nilai yang terhasil akan dialih keluar, jadi nilai DATE tidak mengandungi maklumat masa.
4. Jenis rentetan
Jenis rentetan digunakan untuk menyimpan data rentetan, dan juga boleh menyimpan data perduaan imej dan bunyi. Rentetan boleh dibandingkan dengan rentetan sensitif huruf besar atau tidak sensitif, dan carian padanan ungkapan biasa juga boleh dilakukan.
Jenis rentetan dalam MySQL termasuk CHAR, VARCHAR, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, ENUM, SET, dll.
Jadual berikut menyenaraikan jenis data rentetan dalam MySQL M dalam kurungan menunjukkan bahawa panjang boleh ditentukan.
类型名称 | 说明 | 存储需求 |
---|---|---|
CHAR(M) | 固定长度非二进制字符串 | M 字节,1<=M<=255 |
VARCHAR(M) | 变长非二进制字符串 | L 1字节,在此,L< = M和 1<=M<=255 |
TINYTEXT | 非常小的非二进制字符串 | L 1字节,在此,L<2^8 |
TEXT | 小的非二进制字符串 | L 2字节,在此,L<2^16 |
MEDIUMTEXT | 中等大小的非二进制字符串 | L 3字节,在此,L<2^24 |
LONGTEXT | 大的非二进制字符串 | L 4字节,在此,L<2^32 |
ENUM | 枚举类型,只能有一个枚举字符串值 | 1或2个字节,取决于枚举值的数目 (最大值为65535) |
SET | 一个设置,字符串对象可以有零个或 多个SET成员 | 1、2、3、4或8个字节,取决于集合 成员的数量(最多64个成员) |
Jenis VARCHAR dan TEXT ialah jenis panjang boleh ubah yang keperluan penyimpanannya bergantung pada panjang sebenar nilai lajur (ditandakan dengan L dalam jadual sebelumnya), dan bukannya pada saiz maksimum yang mungkin bagi jenis tersebut.
Sebagai contoh, lajur VARCHAR(10) boleh menyimpan rentetan dengan panjang maksimum 10 aksara Storan sebenar memerlukan panjang rentetan L ditambah satu bait untuk merekodkan panjang rentetan. Untuk aksara "abcd", L ialah 4 dan storan memerlukan 5 bait.
Jenis CHAR dan VARCHAR
CHAR(M) ialah rentetan panjang tetap dan panjang lajur rentetan ditentukan semasa mentakrifkan. Apabila disimpan, pad ruang di sebelah kanan ke panjang yang ditentukan. M mewakili panjang lajur, antara 0 hingga 255 aksara.
Sebagai contoh, CHAR(4) mentakrifkan lajur rentetan panjang tetap yang mengandungi maksimum 4 aksara. Apabila nilai CHAR diambil, ruang mengekor akan dialih keluar.
VARCHAR(M) ialah rentetan panjang berubah-ubah, M mewakili panjang lajur maksimum dan julat M ialah 0~65535. Panjang sebenar maksimum VARCHAR ditentukan oleh saiz baris terpanjang dan set aksara yang digunakan, manakala ruang sebenar yang diduduki ialah panjang sebenar rentetan tambah satu.
Sebagai contoh, VARCHAR(50) mentakrifkan rentetan dengan panjang maksimum 50. Jika rentetan yang disisipkan hanya mempunyai 10 aksara, rentetan yang disimpan sebenar ialah 10 aksara dan aksara akhir rentetan. Ruang belakang VARCHAR dikekalkan apabila nilai disimpan dan diambil semula.
Jenis TEKS
Lajur TEXT menyimpan rentetan bukan binari, seperti kandungan artikel, ulasan, dsb. Ruang jejak tidak dialih keluar apabila menyimpan atau menanyakan nilai lajur TEXT.
Jenis TEKS terbahagi kepada 4 jenis: TINYTEXT, TEXT, MEDIUMTEXT dan LONGTEXT. Jenis TEXT yang berbeza mempunyai ruang storan dan panjang data yang berbeza.
TINYTEXT mewakili lajur TEXT dengan panjang 255 (28-1) aksara.
TEKS mewakili lajur TEXT dengan panjang 65535 (216-1) aksara.
MEDIUMTEXT mewakili lajur TEXT dengan panjang 16777215 (224-1) aksara.
LONGTEXT mewakili lajur TEXT dengan panjang 4294967295 atau 4GB (232-1) aksara.
Jenis ENUM
ENUM ialah objek rentetan yang nilainya ialah nilai lajur yang disenaraikan dalam spesifikasi lajur apabila jadual dibuat. Format sintaks adalah seperti berikut:
<字段名> ENUM( '值1', '值1', …, '值n' )
Nama medan merujuk kepada medan yang akan ditakrifkan dan nilai n merujuk kepada nilai ke-n dalam senarai penghitungan.
Apabila medan jenis ENUM diambil, ia boleh diambil daripada senarai penghitungan yang ditentukan dan hanya satu pengambilan boleh diambil pada satu masa. Jika terdapat ruang dalam ahli yang dibuat, ruang belakang akan dialih keluar secara automatik.
Nilai ENUM diwakili secara dalaman oleh integer Setiap nilai penghitungan mempunyai nilai indeks; sehingga 65535 elemen.
Jenis SET
SET ialah objek rentetan yang boleh mempunyai nilai sifar atau lebih Lajur SET boleh mempunyai sehingga 64 ahli dibuat. Senarai nilai yang ditentukan. Apabila menentukan nilai lajur SET yang merangkumi berbilang ahli SET, pisahkan setiap ahli dengan koma Format sintaks adalah seperti berikut:
SET( '值1', '值2', …, '值n' )
adalah sama dengan jenis ENUM Nilai SET diwakili secara dalaman integer, dalam senarai Setiap nilai mempunyai nombor indeks. Ruang belakang daripada nilai ahli SET dialih keluar secara automatik apabila jadual dibuat.
Tetapi tidak seperti jenis ENUM, medan jenis ENUM hanya boleh memilih satu nilai daripada nilai lajur yang ditentukan untuk sisipan, manakala lajur jenis SET boleh memilih gabungan berbilang aksara daripada nilai lajur yang ditentukan.
Petua: Jika nilai lajur yang dimasukkan ke dalam medan SET diduakan, MySQL akan memadamkan nilai pendua secara automatik; akan menyimpannya dalam pangkalan data mengikut Mereka muncul dalam susunan yang ditakrifkan jika nilai yang salah dimasukkan, MySQL akan mengabaikannya dan mengeluarkan amaran secara lalai.
5 Jenis binari
MySQL menyokong dua jenis data aksara: rentetan teks dan rentetan binari. Dalam bahagian sebelumnya "MySQL String Type" kita bercakap tentang rentetan teks, dalam bahagian ini kita akan menerangkan rentetan binari.
Jenis rentetan binari kadangkala dipanggil secara langsung "jenis binari".
Rentetan binari dalam MySQL ialah BIT, BINARI, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB dan LONGBLOB.
Jadual berikut menyenaraikan jenis data binari dalam MySQL M dalam kurungan menunjukkan bahawa panjang boleh ditentukan.
类型名称 | 说明 | 存储需求 |
---|---|---|
BIT(M) | 位字段类型 | 大约 (M+7)/8 字节 |
BINARY(M) | 固定长度二进制字符串 | M 字节 |
VARBINARY (M) | 可变长度二进制字符串 | M+1 字节 |
TINYBLOB (M) | 非常小的BLOB | L+1 字节,在此,L<2^8 |
BLOB (M) | 小 BLOB | L+2 字节,在此,L<2^16 |
MEDIUMBLOB (M) | 中等大小的BLOB | L+3 字节,在此,L<2^24 |
LONGBLOB (M) | 非常大的BLOB | L+4 字节,在此,L<2^32 |
BIT 类型
位字段类型。M 表示每个值的位数,范围为 1~64。如果 M 被省略,默认值为 1。如果为 BIT(M) 列分配的值的长度小于 M 位,在值的左边用 0 填充。例如,为 BIT(6) 列分配一个值 b'101',其效果与分配 b'000101' 相同。
BIT 数据类型用来保存位字段值,例如以二进制的形式保存数据 13,13 的二进制形式为 1101,在这里需要位数至少为 4 位的 BIT 类型,即可以定义列类型为 BIT(4)。大于二进制 1111 的数据是不能插入 BIT(4) 类型的字段中的。
提示:默认情况下,MySQL 不可以插入超出该列允许范围的值,因而插入数据时要确保插入的值在指定的范围内。
BINARY 和 VARBINARY 类型
BINARY 和 VARBINARY 类型类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字节字符串。使用的语法格式如下:
列名称 BINARY(M) 或者 VARBINARY(M)
BINARY 类型的长度是固定的,指定长度后,不足最大长度的,将在它们右边填充 “\0” 补齐,以达到指定长度。例如,指定列数据类型为 BINARY(3),当插入 a 时,存储的内容实际为 “\a0\0”,当插入 ab 时,实际存储的内容为“ab\0”,无论存储的内容是否达到指定的长度,存储空间均为指定的值 M。
VARBINARY 类型的长度是可变的,指定好长度之后,长度可以在 0 到最大值之间。例如,指定列数据类型为 VARBINARY(20),如果插入的值长度只有 10,则实际存储空间为 10 加 1,实际占用的空间为字符串的实际长度加 1。
BLOB 类型
BLOB 是一个二进制的对象,用来存储可变数量的数据。BLOB 类型分为 4 种:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB
【相关推荐:mysql视频教程】
Atas ialah kandungan terperinci Apakah jenis medan mysql?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!