小标
2019-02-11
来源 :
阅读 1164
评论 0
摘要:本文主要向大家介绍了【云计算】大数据兼云计算之数据类型,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。
本文主要向大家介绍了【云计算】大数据兼云计算之数据类型,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。
mysql列类型
mysql列类型分类
-------------------------------------------------------------------------------------------------------------------------------------------------------
mysql支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。
一、数字类型
-------------------------------------------------------------------------------------------------------------------------------------------------------
1、TINYINT
一个很小的整数。有符号的范围是-128到127,无符号的范围是0到255。
2、SMALLINT
一个小整数。有符号的范围是-32768到32767,无符号的范围是0到65535。
3、MEDIUMINT
一个中等大小整数。有符号的范围是-8388608到8388607,无符号的范围是0到16777215。
4、INT
一个正常大小整数。有符号的范围是-2147483648到2147483647,无符号的范围是0到4294967295。
5、INTEGER
这是INT的一个同义词。
6、BIGINT
一个大整数。有符号的范围是-9223372036854775808到9223372036854775807,无符号的范围是0到18446744073709551615。
7、FLOAT
一个小(单精密)浮点数字。不能无符号。允许的值是-3.402823466E+38到-1.175494351E-38,0 和1.175494351E-38到3.402823466E+38。
8、DOUBLE
一个正常大小(双精密)浮点数字。不能无符号。允许的值是-1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308。
注意:
double 有效数字14位,float型有效数字7位,所以double精度高。
double 占内存 8 字节,float占内存 4 字节,float 省内存,运算速度快。
输入/输出格式 double 用 %lf, float 用 %f
二、日期和时间类型
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1、DATE
一个日期。支持的范围是'1000-01-01'到'9999-12-31'。mysql> 以'YYYY-MM-DD'格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列。
2、DATETIME
一个日期和时间组合。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。mysql> 以'YYYY-MM-DD HH:MM:SS'格式来显示DATETIME值,但是允许你使用
字符串或数字把值赋给DATETIME的列。
3、TIME
一个时间。范围是'-838:59:59'到'838:59:59'。mysql> 以'HH:MM:SS'格式来显示TIME值,但是允许你使用字符串或数字把值赋给TIME列。
4、YEAR
一个2或4位数字格式的年(缺省是4位)。允许的值是1901到2155,和0000(4位年格式),如果你使用2位,1970-2069( 70-69)。mysql> 以YYYY格式来显示YEAR值,
但是允许你把使用字符串或数字值赋给YEAR列。
三、字符串类型
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1、CHAR(M)
一个定长字符串,当存储时,总是是用空格填满右边到指定的长度。M的范围是1 ~ 255个字符。当值被检索时,空格尾部被删除。
2、VARCHAR
一个变长字符串。注意:当值被存储时,尾部的空格被删除。
3、TINYTEXT
一个BLOB或TEXT列,最大长度为255(2^8-1)个字符。
4、TEXT
一个BLOB或TEXT列,最大长度为65535(2^16-1)个字符。
5、MEDIUMTEXT
一个BLOB或TEXT列,最大长度为16777215(2^24-1)个字符。
6、LONGTEXT
一个BLOB或TEXT列,最大长度为4294967295(2^32-1)个字符。
float(定点)
------------------------------------------------------------------------------------------------------------------
mysql> create table 表名(字段 float(5,3)); (5代表整个宽度,3代表小数点个数)
mysql> insert into 表名 set 字段=22.8888; 给记录赋值
mysql> select * from 表名; 查看表信息
decimal(浮点)
--------------------------------------------------------------------
mysql> create table 表名(字段 decimal(5,3)); (5代表整个宽度,3代表小数点个数)
mysql> insert into 表名 set 字段=22.8888;
mysql> select * from 表名;
float/double/decimal 区别
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
float f = 345.98756f;--结果显示为345.9876,只显示7个有效位,对最后一位数四舍五入。
double d=345.975423578631442d;--结果显示为345.975423578631,只显示15个有效位,对最后一位四舍五入。
--注:float和double的相乘操作,数字溢出不会报错,会有精度的损失。
decimal dd=345.545454879.....--可以支持28位,对最后一位四舍五入。
--注:当对 decimal 类型进行操作时,数值会因溢出而报错。
char类型(以指定的数值个数存储数据)
-----------------------------------------------------------------------------------
mysql> create table t7(name char(3)); 3为数值个数
mysql> insert into t7 set name="aaaaa";
mysql> select * from t7;
+------+
| name |
+------+
| aaa |
+------+
1 row in set (0.00 sec)
varchar类型(以实际数据存储数据)
-------------------------------------------------------------------
mysql> create table t7(name varchar(3));
enum类型(属于字符串类型)
----------------------------------------------------------------------
mysql> create table t8(name enum('a','b','c'));
mysql> insert into w5 set id="aaabbbbbcccc";
mysql> select * from w5;
+------+
| id |
+------+
| |
+------+
1 row in set (0.00 sec)
上面说明enum值必须是a或b或c的其中一个,否则输入不进去记录
mysql> insert into t8 set name="a";
mysql> select * from t8;
+------+
| name |
+------+
| a |
+------+
1 row in set (0.00 sec)
set类型
---------------------------------------------------------------------
mysql> create table t8(name set('a','b','c'));
ERROR 1050 (42S01): Table 't8' already exists
mysql> create table t9(name set('a','b','c'));
Query OK, 0 rows affected (0.03 sec)
mysql> insert into t9 set name="a,b";
Query OK, 1 row affected (0.00 sec)
mysql> select * from t9;
+------+
| name |
+------+
| a,b |
+------+
1 row in set (0.00 sec)
时间日期类型 now为当前时间,
--------------------------------------------------------------------------
time 111111
time 11:11:11
date 111111
date 11/11/11
timestamp时间串类型 now为当前时间,这里空值是当前时间
--------------------------------------------------------------------------------------
year类型
------------------------------------------------
09 --2009
0-69
70-99
mysql> create table t10(name year);
Query OK, 0 rows affected (0.04 sec)
mysql> insert into t9 set name=18;
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> insert into t10 set name=18;
Query OK, 1 row affected (0.00 sec)
mysql> select * from t10;
+------+
| name |
+------+
| 2018 |
+------+
1 row in set (0.00 sec)
mysql> insert into t10 set name=70;
Query OK, 1 row affected (0.00 sec)
mysql> select * from t10;
+------+
| name |
+------+
| 2018 |
| 1970 |
+------+
2 rows in set (0.00 sec)
mysql> insert into t10 set name=2089;
Query OK, 1 row affected (0.00 sec)
mysql> select * from t10;
+------+
| name |
+------+
| 2018 |
| 1970 |
| 2089 |
+------+
3 rows in set (0.00 sec)
mysql> insert into t10 set name=1789;
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> select * from t10;
datetime类型和timestamp时间戳类型,可以把当前的日期插入到他所修饰的字段里,年月日分钟小时秒
mysql> create table data8 (dt datetime,ts timestamp);
mysql> insert into data8 values('1999-01-01 10:10:10','1999-01-01 10:10:10'),(20010202121212,20010202121212);
mysql> select * from data8;
+---------------------+---------------------+
| dt | ts |
+---------------------+---------------------+
| 1999-01-01 10:10:10 | 1999-01-01 10:10:10 |
| 2001-02-02 12:12:12 | 2001-02-02 12:12:12 |
+---------------------+---------------------+
2 rows in set (0.00 sec)
now取当前时间
-----------------------
mysql> insert into data8 values(now(),null);显示当前日期
Query OK, 1 row affected (0.00 sec)
mysql> select * from data8;
+---------------------+---------------------+
| dt | ts |
+---------------------+---------------------+
| 1999-01-01 10:10:10 | 1999-01-01 10:10:10 |
| 2001-02-02 12:12:12 | 2001-02-02 12:12:12 |
| 2009-12-28 14:17:50 | 2009-12-28 14:17:50 |
+---------------------+---------------------+
3 rows in set (0.00 sec)
[root@www ~]# date
2009年 12月 28日 星期一 14:18:21 CST
mysql> select * from data5;
+------------+
| d |
+------------+
| 2009-12-20 |
| 1998-01-01 |
| 2008-10-10 |
| 2002-08-08 |
+------------+
4 rows in set (0.00 sec)
mysql> select year(d) from data5; 截取年份
+---------+
| year(d) |
+---------+
| 2009 |
| 1998 |
| 2008 |
| 2002 |
+---------+
4 rows in set (0.00 sec)
mysql> select month(d) from data5;截取月份
+----------+
| month(d) |
+----------+
| 12 |
| 1 |
| 10 |
| 8 |
+----------+
4 rows in set (0.00 sec)
mysql> select day(d) from data5;截取日
+--------+
| day(d) |
+--------+
| 20 |
| 1 |
| 10 |
| 8 |
+--------+
4 rows in set (0.00 sec)
mysql> select d from data5 where year(d)2000; 显示2000年之前的时间
+------------+
| d |
+------------+
| 1998-01-01 |
+------------+
1 row in set (0.00 sec)
enum(复合类型)枚举类型
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
mysql> create table data9 (gender enum('m','f')); 创建这种表的时候必须预先定义好值,插入值的时候,只能插入预先定义好的值
mysql> insert into data9 values('m'),('F'),('ab');
mysql> select * from data9;
+--------+
| gender |
+--------+
| m |
| f |
| |
+--------+
3 rows in set (0.00 sec)
mysql> select * from data9 where gender=2;索引定义的第2个值
+--------+
| gender |
+--------+
| f |
+--------+
1 row in set (0.01 sec)
mysql> select * from data9 where gender=1;索引定义的第一个值
+--------+
| gender |
+--------+
| m |
+--------+
1 row in set (0.00 sec)
mysql> select * from data9 where gender=0;错误的值的索引
+--------+
| gender |
+--------+
| |
+--------+
1 row in set (0.00 sec)
主要用于在一个表单里有性别的时候
set类型 跟enum差不多
enum 只能从事先定义好的值里选择一个值
但set不同
mysql> create table data10 (type set('a','b','c','d'));
mysql> insert into data10 values('a'),('a,b'),('a,e');
mysql> select * from data10;
+------+
| type |
+------+
| a |
| a,b |
| a |
+------+
3 rows in set (0.00 sec)
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据安全频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号