广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中BINARY怎么用
  • 917
分享到

MySQL中BINARY怎么用

2024-04-02 19:04:59 917人浏览 八月长安
摘要

这篇文章给大家分享的是有关Mysql中BINARY怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 数据库版本:mysql 5.6.26线上某业

这篇文章给大家分享的是有关Mysql中BINARY怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

数据库版本:
mysql 5.6.26

线上某业务表为了区分大小写,使用BINARY关键字,正常来说使用这个关键字是走索引的,测试过程如下:

创建测试表,插入数据:

drop table  if EXISTS student;

CREATE TABLE `student` (
  `id` int(11) PRIMARY key auto_increment,
  `name` varchar(20) DEFAULT NULL,
key `idx_name`(`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

insert into `student` ( `id`, `name`) values ( '1', 'michael');
insert into `student` ( `id`, `name`) values ( '2', 'lucy');
insert into `student` ( `id`, `name`) values ( '3', 'nacy');
insert into `student` ( `id`, `name`) values ( '4', 'mike');
insert into `student` ( `id`, `name`) values ( null, 'guo');
insert into `student` ( `id`, `name`) values ( '6', 'Guo');
不加BINARY关键字可以走索引:

mysql> desc select * from student where name = 'guo';
+----+-------------+---------+------+---------------+----------+---------+-------+------+--------------------------+
| id | select_type | table   | type | possible_keys | key      | key_len | ref   | rows | Extra                    |
+----+-------------+---------+------+---------------+----------+---------+-------+------+--------------------------+
| 1  | SIMPLE      | student | ref  | idx_name      | idx_name | 63      | const | 2    | Using where; Using index |
+----+-------------+---------+------+---------------+----------+---------+-------+------+--------------------------+
1 rows in set (0.03 sec)
正常来说BINARY关键字是可以走索引的:

mysql> desc select * from student where BINARY name = 'guo';
+----+-------------+---------+-------+---------------+----------+---------+------+------+--------------------------+
| id | select_type | table   | type  | possible_keys | key      | key_len | ref  | rows | Extra                    |
+----+-------------+---------+-------+---------------+----------+---------+------+------+--------------------------+
| 1  | SIMPLE      | student | index | NULL          | idx_name | 63      | NULL | 6    | Using where; Using index |
+----+-------------+---------+-------+---------------+----------+---------+------+------+--------------------------+
1 rows in set (0.04 sec)
不使用BINARY关键字默认不会区分大小写:

mysql> select * from student where name = 'guo';
+----+------+
| id | name |
+----+------+
| 5  | guo  |
| 6  | Guo  |
+----+------+
2 rows in set (0.03 sec)

mysql> select * from student where name = 'Guo';
+----+------+
| id | name |
+----+------+
| 5  | guo  |
| 6  | Guo  |
+----+------+
2 rows in set (0.03 sec)
使用BINARY关键字可以区分大小写:

mysql>  select * from student where BINARY name = 'guo';
+----+------+
| id | name |
+----+------+
| 5  | guo  |
+----+------+
1 rows in set (0.04 sec)

mysql>  select * from student where BINARY name = 'Guo';
+----+------+
| id | name |
+----+------+
| 6  | Guo  |
+----+------+
1 rows in set (0.03 sec)

mysql>
到这里以上都没问题,但关键在于,业务的表结构大于索引的最大长度即字串长度超过255。

CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(2000) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_name` (`name`(255))
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8

mysql> desc select * from student where name = 'guo';
+----+-------------+---------+------+---------------+----------+---------+-------+------+-------------+
| id | select_type | table   | type | possible_keys | key      | key_len | ref   | rows | Extra       |
+----+-------------+---------+------+---------------+----------+---------+-------+------+-------------+
| 1  | SIMPLE      | student | ref  | idx_name      | idx_name | 768     | const | 2    | Using where |
+----+-------------+---------+------+---------------+----------+---------+-------+------+-------------+
1 rows in set (0.04 sec)
加上BINARY关键字不再走索引:

mysql> desc select * from student where BINARY name = 'guo';
+----+-------------+---------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table   | type | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+---------+------+---------------+------+---------+------+------+-------------+
| 1  | SIMPLE      | student | ALL  | NULL          | NULL | NULL    | NULL | 6    | Using where |
+----+-------------+---------+------+---------------+------+---------+------+------+-------------+
1 rows in set (0.05 sec)

mysql>
这时需要在表结构里加上BINARY

mysql>ALTER TABLE student MODIFY COLUMN name VARCHAR(20) BINARY;
Query OK, 6 rows affected (0.06 sec)
数据库会自动转换成COLLATE utf8_bin
collate关键字为校对集,主要是对字符集之间的比较和排序,可以通过 show collation查看所有的校对集

mysql> show create table student\G
*************************** 1. row ***************************
Table       : student
Create Table: CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8
1 rows in set (0.39 sec)

mysql>


mysql> desc select * from student where name = 'guo';
+----+-------------+---------+------+---------------+----------+---------+-------+------+--------------------------+
| id | select_type | table   | type | possible_keys | key      | key_len | ref   | rows | Extra                    |
+----+-------------+---------+------+---------------+----------+---------+-------+------+--------------------------+
| 1  | SIMPLE      | student | ref  | idx_name      | idx_name | 63      | const | 1    | Using where; Using index |
+----+-------------+---------+------+---------------+----------+---------+-------+------+--------------------------+
1 rows in set (0.07 sec)

mysql>
即可区分大小写:

mysql> select * from student where name = 'guo';
+----+------+
| id | name |
+----+------+
| 5  | guo  |
+----+------+
1 rows in set (0.07 sec)

mysql> select * from student where name = 'Guo';
+----+------+
| id | name |
+----+------+
| 6  | Guo  |
+----+------+
1 rows in set (0.06 sec)

mysql>

感谢各位的阅读!关于“MySQL中BINARY怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中BINARY怎么用

本文链接: https://www.lsjlt.com/news/62732.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL中BINARY怎么用
    这篇文章给大家分享的是有关MySQL中BINARY怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 数据库版本:MySQL 5.6.26线上某业...
    99+
    2022-10-18
  • MySql中Binary Log的流程是什么
    本文小编为大家详细介绍“MySql中Binary Log的流程是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySql中Binary Log的流程是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢...
    99+
    2022-10-19
  • MySQL中的binary类型使用操作
    本文主要向大家介绍了MySQL数据库之MySQL的binary类型操作,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。 示例数据表: CREATE TABLE test_bin ( ...
    99+
    2022-05-27
    MySQL binary类型
  • 怎么实现MySQL mysqlbinlog远程备份binary log
    这篇文章主要介绍“怎么实现MySQL mysqlbinlog远程备份binary log”,在日常操作中,相信很多人在怎么实现MySQL mysqlbinlog远程备份binary log问题上存在疑惑,小...
    99+
    2022-10-18
  • C#怎么读写Binary
    这篇文章主要讲解了“C#怎么读写Binary”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#怎么读写Binary”吧!关于Binary方式Binary和文本方式的区别,主要是在一些特殊字符...
    99+
    2023-06-17
  • 怎么解决MySQL中the master's binary log is corrupted报错问题
    本篇内容介绍了“怎么解决MySQL中the master's binary log is corrupted报错问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领...
    99+
    2022-10-19
  • linux采用binary方式如何安装mysql
    这篇文章给大家分享的是有关linux采用binary方式如何安装mysql的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、下载binary文件  在官网上下载 mysql-5....
    99+
    2022-10-18
  • php怎么实现字符转binary
    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑php怎么实现字符转binary?binary就是表示二进制。php将字符串转为二进制数据串代码如: function StrToBin($str){ ...
    99+
    2017-09-12
    php binary 二进制
  • MySQL中LIKE BINARY和LIKE模糊查询实例代码
    目录1. Django ORM id__startswith 查询变慢问题原因解决优化前优化后2. mysql 模糊匹配简介用法带有 “%” 通配符的查询例 1例 2例 3带有“_&r...
    99+
    2022-11-08
  • MySQL中LIKE BINARY和LIKE模糊查询实例代码
    目录1. Django ORM id__startswith 查询变慢问题原因解决优化前优化后2. MySQL 模糊匹配简介用法带有 “%” 通配符的查询例 ...
    99+
    2022-11-13
    mysql中like模糊查询 mysql中like的用法 mysql like binary模糊查询
  • binary在select中用来区分大小写
    CREATE TABLE animals (    id MEDIUMINT NOT NULL AUTO_INCREMENT,    name CHAR(30...
    99+
    2022-10-18
  • ftp命令中binary mode与ascii mode的区别是怎样的
    这篇文章给大家介绍ftp命令中binary mode与ascii mode的区别是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 FTP可用多种格式传输文件,通常由系统决定,大多数系统(包括UNIX系统)只有两种...
    99+
    2023-06-04
  • MYSQL的CHAR和VARCHAR注意事项以及binary和varbinary存储方式是怎样的
    MYSQL的CHAR和VARCHAR注意事项以及binary和varbinary存储方式是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方...
    99+
    2022-10-19
  • MySQL中WEEKDAY怎么用
    这篇文章将为大家详细讲解有关MySQL中WEEKDAY怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。WEEKDAY(date)SELECT WEEKDAY(‘2016-01-16'...
    99+
    2023-06-02
  • Linux中MySQL怎么用
    这篇文章将为大家详细讲解有关Linux中MySQL怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。show databases;2.use mysql转换database3.show tables 显...
    99+
    2023-06-03
  • MySQL中DEFINER怎么用
    这篇文章将为大家详细讲解有关MySQL中DEFINER怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言:在 MySQL 数据库中,在创建视图及函数的时候,你有注意过 definer 选项吗?在迁移...
    99+
    2023-06-20
  • mysql中mysqldumper怎么用
    这篇文章主要为大家展示了“mysql中mysqldumper怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql中mysqldumper怎么用”这篇文...
    99+
    2022-10-18
  • MySQL中Explain怎么用
    小编给大家分享一下MySQL中Explain怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2022-10-18
  • mysql中top怎么用
    小编给大家分享一下mysql中top怎么用,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!mysql top的用法:在mysql中select top用法和mysql server有所...
    99+
    2022-10-18
  • mysql中exists怎么用
    这篇文章主要介绍mysql中exists怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 在mysql中,exists用于检查子查询是否至少会返回一行...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作