设为首页 加入收藏

TOP

MySQL中实现一个简单的TCP服务器
2018-05-08 06:06:51 】 浏览:95
Tags:MySQL 实现 一个 简单 TCP 服务器

一、数据类型

这里写图片描述

二、数值类型

这里写图片描述

三、越界检验

这里写图片描述

mysql中,整形可以指定为有符号和无符号的,默认是有符号的;

所以插入数值128时出现了越界错误。

我们可以通过UNSIGNED来说明某个字段是无符号的。

示例如下:

这里写图片描述

四、关于UNSIGNED

首先我们来看一个例子,先建立一个表:

这里写图片描述

现在若执行a-b会有什么结果呢?会得到-1吗?我们来验证一下:

这里写图片描述

结果出错了,其实在内存中都是ffffffff,只是ffffffff可以代表两种值:对于无符号的整数值,其是整数的最大值,即4294967295;对于有符号数来说,第一位代表符号位,如果是1,表示的是负数,这时应该是取反加1得到的负数值,即-1。

要想得到-1,我们需要对SQL_MODE这个参数进行设置即可:

这里写图片描述

如此便得到了-1;

五、bit的使用

基本语法:bit[M] 位字段类型。

其中M表示每个值的位数,范围是1~64,如果M被忽略了,则默认为1。

一个栗子:

这里写图片描述

会发现a对应的数据10没有显示,那是因为ASCII 10对应的是换行,所以换行了,并没有显示数据10。

再插入一条数据,观察其特性:

这里写图片描述

通过这我们可以发现:

bit字段在显示时,是按照ASCII对应的值显示。

并且当只需要存放0或1时,我们就可以定义bit(1),这样会很节省空间。

六、小数的基本使用

1、float

float[(m,d)][unsigned]

M指定显示长度,d指定小数位数,占用4个字节空间。

**小数:**float(4,2)可以表示的范围是-99.99~99.99,MySQL在保存值时会进行四舍五入

示例如下:

这里写图片描述

如果float(4,2)是有符号的,则表示范围是-99.99 ~ 99.9,如果定义的是float(4,2) unsigned 这时,因为把它指定为无符号的数,范围是 0 ~ 99.99

这里写图片描述

2、decimal

语法格式:decimal(m,d)[unsigned]

定点数m指定长度,d表示小数点的位数

decimal和float很像,但是有区别:

float和decimal表示的精度不一样,float表示的精度大约是7位,decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略,默认

是10。

一个栗子:

这里写图片描述

我们会发现decimal的精度更加准确,因此如果我们希望某个数据表示高精度,则可以选择decimal。

七、字符串

char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255

varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节

1 char=3 byte

char测试:

这里写图片描述

我们可以发现:

(1)char(2) 表示可以存放两个字符,可以是字母或汉字,但是不能超过2个,超过部分会被丢失

(2)最多只能是255

测试varchar

这里写图片描述

关于varchar(len),len到底是多大,这个len值,和表的编码密切相关:

varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字节数是65532。当我们的表的编码是utf8时,varchar(n)n最大值是65532/3=21844[因为utf中,一个汉字占用3个字节],如果编码是gbk,varchar(n)n最大是65532/2=32766(因为gbk中,一个汉字占用2字节)。

这里写图片描述

选择char和varchar规则:

(1)如果数据确定长度都一样,就使用定长,比如身份证,手机号,md5加密的密码… …

(2)如果数据长度有变化,就使用变长,比如,名字,地址,但是你要保证最长的能存的进去。

(3)定长的磁盘空间比较浪费,但是效率高。

(4)变长的磁盘空间比较节省,但是效率低。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇关系型数据库MySQL表操作实例分析 下一篇关于的外连接(leftjoin或rightjoi..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目