在Linux系统上使用MySQL,MySQL是区分字母大小写的,例如建A表时表名是大写的A,修改A表时脚本里写的a,就会报错表a不存在。...在MySQL中,数据库对应数据目录中的目录,数据库中的每个表至少对应数据库目录中的一个文件或多个文件,所以,是否区分大小写是其所在的操作系统决定的。...在大多数基于Unix的系统中,MySQL是区分大小写的;而在Windows系统中,MySQL是不区分大小写的。...0表示使用指定的大小写字母在硬盘上保存表名和数据库名,并且区分字母大小写;1表示表名在硬盘上以小写保存,MySQL将所有表名转换为小写在存储和查找表上,不区分字母大小写;2表示表名和数据库名在硬盘上使用指定的大小写字母进行保存...,但MySQL将它们转换为小写在查找表上,不区分字母大小写。
mysql中有一种机制是表锁定和行锁定,是为了保证数据的完整性。表锁定表示你们都不能对这张表进行操作,必须等我对表操作完才行。...2、MySQL分表 分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,每个表都对应三个文件,MYD数据文件,.MYI索引文件,.frm表结构文件。...例: 1)创建一个完整表 mysql> create database test1; mysql> use test1; mysql> create table member -> ( -> id bigint...#创建两个分表,表结构必须和上面完整的表结构一致 mysql> create table tb_member1 like member; mysql> create table tb_member2 like...into (partition p03 values less than (15),partition p04 values less than maxvalue ); 上述命令的作用就是将最后一个分区分为两个分区
1:在执行查询的时候,需要忽略大小写。 2:以输入字母开头进行查询的 创建表: ? 请点击此处输入图片描述 ?...解决需求一,忽略大小写的。可以先查询大写,在查询小写。然后union 下 先查询出所有小写字母d开头的: ? 请点击此处输入图片描述 ? 在查询出所有大写字母D开头的 ? 请点击此处输入图片描述 ?
Linux区分大小写规则 数据库名与表名严格区分大小写; 表的别名严格区分大小写; 列名与列的别名忽略大小写; 变量名严格区分大小写; windows下均不区分大小写。...配置支持大小写 Linux下配置my.cnf文件来决定是否支持大小写。...默认支持区分大小写,即等同于配置: lower_case_table_names=0 不区分大小写配置成如下即可: lower_case_table_names=1 一般情况下,此配置文件位于,/etc...通过vi命令进行修改,保存,重启mysql,即可生效。
mysql中有一种机制是表锁定和行锁定,是为了保证数据的完整性。表锁定表示你们都不能对这张表进行操作,必须等我对表操作完才行。...2、MySQL分表 分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,每个表都对应三个文件,MYD数据文件,.MYI索引文件,.frm表结构文件。...例: 1)创建一个完整表 mysql> create database test1; mysql> use test1; mysql> create table member -> (...#创建两个分表,表结构必须和上面完整的表结构一致 mysql> create table tb_member1 like member; mysql> create table tb_member2 like...into (partition p03 values less than (15),partition p04 values less than maxvalue ); 上述命令的作用就是将最后一个分区分为两个分区
Django + MySQL 查询不区分大小写问题 Posted May 29, 2018 最近发现一个现象是测试环境的 sqlite 是可以区分大小写的。...就不区分大小写了。...原来是字符集校对规则的问题, utf8_general_ci 不区分大小写, 可以改成utf8_bin(将字符串中的每一个字符用二进制数据存储,区分大小写。)...或者 utf8_general_cs(cs为case sensitive的缩写,即大小写敏感). 但是, 由于我程序段没有操作数据库的权限, 所以没有去 alter 已经有的 TABLE。...我找到另外的一种解决方式 通过 DJANGO ORM 的extra, 在匹配语句上面加上BINARY来区分大小写.
我们大家可能都碰到过这种情况:在Linux下,MySQL的表名区分大小写,而在Windows下是不区分,从Windows下导出的数据脚本中使用的是小写,而Hibernate生成的SQL中表名是大写的,所以查不出数据...这个时候怎么办呢,显然改程序是不行的,时间上也不允许,所以只能设置MySQL数据库不区分大小写了,大家看以下步骤: 1、查询MySQL是否设置了区分大小写 show variables like "%case...其中lower_case_table_names代表了:0是区分大小写; 1是不区分大小写。显然我这个MySQL是区分大小写的。...拓展知识 MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的: 1、数据库名与表名是严格区分大小写的; 2、表的别名是严格区分大小写的; 3、列名与列的别名在所有的情况下均是忽略大小写的...; 4、变量名也是严格区分大小写的; MySQL在Windows下都不区分大小写。
在linux环境下表名是区分大小写的 问题 执行SHOW VARIABLES LIKE '%lowercasetable_names%' 输出结果: ?...其中 0:区分大小写,1:不区分大小写 解决办法 在mysql的配置文件中添加 lowercasetable_names=1 实际解决方式 先查找mysql使用的配置文件 添加配置 重启mysql 查看是否生效...order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf...datadir=/work1/soft/mysql/data socket=/work1/soft/mysql/mysql.sock #设置忽略大小写(简单来说就是sql语句是否严格),默认库名表名保存为小写..., 不区分大小写 lower_case_table_names=1 # 开启ip绑定 #bind-address = 0.0.0.0 [mysqld_safe] log-error=/var/log/mysqld.log
collate规则: *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的 *_cs: case sensitive collation,区分大小写... *_ci: case insensitive collation,不区分大小写 一般而言我们设置字符集注意以下两种: utf8_general_ci --不区分大小写 utf8_bin--区分大小写...当字符设置为不区分大小写时的解决办法: 1.可以将查询条件用binary()括起来。 ...'; 得到的结果是一样的,如果我们需要进行区分的话可以按照如下方法来做: 第一种方法: 要让mysql查询区分大小写,可以: select * from some_table where binary...因此也就自然区分了大小写。
oracle中查询默认是区分大小写的,但是在mysql中默认不区分大小写。 解决办法: mysql可以在SQL语句中加入 binary来区分大小写。...BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写。...= 0 二、建表时加binary create table t{ code varchar(10) binary } ALTER TABLE t_order CONVERT TO...CHARACTER SET utf8 COLLATE utf8_bin; 执行完上面的sql后,对该表的查询就能区分大小写了。
一,子查询 子查询:嵌套在其他查询中;执行顺序由里到外。子查询数目没有限制,如果要使用多层查询,注意写好缩进格式,不要出错。...对计算字段使用子查询: SELECT cust_name,cust_state, (SELECT count(*) FROM orders WHERE orders.cust_id=customers.cust_id...二,联结表 SQL强大的功能之一就是能够在数据检索查询的执行中使用联结(join)。使用联结的的原理是一个表与另一个表有相关联的列。一个表的外键是另一个列主键,通过外键可以将两个表联结起来。...在使用联结表时,实际上做的是将第一个表的每一行与第二行表行进行匹配。因此,如果没有联结条件,检索出的行数目将是第一个表的行数乘以第二个表的行数,即所谓的笛卡儿积。...外部链接,左联结(left outer join),右联结(right outer join);左联结左边表全部返回,右边表没有匹配的为空;右联结同理。
前言: 一般在数据库使用规范中,我们都会看到这么一条:库名及表名一律使用小写英文。你有没有思考过,为什么推荐使用小写呢?库表名是否应该区分大小写呢?带着这些疑问,我们一起来看下本篇文章。...默认情况下,库表名在 Windows 系统下是不区分大小写的,而在 Linux 系统下是区分大小写的。列名,索引名,存储过程、函数及事件名称在任何操作系统下都不区分大小写,列别名也不区分大小写。...下面再来看下各个值的具体含义: Value Meaning 0 库表名以创建语句中指定的字母大小写存储在磁盘上,名称比较区分大小写。 1 库表名以小写形式存储在磁盘上,名称比较不区分大小写。...通过以上实验我们发现 lower_case_table_names 参数设为 0 时,MySQL 库表名是严格区分大小写的,而且表别名同样区分大小写但列名不区分大小写,查询时也需要严格按照大小写来书写...,查询时不区分大小写且用大小写字母都可以查到。
一、实例介绍 SQL语句大小写到底是否区分呢?...可是我们不能每个表都进行一下修改吧?...我们可以再这样,看下面的例子: 例: --不区分大小写 ALTER DATABASE databasename collate Chinese_PRC_CI_AS --区分大小写...ALTER DATABASE databasename collate Chinese_PRC_CS_AS 批量修改数据库中所有表内字段大小写敏感 如: DECLARE @collate nvarchar...排序规则的后半部份(即后缀)含义: _BIN 二进制排序_CI(CS) 是否区分大小写:CI不区分,CS区分 _AI(AS) 是否区分重音:AI不区分,AS区分 _KI(KS) 是否区分假名类型:
00 简单回顾 之前写过一篇关于mysql 对表大小写敏感的问题(你有遇到过MySQL因大小写敏感导致的问题吗),其实在mysql中字段存储的内容是不区分大小写的,本篇进行简单的总结。...想回顾一下: MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的: 1、数据库名与表名是严格区分大小写的; 2、表的别名是严格区分大小写的; 3、列名与列的别名在所有的情况下均是忽略大小写的...02 解决方案 因为默认情况下字段内容是不区分大小写的,也即大小写不敏感。所以解决方案就是要新增字段内容的校验规则。 使用mysql 的BINARY 关键字使搜索区分大小写。...3)utf8_general_cs:utf8_general_cs区分大小写,cs为case sensitive的缩写,即大小写敏感。...通过上一篇和这一篇的内容,详细大家对mysql对大小写敏感的问题也有一定的认识了,在实际的开发中,库和表名最好使用小写字母,注意字段存储内容的大写问题。
上一篇主要讲到了分区分库分表的概念,其实在不影响性能的情况下,我们完全可以使用单分区单库单表。但是业务量大的情况下,受到性能限制我们不得不选择使用分区分库分表。...本篇是上一篇的拓展,本篇主要讲讲十几种我们如何使用分区分库分表。...如果还未看过上一篇文章建议先阅读概念篇:Mysql分库分表(1) --- 概念篇 查看MySQL是否支持分区 并不是所有版本都支持分区,所以需要先查看当前MySQL版本是否支持分区操作,在5.6以上版本使用命令...当查询结果显示partition的状态为active则表示当前MySQL版本支持分区。...然后使用server.xml文件配置的mycat登录信息登录mysql,然后查看user数据库下的数据表,然后插入三条记录到user下的users数据表在mycat上是可以全部查询: ?
记录一下,根据工作中项目交付要求,要将MySQL数据库中的表名和字段名中做一个规范,其中就有将表名和字段名统一做小写处理。...废话不多说,直接上MySQL脚本: 批量修改数据库下的表名(大写改小写): SELECT concat( 'rename table ' , TABLE_NAME , ' to ' , LOWER
原因查找: 因为linux下mysql默认是要区分表名大小写的。...mysql是否区分大小写设置是由参数lower_case_table_names决定的,其中: 1)lower_case_table_names = 0 区分大小写(即对大小写不敏感),默认是这种设置...里创建这张带有大写字母的表时,mysql还是默认的区分大小写设置,即对大小写不敏感。...下数据库名、表名、列名、别名大小写规则是这样的: 1)数据库名与表名是严格区分大小写的; 2)表的别名是严格区分大小写的; 3)列名与列的别名在所有的情况下均是忽略大小写的; 4)变量名也是严格区分大小写的...; 5)MySQL在Windows下都不区分大小写,但是在Linux下默认是区分大小写的。
最近公司项目的MySQL数据库要迁移到linux下,部署时日志总是显示报找不到一个表,用MYSQL查看明明有这个表。后来经百度,原来LINUX下的MYSQL默认是区分表名大小写的。...用命令查看当前是否区分大小写: *************************************** mysql> show variables like "%case%"; +-------...set (0.00 sec) ****************************************** lower_case_file_system | OFF 说明当前区分大小写...修改方法 1.ROOT登录,vi /etc/my.cnf 2.在[mysqld]下加入一行:lower_case_table_names=1 //(为0时区分) 3.保存退出,重启MySQL。
如果已经上线,如何在线更改表结构 1、使用mysql5.6+提供的在线修改功能 可以支持在线修改表结构的pt-osc/gh-ost第三方工具,防止表阻塞。...剔除关系不密切的字段; 字段命名要有规则及相对应的含义(不要一部分英文,一部分拼音,还有类似a.b.c这样不明含义的字段); 字段命名尽量不要使用缩写(大多数缩写都不能明确字段含义); 字段不要大小写混用...主要原因有如下两点 (1)Mysql内存临时表不支持TEXT、BLOB这样的大数据类型,如果查询中包含这样的数据,在排序等操作时,就不能使用内存临时表,必须使用磁盘临时表进行。...四、分区表的限制因素 一个表最多只能有1024个分区 MySQL5.1中,分区表达式必须是整数,或者返回整数的表达式。在MySQL5.5中提供了非整数表达式分区的支持。...分区表中无法使用外键约束 MySQL的分区适用于一个表的所有数据和索引,不能只对表数据分区而不对索引分区,也不能只对索引分区而不对表分区,也不能只对表的一部分数据分区。
auto_increment属性依赖于某个主键/唯一key 1.3 查看索引 mysql> show create table ; mysql> show index from ; mysql...> show indexes from ; mysql> show keys from ; mysql> desc ; 1.4 索引删除 主键索引删除 # 如果有auto_increment...> select * from user where age = 25; # 未使用索引 1.10 mysql智能选择 如果mysql认为全表扫描不会慢于使用索引,则mysql会选择放弃索引,直接全表扫描...mysql> alter add key (字段(前n位位数)) 如何确定位数?...分区技术 2.1 分区概念 如果数据表记录非常多,达到上亿条,表活性降低,影响mysql整体性能,可以使用分区技术,把一张表,从逻辑上分成多个区域,便于存储数据。mysql本身支持分区技术。
领取专属 10元无门槛券
手把手带您无忧上云