微知微网站建设实训平台,wordpress音乐播放页面,彩虹云商城,饿了吗网站有问题怎么办上一章节内容主要介绍了一些MySQL中对表和库的增删改查操作#xff0c;对于上一章中对与表中字段的一些定义进行说明#xff0c;本章主要介绍关于数据库类型的一些定义。一、概述#xff1a;MySQL数据库中的数据大致可以分为以下几类#xff0c;从而实现数据库在操作的时候… 上一章节内容主要介绍了一些MySQL中对表和库的增删改查操作对于上一章中对与表中字段的一些定义进行说明本章主要介绍关于数据库类型的一些定义。一、概述MySQL数据库中的数据大致可以分为以下几类从而实现数据库在操作的时候对不同类型的处理。对数据库分类的优点主要有以下几种 1、使系统能够根据数据类型来操作数据 2、预防数据运算的时候出错通过分类可以将每个类型不特定的行为联系在一起执行这些行为时数据分类将有效避免不同类型数据之间的错误做场见的是字符串数字相加。 3、更见有效的利用空间。 4、定义数据类型实际是定义表中的列 二、数据库类型的分类 数据库的分类可以分为数值类型字符型日期型、文本型TEXT及复合型。2.1 数值型 2.1.1 整型 tinyint(-127~128之间的整数) smallint短整型(-32768~32767)数值占用2字节 用带符号的二进制整数形式存储 mediumint auto_increment(自增长类型) row num int (整型默认为11个字节) bigint(大整型) Population 举例 创建表包含以上类型且每个字段中均输入99999999数值并查看mysql insert into mydata values(99999999,999999999,99999999,999999999,999999999);
ERROR 1264 (22003): Out of range value for column id1 at row 1
提示id1报错
mysql select * from mydata;
--------------------------------------------
| id1 | id2 | id3 | id4 | id5 |
--------------------------------------------
| 127 | -32768 | 65535 | 999999999 | 999999999 |
| 127 | -32768 | 655356 | 999999999 | 999999999 |
--------------------------------------------在MySQL5.5及以上版本之后各个字段类型数字超出长度限制则均不能创建成功mysql insert into mydata(id1) values(NIHAO);
ERROR 1366 (HY000): Incorrect integer value: NIHAO for column id1 at row 1类型不同的数据也限制执行插入操作类型直接均可使用int(n)这里的n则是对整型数据的长度进行限制n的最大值为2552.2 整型修饰符 unsigned 无符号整数修饰符规定字段只能保存正的数据。其可以增大这个字段正整数的支持范围。 zerofill 规定0填充(默认是空格)填补输出的值使用这个值可以防止MySQL存储负值。 例如超时会员卡编号No 0000000000000001
mysql create table mydata2(id int(10) unsigned zerofill);
Query OK, 0 rows affected (0.14 sec)mysql insert into mydata2 values(1);
Query OK, 1 row affected (0.01 sec)
mysql select * from mydata2;
------------
| id |
------------
| 0000000001 |
------------
1 row in set (0.00 sec)
mysql2.2 浮点型数值 float(单精度)double(双精度)decimal(精度确定) float和dobule是浮点数数值越大与不精确 Decimal是定点数常用来存储财务工资方面具备高精度 float(5,2):表示字段有限长度是5位其中整数部分为3位小数部分为2位小数点超出部分则执行四舍五入其占用4个字节 double8个字节村粗 decimal用来存储精度的小数消耗空间运算较慢。可以使用bigint替代。8762435.543 mmx*1000 8762435543
select mm/1000 from tb_name;
mysql create table mydata3(tb float(4,1),td double(5,2),tc decimal(5,2));
Query OK, 0 rows affected (0.09 sec)
mysql insert into mydata3 values(45.6789,45.6789,45.6789);
Query OK, 1 row affected, 1 warning (0.08 sec)
mysql select * from mydata3;
--------------------
| tb | td | tc |
--------------------
| 45.7 | 45.68 | 45.68 |
--------------------
1 row in set (0.00 sec)
mysql三、字符串类型3.1字符串类型比较char(n) n:存储固定长度在括号中自定长度其最大值为255varchar(n) n:存储变长在括号内指定最大长度其最大值为255如果大于255则需要使用TEXT类型TEXT TEXT类型存放最大长度为65535个字符串。3.2 三种类型优缺点char较varchar占用空间但效率高char固定长度插入数据必须小于指定的长度否则自动截断(适用于mysql版本低于5.5的版本大等于该版本的将不能插入数据)。varchar:长度动态会导致数据迁移增加IO压力字符串类型修饰符 binary:区分字符大小写。 举例mysql create table mychar1(ca char(10),va varchar(10));
mysql insert into mychar1 values(1234567890111,1234567890111);
ERROR 1406 (22001): Data too long for column ca at row 1
字符过长无法插入报错不同存储引擎使用不同用法MyISAM表:建议使用char类型InnoDB表由于其数据内部存储格式对固定长度的数据行和可变长度的数据行不加区分素有使用varchar可以减少磁盘空间用量和尖山磁盘I/O。TEXT类型 TEXT类型及其子类型用于存储比较长的非二进制字符串 TEXT不区分大小写四、复合类型ENUM枚举类型只能取一个SETset类型可以取多个例子Query OK, 1 row affected (0.00 sec)mysql create table mychar(sex enum(M,W));
Query OK, 0 rows affected (0.11 sec)
mysql insert into mychar values(M);
Query OK, 1 row affected (0.01 sec)
mysql create table mychar2(type set(a,b,c,d));
Query OK, 0 rows affected (0.14 sec)
mysql insert into mychar2 values(a,b,d);mysql select * from mychar2;
-------
| type |
-------
| a,b,d |
-------说明enmu最多有65535个元素从1开始索引为0表示错误值或nouu五、时间日期型5.1 date类型 格式:YYYY-MM-DD 支持范围:1000-01-01到9999-12-31 mysql create table mydate(dd date); Query OK, 0 rows affected (0.06 sec) mysql insert into mydate values(2017-09-10),(20180910);5.2 time类型mysql create table mydate1(tt time);
Query OK, 0 rows affected (0.15 sec)
mysql insert into mydate1 values(100101);
Query OK, 1 row affected (0.01 sec)
mysql select * from mydate1;
----------
| tt |
----------
| 10:01:01 |
----------
1 row in set (0.00 sec)5.3 year类型 00-69转为2000-2069 70-79转为1970-1999 1970Unix诞生记为计算机元年例子mysql create table mydate2(yy year);
Query OK, 0 rows affected (0.14 sec)
mysql insert into mydate2 values(2015),(01),(9),(69),(2080);
Query OK, 5 rows affected (0.08 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql select * from mydate2;
------
| yy |
------
| 2015 |
| 2001 |
| 2009 |
| 2069 |
| 2080 |
------
5 rows in set (0.00 sec)5.4 datetime类型和time stamp类型datetime类型timestamp类型datetime类型能保存大范围的值从1001年到9999年精度为秒它把日期和时间封装到格式为YYYY-MM-DD HH:MM:SS的整数中与时区无关,使用8个字节的存储空间timestamp类型保存了从1970年1月1日午夜格林尼治时间 以来的秒数它和linux时间戳相同timestamp只使用了4个字节的存储空间因此它的范围比datetime小的多只能表示从1970-2038通常我们还是用它的提高空间利用率举例mysql create table mydate3(dt datetime);
Query OK, 0 rows affected (0.21 sec)
mysql insert into mydate3 values(11111111111111)- ;
Query OK, 1 row affected (0.00 sec)
mysql select * from mydate3;
---------------------
| dt |
---------------------
| 1111-11-11 11:11:11 |
---------------------
1 row in set (0.00 sec)
插入当前时间
mysql insert into mydate4 values(now());
Query OK, 1 row affected (0.01 sec) 转载于:https://blog.51cto.com/maoxiaoxiong/1981862