mysql居左查询abcd_MySql速查手册

索引

定义

索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B树的形式保存。就像是数据的目录。

索引类型

唯一索引

主键索引

B-Tree

普通索引

R-Tree

联合索引

Hash

全文索引

FullText

在mysql中fulltext索引只针对myisam生效。

符合索引

对于创建的多列索引(复合索引),不是使用第一部分就不会使用索引。

对于like查询前面%通配符不会使用索引,通配符在后面会使用索引。

使用or要求所有字段都必须有索引,否则不会使用索引。

索引注意事项

#避免使用双%号的查询条件。

如a like '%123%',(如果无前置%,只有后置%,是可以用到列上的索引的)

事务隔离级别

read uncommitted 未提交读

所有事务都可以看到没有提交事务的数据。是所有隔离级别中最低的一种,会出现脏读。

脏读

那就是我们在一个事务中可以随随便便读取到其他事务未提交的数据,这还是比较麻烦的,我们叫脏读。

read committed 提交读

事务成功提交后才可以被查询到。

不可重复读

那就是我们在会话B同一个事务中,读取到两次不同的结果。这就造成了不可重复读,就是两次读取的结果不同。这种现象叫不可重复读。

repeatable 重复读

同一个事务多个实例读取数据时,可能将未提交的记录查询出来,而出现幻读。

mysql默认级别,一个事物中数据一致。

Serializable可串行化

强制的进行排序,在每个读读数据行上添加共享锁。会导致大量超时现象和锁竞争。

隔离界别查询

1.查看当前会话隔离级别

select @@tx_isolation;

2.查看系统当前隔离级别

select @@global.tx_isolation;

3.设置当前会话隔离级别

set session transaction isolatin level repeatable read;

4.设置系统当前隔离级别

set global transaction isolation level repeatable read;

数据库锁

锁粒度

表级锁

行级锁

页级锁

锁级别

共享锁

排它锁

加锁方式

自动锁

显示锁

操作

DML DDL锁

使用方式

乐观锁

update test_innodb set money=123,version=0+1 where version=0 and id=2;

悲观锁

数据类型

INT

1.BIT[M]

位字段类型,M表示每个值的位数,范围从1到64,如果M被忽略,默认为1

2.TINYINT[(M)] [UNSIGNED] [ZEROFILL] M默认为4

很小的整数。带符号的范围是-128到127。无符号的范围是0到255。

3. BOOL,BOOLEAN

是TINYINT(1)的同义词。zero值被视为假。非zero值视为真。

4.SMALLINT[(M)] [UNSIGNED] [ZEROFILL] M默认为6

小的整数。带符号的范围是-32768到32767。无符号的范围是0到65535。

5.MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] M默认为9

中等大小的整数。带符号的范围是-8388608到8388607。无符号的范围是0到16777215。

6. INT[(M)] [UNSIGNED] [ZEROFILL] M默认为11

普通大小的整数。带符号的范围是-2147483648到2147483647。无符号的范围是0到4294967295。

7.BIGINT[(M)] [UNSIGNED] [ZEROFILL] M默认为20

大整数。带符号的范围是-9223372036854775808到9223372036854775807。无符号的范围是0到18446744073709551615。

注意:这里的M代表的并不是存储在数据库中的具体的长度,以前总是会误以为int(3)只能存储3个长度的数字,int(11)就会存储11个长度的数字,这是大错特错的。

其实当我们在选择使用int的类型的时候,不论是int(3)还是int(11),它在数据库里面存储的都是4个字节的长度,在使用int(3)的时候如果你输入的是10,会默认给你存储位010,也就是说这个3代表的是默认的一个长度,当你不足3位时,会帮你不全,当你超过3位时,就没有任何的影响。

varchar

4.0版本以下,varchar(100),指的是100字节,如果存放UTF8汉字时,只能存33个(每个汉字3字节)

5.0版本以上,varchar(100),指的是100字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放100个。

UTF8编码中一个汉字(包括数字)占用3个字节

GBK编码中一个汉字(包括数字)占用2个字节

时间类型

date yyyy-mm-dd 日期值

time hh:mm:ss 时间值

year yyyy 年份

datetime yyyy-mm-dd hh:mm:ss 日期

timestamp yyyymmddhhmmss 日期

Java对应Mysql类型

Java 类型 SQL 类型

int : java.lang.Integer INTEGER

long : java.lang.Long BIGINT

short : java.lang.Short SMALLINT

float : java.lang.Float FLOAT

double : java.lang.Double DOUBLE

java.math.BigDecimal : NUMERIC

java.lang.String :VARCHAR

byte : java.lang.Byte TINYINT

boolean :java.lang.Boolean bit(值为0或1)

date : LocalDate

time : LocalTime

timestamp : LocalDateTime

常用函数

#find_in_set

like是广泛的模糊匹配,字符串中没有分隔符,find_in_set是精确匹配,字段值以英文”,”分隔,FIND_IN_SET(str,strlist)。 假如字符串str 在由N 子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间

SELECT * from video where find_in_set('4',week);

常用Sql

#性能查询,用于检测瓶颈,查看执行和拥堵情况

SHOW PROCESSLIST

#分析工具

explain sql

#分步查看sql的最终执行顺序

1 EXPLAIN EXTENDED

SELECT record_start_time AS 'record_time' FROM iindex.iindex_object_audience_analysis_red_black_natural_cycle WHERE record_start_time >= '2019-04-15'

AND record_start_time <= '2019-06-24' ;

2 SHOW WARNINGS;

#强制使用索引

mysql强制使用索引:force index(索引名或者主键PRI)

#查看session是否为自动提交

show variables like "autocommit"

#查看当前数据库的字符集

show variables like '%character%'

#查询索引

show index from 表名

#复制一张表(也可以先用mysqladmin导出数据,再导入)

CREATE TABLE tbl1 LIKE tbl;

INSERT INTO tbl1 SELECT * FROM tbl;

#性能检测

mysql > SET PROFILING = 1;

mysql > ...

mysql > SHOW PROFILES;

存储引擎

InnoDB

适合场景

数据库的增删改查都相当频繁

可靠性要求比较高,要求支持事物

MyISAM

适合场景

频繁执行全表count语句

对数据进行增删改的频率不高,查询非常频繁

没有事物

知识点

最左匹配原则

mysql会一直向右匹配知道遇到范围查询(>,5 and d=4 如果建立abcd的索引,d就用不到索引。

=和in可以乱序

比如a=1 and b=2 and c=3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引认识的形式

单表

#尽量控制单表数据量的大小,建议控制在500万以内

500万并不是MySQL数据库的限制,过大会造成修改表结构,备份,恢复都会有很大的问题

可以用历史数据归档(应用于日志数据),分库分表(应用于业务数据)等手段来控制数据量大小

#限制每张表上的索引数量,建议单张表索引不超过5个

数据库和表的字符集统一使用UTF8

兼容性更好,统一字符集可以避免由于字符集转换产生的乱码,不同的字符集进行比较前需要进行转换会造成索引失效

尽量not null

MYSQL对NULL字段索引优化不佳,增加更多的计算难度,同时在保存与处理NULL类形时,也会做更多的工作,所以从效率上来说,不建议用过多的NULL,解决方法是数值弄用整数0,字符串用空来定义默认值即可。

业务常见问题

特殊字符插入问题

Incorrect string value: '\xF0\x9F\x90\xBE' for column 'nick_name' at row 1

1 数据库字段编码设置utf8mb4

2 数据库连接设置utf8

mysql.dev_ifans.url=jdbc:mysql://192.168.32.114:3306/istar_test?autoReconnect=true&characterEncoding=UTF8

3 以上没问题检查数据库连接版本

mysql

mysql-connector-java

5.1.47

标签:lang,java,int,数据库,MySql,手册,索引,mysql,速查

来源: https://www.cnblogs.com/gustavo/p/12227263.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

和python哪个容易胖_为什么有些人特别容易胖?

7种人&#xff0c;最容易被肥胖盯上&#xff0c;其中有你吗&#xff1f;胖&#xff0c;总是来得猝不及防&#xff0c;肥肉也总是不知不觉地长出来……许多胖友对自己的身材老摸不着脑&#xff0c;其实&#xff0c;长胖都是有迹可循的&#xff01;正如下面这7类人&#xff0c;就…

loadrunner 错误: 无法找到 java.exe_LoadRunner错误及解决方法总结

1. error:missing newline in d:\loadrunner\name.dat场景执行时报error:missing newline in d:\loadrunner\name.dat第二次执行不报两个解决办法&#xff1a;第一&#xff1a;如果参数不是很多的话&#xff0c;不要打开记事本去编辑参数&#xff0c;就直接在LR提供的参数的表格…

gif透明背景动画_【超实用干货! 】iPad上的动画App大推荐

作者/立夏编辑/彼方大家好&#xff0c;我是立夏。大概在两年前吧我为大家写过几款动画APP的评测&#xff0c;这一次我也想给大家推荐一些我的新宠&#xff0c;供大家参考。我在这里就不过多提及如Animation Desk、Procreate或是Callipeg之类知名度相对更高一些的动画App了&…

python框架是干什么的_django框架是干什么的

django(Python Web 框架)Django是一个开放源代码的Web应用框架&#xff0c;由Python写成。采用了MTV的框架模式&#xff0c;即模型M&#xff0c;视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的&#xff0c;即是CMS(内容管理系统)软件。…

iphone如何信任软件_【手机软件】千禾影院:全新观影神器,支持安卓+iOS,最新、最全、高清、免费!...

Hello,大家好&#xff0c;我是春哥&#xff01;每天记得打卡哦&#xff01;感谢每一位小伙伴们的关注和支持&#xff01;免责声明大部分资源来源于网络&#xff0c;仅供学习和交流使用&#xff0c;如有侵权请联系我们删除。每期文章末尾都会有关键词&#xff0c;在公众号发消息…

Java小魔女芭芭拉_沉迷蘑菇不可自拔,黏土人《小魔女学园》苏西·曼芭芭拉 图赏...

GOOD SMILE出品的黏土人系列手办新作——《小魔女学园》苏西曼芭芭拉&#xff0c;已经开始接受预定了。这款黏土人的原型师是来自中国上海的陈天&#xff0c;售价4167日元&#xff0c;预计2018年4月发售。苏西是主人公亚可的室友&#xff0c;她是从东南亚来的身份不明的魔女。热…

java int相除向上取整_java实战项目常用类,Date、Calendar、BigDecimal、Math、UUID

Java开发中经常用到的类和方法&#xff0c;以下主要就日期是时间处理、金融数字处理、数学计算、随机数、MD5加密等。java.util.Date类java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。日期时间的本质是一个long&#xff0c;它…

python四级中考有用的_一位中考生家长的后悔药:考前30多天,千万别做这7件傻事...

中考即将来临&#xff0c;考后必定是几家欢乐几家愁&#xff0c;有庆幸的、有后悔的。中考前的几个月到底应该怎么过?考前考中需要注意什么&#xff1f;家长做哪些事情是画蛇添足的。今天给大家推荐一位“中考失败”学子父亲的自白&#xff0c;其中有对优秀儿子的心疼&#xf…

R语言中dim函数_R语言--向量化计算(apply族函数)

R语言最优秀的是它的向量化编程&#xff0c;这其中apply族函数扮演了非常重要的角色。apply族函数是由apply、sapply、lapply、mapply、tapply等函数组成的。熟练使用apply族函数&#xff0c;能够简化程序&#xff0c;提高代码的运算速度。软件&环境win10 64bitR 3.6.1appl…

php+mysql记事本_一个简单记事本php操作mysql辅助类创建

//SqlHelper.class.phpconnmysql_connect($this->host,$this->user,$this->passwrd); if(!$this->conn){ die("连接失败".mysql_error()); } mysql_select_db($this->db); mysql_query("set names utf8"); } //增删改 function execute_dml…

python init方法做了什么_Python类方法、__new__方法和__init__方法分别是什么

Python类方法、__new__方法和__init__方法分别是什么发布时间&#xff1a;2020-09-03 15:24:06来源&#xff1a;亿速云阅读&#xff1a;104作者&#xff1a;小新这篇文章主要介绍Python类方法、__new__方法和__init__方法分别是什么&#xff0c;文中介绍的非常详细&#xff0c;…

谷歌浏览器中文版_中国科学家设计超薄指尖传感器,厚度不到A4纸五分之一 / 谷歌发布地图时光机:百年前,你家街道啥样?/ AI看图说话首超人类...

关注我们了解计算机视觉最新动态 &#xff01;动态先览1中国科学家设计超薄指尖传感器&#xff0c;厚度不到A4纸五分之一2谷歌发布地图「时光机」&#xff1a;100年前&#xff0c;你家街道长啥样&#xff1f;3仿真环境跟车2分钟&#xff0c;就让自动驾驶系统撞上马路牙子&#…

300小时成为java程序员_直击面试现场: Java程序员3轮6小时面试, 成功拿到阿里offer!...

原标题&#xff1a;直击面试现场: Java程序员3轮6小时面试, 成功拿到阿里offer!今天给大家分享一位Java程序员小伙去阿里应聘的经历&#xff01;从Java开发要掌握的技术来讲&#xff0c;前面已经说得差不多了。我主要想从面试者的角度谈一谈看法。如果是我面试&#xff0c;就给…

python 判断每月最后一天_python获取某年中每个月的第一天和最后一天的两种方法...

搜索关键字&#xff1a;python get every first day of month参考解答&#xff1a;方法一&#xff1a;>>> import calendar>>> calendar.monthrange(2002,1)(1, 31)>>> calendar.monthrange(2008,2)(4, 29)>>> calendar.monthrange(2100,2…

anaconda python3.8目录_MacBook Pro 安装anaconda、配置环境

新入手了MacBook Pro&#xff0c;iOS系统还不算非常熟练...作为一个新手程序员&#xff0c;在python开发道路上的学习就从安装环境开始吧&#xff1a;1、下载安装包2、安装过程一路同意or继续...不过&#xff0c;mac上弹出不允许在当前路径安装&#xff0c;那么选择自定义安装路…

中国网建java发送短信_短信验证登陆-中国网建提供的SMS短信平台

一、JAVA发送手机短信常见的有三种方式(如下所列)&#xff1a;使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册使用短信mao的方式进行短信的发送,这种方式应该是比较的常用,前提是需要购买硬件设备。二、一下整理了SMS短信验证过程…

stm32外部中断_STM32学习笔记 | 电源管理及低功耗设计要点

一款好的电子产品&#xff0c;都需要认真考虑电源管理的问题&#xff0c;电池供电的产品更应该注意低功耗的实现。 STM32电源介绍嵌入式开发直播课 - STM32 USART串口的应用 - 创客学院直播室​www.makeru.com.cn每一块STM32芯片中都有一个电源控制器&#xff08;PWR&#xff0…

delphi 调用浏览器内核_HFL:基于混合模糊测试的Linux内核漏洞挖掘

RemarksConference: NDSS 2020Full Paper: HFL: Hybrid Fuzzing on the Linux KernelSummary针对的问题&#xff1a; Linux 操作系统内核安全漏洞的发现需要新技术。现有解决方案的不足&#xff1a;当前的模糊测试技术难以直接应用于内核安全漏洞发现。提出的创新方案概述&…

隔行变色java代码_jquery入门—选择器实现隔行变色实例代码

1、JQuery选择器继承了CSS、path语音的部分语法&#xff0c;允许通过标签名、属性名、内容对DOM元素进行快速、准确的选择。2、JQuery选择器与JavaScript相比&#xff0c;具有代码简单、完善的检测机制的优势。3、使用JQuery选择器实现隔行变色&#xff0c;示例代码如下&#x…

python arduino c_从Python向Arduino LCD发送一个字符串

我想用python在arduinolcd16x2上显示一个字符串&#xff0c;但是我遇到了串行通信的问题。在以下是Arduino中运行的代码&#xff1a;Arduino代码#include LiquidCrystal lcd(8, 9, 4, 5, 6, 7);String stringa;const unsigned long TimeOut 10; // timeout 10 msString string…