20141230 mysql数值类型和列属性一

回顾

数据库基础知识,关系型数据库(行/记录,列/字段,SQL)

基本SQL操作:库操作,表操作(字段)和数据操作

字符集

校对集

1. 什么是校对集?

校对集就是指在同样的字符集下的数据按照什么样的方式进行比较,比较的规范的集合就叫校对集。

校对集分类

_bin:二进制比较,区分大小写的

_ci:case insensitive,大小写不敏感,不区分大小写

_cs:case sensitive,大小写敏感,区分大小写

查看数据库所支持的校对集有哪些

show collation;

一共有197种校对集

校对集的实现:在创建数据表(库)的时候指定校对集:collate = 校对集

插入数据

校对集的使用:在需要对数据进行比较的时候会自动的启用

对数据进行排序的时候一定会用到校对集。

语法:在where条件之后,使用order by 要排序的字段 [asc|desc]

asc:升序,是默认的

desc:降序

虽然中文也可以比较,但是没有比较的意义,gbk支持中文比较,utf8不支持,gbk比较的并不是中文本身,只能比拼音。

结论:一张表的校对集应该在创建表的时候就指定,而不能在表已经存在的情况下(数据)再去尝试修改校对集,修改无效。

乱码问题解决

出现乱码的原因:两个数据存在的字符集不一致。

理想的解决方案:三码合一

存储引擎

mysql提供了很多的存储引擎可以选择,但是常用的是myisam和InnoDB,因为这两个免费。

全部存储引擎

5.5以前的存储引擎默认的是myisam,5.5之后都是InnoDB了。

甲骨文收购sun之后得到mysql就不再对myisam存储引擎进行技术支持,把所有团队都用来支持InnoDB

InnoDB和myisam区别

1. 文件的存储形式不一样

2. myisam的批量插入和查询效率高,而InnoDB的修改和删除效率高

3. 事务安全只有InnoDB支持,myisam不支持

4. InnoDB支持外键,myisam不支持

字段(列)类型

1. 什么是字段类型?

所谓的字段类型指的是当前字段所能存储的数据的类型

SQL语言是一种强类型语言,所以必须在表创建的时候,给字段指定对应的数据类型,而且在数据存储的时候,只能存储的指定的数据类型。

数据类型分类

在SQL中,数据类型同样分为三类:数值型,字符串型,日期时间型

数值型:整型,小数型(浮点型和定点型)

字符串型:定长,不定长,文本,集合,枚举

日期时间型:时间日期,日期,时间,年,时间戳

s

数值型
整型

存放整数的数据类型。生活中有不同的需求来使用不同范围内的整型,而SQL就需要根据不同的需求来设定不同的整型(分配不同内存)来记录,提高空间的利用率。

整型分为以下五种

tinyint:迷你整型,1一个字节存储,最多256个数据

smallint:小整型,2个字节存储,最多65536个数据

mediumint:中整型,3个字节存储

int:标准整型,4个字节存储

bigint:大整型,8个字节存储

创建整形表

插入数据

在SQL中,数值数据默认的都是有符号的,所以有正负之分,应该将数据一分为二

类型

字节

最小值(有符号/无符号)

最大值(有符号/无符号)

TINYINT

1

-128/0

127/255

SMALLINT

2

-32768/0

32767/65535

MEDIUMINT

3

-8388608/0

8388607/16777215

INT/INTEGE

4

-2147483648/0

2147483647

/4294967295

BIGINT

8

-9223372036854775808/0

9223372036854775807/18446744073709551615

无符号

语法:在数据类型之后,使用unsigned关键字

查看数据结构

要做到不改变原来数值大小的情况下,只能在数据的左边进行0填充

默认的系统不会自动的使用0填充,需要根据指令进行0填充,zerofill

语法:数据类型之后 zerofill

效果

显示宽度注意事项

小数型

浮点型:有可能丢失精度的小数型

float:单精度浮点型,7个精确值左右

double:双精度浮点型,15位左右

浮点型使用语法

字段 float/float(M,D)

M表示整个长度,D表示小数部分的长度

创建表

插入数据

浮点数数据查询:系统会自动丢失精度之后的所有数据,四舍五入

浮点数的应用:如果数据量特别大但是对精度要求不高的数据才会使用浮点型。

定点型

在指定范围内不会丢失精度的小数。

语法:decimal(M,D),M总长度,D小数部分长度

定点型应用

字符串类型

字符串类型分为:定长字符串,变长字符串,文本字符串,集合字符串和枚举类型

定长字符串

定长指的是磁盘所分配的空间是固定长度的存储空间,但是里面存储的数据可以没有空间长。

定长:char

语法:字段名 char(L),L表示可以存储的字符长度,定长的L长度最大值是255

变长字符串

变长指的是磁盘会根据实际存储的内容来进行磁盘空间的分配。

变长:varchar

语法:字段名 varchar(L),L表示可以存储的字符长度,L的最大值理论上是65535,因为varchar是变长,所以真实存储的数据的长度不可得知,所以任何变长数据都需要开辟额外的1或2个字节来存储数据的长度。

定长与变长对比:utf8

字符串

Char(4)

Varchar(4)

Char实际字节长度

Varchar实际字节长度

A

A

A

4 * 3(utf8) = 12

1 * 3(utf8) + 1 = 4

ABCD

ABCD

ABCD

4 * 3(utf8) = 12

4 * 3(utf8) + 1 = 13

         
         

定长和变长的应用

1. 长度固定的较小的字符串使用定长,手机号,身份证,md5加密等

2. 长度不固定的较小的字符串使用变长,姓名,籍贯,家庭住址等

3. 如果字符串长度较长(通常超过255个字符)使用文件字符串

定长与变长的优劣

1. 定长:浪费空间,但是读取效率高

2. 变长:节省空间,但是效率降低

在wamp中,mysql使用的精简模式,不是使用严格模式来约束数据,但是独立安装的mysql使用的严格模式。

区别

1. 错误处理方式不一样:精简模式下,如果出现错误,系统会尝试去减少错误代价(数据太长进行截取),在严格模式下,直接报错。

2. 对于空字符串的处理不一样:主键自增长的时候

文本字符串

文本字符串分为两种:字符型文本,二进制文本

文本字符串:text

二进制字符串:blob

图片或者文件等都可以进行存储,但是不建议直接存储,而是存储对应的文件的位置(路径)

一般认为超过255个字符的数据都使用文本字符串来进行存储。

posted on 2017-02-22 18:38 山山未迟 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lifushan/p/6430428.html

20141230 mysql数值类型和列属性一相关推荐

  1. 20141230 mysql数值类型和列属性二

    20141230 mysql数值类型和列属性二 枚举字符串 枚举字符串指的是在定义之初就确定要存放的字符串有哪些,然后在数据进行存储的时候就只能存储已经定义过的字符串,只能使用任意的一个字符串.(单选 ...

  2. mysql数值类型总结及常用函数

    最近在学习下,总结一下mysql数值类型: mysql字符类型分: 1.整数类型: 字节                    值范围 INTERGER               1         ...

  3. Mysql常用类型和字段属性

    前言 好比C++中,定义int类型需要多少字节,定义double类型需要多少字节一样,MySQL对表每个列中的数据也会实行严格控制,这是数据驱动应用程序成功的关键.M前言 好比C++中,定义int类型 ...

  4. MYSQL学习笔记06:列属性[NULL,default,comment],主键,自增长,唯一键,数据库设计规范[范式(1NF,2NF,3NF),逆规范化],表关系[1V1,1VN,NVN]

    列属性 列属性又称为字段属性. 在mysql中一共有6个属性:null,默认值,列描述,主键,唯一键和自增长. NULL属性 NULL属性代表字段为空. 如果对应的值为yes表示该字段允许为null, ...

  5. mysql建表以及列属性

    一.整型( int, tinyint, smallint 等 ) ------------------------------------------------------------------- ...

  6. mysql数值类型占用字节及范围_mysql数据类型及占用字节数【mysql】

    一.数值类型 1,int 类型  4字节 .备注:一个字节8位,即有32位,存在一个符号位.所以能存的数值大小为-2的31次方到2的31次方: 2,tinyint  类型  1字节. 3,smalli ...

  7. 【MySQL】AUTO_INCREMENT只能应用于数值类型的列,且该列需要被索引

    MySQL中的自动增量AUTO_INCREMENT,是有使用条件的 该列(column)的数据类型必须是数值型(这点容易理解,数值才能自增) 该列必须被索引,比如定义为主键(PRIMARY KEY) ...

  8. mysql 数值类型 长度_mysql中的数据类型的长度

    位,字节,字 --------------------------------------------------------------- 8位(bit)=1字节(Byte),1024字节=1KB: ...

  9. Mysql数值类型之float,double,decimal

    对于小数的表示,MySQL分为两种方式:浮点数和定点数.浮点数包括float(单精度),double(双精度),而定点数只有decimal一种表示.定点数在MySQL内部以字符串的形式存放,比浮点数更 ...

最新文章

  1. opencv利用直方图判断人脸光照质量
  2. 二值信号量解决任务间资源共享问题
  3. [云炬创业基础笔记]第五章创业机会评估测试5
  4. 【CentOS 6.5】QtCreator启动时关于dbus-1的错误解决方法
  5. 《计算机网络》第四章:介质访问控制(The Medium Access Control Sublayer)
  6. ubuntu12.04 php环境搭建,Ubuntu12.04筹建php开发环境
  7. linux 常见问题集 q,Linux新手几个常见问题集
  8. android 8.0 以后 uiautomator 无法直接使用的问题
  9. 计算机代码画玫瑰,turtle画玫瑰花(示例代码)
  10. Android UI:使用矢量图,抛弃PNG
  11. Mysql导出表结构和数据
  12. 手绘风海报怎么做?手绘素材在哪里找?
  13. 逻辑回归算法深度思考-优点和缺点
  14. 双u服务器装win7系统安装,u深度一键u盘装原版win7 安装系统详细使用教程
  15. windows当中python的安装和环境部署,和数据类型,并且在linux当中安装python是windows当中的pycharm基于linux可以运行
  16. 瑞芯微RK3328芯片怎么样?RK3328处理器参数介绍
  17. 头条号发视频为什么没有收益,在头条号发搞笑视频收益大吗
  18. 安卓webview长按分享,长按选择,长按复制,仿好奇心日报长按分享自定义弹窗的实现
  19. 《单核工作法图解》阅读摘要
  20. HTTP Status 500 - Failed to evaluate expression 'ROLE_USER'

热门文章

  1. 笨木头的跑跑跑笔记三 精灵的运动动画
  2. 共模电压 matlab,三电平并网逆变器共模电压抑制方法研究
  3. 如何写/审AI领域的论文【VALSE Webinar】Panel实录
  4. Yii2中场景(scenario)和验证规则(rule) Yii2中的场景(scenario)和验证规则(rule)详解
  5. bzoj 3521: [Poi2014]Salad Bar
  6. 【Java高级程序设计学习笔记】深入理解jdk动态代理
  7. android TV 焦点选中放大效果
  8. vue 如何下载文件(包含txt jpg pdf word)
  9. (二)Pgcluu监控
  10. Vue系统指令(一)