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.pswp.cn/news/533932.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533932.shtml
英文地址,請注明出處:http://en.pswp.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…