//我。。。我才是不是傲娇呢

//如有问题还请多多指教。上回我们说到我们如何使用MySQL,关键是要看它的用途。用途衍生语句。之后文章的思路,也是如此,从用途出发,然后再到语句。

那么,我们先问几个问题,我们用mysql干什么,获得数据,处理数据,制作想要的报表或视图。等等,数据是什么?是数字吗?还是文本?音频?我们在使用之前,是否要先了解一下数据是什么,正如我们创造世界,操纵世界。首先要命名,它是什么?它的特征是什么,知道这些我们才可以方便进行下一步操作。那么数据是什么?根据wiki的定义:数据,或称资料,指描述事物的符号记录,是可定义为意义的实体,它涉及到事物的存在形式。它是关于事件之一组离散且客观的事实描述,是构成信息和知识的原始材料。数据可分为模拟数据和数字数据两大类。数据指计算机加工的“原料”,如图形、声音、文字、数、字符和符号等。

也就是说,数据不是一个单纯的个体,它是种种世界特征的描述。mysql中的数据也是如此,它不止于数值,也不止于文本(字符串),也不止于日期。它的特征是丰富多样。然而我们知道,如果变量(数据的特征)太多,在研究的时候就会很困难。所以从众多的变量之中,抽出典型的变量,进行研究是合适的。

我们按照数据的类型(变量)进行分类,以便我们进行研究,同时将这些分好的变量重新命名,将它称之为字段(在Excel表中表现为每一列)。

那么如何分类呢?这时我们通常是根据方便来分的,在数据处理过程中,我们主要会遇到数值类型,时间类型,以及字符串类型,二进制类型所以数据的类型也因此主要分为这几种,然而注意的是,mysql的数据类型不止于此。我们只是为了方便,挑一些主要的来说。

首先是数值型数据,包括整数类型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT

浮点小数类型:FLOAT、DOUBLE、DECIMAL(M,D).

关于整数类型我们知道它的英文意思,差不多就懂了,也没必要过分深究它的取值范围,占多少内存,够用就可以了。真正要注意的是,在SQL中,整数类型后面定义的是它的显示出来的宽度,跟本体无关。如INT(2),就是显示出2位整数,后如果超出,则不显现出来。如果你记录了一个叫做1000的数字,那么你可以看到的是10,而不是1000,虽然它在计算机内部还是1000.

关于浮点小数类型,我们要记住的是,FLOAT,比较短的包括小数的数,DOUBLE,比较长的。DECIMAL(M,D),定点数,M,指的是整个数的长度,D,指的是小数点后的精度。如DECIMAL(5,1)就是保留一位小数,长度为5。如果我们记录了一个叫做4.234的数,那么最终会得到4.2的数字,ps:内部的形式是4.2000。

接着是字符串类型,字符串类型大体有三种

1.CHAR(M),VARCHAR(M)

2.TEXT型,细分为TINYTEXT,TEXT,MEDIUMTEXT,LONGTEXT

3.其他,分为ENUM,SET

首先是CHAR型和VARCHAR型,主要的区分在于一个短一个长,另外一点是,CHAR型的存储是固定的,M是多少,它就占多少字节,比如说定义一个char(2),然而你填入了一个长度为1的数,如8,那么它便会将后面存储空余不会删除。而VARCHAR不同,VARCHAR它的存储是浮动的,根据你填入的长度而改变,如varchar(2),填入8,所占的字节数为1位加1。

值得注意的是,对于不同的存储引擎,如MyISAM,最好就用CHAR,虽然比较浪费空间,但这样够快,而InnoDB,最好用VARCHAR,这样比较少占内存。(存储引擎有时间再讲)

接着是TEXT型,这种类型显而易见,是用来存储小中大型文本的,而char,varchar是存储字符的。

再接着是,ENUM型,这种感觉就像一个创建一个下拉菜单用的,它的选择项在于集合内的所有元素。如ENUM('男','女')这时如果你实际填入的数,超出了男,女这个选择范围,系统就会报错。Ps,ENUM支持索引,可以用1,2。代替男,女。

再接着是,SET型,SET型的感觉也是一个菜单用的,不过它比ENUM的要求要宽松,如SET('A','B','C'),这时你可以填入任意A,B,C的排列组合,如('A,B'),('A,B,C'),('A')。

轮到时间类型了,时间类型包括

YEAR,TIME,DATE,DATETIME,TIMESTAMP

1.YEAR表示的是年,你填入的需要是4位数,如字符串'2018',或数字2018.如果你填入的是两位数,它便会根据数的范围自动帮你转换,对于字符来说,'00'-'69'是'2000'-'2069'。而'70-99'是'1970-1999'。对于数字来说,1-69对应的是2001到2069,70-99对应的是1970-1999,而0会报错。

2.TIME的格式为: 'hh:mm:ss',还有一些非严格的写法,不过不建议去记住,这些以后用久了自然会知道。如'D HH:MM'、'D HH',D指的是天,它会自动帮你转成D*24的。ps,记得加引号。

3.DATE型,表示的是日期,格式为'YYYY-MM-DD',写法要严格,如果写成非严格的,如'YYYYMMDD'、‘YYMMDD’、'YY-MM-DD’则其语法规则与1相同。

4.DATETIME型,就是日期加时间,写法严格的为'YYYY-MM-DD HH:MM:SS',简单来说就是DATE型与TIME型的复合。非严格的'YYMMDDHHMMSS'、'YY-MM-DD HH:MM:SS'。语法与1同

要获得当前的DATETIME,可以使用NOW()函数。

TIMESTAMP型,与TIMESTAMP一样,只是它意味的是世界标准时间,如此而已,世界标准时间可以百度得知。

最后是二进制型,它们是根据BIT来分配存储空间的。

1.BIT(M)

2.BINARY(M),VARBINARY(M)

3.TINTBLOB(M)、BLOB(M)、MEDIUMBLOB(M)、LONGBLOB(M)

首先是BIT(M),举个例子来方便理解,BIT(4),那么它将分配给你一个从0000-1111的数,转换为十进制就是0-15。如果你插入了一个16的数,那么它只会给你返回1111。即15。

然后是BINARY,和VARCHAR,它们跟CHAR和VARCHAR差不多。

最后是BLOB型,这种是来存储二进制大对象的,如音乐,图片,视频等等,又根据存储的分配,分为TINYBLOB(255B)、BLOB(65kb)、MEDIUMBLOB(16MB)、LONGBLOB(4GB)。

初略的知道这些之后,下回就可以正式开始操作了。那么,下回见。

mysql 变量 数据类型_浅谈mysql(二)数据类型相关推荐

  1. mysql维护计划任务_浅谈MySQL event 计划任务

    一.查看event是否开启 show variables like '%sche%'; set global event_scheduler =1; 二. -- 设置时区并设置计划事件调度器开启,也可 ...

  2. mysql 用户通配符_浅谈mysql通配符进行模糊查询的实现方法

    在mysql数据库中,当我们需要模糊查询的时候 ,我们会使用到通配符. 首先我们来了解一下2个概念,一个是操作符,一个是通配符. 操作符 like就是SQL语句中的操作符,它的作用是指示在SQL语句后 ...

  3. mysql revoke 授权_浅谈MySQL中授权(grant)和撤销授权(revoke)用法详解

    MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利 grant selec ...

  4. mysql账号认证_浅谈MySQL用户账号认证方式

    为了有效控制数据库用户的访问权限,在MySQL数据库中创建了一个新用户,但使用刚创建的用户和密码却发现连接不了MySQL数据库,通过查看官网手册及<MySQL技术内幕>一书,才逐渐熟悉My ...

  5. mysql sql优化_浅谈mysql中sql优化

    说到sql优化,一般有几个步骤呢,在网上看到了一篇很不错的帖子.在这分享一下吧,也是自己学习的一个过程. 一.查找慢查询 1.1.查看SQL执行频率 SHOW STATUS LIKE 'Com_%'; ...

  6. mysql signed 长度_浅谈mysql字段长度设置

    mysql 中最常用的数据类型是tinyint,smallint,int,bigint,char,varchar; char(n)和varchar(n)存储固定长度的字符数据,长度最大为254字节.使 ...

  7. mysql下日志_浅谈mysql下日志记录

    1,如何查看mysql执行命令历史 #.mysql_history     此文件记录了在mysql中执行命令的历史 2,事务日志: transaction log:事务型存储引擎自行的管理和使用. ...

  8. mysql表空间_浅谈mysql中各种表空间(tablespaces)的概念

    mysql中,会涉及到各种表空间的概念,虽然,很多方面这些概念和Oracle有相似性,但也有很多不同的地方,初学者很容易被这些概念弄的晕头转向,从而,混淆这些概念的区别和理解,下面,就简要介绍和说明一 ...

  9. mysql declare与set的区别_浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...

最新文章

  1. 百度燎原计划2018强势回归 开放深度学习工程师评价标准
  2. Vista开发之旅:微软开发技术20年回顾
  3. sharepoint 2010 彻底删除用户
  4. 【学习笔记】局域网基本概念和体系结构,以太网、无线局域网与PPP协议、HDLC协议
  5. 跨年了,来玩儿个Database Crossword Puzzle吧!
  6. 使用命令行开始你的netcore之路
  7. 经常见到的监控摄像机的镜头
  8. 网络安全管理的“模拟人生”
  9. servlet和action中获取URL中的汉字(解决URL中汉字为乱码的问题) .
  10. 攻防世界 MISC 新手练习区 答题(1-12题解)
  11. openstack changePassword
  12. CMS系列远程代码执行—Discuz
  13. 西门子G120变频器常用参数(自己总结的)
  14. 【云计算学习教程】云应用是什么?典型的云应用有哪些?
  15. 对话王劲:无人驾驶每天能救500多条人命 | AI英雄
  16. 百度地图 java 纠偏_模板:纠偏服务首页 | 百度地图API SDK
  17. Discuz模版制作流程
  18. 五大学科竞赛(四)信息学奥赛试题
  19. linux视频拼接工具,linux中使用ffmpeg 无损剪切/拼接视频程序
  20. 思博伦Avalanche中的Load类型定义_双极未来

热门文章

  1. WebAPi的可视化输出模式(RabbitMQ、消息补偿相关)——所有webapi似乎都缺失的一个功能
  2. .NET的未来包含一个开源的Mono
  3. django22:复制网页与css/时区设置
  4. django07: 模板语言(旧笔记)
  5. T-SQL编程基础之二:条件选择、循环编程
  6. C语言试题三之计算并输出 s=1+(1+2^(0.5))+(1+2^(0.5)+3^(0.5))+…+(1+2^(0.5)+3^(0.5)+…+n^(0.5))
  7. ubuntu之find方法
  8. Android之bitmap压缩的几种方法的解读
  9. python3 最基本且简单的实现组合设计模式
  10. ajax速度axio速度,[转]Ajax Fetch Axios之间的详细区别以及优缺点