当前位置:首页 > 日记 > 正文

MySQL对MySQL数据敏感问题的二进制解决方案

MySQL对MySQL数据敏感问题的二进制解决方案
复制代码代码如下所示:
MySQL >选择binary'abcd= 'abcd'com1,'abcd= 'abcd的COM2;
-------- ----------- + + +
| COM1 COM2 | |
-------- ----------- + + +
| 0 | 1 |
--------- ----------- + + +
1行集(0秒)
(只有一些!4点以前)
因为有些MySQL,尤其是在4以前,对中文检索有一个不准确的问题,您可以在检索时添加二进制文件。
表的构造:
复制代码代码如下所示:
创建表usertest(
ID int(9)符号的非空auto_increment,
varchar(30)用户名不为空的默认,
主键(id)


插入数据:
复制代码代码如下所示:
插入usertest(用户名)值(美国文本);
插入usertest(用户名)值(美国项目);
插入usertest(用户名)值(李文);
插入usertest(用户名)值(老唐);
插入usertest(用户名)值('dream漂流);
插入usertest(用户名)值(吴);
插入usertest(用户名)值(夏季);

例如:SELECT * FROM usertest么像%。夏天七个记录,结果出来了,越郁闷。
如果你使用=不喜欢,选择*从usertest,用户名为夏天,结果只有一个。因为喜欢操作MySQL操作对ASCII码,有可能是当时的问题。问题仍然存在:如果说,
复制代码代码如下所示:
插入usertest(用户名)值(中的);
插入usertest(用户名)值('tang);

或者使用SELECT * FROM usertest,用户名为夏天,结果仍然是3的记录,和沮丧。解决办法如下:
1。创建时使用二进制,而不是在添加查询时使用二进制。
复制代码代码如下所示:
用户名不能为空的varchar(30)二进制默认,如果该表已经建立,使用:
修改表usertest修改用户名varchar(32)二进制;来表的性能。

2。在查询和二进制的时候,选择*从usertest么像二进制的夏季%。,可以精确地检测出记录。

字符使用一个固定长度的存储空间,char(4)存储4个字符,根据不同的编码字节,不同职业的GBK编码、中文或英文,每个字符占用2个字节,UTF8编码,每个字符占用3个字节的空间。
如果需要存储的字符串长度与所有值的平均长度略有不同,则它适合使用char,如MD5。
经常改变的值,字符比varchar,因为一个固定长度的行不容易产生碎片。
一个很短的柱,炭比varchar因为varchar需要增加一个或两个字节来存储一个字符串的长度。

VARCHAR存储可变长度的字符串,存储额外的一个或两个字节的字符串的长度,varchar(10),除了存储10个字符,需要1字节的存储长度信息(10),以及长度超过255需要2字节的存储空间。
例外:当row_format =固定用于MyISAM引擎,同样的空间用于每行,造成浪费

如果有空间的CHAR和VARCHAR字符后,将自动删除空间和存储。Varchar不会删除空间,但它会删除空间比较字符串时。
复制代码代码如下所示:
+ + + + ------- -------------- ------ ----- --------- ---------------- + + +
场型空| | | |关键|默认|额外|
+ + + + ------- -------------- ------ ----- --------- ---------------- + + +
| | ID int(11)没有优先级| | | | auto_increment |空
| | NAME varchar(4)是| | |空| |
| |地址char(8)是| | |空| |
| | BN varbinary(4)是| | |空| |
| | B二进制(8)是| | |空| |
+ + + + ------- -------------- ------ ----- --------- ---------------- + + +
---------------------- ---------------------- + + +
| concat($
---------------------- ---------------------- + + +
| ASDF |美元美元美元|
| ASDF |美元美元美元|
| | |美元美元美元美元
|美元美元美元美元| |
T美元美元美元| | |
---------------------- ---------------------- + + +
MySQL >选择*从ZCY name = a; / /的名字是由于varchar,当comparing'a自动转换to'a
+ -- + + + + ------ ------ ------ ---------- +
名称地址| | | | BN | B |
+ -- + + + + ------ ------ ------ ---------- +
3个| | AB AB | | | |
4个| | AB一| | | |
+ -- + + + + ------ ------ ------ ---------- +
2行(0秒)

MySQL >选择*从ZCY name = A;
+ -- + + + + ------ ------ ------ ---------- +
名称地址| | | | BN | B |
+ -- + + + + ------ ------ ------ ---------- +
3个| | AB AB | | | |
4个| | AB一| | | |
+ -- + + + + ------ ------ ------ ---------- +
2行(0秒)
+ + + + ------- -------------- ------ ----- --------- ---------------- + + +
场型空| | | |关键|默认|额外|
+ + + + ------- -------------- ------ ----- --------- ---------------- + + +
| | ID int(11)没有优先级| | | | auto_increment |空
| | NAME varchar(4)是| | |空| |
| |地址char(8)是| | |空| |
| | BN varbinary(4)是| | |空| |
| | B二进制(8)是| | |空| |
+ + + + ------- -------------- ------ ----- --------- ---------------- + + +
-------------------- ------------------- + + +
| concat($
-------------------- ------------------- + + +
美元美元| | | AB空
| | AB AB |美元美元美元
|美元美元美元美元| AB AB |
| |美元美元美元美元| AB
|空|美元|
|空| ABCDE |美元美元
|空| abcd1234 |美元美元
-------------------- ------------------- + + +

二进制保存一个二进制字符串,它包含字节而不是字符,没有字符集限制。
二进制(8)可以保存8个字符,每个字符占1字节,总共8字节。
比较是字节,而不是字符(char),字节比字符更简单、更快。
字符没有区分大小写的区分,二进制是区分大小写的,结尾用0代替空格填充。
复制代码代码如下所示:
MySQL >选择*从ZCY b = a 0 0 0 0 0 0 0;
+ -- + + + + ------ ------ ------ ---------- +
名称地址| | | | BN | B |
+ -- + + + + ------ ------ ------ ---------- +
| 5 | T一空一| | | |
+ -- + + + + ------ ------ ------ ---------- +
MySQL >选择*从ZCY b = a 0 0 0 0 0 0;
+ -- + + + + ------ ------ ------ ---------- +
名称地址| | | | BN | B |
+ -- + + + + ------ ------ ------ ---------- +
4个| | AB一| | | |
+ -- + + + + ------ ------ ------ ---------- +

varbinary节省了一长串不补充 0落后
MySQL >选择*从ZCY Bn = 'ab;
+ -- + + + + ------ ------ ------ ---------- +
名称地址| | | | BN | B |
+ -- + + + + ------ ------ ------ ---------- +
3个| | AB AB | | | |
+ -- + + + + ------ ------ ------ ---------- +
1行集(0.01秒)

MySQL >选择*从ZCY Bn = 'ab;
+ -- + + + + ------ ------ ------ ---------- +
名称地址| | | | BN | B |
+ -- + + + + ------ ------ ------ ---------- +
| 2 | asdf AB AB | | | |
+ -- + + + + ------ ------ ------ ---------- +
1行集(0秒)

MySQL >选择*从ZCY Bn = 'ab;
+ -- + + + + ------ ------ ------ ---------- +
名称地址| | | | BN | B |
+ -- + + + + ------ ------ ------ ---------- +
4个| | AB一| | | |
+ -- + + + + ------ ------ ------ ---------- +
1行集(0秒)
MySQL中的斑点和文本的区别

BLOB二进制大对象,可容纳可变的数据量。有4种类型:tinyblob斑点,斑点,mediumblob,和longblob。它们只是容纳值的最大长度。

有4种类型:tinytext文本,文本,mediumtext,和单引号字符。这些对应于4种类型的斑点,具有相同的最大长度和存储要求。

BLOB列被视为一个二进制字符串(字节串)。文本列为非二进制字符串(字符串)。BLOB列没有字符集、排序和比较基于列值的字节值。文本栏中有一个字符集、排序和比较值根据校对规则的字符集。

文本或数据块列的存储或检索过程中没有任何案例和案例转换。

当你不运行在一个严格的模式,如果你的BLOB或文本列,超过列类型的最大长度指定一个值,值是拦截确保它是合适的。如果切的性格不是一个空间,将产生一个警告。使用严格的SQL模式,错误可以生成和价值观将被拒绝而不是拦截和警告。

在很多方面,你可以看到BLOB列为varbinary列可够大的。以同样的方式,你可以看到文本列为varchar column.blob和文本不同于在以下方面varbinary和varchar:

尾部空间不删除当BLOB和文本列的值被保存或检索。(这是为varbinary和VARCHAR列相同)。

请注意,相比之下,你会有空间容纳,比较的对象扩展文本,像CHAR和varchar。

对于BLOB和文本列的索引,索引的前缀长度必须指定为CHAR和VARCHAR,前缀长度可选。

块和文本列不能有默认值。

长长的mediumtext VARCHAR对应的数据类型,这是为了确保兼容性。如果文本列类型使用二进制属性,二元校对规则的列的字符集是分配给列。

MySQL的连接程序/ ODBC定义了BLOB值定义的文本价值longvarbinary和longvarchar。

因为数据块和文本的值可能很长,使用它们时可能会有一些限制:

排序时,只使用第一max_sort_length字节的列,max_sort_length默认值为1024;该值可以用-- max_sort_length选项改变时,mysqld服务器启动。

增加运行时max_sort_length值可以使更多的字节顺序或组合意义。任何客户端会话max_sort_length可以改变变量的值:
复制代码代码如下所示:
MySQL >设置max_sort_length = 2000;

MySQL >选择ID,评论tbl_name

订单按>评论;

当你想让超过max_sort_length字节的意义,另一种方式来使用或按组包含BLOB或文本列长值转换成固定长度列的值对象,标准的方法是使用SUBSTRING函数。例如,下面的语句排序的2000个字节的评论专栏:
复制代码代码如下所示:
MySQL >选择ID,子串(评论,12000)从tbl_name

订单->子串(评论,12000);

BLOB或文本对象的最大尺寸是由它的类型决定的,但可以被客户端和服务器之间传递的最大价值是由可用内存的数量确定和通信缓冲区的大小。你可以通过改变变量的值改变的max_allowed_packet消息缓存的大小,但是你必须修改服务器同时客户端程序。例如,MySQL,就可以改变客户的max_allowed_packet价值。

每一个点或文本值都是由内部分配的对象表示的,这与其他列类型相反,该列类型在表打开时为每1列分配一个存储引擎。

相关文章

MySQL联合运营商缺省规则研究

MySQL联合运营商缺省规则研究

运营商,规则,电脑软件,MySQL,复制代码代码如下所示: 创建数据表。 创建表td_base_data(ID int(10)不为空auto_increment,userid int(10)默认'0'。 创建表td_base_data_20090527(ID int(10)不为空auto_increment,int(10)默认用户名,用户名, 插入模拟记录 …

wmpburn.exe的过程是怎样的

wmpburn.exe的过程是怎样的

的是,过程,是怎样,电脑软件,wmpburn,评论:对wmpburn.exe工艺简介 进程文件:wmpburn或wmpburn.exe 过程名称:尼禄快速刻录CD插件 过程类别:安全风险的过程 英文描述: wmpburn.exe是一个过程,属于领先尼禄CD写作,尼禄,它也被称为以下三个方面。 中…

什么是gcasserv.exe什么gcasserv过

什么是gcasserv.exe什么gcasserv过

函数,查询,过程,电脑软件,gcasserv,点评:gcasserv.exe是巨人 /微软反间谍软件相关程序 进程文件:gcasserv或gcasserv.exe 进程名称:微软反间谍软件的服务器进程 过程类别:安全风险的过程 英文描述: gcasserv.exe是一个过程,属于巨人/微软反间谍…

在Win7SVN服务器的构建

在Win7SVN服务器的构建

服务器,电脑软件,Win7SVN,点评:这篇文章主要是为您分享到win7下搭建SVN服务器的方式,需要的朋友可以参考一下。 1软件准备: setup-subversion-1.7.8 tortoisesvn-1.7.11.23600-win32-svn-1.7.8 2安装: 安装安装路径需要安装个人需求。 3创…

在Oracle数据库中创建自增id字段的

在Oracle数据库中创建自增id字段的

字段,步骤,自增,数据库中,电脑软件,在Oracle中使用自添加id字段的步骤更为繁琐,并总结如下: -创建表 创建表的建议 ( id不是空的, 活动int默认值1不是null, int类型不为空, 味精VARCHAR2(512)不为空, 建议空不空(4000), 主键(id), 约束advice_uni独特(类型…

Oracle使用对字符集和修改字符集的

Oracle使用对字符集和修改字符集的

字符集,修改,详细说明,电脑软件,Oracle,1。什么是oracle字符集 Oracle字符集是一组的一个字节数据的解释的符号,它的大小和相互宽容。Oracle支持国家语言的体系结构允许您存储,处理,和使用本地化语言检索数据。它使数据库工具,错误信息,排序,日期…

该opera.exe歌剧过程有什么用

该opera.exe歌剧过程有什么用

歌剧,什么用,过程,电脑软件,opera,点评:opera.exe是Opera浏览器相关的程序,包括电子邮件,新闻组的功能,网络聊天,和广告拦截 进程文件:歌剧或opera.exe 过程名称:Opera Browser 过程类别:安全风险的过程 英文描述: opera.exe是一个过程,属于歌剧的…

mysql数学函数简明概述

mysql数学函数简明概述

数学函数,简明,电脑软件,mysql,1。abs(x):返回x的绝对值 复制代码代码如下所示: 选择ABS(1)、abs(- 1)、abs(0); + + + + -------- --------- -------- | ABS(1)| ABS(1)(0)| | ABS + + + + -------- --------- -------- | 1 | 1 | 0 | + + + + -----…

一个实用的win8.2地图的概念和实用

一个实用的win8.2地图的概念和实用

地图,电脑软件,点评:微软计划把开始菜单在Windows的下一版本,但很多人还是有自己的想法。 有传言称,微软计划reprovide开始菜单在Windows的下一版本,但很多人还是有自己的想法。本周,一个20岁的设计师,Jay Machalani,给了她的Windows 8.2的设计,它…

MySQL数据库的十种主要优化技术

MySQL数据库的十种主要优化技术

优化,数据库,十种,技术,电脑软件,1。优化MySQL查询缓存 高速查询缓存可以通过MySQL服务器上的查询来实现,后台数据库引擎是提高性能的最有效的方法之一,当同一个查询执行多次时,如果从缓存中提取结果,则速度非常快。 但是主要的问题是它很容…

什么是Win8停止工作(在两种情况下的

什么是Win8停止工作(在两种情况下的

方法,两种,情况下,工作,电脑软件,点评:Win8的停止工作的解决方案基本上可分为两种情况:Windows 8启动和不启动,和朋友有类似的情况可以参考这篇文章。 该修复方法在Win8停止工作如下: 在下列情况下有两种情况: 1、如果Windows 8可以启动,选择Me…

什么过程jfCacheMgr.exe文件引入jf

什么过程jfCacheMgr.exe文件引入jf

文件,过程,电脑软件,exe,jfCacheMgr,点评:这个过程不是Windows系统的一部分,而是安装了皮肤、电影和电影播放器软件的一部分。 有一个在任务管理器jfCacheMgr.exe过程为什么它一直在运行,是病毒吗把一个问题知道什么是jfCacheMgr.exe! jfCach…