微信网站开发报价,网站开发实例教程,怎么给网站 做排名,上海最新新闻头条本篇将介绍在 MySql 中的所有数据类型#xff0c;其中主要分为四类#xff1a;数值类型、文本和二进制类型、时间日期、String 类型。如下#xff08;图片来源#xff1a;MySQL数据库#xff09;#xff1a; 目录如下#xff1a; 目录 数值类型 1. 整数类型 2. … 本篇将介绍在 MySql 中的所有数据类型其中主要分为四类数值类型、文本和二进制类型、时间日期、String 类型。如下图片来源MySQL数据库 目录如下 目录 数值类型 1. 整数类型 2. bit 类型 3. 浮点数类型 字符串类型 1. char 类型 2. varchar 3. 如何选择 char 和 varchar 日期和时间类型 enum和set 数值类型 数值类型的数据又主要分为两类整数类型和浮点数类型还有 bit 类型对于整数类型来说占多少位就可以表示多少位数的大小若不在定义变量的后面带上 unsigned 关键字修饰则为有符号整数其表示范围为-2 ^ (n-1) ~ 2 ^ (n - 1) - 1若带上 unsigned 关键字修饰则表示的范围为 2 ^ n - 1其中 n 代表的是数据类型的位数。 1. 整数类型 对于整数类型tinyint 数据类型占一个字节、smallint 占用两个字节、mediumint 占三个字节、int 占四个字节、bigint 占八个字节。 我们以 tinyint 类型为例讲解其余所有的整数类型的操作均和 tinyint 的一致只是能表示的数据范围不同而已tinyint 数据类型为 8 位bit位一个字节如下 当我们向一个类型为 tinyint 类型的变量插入元素的时候超过对应的范围就会导致我们插入失败当我们定义一共 tinyint unsigned 元素的变量的时候当范围超255的时候也会导致报错如下 对于如上的操作我们就可得出结论 1. mysql 中插入数据不合法的数据会被 mysql 直接给拦截掉只要我们插入的数据就一定是合法的数据。 2. mysql 的中数据类型本身就是一种约束这种约束会倒逼我们去遵守数据类型的使用保证数据可预期的完整的。 2. bit 类型 对于 bit 类型来说定义的时候为 bit(m)其中 m 表示该 bit 类型的数据有多少位默认值为 1最大为64所以 bit 类型的数据的位数范围为1 ~ 64 位如下 如上所示当我们插入对应的元素的时候超过 bit 位的位数的时候就会导致插入失败同时查看的时候显示方法和整型类型的数据有所区别若是其他版本的mysql可能显示不出对应的 bit 类型的数据因为可能是按照asc码值显示的时候整个使用我们就可可以将数据转化位十六进制来显示如下。 3. 浮点数类型 对于浮点数类型而言主要被我们分 float、double 和 decimal 两类先以 float 为例语法为float(m, d) [unsigned]其中 m 为总显示长度d 表示小数位数。占用的空间为 4 个字节如 float(42) 表示的范围为 -99.99 ~ 99.99对于小数的位数已经在定义的时候就已经定下来了即使我们插入的小数位数没有那么多都会自动填充0小数位前的整数就是使用总位数减去小数位数得出若在 float 后面加上 unsigned 修饰则只能表示 0 ~ 99.99 的数据如下 当我们插入不合法数据的时候依然会导致插入失败。但是在浮点数中的小数部分遵守五舍六入小于等于5舍掉大于等于六进一如下 但即使是这样的进位规则若进入的时候导致数据溢出还是会导致插入失败。但是对于 float 类型而言在表示数据较大或者浮点数较多的时候也会导致精度缺失如下 如上是我们采用默认的 float 类型的数据当我们使用 double 类型数据的时候其实也会有精度损失只能说 double类型能表示的数据范围更大。 当面对精度损失的时候我们可以使用 decimal 类型来定义变量如下 如上所示当我们使用 float 类型的时候就会出现一定的数据误差所以平时我们使用浮点数最好使用 decimal 变量类型精度更高。 float 表示的精度大约是 7 位 decimal 整数最大位数 m 为65支持小数最小位数 d 为30若 d 被省略默认为 0若 m 被省略默认是10。 字符串类型 在 mysql 中的字符串输入的时候使用单引号和双引号都可以但常用的为单引号。 1. char 类型 对于 char 类型的语法为char(L)固定长度的字符串L 是可以存储的长度单位为字符最大长度为 255如下 如上所示当我们将 name 变量定义为 char(2) 类型的数据这个时候我们插入对应的字符超过两个的时候就会报错在 mysql 中的 char 类型中存储的数据是 字符而不是字节特别是在 utf8 编码下的字符一个字符占3个字节所以可以存下对应数量的汉字。 2. varchar varchar 为可变长字符串varchar(L)可变长字符串L 表示字符串长度最大长度为 65535 个字节。如下 关于 varcharL中的 L 到底是多大这个 L 的值和编码密切相关 varchar 长度可以指定为0 到 65535 之家的值但有 1 ~ 3 个字节用于记录数据大小所以有效字节数是 65532 但是需要注意的是这个 varchar 类型的单位是字节所以在 utf8 编码下的最多能存放 65532/321844 个字符我们在定义的时候也只能最多定义 21844 个字符若编码是 gbk 编码则最多定义 65532/232766 个字符。如下 当我们在 gbk 编码下的数据库中创建对应的表的时候最多定义 32766 个长度。 3. 如何选择 char 和 varchar char 和 varchar 的对比在 utf8 编码下 1. 对于 char 类型定义长度为 字节数为 3L 2. 对于 varchar 类型定义长度为 L实际插入字符长度为 n占字节数为 3 * n 1 那么我们如何选择 char 和 varchar 类型呢 1. 若数据确定长度都一样长我们就使用 char如身份证号码、手机号
2. 若数据长度有变化我们就使用 varchar比名字地址但是最起码要保证存入的长度我们能存进去
3. 定长的 char 类型比较浪费磁盘空间但效率较高
4. 边长的 varchar 类型比较节省空间但效率较低
5. 定长的意义为直接开辟好空间
6. 边长的意义为在补偿过自定义范围的情况下用多少开辟多少 日期和时间类型 常用的日期有一下三个 date 日期 yyyy-mm-dd 占用三个字节 datetime 时间日期格式 yyyy-mm-dd HH:ii:ss 表示范围从1000 到 9999占用8字节 timestamp 时间戳从1970 年开始格式和 datetime 一样但不同的是 timestamp 的值更新之后会是当前的最新值若不更新就是创建时候的值如下创建一个 birthday 的表 mysql create table birthday (- t1 date,- t2 datetime,- t3 timestamp- );
Query OK, 0 rows affected (0.02 sec)mysql insert into birthday(t1,t2) values(1997-7-1,2008-8-8 12:1:1);
Query OK, 1 row affected (0.00 sec)mysql select * from birthday;
------------------------------------------------------
| t1 | t2 | t3 |
------------------------------------------------------
| 1997-07-01 | 2008-08-08 12:01:01 | 2024-10-23 21:46:49 |
------------------------------------------------------
1 row in set (0.00 sec)mysql update birthday set t12022-1-1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0mysql select * from birthday;
------------------------------------------------------
| t1 | t2 | t3 |
------------------------------------------------------
| 2022-01-01 | 2008-08-08 12:01:01 | 2024-10-23 21:48:42 |
------------------------------------------------------
1 row in set (0.00 sec) 如上所示假若我们创建出的 timestamp 类型的数据在插入时会自动更新成当前时间但是之后就不会改变了只有当我们更新表中值的时候timestamp 类型数据的值就会自动更新 enum和set 枚举类型的语法enum(选项1, 选项2, 选项3,...) --- 单选类型 对于枚举的设定只是提供了若干选项的值最终在一个单元格中实际只存储了其中一个值而且处于效率来说这些值实际存储的是数字因为这些选项的每个选项值依次对应如下数字1234……最多到65535个所以当我们添加枚举值的时候也可以添加这些对应的数字编号。 集合类型的语法set(选项值1, 选项值2, 选项值3,...) --- 多选类型 该设定只是提供了若干选项的值最终一个单元格中设计可存储了其中任意多个值而且出于效率考虑这些值实际存储的是数字因为这些选项的每个 选项值依次对应如下数字1 2 4 8 16 32 64…… 最多64个 注在添加枚举值、集合值的时候不建议使用数字表示因为不利于阅读。 如下 mysql CREATE TABLE votes (- username VARCHAR(32),- hobby SET(登山, 游泳, 篮球, 武术),- gender ENUM(男, 女)- );
Query OK, 0 rows affected (0.02 sec)mysql mysql insert votes (张山, 登山,武术, 男);
Query OK, 1 row affected (0.00 sec)mysql insert votes values (小红, 登山,游泳, 2);
Query OK, 1 row affected (0.00 sec)mysql select * from votes where gender2;
---------------------------------
| username | hobby | gender |
---------------------------------
| 小红 | 登山,游泳 | 女 |
---------------------------------
1 row in set (0.00 sec) 当我们在表中查找有关集合元素的时候不能完全找到对应的元素如下 mysql select * from votes;
---------------------------------
| username | hobby | gender |
---------------------------------
| 张山 | 登山,武术 | 男 |
| 小红 | 登山,游泳 | 女 |
| 王明 | 登山,篮球 | 男 |
| 小刘 | 登山 | 男 |
---------------------------------
4 rows in set (0.00 sec)mysql select * from votes where hobby登山;
--------------------------
| username | hobby | gender |
--------------------------
| 小刘 | 登山 | 男 |
--------------------------
1 row in set (0.00 sec) 如上所示当我们使用查找语句查找 hobby 为登山的时候只能找到刚好为登山的不能找到其中有登山的这个时候我们可以使用函数 find_in_set(sub,str_list)使用方法如下 mysql select * from votes where find_in_set(登山, hobby);
---------------------------------
| username | hobby | gender |
---------------------------------
| 张山 | 登山,武术 | 男 |
| 小红 | 登山,游泳 | 女 |
| 王明 | 登山,篮球 | 男 |
| 小刘 | 登山 | 男 |
---------------------------------
4 rows in set (0.00 sec)
文章转载自: http://www.morning.xnlj.cn.gov.cn.xnlj.cn http://www.morning.ygwyt.cn.gov.cn.ygwyt.cn http://www.morning.nqyzg.cn.gov.cn.nqyzg.cn http://www.morning.fbfnk.cn.gov.cn.fbfnk.cn http://www.morning.rhpgk.cn.gov.cn.rhpgk.cn http://www.morning.jnrry.cn.gov.cn.jnrry.cn http://www.morning.brkrt.cn.gov.cn.brkrt.cn http://www.morning.poapal.com.gov.cn.poapal.com http://www.morning.qczpf.cn.gov.cn.qczpf.cn http://www.morning.pgggs.cn.gov.cn.pgggs.cn http://www.morning.mrttc.cn.gov.cn.mrttc.cn http://www.morning.mnccq.cn.gov.cn.mnccq.cn http://www.morning.rgwrl.cn.gov.cn.rgwrl.cn http://www.morning.mbrbk.cn.gov.cn.mbrbk.cn http://www.morning.jtfsd.cn.gov.cn.jtfsd.cn http://www.morning.rntyn.cn.gov.cn.rntyn.cn http://www.morning.sqhlx.cn.gov.cn.sqhlx.cn http://www.morning.lsyk.cn.gov.cn.lsyk.cn http://www.morning.thrtt.cn.gov.cn.thrtt.cn http://www.morning.dtzxf.cn.gov.cn.dtzxf.cn http://www.morning.ddjp.cn.gov.cn.ddjp.cn http://www.morning.gktds.cn.gov.cn.gktds.cn http://www.morning.jlthz.cn.gov.cn.jlthz.cn http://www.morning.rnnwd.cn.gov.cn.rnnwd.cn http://www.morning.dkcpt.cn.gov.cn.dkcpt.cn http://www.morning.mtgnd.cn.gov.cn.mtgnd.cn http://www.morning.mbmh.cn.gov.cn.mbmh.cn http://www.morning.drytb.cn.gov.cn.drytb.cn http://www.morning.xqgfy.cn.gov.cn.xqgfy.cn http://www.morning.wwnb.cn.gov.cn.wwnb.cn http://www.morning.guangda11.cn.gov.cn.guangda11.cn http://www.morning.fdlyh.cn.gov.cn.fdlyh.cn http://www.morning.qzqjz.cn.gov.cn.qzqjz.cn http://www.morning.zgnng.cn.gov.cn.zgnng.cn http://www.morning.cbtn.cn.gov.cn.cbtn.cn http://www.morning.rgrz.cn.gov.cn.rgrz.cn http://www.morning.dnpft.cn.gov.cn.dnpft.cn http://www.morning.lptjt.cn.gov.cn.lptjt.cn http://www.morning.tzmjc.cn.gov.cn.tzmjc.cn http://www.morning.lwwnq.cn.gov.cn.lwwnq.cn http://www.morning.pfjbn.cn.gov.cn.pfjbn.cn http://www.morning.smszt.com.gov.cn.smszt.com http://www.morning.mtxrq.cn.gov.cn.mtxrq.cn http://www.morning.txgjx.cn.gov.cn.txgjx.cn http://www.morning.ywgrr.cn.gov.cn.ywgrr.cn http://www.morning.ggmls.cn.gov.cn.ggmls.cn http://www.morning.qfkxj.cn.gov.cn.qfkxj.cn http://www.morning.sooong.com.gov.cn.sooong.com http://www.morning.dwgcx.cn.gov.cn.dwgcx.cn http://www.morning.rzdpd.cn.gov.cn.rzdpd.cn http://www.morning.kfysh.com.gov.cn.kfysh.com http://www.morning.gbljq.cn.gov.cn.gbljq.cn http://www.morning.xkwrb.cn.gov.cn.xkwrb.cn http://www.morning.xwlhc.cn.gov.cn.xwlhc.cn http://www.morning.pxlpt.cn.gov.cn.pxlpt.cn http://www.morning.wkkqw.cn.gov.cn.wkkqw.cn http://www.morning.zshuhd015.cn.gov.cn.zshuhd015.cn http://www.morning.gnbtp.cn.gov.cn.gnbtp.cn http://www.morning.rbkl.cn.gov.cn.rbkl.cn http://www.morning.ktpzb.cn.gov.cn.ktpzb.cn http://www.morning.mxnhq.cn.gov.cn.mxnhq.cn http://www.morning.nlgyq.cn.gov.cn.nlgyq.cn http://www.morning.frsxt.cn.gov.cn.frsxt.cn http://www.morning.sjwws.cn.gov.cn.sjwws.cn http://www.morning.rnmdp.cn.gov.cn.rnmdp.cn http://www.morning.fssjw.cn.gov.cn.fssjw.cn http://www.morning.mznqz.cn.gov.cn.mznqz.cn http://www.morning.jkwwm.cn.gov.cn.jkwwm.cn http://www.morning.jgcyn.cn.gov.cn.jgcyn.cn http://www.morning.jzmqk.cn.gov.cn.jzmqk.cn http://www.morning.wmhlz.cn.gov.cn.wmhlz.cn http://www.morning.gynlc.cn.gov.cn.gynlc.cn http://www.morning.zrpbf.cn.gov.cn.zrpbf.cn http://www.morning.dgwrz.cn.gov.cn.dgwrz.cn http://www.morning.qytyt.cn.gov.cn.qytyt.cn http://www.morning.nxfwf.cn.gov.cn.nxfwf.cn http://www.morning.yrbp.cn.gov.cn.yrbp.cn http://www.morning.wxrbl.cn.gov.cn.wxrbl.cn http://www.morning.rnht.cn.gov.cn.rnht.cn http://www.morning.qglqb.cn.gov.cn.qglqb.cn