MySQL的基本知識(shí)

一弥雹、MySQL事物的基本要素?

? 原子性??? 一致性??? 隔離性??? 持久性

二、MySQL事物的并發(fā)問題?

https://www.cnblogs.com/kangshuai/p/5735374.html

???? 1)臟讀:事務(wù)A讀取了事務(wù)B更新的數(shù)據(jù)蹬叭,然后事務(wù)B回滾,那么事務(wù)A讀取到的數(shù)據(jù)就是臟數(shù)據(jù)


2)不可重復(fù)讀:事務(wù)A多次讀取同一數(shù)據(jù)状知,事務(wù)B在事務(wù)A多次讀取的過程中對(duì)數(shù)據(jù)做了更新并提交秽五,導(dǎo)致事務(wù)A多次讀取同一數(shù)據(jù)的結(jié)果不一致,側(cè)重于修改


3)幻讀: 系統(tǒng)管理員A將數(shù)據(jù)庫(kù)中所有的學(xué)生的成績(jī)從具體分?jǐn)?shù)改為ABCD等級(jí)饥悴,同時(shí)系統(tǒng)管理員B插入了或刪除了一條具體分?jǐn)?shù)的記錄坦喘,導(dǎo)致A發(fā)現(xiàn)結(jié)束后還有一條數(shù)據(jù)沒有改過來或是丟失了,就好像出現(xiàn)了幻覺一樣

注意:

???? 1西设、事務(wù)隔離級(jí)別為讀提交時(shí)瓣铣,寫數(shù)據(jù)只會(huì)鎖住相應(yīng)的行


2、事務(wù)隔離級(jí)別為可重復(fù)讀時(shí)济榨,如果檢索條件有索引(包括主鍵索引)的時(shí)候坯沪,默認(rèn)加鎖方式是next-key 鎖绿映;如果檢索條件沒有索引擒滑,更新數(shù)據(jù)時(shí)會(huì)鎖住整張表。一個(gè)間隙被事務(wù)加了鎖叉弦,其他事務(wù)是不能在這個(gè)間隙插入記錄的丐一,這樣可以防止幻讀。


3淹冰、事務(wù)隔離級(jí)別為串行化時(shí)库车,讀寫數(shù)據(jù)都會(huì)鎖住整張表


4、隔離級(jí)別越高樱拴,越能保證數(shù)據(jù)的完整性和一致性柠衍,但是對(duì)并發(fā)性能的影響也越大。


四晶乔、mysql中between...and..的使用珍坊,及時(shí)間范圍的查詢?

https://www.cnblogs.com/zjdxr-up/p/8383693.html


五正罢、MySQL主從復(fù)制與讀寫分離原理阵漏?

  https://www.cnblogs.com/KTblog/p/5122825.html

六、Mysql 主從同步延遲原理及解決方案?

https://www.cnblogs.com/cnmenglang/p/6393769.html


七履怯、MySQL的join與left join有什么區(qū)別回还?

join相當(dāng)于我們平時(shí)用的where,就是把兩張表中同時(shí)滿足a.id=b.id的數(shù)據(jù)找出來叹洲。

無區(qū)別


八柠硕、MySQL的in與between and 有什么區(qū)別?

Between ...? and...

between是指屬性值在min和max之間运提,包括min和max仅叫,In

IN

in則是將括號(hào)內(nèi)的數(shù)當(dāng)做數(shù)組處理,只有當(dāng)記錄的屬性值等于括號(hào)內(nèi)的數(shù)值之一時(shí)糙捺,該記錄才會(huì)被選中

九诫咱、MySQL中EXPLAIN的作用?

??????????? 模擬Mysql優(yōu)化器是如何執(zhí)行SQL查詢語(yǔ)句的洪灯,從而知道Mysql是如何處理你的SQL語(yǔ)句的坎缭。分析你的查詢語(yǔ)句或是表結(jié)構(gòu)的性能瓶頸。

十签钩、MySQL有哪些索引掏呼?

普通索引:僅加速查詢

唯一索引:加速查詢 + 列值唯一(可以有null)

主鍵索引:加速查詢 + 列值唯一(不可以有null)+ 表中只有一個(gè)

組合索引:多列值組成一個(gè)索引,專門用于組合搜索铅檩,其效率大于索引合并

全文索引:對(duì)文本的內(nèi)容進(jìn)行分詞憎夷,進(jìn)行搜索

十一、什么是復(fù)合索引昧旨?

用戶可以在多個(gè)列上建立索引,這種索引叫做復(fù)合索引(組合索引); 復(fù)合索引在數(shù)據(jù)庫(kù)操作期間所需的開銷更小,可以代替多個(gè)單一索引; 同時(shí)有兩個(gè)概念叫做窄索引和寬索引,窄索引是指索引列為1-2列的索引,寬索引也就是索引列超過2列的索引; 設(shè)計(jì)索引的一個(gè)重要原則就是能用窄索引不用寬索引,因?yàn)檎饕冉M合索引更有效;

十二拾给、對(duì)于普通索引而言 在使用like進(jìn)行通配符模糊查詢時(shí),如果首尾之間都使用了通配符,索引會(huì)怎么樣兔沃?

索引是無效的

假設(shè)查詢內(nèi)容的關(guān)鍵詞為'abc'

SELECT * FROM tab_name WHERE index_column LIKE

?'abc%'; ?#索引是有效的

SELECT * FROM tab_name WHERE index_column LIKE

?'%abc'; ?#索引是無效的

SELECT * FROM tab_name WHERE index_column LIKE

?'%cba'; ?#索引是有效的

SELECT * FROM tab_name WHERE index_column LIKE

?'%abc%'; ?#索引是無效的



十三蒋得、怎樣刪除索引?

??????? dropindex<索引名>;

十四乒疏、UNION的作用是什么额衙?

UNION 操作符用于合并兩個(gè)或多個(gè) SELECT 語(yǔ)句的結(jié)果集。

請(qǐng)注意怕吴,UNION 內(nèi)部的 SELECT 語(yǔ)句必須擁有相同數(shù)量的列窍侧。列也必須擁有相似的數(shù)據(jù)類型。同時(shí)转绷,每條 SELECT 語(yǔ)句中的列的順序必須相同



十五伟件、ORDER BY怎樣使用?

order by是用來寫在where之后暇咆,給多個(gè)字段來排序的一個(gè)DQL查詢語(yǔ)句锋爪。

select 字段列表/* from 表名 where 條件 order by 字段名1 asc/desc

十六丙曙、MySQL中GROUP BY的作用?

“Group By”從字面意義上理解就是根據(jù)“By”指定的規(guī)則對(duì)數(shù)據(jù)進(jìn)行分組其骄,所謂的分組就是將一個(gè)“數(shù)據(jù)集”劃分成若干個(gè)“小區(qū)域”亏镰,然后針對(duì)若干個(gè)“小區(qū)域”進(jìn)行數(shù)據(jù)處理样傍。


十七医寿、MySQL中數(shù)學(xué)函數(shù)有哪些?

rand()??顧名思義胚泌,是用來生成隨機(jī)數(shù)用的

format(x,y)??函數(shù)毯炮,功能是將一個(gè)數(shù)字x逼肯,保留y位小數(shù),并且整數(shù)部分用逗號(hào)分隔千分位桃煎,小數(shù)部分進(jìn)行四舍五入

abs();??求一個(gè)數(shù)的絕對(duì)值篮幢;absolute

sqrt();?求一個(gè)數(shù)的平方根。sqrt是sqruar(平方为迈,矩形) 三椿,root(根)的縮寫。

mod(x,y)??x除數(shù)葫辐,y被除數(shù)搜锰。結(jié)束是余數(shù)。

ceil()??進(jìn)一取整耿战。

floor()舍一取整

format?會(huì)自動(dòng)進(jìn)行千分位蛋叼,下面我們來看看round函數(shù),進(jìn)行四舍五入剂陡。

?truncate(x,y)??比較霸道狈涮,不管四舍五入,直接把x鹏倘,的y位小數(shù)直接干掉薯嗤。

sign()?返回當(dāng)前結(jié)果得符號(hào),如果是負(fù)數(shù)返回-1纤泵,如果是0 返回0 如果是正數(shù),返回1

power()??冪運(yùn)算

十八镜粤、MySQL中 ALTER的作用是捏题?

當(dāng)我們需要修改數(shù)據(jù)表名或者修改數(shù)據(jù)表字段時(shí),就需要使用到MySQL ALTER命令

十九肉渴、MySQL中獲取時(shí)間的函數(shù)公荧?

?獲得當(dāng)前日期+時(shí)間(date

+ time)函數(shù):now()

獲得當(dāng)前日期+時(shí)間(date + time)函數(shù):sysdate()

獲得當(dāng)前日期(date)函數(shù):curdate() 等同于:current_date(),current_date

獲得當(dāng)前時(shí)間(time)函數(shù):curtime() 等同于:current_time(),current_time

獲得當(dāng)前 UTC 日期時(shí)間函數(shù):utc_date(),utc_time(), utc_timestamp()

二十、Mysql分表和分區(qū)的區(qū)別同规、分庫(kù)分表介紹與區(qū)別循狰?

http://www.cnblogs.com/langtianya/p/4997768.html

二十一窟社、MySQL的緩存池?

緩沖池概念:緩沖池簡(jiǎn)單來說就是一塊內(nèi)存區(qū)域绪钥,通過內(nèi)存的速度來彌補(bǔ)磁盤速度較慢對(duì)數(shù)據(jù)庫(kù)性能的影響灿里。在數(shù)據(jù)庫(kù)當(dāng)中讀取頁(yè)的操作,首先將從磁盤讀到的頁(yè)存放在緩存池中程腹,這個(gè)過程稱為將頁(yè)“FIX”在緩沖池中匣吊。下一次再讀相同的頁(yè)時(shí),首先判斷該頁(yè)是不是在緩沖池中寸潦。若在色鸳,直接讀取。否則见转,讀取磁盤上的頁(yè)命雀。

二十二、varchar與char的區(qū)別斩箫?

https://www.cnblogs.com/webph/p/6679815.html

二十三咏雌、select

into與create table的區(qū)別?

nsert? into? table1(columns1,columns2) select?columns1,columns2? from? table2;?

從table2中查詢的結(jié)果插入到table1中校焦,前提是table1和table2已經(jīng)存在;?

oracle中不支持select columns1? into? table2??from?? table1;?

其語(yǔ)法為 create.? as..select,有以下三種方式赊抖;?

1. create table table1 as select? * from table2? where1=2;?

創(chuàng)建一個(gè)表結(jié)構(gòu)與table2一模一樣的表,只復(fù)制結(jié)構(gòu)不復(fù)制數(shù)據(jù)寨典;?

2.create? table table1? as? select *?? from table2? ;?

? 創(chuàng)建一個(gè)表結(jié)構(gòu)與table2一模一樣的表,復(fù)制結(jié)構(gòu)同時(shí)也復(fù)制數(shù)據(jù)氛雪;?

3.create? table table1(columns1,columns2) as select?columns1,columns2? from table2;??

創(chuàng)建一個(gè)表結(jié)構(gòu)與table2一模一樣的表,復(fù)制結(jié)構(gòu)同時(shí)也復(fù)制數(shù)據(jù),但是指定新表的列名;

二十四耸成、mysql的主從復(fù)制是怎么實(shí)現(xiàn)的报亩,數(shù)據(jù)同步的整體流程是怎么樣的?

mysql的主從復(fù)制

1. Salve的IO線程會(huì)讀取mastr.info文件中配置好的主庫(kù)信息井氢,比如說存放的有:Master數(shù)據(jù)庫(kù)的用戶名弦追、密碼、端口花竞、還有Master的binlog索引位置劲件;

2. 拿到信息之后就帶著信息去鏈接Master的主庫(kù)IO線程

3. 當(dāng)主庫(kù)的IO線程先檢查SLave傳過來的配置信息是否正確,如果正確约急,就拿著Slave傳過來的binlog索引位置和Master庫(kù)的binlog文件中最后一個(gè)索引位置進(jìn)行對(duì)比零远,如果一致就陷入等待狀態(tài)厌蔽,等待Master的binlog索引位置更新牵辣;

4. 如果不一致就把Slave傳過來的binlog索引位置往后的所有SQL語(yǔ)句包括最后一條SQL語(yǔ)句的索引位置發(fā)送個(gè)給Slave的IO線程攒磨;

5. Slave的IO線程拿到信息之后谒府,先把Master傳過來的binlog索引在Slave的master.info文件中進(jìn)行更新拼坎;

6. 然后再把Master傳過來的SQL語(yǔ)句寫入到relay文件中,然后繼續(xù)循環(huán)執(zhí)行第二個(gè)步驟完疫;

7. Slave的SQL線程會(huì)一直持續(xù)的觀察relay日志文件中是否有改動(dòng)泰鸡,如果沒有就繼續(xù)監(jiān)聽;

8. 如果發(fā)現(xiàn)relay中有變動(dòng)壳鹤,那么就獲取變動(dòng)的內(nèi)容轉(zhuǎn)換為SQL語(yǔ)句盛龄,并且把SQL語(yǔ)句在Salve的數(shù)據(jù)庫(kù)中進(jìn)行執(zhí)行

?數(shù)據(jù)同步的整體流程

二十五、mysql的常見的存儲(chǔ)引擎有哪些芳誓?

??? ?InnoDB存儲(chǔ)引擎? MyISAM存儲(chǔ)引擎?? MEMORY存儲(chǔ)引擎

二十六余舶、各個(gè)存儲(chǔ)引擎的優(yōu)缺點(diǎn)是什么?

Innodb? 優(yōu)點(diǎn)

災(zāi)難恢復(fù)性好

支持事務(wù)

使用行級(jí)鎖

支持外鍵關(guān)聯(lián)

支持熱備份

對(duì)于InnoDB引擎中的表锹淌,其數(shù)據(jù)的物理組織形式是簇表(Cluster

Table)匿值,主鍵索引和數(shù)據(jù)是在一起的,數(shù)據(jù)按主鍵的順序物理分布

實(shí)現(xiàn)了緩沖管理赂摆,不僅能緩沖索引也能緩沖數(shù)據(jù)挟憔,并且會(huì)自動(dòng)創(chuàng)建散列索引以加快數(shù)據(jù)的獲取

支持熱備份


MEMORY 存儲(chǔ)引擎

缺點(diǎn)如下:


使用表級(jí)鎖,雖然內(nèi)存訪問快库正,但如果頻繁的讀寫曲楚,表級(jí)鎖會(huì)成為瓶頸

只支持固定大小的行。Varchar類型的字段會(huì)存儲(chǔ)為固定長(zhǎng)度的Char類型褥符,浪費(fèi)空間

不支持TEXT、BLOB字段抚垃。當(dāng)有些查詢需要使用到臨時(shí)表(使用的也是MEMORY存儲(chǔ)引擎)時(shí)喷楣,如果表中有TEXT趟大、BLOB字段,那么會(huì)轉(zhuǎn)換為基于磁盤的MyISAM表铣焊,嚴(yán)重降低性能

由于內(nèi)存資源成本昂貴逊朽,一般不建議設(shè)置過大的內(nèi)存表,如果內(nèi)存表滿了曲伊,可通過清除數(shù)據(jù)或調(diào)整內(nèi)存表參數(shù)來避免報(bào)錯(cuò)

服務(wù)器重啟后數(shù)據(jù)會(huì)丟失叽讳,復(fù)制維護(hù)時(shí)需要小心

MyISAM引擎

特性如下:

不支持事務(wù)

使用表級(jí)鎖,并發(fā)性差

主機(jī)宕機(jī)后坟募,MyISAM表易損壞岛蚤,災(zāi)難恢復(fù)性不佳

可以配合鎖,實(shí)現(xiàn)操作系統(tǒng)下的復(fù)制備份懈糯、遷移

只緩存索引涤妒,數(shù)據(jù)的緩存是利用操作系統(tǒng)緩沖區(qū)來實(shí)現(xiàn)的∽可能引發(fā)過多的系統(tǒng)調(diào)用且效率不佳

數(shù)據(jù)緊湊存儲(chǔ)她紫,因此可獲得更小的索引和更快的全表掃描性能


二十七、怎么修改mysql中的表結(jié)構(gòu)(關(guān)鍵詞)

一屿储、字段

1贿讹、添加字段:

alter table `product` add `inventory` int(11) NOT NULL

COMMENT '庫(kù)存'

添加多個(gè)字段:加括號(hào),逗號(hào)分隔

alter table `category` add (

`company` tinyint(4) NOT NULL COMMENT '公司',

`date` varchar(40) NOT NULL COMMENT '日期',

`number` varchar(200) NOT NULL COMMENT '數(shù)量'

)

2够掠、刪除字段:

alter table `category` drop column `date`1

刪除多個(gè)字段:逗號(hào)分隔

alter table `category` drop column `date`,drop column`number`1

3民褂、修改字段屬性:

示例:將 award 表的 count 字段,名稱修改為 company祖屏,并設(shè)置相關(guān)屬性

alter table `award` change `count` `company`

varchar(200) not null comment '公司'

二助赞、索引

1、 添加索引字段

主鍵索引:primary key

alter table `award` add primary key (`id`);

普通索引:index

alter table `award` add index `key_a_c`(`award`,`count`);

全文索引:fulltext

alter table `award` add fulltext `key_a_c`(`award`,`count`);

唯一索引:unique

alter table `award` add unique `key_a_c`(`award`,`count`);

2袁勺、刪除索引:

alter table `award` drop primary key `id`

alter table `award` drop index `key_a_c`

alter table `award` drop fulltext `key_a_c`

alter table `award` drop unique `key_a_c`

3雹食、顯示所有索引

show index from `award`;

二十八、mysql的存儲(chǔ)程序是什么

https://blog.csdn.net/zhou520yue520/article/details/81072324

二十九期丰、mysql的存儲(chǔ)過程是什么

https://www.cnblogs.com/chenpi/p/5136483.html

三十群叶、MySQL中%是什么?怎么使用钝荡?

SQL 中的 % 標(biāo)示通配符, 匹配任何字符, 例如:

select * from TableName where name like 'a%'; // 可匹配 a開頭的任何字符串

是正則中的 * 因?yàn)檎齽t里 + 是至少1個(gè). * 可以0個(gè)

三十一街立、MySQL中l(wèi)ike的用法?

https://blog.csdn.net/qq_27563511/article/details/80879881

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末埠通,一起剝皮案震驚了整個(gè)濱河市赎离,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌端辱,老刑警劉巖梁剔,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件虽画,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡荣病,警方通過查閱死者的電腦和手機(jī)码撰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來个盆,“玉大人脖岛,你說我怎么就攤上這事〖樟粒” “怎么了柴梆?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)编兄。 經(jīng)常有香客問我轩性,道長(zhǎng),這世上最難降的妖魔是什么狠鸳? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任揣苏,我火速辦了婚禮,結(jié)果婚禮上件舵,老公的妹妹穿的比我還像新娘卸察。我一直安慰自己,他們只是感情好铅祸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布坑质。 她就那樣靜靜地躺著,像睡著了一般临梗。 火紅的嫁衣襯著肌膚如雪涡扼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天盟庞,我揣著相機(jī)與錄音吃沪,去河邊找鬼。 笑死什猖,一個(gè)胖子當(dāng)著我的面吹牛票彪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播不狮,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼降铸,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了摇零?” 一聲冷哼從身側(cè)響起推掸,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后终佛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俊嗽,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雾家,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年铃彰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芯咧。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡牙捉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出敬飒,到底是詐尸還是另有隱情邪铲,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布无拗,位于F島的核電站带到,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏英染。R本人自食惡果不足惜揽惹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望四康。 院中可真熱鬧搪搏,春花似錦、人聲如沸闪金。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)哎垦。三九已至囱嫩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間漏设,已是汗流浹背墨闲。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留愿题,地道東北人损俭。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像潘酗,于是被迫代替她去往敵國(guó)和親杆兵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容