Mysql數(shù)據(jù)庫相關(guān)面試題總結(jié)(30道)

1润梯、列舉常見的關(guān)系型數(shù)據(jù)庫和非關(guān)系型都有那些过牙?

  • 關(guān)系型數(shù)據(jù)庫:Oracle、DB2仆救、Microsoft SQL Server抒和、Microsoft Access、MySQL
  • 非關(guān)系型數(shù)據(jù)庫:NoSql彤蔽、Cloudant摧莽、MongoDb、redis顿痪、HBase

兩種數(shù)據(jù)庫之間的區(qū)別:

關(guān)系型數(shù)據(jù)庫:
  • 關(guān)系型數(shù)據(jù)庫的特性
    1镊辕、關(guān)系型數(shù)據(jù)庫,是指采用了關(guān)系模型來組織數(shù)據(jù)的數(shù)據(jù)庫蚁袭;
    2征懈、關(guān)系型數(shù)據(jù)庫的最大特點(diǎn)就是事務(wù)的一致性;
    3揩悄、簡單來說卖哎,關(guān)系模型指的就是二維表格模型,而一個關(guān)系型數(shù)據(jù)庫就是由二維表及其之間的聯(lián)系所組成的一個數(shù)據(jù)組織。
  • 關(guān)系型數(shù)據(jù)庫的優(yōu)點(diǎn)
    1亏娜、容易理解:二維表結(jié)構(gòu)是非常貼近邏輯世界一個概念焕窝,關(guān)系模型相對網(wǎng)狀、層次等其他模型來說更容易理解维贺;
    2它掂、使用方便:通用的SQL語言使得操作關(guān)系型數(shù)據(jù)庫非常方便;
    3溯泣、易于維護(hù):豐富的完整性(實(shí)體完整性虐秋、參照完整性和用戶定義的完整性)大大減低了數(shù)據(jù)冗余和數(shù)據(jù)不一致的概率;
    4垃沦、支持SQL客给,可用于復(fù)雜的查詢。
  • 關(guān)系型數(shù)據(jù)庫的缺點(diǎn)
    1栏尚、為了維護(hù)一致性所付出的巨大代價(jià)就是其讀寫性能比較差起愈;
    2、固定的表結(jié)構(gòu)译仗;
    3、高并發(fā)讀寫需求官觅;
    4纵菌、海量數(shù)據(jù)的高效率讀寫;
非關(guān)系型數(shù)據(jù)庫
  • 非關(guān)系型數(shù)據(jù)庫的特性
    1休涤、使用鍵值對存儲數(shù)據(jù)咱圆;
    2、分布式功氨;
    3序苏、一般不支持ACID特性;
    4捷凄、非關(guān)系型數(shù)據(jù)庫嚴(yán)格上不是一種數(shù)據(jù)庫忱详,應(yīng)該是一種數(shù)據(jù)結(jié)構(gòu)化存儲方法的集合。
  • 非關(guān)系型數(shù)據(jù)庫的優(yōu)點(diǎn)
    1跺涤、無需經(jīng)過sql層的解析匈睁,讀寫性能很高;
    2桶错、基于鍵值對航唆,數(shù)據(jù)沒有耦合性,容易擴(kuò)展院刁;
    3糯钙、存儲數(shù)據(jù)的格式:nosql的存儲格式是key,value形式、文檔形式、圖片形式等等任岸,文檔形式鸳玩、圖片形式等等,
    而關(guān)系型數(shù)據(jù)庫則只支持基礎(chǔ)類型演闭。
  • 非關(guān)系型數(shù)據(jù)庫的缺點(diǎn)
    1不跟、不提供sql支持,學(xué)習(xí)和使用成本較高米碰;
    2窝革、無事務(wù)處理,附加功能bi和報(bào)表等支持也不好吕座;

2虐译、MySQL常見數(shù)據(jù)庫引擎及比較?

  • 常見的數(shù)據(jù)庫引擎是MyiSAM和inmoDB
  • 比較:
    • MyISAM:
      1吴趴、它不支持事務(wù)漆诽,也不支持外鍵,其優(yōu)勢是訪問的速度快
    • innoDB:
      1锣枝、InnoDB支持事務(wù)安全厢拭,對比MyISAM引擎,InnoDB寫的效率差一些撇叁,并且會占據(jù)更多的磁盤空間供鸠。
      2楞捂、MySQL支持外鍵的存儲引擎只有InnoDB

3寨闹、簡述數(shù)據(jù)三大范式?

  • 第一范式( 1NF): 字段具有原子性,不可再分帖蔓。
  • 第二范式( 2NF):是在第一范式( 1NF) 的基礎(chǔ)上建立起來的塑娇,要求數(shù)據(jù)庫表中的每個實(shí)例或行必須可以被惟一地區(qū)分埋酬。通常需要為表加上一個列写妥, 以存儲各個實(shí)例的惟一標(biāo)識珍特。 這個惟一屬性列被稱為主關(guān)鍵字或主鍵扎筒。
  • 第三范式( 3NF): 必須先滿足第二范式( 2NF)。 簡而言之奥溺, 第三范式( 3NF) 要求一個數(shù)據(jù)庫表中不包含已在其它表中已包含的非主關(guān)鍵字信息浮定。所以第三范式具有如下特征:1层亿, 每一列只有一個值闸盔。2, 每一行都能區(qū)分针贬。3, 每一個表都不包含其他表已經(jīng)包含的非主關(guān)鍵字信息快压。

4蔫劣、什么是事務(wù)脉幢?什么是鎖?MySQL如何支持事務(wù)嫌松?

  • 事務(wù):主要用于處理操作量大沪曙,復(fù)雜度高的數(shù)據(jù)萎羔。一般來說,事務(wù)是必須滿足4個條件(ACID):
    • 原子性:所謂原子操作是指不會被線程調(diào)度機(jī)制打斷的操作贾陷;這種操作一旦開始缘眶,就一直運(yùn)行到結(jié)束昵宇,中間不會有任何 context switch (切換到另一個線程)磅崭。事務(wù)在執(zhí)行過程中發(fā)生錯誤瓦哎,會被回滾(Rollback)到事務(wù)開始前的狀態(tài)砸喻,就像這個事務(wù)從來沒有執(zhí)行過一樣割岛。
    • 一致性:在事務(wù)開始之前和事務(wù)結(jié)束以后剂买,數(shù)據(jù)庫的完整性沒有被破壞惠爽。這表示寫入的資料必須完全符合所有的預(yù)設(shè)規(guī)則,這包含資料的精確度坐慰、串聯(lián)性以及后續(xù)數(shù)據(jù)庫可以自發(fā)性地完成預(yù)定的工作较性。
    • 隔離性:數(shù)據(jù)庫允許多個并發(fā)事務(wù)同時(shí)對其數(shù)據(jù)進(jìn)行讀寫和修改的能力,隔離性可以防止多個事務(wù)并發(fā)執(zhí)行時(shí)由于交叉執(zhí)行结胀,而導(dǎo)致數(shù)據(jù)的不一致赞咙。事務(wù)隔離分為不同級別,包括讀未提交(Read uncommitted)糟港、讀提交(read committed)攀操、可重復(fù)讀(repeatable read)和串行化(Serializable)。
    • 持久性:事務(wù)處理結(jié)束后着逐,對數(shù)據(jù)的修改就是永久的崔赌,即便系統(tǒng)故障也不會丟失意蛀。

- 鎖:是實(shí)現(xiàn)事務(wù)的關(guān)鍵,所可以保證事務(wù)的完整性和并發(fā)行健芭,與現(xiàn)實(shí)生活中的鎖一樣县钥,可以使某些數(shù)據(jù)的擁有者,在某段時(shí)間內(nèi)不能使用某些數(shù)據(jù)或者數(shù)據(jù)結(jié)構(gòu)慈迈。

注意:MySQL 中只有使用了 Innodb 數(shù)據(jù)庫引擎的數(shù)據(jù)庫或表才支持事務(wù)若贮。

5、簡述數(shù)據(jù)庫設(shè)計(jì)中一對多和多對多的應(yīng)用場景痒留?

  • 一對多:當(dāng)在數(shù)據(jù)庫的設(shè)計(jì)中谴麦,涉及到一個對象可以包含多個另外對象,而單個另外對象只能對應(yīng)一個對象時(shí)就產(chǎn)生了一對多的關(guān)系伸头,例學(xué)生和班級匾效,這種情況通常將外鍵設(shè)在多的對象表結(jié)構(gòu)中。
  • 多對多:當(dāng)在數(shù)據(jù)庫的設(shè)計(jì)中恤磷,涉及到一個對象可以包含多個另外對象面哼,而單個另外對象也對應(yīng)多個對象時(shí)就產(chǎn)生了多對多的關(guān)系,例書籍和作者扫步,這種情況通常將外鍵設(shè)在多的對象表結(jié)構(gòu)中魔策。

6、簡述觸發(fā)器河胎、函數(shù)闯袒、視圖、存儲過程游岳?

  • 觸發(fā)器:使用觸發(fā)器可以定制用戶對表進(jìn)行【增政敢、刪、改】操作時(shí)前后的行為,觸發(fā)器無法由用戶直接調(diào)用胚迫,而知由于對表的【增/刪/改】操作被動引發(fā)的
  • 函數(shù):是MySQL數(shù)據(jù)庫提供的內(nèi)部函數(shù)(當(dāng)然也可以自定義函數(shù))堕仔。這些內(nèi)部函數(shù)可以幫助用戶更加方便的處理表中的數(shù)據(jù)
  • 視圖:視圖是虛擬表或邏輯表,它被定義為具有連接的SQL SELECT查詢語句晌区。
  • 存儲過程:存儲過程是存儲在數(shù)據(jù)庫目錄中的一坨的聲明性SQL語句,數(shù)據(jù)庫中的一個重要對象,有效提高了程序的性能

7通贞、MySQL索引種類

  • 普通索引朗若、唯一索引(主鍵索引、唯一索引)昌罩、聯(lián)合索引哭懈、全文索引、空間索引

8茎用、索引在什么情況下遵循最左前綴的規(guī)則遣总?

  • 在建立了聯(lián)合索引的前提條件下睬罗,數(shù)據(jù)庫會一直從左向右的順序依次查找,直到遇到了范圍查詢(>,<,between,like等)

9旭斥、主鍵和外鍵的區(qū)別容达?

  • 主鍵:是指表中一個列或者列的組合,其值能夠唯一的標(biāo)識表中的每一個行垂券。這樣的一列或者多列成為表的主鍵花盐,通過它可以強(qiáng)制表的實(shí)體完整性。當(dāng)創(chuàng)建或者更改表時(shí)可以通過定義PRIMARY KEY約束來創(chuàng)建主鍵菇爪,一個表只能有一個主鍵約束算芯,而且主鍵約束中的列不能是空值,由于主鍵約束確保唯一數(shù)據(jù)凳宙,所一經(jīng)常來定義標(biāo)識列熙揍。
  • 外鍵:外鍵是建立于表與表之間的聯(lián)系。外鍵保證了數(shù)據(jù)的完整性氏涩,使用外鍵届囚,簡單直觀,可以直接在數(shù)據(jù)模型中體現(xiàn)削葱,無論是設(shè)計(jì)奖亚、維護(hù)等。

10析砸、MySQL常見的函數(shù)昔字?

  • 聚合函數(shù):avg,min,max,count,sum,
  • 字符串處理函數(shù):
    合并字符串函數(shù):concat(str1,str2,str3…)
    比較字符串大小函數(shù):strcmp(str1,str2)
    獲取字符串字節(jié)數(shù)函數(shù):length(str)
    獲取字符串字符數(shù)函數(shù):char_length(str)
    字母大小寫轉(zhuǎn)換函數(shù):大寫:upper(x),ucase(x);小寫lower(x),lcase(x)
  • 處理數(shù)值的函數(shù):
    絕對值函數(shù):abs(x)
    向上取整函數(shù):ceil(x)
    向下取整函數(shù):floor(x)
    取模函數(shù):mod(x,y)
    隨機(jī)數(shù)函數(shù):rand()
    四舍五入函數(shù):round(x,y)
    數(shù)值截取函數(shù):truncate(x,y)
  • 用于處理時(shí)間日期的函數(shù):
    獲取當(dāng)前日期:curdate()首繁,current_date()
    獲取當(dāng)前時(shí)間:curtime()作郭,current_time()
    獲取當(dāng)前日期時(shí)間:now()
    從日期中選擇出月份數(shù):month(date),monthname(date)
    從日期中選擇出周數(shù):week(date)
    從日期中選擇出周數(shù):year(date)
    從時(shí)間中選擇出小時(shí)數(shù):hour(time)
    從時(shí)間中選擇出分鐘數(shù):minute(time)
    從時(shí)間中選擇出今天是周幾:weekday(date),dayname(date)

11、列舉創(chuàng)建索引但是無法命中索引的8種情況弦疮。

  • 1夹攒、查詢條件中有or、not in胁塞、not exist等
  • 2咏尝、小表查詢
  • 3、like查詢是以%開頭
  • 4啸罢、如果列類型是字符串编检,那一定要在條件中將數(shù)據(jù)使用引號引用起來,否則不使用索引
  • 5、沒有使用索引字段查詢
  • 6扰才、對索引列進(jìn)行運(yùn)算允懂,需要建立函數(shù)索引
  • 7、單獨(dú)引用聯(lián)合索引中的非第一位置的索引
  • 8衩匣、沒有查詢條件

12蕾总、如何開啟慢日志查詢粥航?

  • 參數(shù)說明:
    • slow_query_log: 慢查詢開啟狀態(tài)
    • slow_query_log_file:慢查詢?nèi)罩敬娣诺奈恢茫ㄟ@個目錄需要MySQL的運(yùn)行帳號的可寫權(quán)限,一般設(shè)置為MySQL的數(shù)據(jù)存放目錄)
    • long_query_time:查詢超過多少秒才記錄
  • 開啟慢日志查詢方法一:全局變量設(shè)置
    1生百、將 slow_query_log 全局變量設(shè)置為“ON”狀態(tài)递雀。指令示例:mysql> set global slow_query_log='ON';
    2、設(shè)置慢查詢?nèi)罩敬娣诺奈恢茫簃ysql> set global slow_query_log_file='/usr/local/mysql/data/slow.log';
    3置侍、查詢超過1秒就記錄:mysql> set global long_query_time=1;
  • 開啟慢日志查詢方法二: 配置文件設(shè)置
    修改配置文件my.cnf映之,在[mysqld]下的下方加入:
[mysqld]
slow_query_log = ON
slow_query_log_file = /usr/local/mysql/data/slow.log
long_query_time = 1    

修改完參數(shù)后重啟數(shù)據(jù)庫服務(wù)就可以了

13、數(shù)據(jù)庫導(dǎo)入導(dǎo)出命令(結(jié)構(gòu)+數(shù)據(jù))蜡坊?

  • 導(dǎo)出數(shù)據(jù)庫結(jié)構(gòu)和數(shù)據(jù):mysqldump -u用戶名 -p密碼 數(shù)據(jù)庫名> 路徑+導(dǎo)出的文件名.sql
  • 導(dǎo)出數(shù)據(jù)庫所有表結(jié)構(gòu):mysqldump -u用戶名 -p密碼 -d 數(shù)據(jù)庫名>路徑+文件名.sql
  • 導(dǎo)出數(shù)據(jù)表結(jié)構(gòu)和數(shù)據(jù):mysqldump -u用戶名 -p密碼 數(shù)據(jù)庫名 表名>路徑+文件名.sql
  • 導(dǎo)出數(shù)據(jù)表結(jié)構(gòu):mysqldump -u用戶名 -p密碼 -d 數(shù)據(jù)庫名 表名>路徑+文件名.sql

14杠输、 數(shù)據(jù)庫優(yōu)化的思路

- 1.SQL語句優(yōu)化
1)應(yīng)盡量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進(jìn)行全表掃描秕衙。
2)應(yīng)盡量避免在 where 子句中對字段進(jìn)行 null 值判斷蠢甲,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描,如:select id from t where num is null
可以在num上設(shè)置默認(rèn)值0据忘,確保表中num列沒有null值**鹦牛,然后這樣查詢:
select id from t where num=0
3)很多時(shí)候用 exists 代替 in 是一個好的選擇
4)用Where子句替換HAVING 子句 因?yàn)镠AVING 只會在檢索出所有記錄之后才對結(jié)果集進(jìn)行過濾

- 2.索引優(yōu)化
合理使用:普通索引、唯一索引(主鍵索引勇吊、唯一索引)曼追、聯(lián)合索引、全文索引汉规、空間索引

- 3.數(shù)據(jù)庫結(jié)構(gòu)優(yōu)化
1)范式優(yōu)化:
比如消除冗余(節(jié)省空間礼殊。。)
2)反范式優(yōu)化:
比如適當(dāng)加冗余等(減少join)
3)拆分表:
分區(qū)將數(shù)據(jù)在物理上分隔開针史,不同分區(qū)的數(shù)據(jù)可以制定保存在處于不同磁盤上的數(shù)據(jù)文件里晶伦。這樣,當(dāng)對這個表進(jìn)行查詢時(shí)啄枕,只需要在表分區(qū)中進(jìn)行掃描婚陪,而不必進(jìn)行全表掃描,明顯縮短了查詢時(shí)間频祝,另外處于不同磁盤的分區(qū)也將對這個表的數(shù)據(jù)傳輸分散在不同的磁盤I/O泌参,一個精心設(shè)置的分區(qū)可以將數(shù)據(jù)傳輸對磁盤I/O競爭均勻地分散開。對數(shù)據(jù)量大的時(shí)時(shí)表可采取此方法常空〖吧幔可按月自動建表分區(qū)。
4)拆分其實(shí)又分垂直拆分和水平拆分:
案例: 簡單購物系統(tǒng)暫設(shè)涉及如下表:
1.產(chǎn)品表(數(shù)據(jù)量10w窟绷,穩(wěn)定)
2.訂單表(數(shù)據(jù)量200w,且有增長趨勢)
3.用戶表 (數(shù)據(jù)量100w咐柜,且有增長趨勢) 以mysql為例講述下水平拆分和垂直拆分兼蜈,mysql能容忍的數(shù)量級在百萬靜態(tài)數(shù)據(jù)可以到千萬攘残。
垂直拆分:解決問題:表與表之間的io競爭 。不解決問題:單表中數(shù)據(jù)量增長出現(xiàn)的壓力为狸。
方案: 把產(chǎn)品表和用戶表放到一個server上 訂單表單獨(dú)放到一個server上
水平拆分: 解決問題:單表中數(shù)據(jù)量增長出現(xiàn)的壓力 不解決問題:表與表之間的io爭奪歼郭。
方案: 用戶表通過性別拆分為男用戶表和女用戶表,訂單表通過已完成和完成中拆分為已完成訂單和未完成訂單辐棒, 產(chǎn)品表病曾、未完成訂單放一個server上;已完成訂單表和男用戶表放一個server上漾根;女用戶表放一個server上(女的愛購物 哈哈)
- 4.服務(wù)器硬件優(yōu)化

15泰涂、char和varchar的區(qū)別?

  • char的長度是不可變的辐怕,而varchar的長度是可變的逼蒙。char的存取速度還是要比varchar要快得多,因?yàn)槠溟L度固定寄疏,方便程序的存儲與查找是牢;但是char也為此付出的是空間的代價(jià),因?yàn)槠溟L度固定陕截,所以難免會有多余的空格占位符占據(jù)空間驳棱,可謂是以空間換取時(shí)間效率,而varchar是以空間效率為首位的农曲。再者社搅,char的存儲方式是,對英文字符(ASCII)占用1個字節(jié)朋蔫,對一個漢字占用兩個字節(jié)罚渐;而varchar的存儲方式是,對每個英文字符占用2個字節(jié)驯妄,漢字也占用2個字節(jié)荷并。

16、簡述MySQL的執(zhí)行計(jì)劃青扔?

在工作過程中源织,有時(shí)候會對慢查詢進(jìn)行調(diào)優(yōu)。對于MySQL的SQL語句調(diào)優(yōu)微猖,MySQL本身提供了強(qiáng)大的explain關(guān)鍵字用于查詢分析執(zhí)行計(jì)劃谈息。

  • 語法:從語法角度explain和describe/desc是相同的,只是一般更常用desc看表結(jié)構(gòu)凛剥,explain來看查詢計(jì)劃侠仇。

詳細(xì)了解請點(diǎn)鏈接:http://www.cnblogs.com/micrari/p/6583482.html

17、在對name做了唯一索引前提下,簡述以下區(qū)別:

  • select * from tb where name = ‘Oldboy-Wupeiqi’ # 全局遍歷找所有
  • select * from tb where name = ‘Oldboy-Wupeiqi’ limit 1 # 鎖定一條就結(jié)束

18逻炊、1000w條數(shù)據(jù)互亮,使用limit offset 分頁時(shí),為什么越往后翻越慢余素?如何解決豹休?

  • 原因:越是向后,掃描的數(shù)據(jù)也就越多
  • 解決方案:
    • 1、limit限制優(yōu)化法:把limit偏移量限制低于某個數(shù)桨吊。威根。超過這個數(shù)等于沒數(shù)據(jù)
    • 2、存儲本頁數(shù)據(jù)兩端的主鍵,按主鍵查找后向前或向后取多少條

19视乐、什么是索引合并洛搀?

索引合并:是把幾個索引的范圍掃描合并成一個索引。索引合并的時(shí)候炊林,會對索引進(jìn)行并集姥卢,交集或者先交集再并集操作,以便合并成一個索引渣聚。這些需要合并的索引只能是一個表的独榴。不能對多表進(jìn)行索引合并。

20奕枝、什么是覆蓋索引棺榔?

MySQL可以利用索引返回SELECT 列表中的字段昧辽。而不必根據(jù)索引再次讀取數(shù)據(jù)文件萧求。 包含所有滿足查詢需要的數(shù)據(jù)的索引成為覆蓋索引(Covering Index)稍走。也就是平時(shí)所說的不需要回表操作

21救崔、left join、right join以及inner join的區(qū)別

  • left join 左關(guān)聯(lián)止潮,主表在左邊览芳,右邊為從表齿桃。如果左側(cè)的主表中沒有關(guān)聯(lián)字段激捏,會用null 填滿
  • right join 右關(guān)聯(lián) 主表在右邊和letf join相反
  • inner join 內(nèi)關(guān)聯(lián)只會顯示主表和從表相關(guān)聯(lián)的字段设塔,不會出現(xiàn)null

22、寫出一條Sql語句:取出表A中第31到第40記錄 (Mysql)

  • select * from A limit 30, 10

23远舅、什么是數(shù)據(jù)庫約束,常見的約束有哪幾種?

數(shù)據(jù)庫約束用于保證數(shù)據(jù)庫闰蛔、表數(shù)據(jù)的完整性(正確性和一致性)⊥及兀可以通過定義約束\索引\觸發(fā)器來保證數(shù)據(jù)的完整性序六。
總體來講,約束可以分為:
主鍵約束:primary key;
外鍵約束:foreign key蚤吹;
唯一約束:unique例诀;
檢查約束:check;
空值約束:not null;
默認(rèn)值約束:default余佃;

24暮刃、從數(shù)據(jù)庫中隨機(jī)取50條數(shù)據(jù)

  • select * from 表 order by rand() limit50;

25、什么是sql注入爆土?

SQL注入攻擊指的是通過構(gòu)建特殊的輸入作為參數(shù)傳入Web應(yīng)用程序,而這些輸入大都是SQL語法里的一些組合诸蚕,通過執(zhí)行SQL語句進(jìn)而執(zhí)行攻擊者所要的操作步势,其主要原因是程序沒有細(xì)致地過濾用戶輸入的數(shù)據(jù),致使非法數(shù)據(jù)侵入系統(tǒng)背犯。

26坏瘩、關(guān)于sql語句應(yīng)該考慮哪些安全性?

1.防止sql注入漠魏,對特殊字符進(jìn)行轉(zhuǎn)義倔矾,過濾或者使用預(yù)編譯的sql語句綁定變量。
2.最小權(quán)限原則柱锹,特別是不要用root賬戶哪自,為不同的類型的動作或者組建使用不同的賬戶。
3.當(dāng)sql運(yùn)行出錯時(shí)禁熏,不要把數(shù)據(jù)庫返回的錯誤信息全部顯示給用戶壤巷,以防止泄漏服務(wù)器和數(shù)據(jù)庫相關(guān)信息。

27瞧毙、一張表,里面有ID自增主鍵,當(dāng)insert了17條記錄之后,刪除了第15,16,17條記錄,再把Mysql重啟,再insert一條記錄,這條記錄的ID是18還是15 胧华?

  • 如果表的類型是MyISAM,那么是18宙彪。
    因?yàn)镸yISAM表會把自增主鍵的最大ID記錄到數(shù)據(jù)文件里矩动,重啟MySQL自增主鍵的最大ID也不會丟失。
  • 如果表的類型是InnoDB释漆,那么是15悲没。
    InnoDB表只是把自增主鍵的最大ID記錄到內(nèi)存中,所以重啟數(shù)據(jù)庫或者是對表進(jìn)行OPTIMIZE操作灵汪,都會導(dǎo)致最大ID丟失檀训。

28、怎么把這樣一個數(shù)據(jù)庫表

year   month amount
1991   1     1.1
1991   2     1.2
1991   3     1.3
1991   4     1.4
1992   1     2.1
1992   2     2.2
1992   3     2.3
1992   4     2.4
查成這樣一個結(jié)果
year m1   m2   m3   m4
1991 1.1 1.2 1.3 1.4
1992 2.1 2.2 2.3 2.4 
答案享言、
select year, 
(select amount from   aaa m where month=1   and m.year=aaa.year) as m1,
(select amount from   aaa m where month=2   and m.year=aaa.year) as m2,
(select amount from   aaa m where month=3   and m.year=aaa.year) as m3,
(select amount from   aaa m where month=4   and m.year=aaa.year) as m4
from aaa   group by year

29峻凫、簡述數(shù)據(jù)庫的讀寫分離?

  • 讀寫分離為了確保數(shù)據(jù)庫產(chǎn)品的穩(wěn)數(shù)據(jù)定性览露,很多數(shù)據(jù)庫擁有雙機(jī)熱備功能荧琼。也就是,第一臺數(shù)據(jù)庫服務(wù)器,是對外提供增刪改業(yè)務(wù)的生產(chǎn)服務(wù)器命锄;第二臺數(shù)據(jù)庫服務(wù)器堰乔,主要進(jìn)行讀的操作。

30脐恩、簡述數(shù)據(jù)庫分庫分表镐侯?(水平、垂直)

  • 垂直分庫:就是按照功能的不同驶冒,把沒有關(guān)聯(lián)的數(shù)據(jù)放到不同的數(shù)據(jù)庫和服務(wù)器中
  • 水平分表:根據(jù)一定的規(guī)則將一個表的數(shù)據(jù)劃分到不同的數(shù)據(jù)庫中苟翻,兩個數(shù)據(jù)庫的表結(jié)構(gòu)一樣。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末骗污,一起剝皮案震驚了整個濱河市崇猫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌需忿,老刑警劉巖诅炉,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異屋厘,居然都是意外死亡涕烧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門擅这,熙熙樓的掌柜王于貴愁眉苦臉地迎上來澈魄,“玉大人,你說我怎么就攤上這事仲翎”陨龋” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵溯香,是天一觀的道長鲫构。 經(jīng)常有香客問我,道長玫坛,這世上最難降的妖魔是什么结笨? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮湿镀,結(jié)果婚禮上炕吸,老公的妹妹穿的比我還像新娘。我一直安慰自己勉痴,他們只是感情好赫模,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蒸矛,像睡著了一般瀑罗。 火紅的嫁衣襯著肌膚如雪胸嘴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天斩祭,我揣著相機(jī)與錄音劣像,去河邊找鬼。 笑死摧玫,一個胖子當(dāng)著我的面吹牛耳奕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诬像,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼吮铭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了颅停?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤掠拳,失蹤者是張志新(化名)和其女友劉穎癞揉,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溺欧,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡喊熟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了姐刁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芥牌。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖聂使,靈堂內(nèi)的尸體忽然破棺而出壁拉,到底是詐尸還是另有隱情,我是刑警寧澤柏靶,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布弃理,位于F島的核電站,受9級特大地震影響屎蜓,放射性物質(zhì)發(fā)生泄漏痘昌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一炬转、第九天 我趴在偏房一處隱蔽的房頂上張望辆苔。 院中可真熱鬧,春花似錦扼劈、人聲如沸驻啤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽街佑。三九已至谢翎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沐旨,已是汗流浹背森逮。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留磁携,地道東北人褒侧。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像谊迄,于是被迫代替她去往敵國和親闷供。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353

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