1院塞、一張表遮晚,里面有ID自增主鍵,當(dāng)insert了17條記錄之后拦止,刪除了第15,16,17條記錄县遣,再把Mysql重啟,再insert一條記錄汹族,這條記錄的ID是18還是15 萧求?
2、Mysql的技術(shù)特點(diǎn)是什么顶瞒?
Mysql數(shù)據(jù)庫軟件是一個客戶端或服務(wù)器系統(tǒng)夸政,其中包括:支持各種客戶端程序和庫的多線程SQL服務(wù)器、不同的后端榴徐、廣泛的應(yīng)用程序編程接口和管理工具秒梳。
3、Heap表是什么箕速?
HEAP表存在于內(nèi)存中酪碘,用于臨時(shí)高速存儲。
BLOB或TEXT字段是不允許的
只能使用比較運(yùn)算符=盐茎,<兴垦,>,=>字柠,= <
HEAP表不支持AUTO_INCREMENT
索引不可為NULL
4探越、Mysql服務(wù)器默認(rèn)端口是什么?
Mysql服務(wù)器的默認(rèn)端口是3306窑业。
5钦幔、與Oracle相比,Mysql有什么優(yōu)勢常柄?
Mysql是開源軟件鲤氢,隨時(shí)可用,無需付費(fèi)西潘。
Mysql是便攜式的
帶有命令提示符的GUI卷玉。
使用Mysql查詢?yōu)g覽器支持管理
6、如何區(qū)分FLOAT和DOUBLE喷市?
以下是FLOAT和DOUBLE的區(qū)別:
浮點(diǎn)數(shù)以8位精度存儲在FLOAT中相种,并且有四個字節(jié)。
浮點(diǎn)數(shù)存儲在DOUBLE中品姓,精度為18位寝并,有八個字節(jié)箫措。
7、區(qū)分CHAR_LENGTH和LENGTH衬潦?
CHAR_LENGTH是字符數(shù)蒂破,而LENGTH是字節(jié)數(shù)。Latin字符的這兩個數(shù)據(jù)是相同的别渔,但是對于Unicode和其他編碼附迷,它們是不同的。
8哎媚、請簡潔描述Mysql中InnoDB支持的四種事務(wù)隔離級別名稱喇伯,以及逐級之間的區(qū)別?
SQL標(biāo)準(zhǔn)定義的四個隔離級別為:
read uncommited :讀到未提交數(shù)據(jù)
read committed:臟讀拨与,不可重復(fù)讀
repeatable read:可重讀
serializable :串行事物
9稻据、在Mysql中ENUM的用法是什么?
ENUM是一個字符串對象买喧,用于指定一組預(yù)定義的值捻悯,并可在創(chuàng)建表時(shí)使用。
Create table size(name ENUM('Smail,'Medium','Large');
10淤毛、如何定義REGEXP今缚?
REGEXP是模式匹配,其中匹配模式在搜索值的任何位置低淡。
11姓言、CHAR和VARCHAR的區(qū)別?
以下是CHAR和VARCHAR的區(qū)別:
CHAR和VARCHAR類型在存儲和檢索方面有所不同
CHAR列長度固定為創(chuàng)建表時(shí)聲明的長度蔗蹋,長度值范圍是1到255
當(dāng)CHAR值被存儲時(shí)何荚,它們被用空格填充到特定長度,檢索CHAR值時(shí)需刪除尾隨空格猪杭。
12餐塘、列的字符串類型可以是什么?
字符串類型是:
SET
BLOB
ENUM
CHAR
TEXT
VARCHAR
13皂吮、如何獲取當(dāng)前的Mysql版本戒傻?
SELECT VERSION();用于獲取當(dāng)前Mysql的版本。
14涮较、Mysql中使用什么存儲引擎稠鼻?
存儲引擎稱為表類型,數(shù)據(jù)使用各種技術(shù)存儲在文件中狂票。
技術(shù)涉及:
Storage mechanism
Locking levels
Indexing
Capabilities and functions.
15、Mysql驅(qū)動程序是什么熙暴?
以下是Mysql中可用的驅(qū)動程序:
PHP驅(qū)動程序
JDBC驅(qū)動程序
ODBC驅(qū)動程序
CWRAPPER
PYTHON驅(qū)動程序
PERL驅(qū)動程序
RUBY驅(qū)動程序
CAP11PHP驅(qū)動程序
Ado.net5.mxj
16闺属、TIMESTAMP在UPDATE CURRENT_TIMESTAMP數(shù)據(jù)類型上做什么慌盯?
創(chuàng)建表時(shí)TIMESTAMP列用Zero更新。只要表中的其他字段發(fā)生更改掂器,UPDATE CURRENT_TIMESTAMP修飾符就將時(shí)間戳字段更新為當(dāng)前時(shí)間亚皂。
17、主鍵和候選鍵有什么區(qū)別国瓮?
表格的每一行都由主鍵唯一標(biāo)識,一個表只有一個主鍵灭必。
主鍵也是候選鍵。按照慣例乃摹,候選鍵可以被指定為主鍵禁漓,并且可以用于任何外鍵引用。
18孵睬、如何使用Unix shell登錄Mysql播歼?
我們可以通過以下命令登錄:
[mysql dir]/bin/mysql -h hostname -u -p
19、 myisamchk是用來做什么的掰读?
它用來壓縮MyISAM表秘狞,這減少了磁盤或內(nèi)存使用。
20蹈集、MYSQL數(shù)據(jù)庫服務(wù)器性能分析的方法命令有哪些?
21烁试、如何控制HEAP表的最大尺寸?
Heal表的大小可通過稱為max_heap_table_size的Mysql配置變量來控制拢肆。
22廓潜、MyISAM Static和MyISAM Dynamic有什么區(qū)別?
在MyISAM Static上的所有字段有固定寬度善榛。動態(tài)MyISAM表將具有像TEXT辩蛋,BLOB等字段,以適應(yīng)不同長度的數(shù)據(jù)類型移盆。點(diǎn)擊這里有一套最全阿里面試題總結(jié)悼院。
MyISAM Static在受損情況下更容易恢復(fù)。
23咒循、federated表是什么据途?
federated表,允許訪問位于其他服務(wù)器數(shù)據(jù)庫上的表叙甸。
24颖医、如果一個表有一列定義為TIMESTAMP,將發(fā)生什么裆蒸?
每當(dāng)行被更改時(shí)熔萧,時(shí)間戳字段將獲取當(dāng)前時(shí)間戳。
25、列設(shè)置為AUTO INCREMENT時(shí)佛致,如果在表中達(dá)到最大值贮缕,會發(fā)生什么情況?
它會停止遞增俺榆,任何進(jìn)一步的插入都將產(chǎn)生錯誤感昼,因?yàn)槊荑€已被使用。
26罐脊、怎樣才能找出最后一次插入時(shí)分配了哪個自動增量定嗓?
LAST_INSERT_ID將返回由Auto_increment分配的最后一個值,并且不需要指定表名稱萍桌。
27宵溅、你怎么看到為表格定義的所有索引?
索引是通過以下方式為表格定義的:
SHOW INDEX FROM ;
28.梗夸、LIKE聲明中的%和_是什么意思层玲?
%對應(yīng)于0個或更多字符,_只是LIKE語句中的一個字符反症。
29辛块、如何在Unix和Mysql時(shí)間戳之間進(jìn)行轉(zhuǎn)換?
UNIX_TIMESTAMP是從Mysql時(shí)間戳轉(zhuǎn)換為Unix時(shí)間戳的命令
FROM_UNIXTIME是從Unix時(shí)間戳轉(zhuǎn)換為Mysql時(shí)間戳的命令
30铅碍、列對比運(yùn)算符是什么润绵?
在SELECT語句的列比較中使用=,<>胞谈,<=尘盼,<,> =烦绳,>卿捎,<<,>>径密,<=>午阵,AND,OR或LIKE運(yùn)算符享扔。
31底桂、我們?nèi)绾蔚玫绞懿樵冇绊懙男袛?shù)?
行數(shù)可以通過以下代碼獲得:
SELECT COUNT(user_id)FROM users;
32惧眠、Mysql查詢是否區(qū)分大小寫籽懦?
不區(qū)分
SELECT VERSION(), CURRENT_DATE;
SeLect version(), current_date;
seleCt vErSiOn(), current_DATE;
所有這些例子都是一樣的,Mysql不區(qū)分大小寫氛魁。
33.暮顺、LIKE和REGEXP操作有什么區(qū)別厅篓?
LIKE和REGEXP運(yùn)算符用于表示^和%。
1
2
SELECT * FROM employee WHERE emp_name REGEXP "^b";
SELECT * FROM employee WHERE emp_name LIKE "%b";
34.拖云、BLOB和TEXT有什么區(qū)別贷笛?
BLOB是一個二進(jìn)制對象应又,可以容納可變數(shù)量的數(shù)據(jù)宙项。有四種類型的BLOB -
TINYBLOB
BLOB
MEDIUMBLOB和
LONGBLOB
它們只能在所能容納價(jià)值的最大長度上有所不同。
TEXT是一個不區(qū)分大小寫的BLOB株扛。四種TEXT類型
TINYTEXT
TEXT
MEDIUMTEXT和
LONGTEXT
它們對應(yīng)于四種BLOB類型尤筐,并具有相同的最大長度和存儲要求。
BLOB和TEXT類型之間的唯一區(qū)別在于對BLOB值進(jìn)行排序和比較時(shí)區(qū)分大小寫洞就,對TEXT值不區(qū)分大小寫盆繁。
35、mysql_fetch_array和mysql_fetch_object的區(qū)別是什么旬蟋?
以下是mysql_fetch_array和mysql_fetch_object的區(qū)別:
mysql_fetch_array() - 將結(jié)果行作為關(guān)聯(lián)數(shù)組或來自數(shù)據(jù)庫的常規(guī)數(shù)組返回油昂。
mysql_fetch_object - 從數(shù)據(jù)庫返回結(jié)果行作為對象。
36倾贰、我們?nèi)绾卧趍ysql中運(yùn)行批處理模式冕碟?
以下命令用于在批處理模式下運(yùn)行:
mysql;
mysql mysql.out
37、MyISAM表格將在哪里存儲匆浙,并且還提供其存儲格式安寺?
每個MyISAM表格以三種格式存儲在磁盤上:
·“.frm”文件存儲表定義
·數(shù)據(jù)文件具有“.MYD”(MYData)擴(kuò)展名
索引文件具有“.MYI”(MYIndex)擴(kuò)展名
38.、Mysql中有哪些不同的表格首尼?
共有5種類型的表格:
MyISAM
Heap
Merge
INNODB
ISAM
MyISAM是Mysql的默認(rèn)存儲引擎挑庶。
39、ISAM是什么软能?
ISAM簡稱為索引順序訪問方法迎捺。它是由IBM開發(fā)的,用于在磁帶等輔助存儲系統(tǒng)上存儲和檢索數(shù)據(jù)查排。
40凳枝、InnoDB是什么?
lnnoDB是一個由Oracle公司開發(fā)的Innobase Oy事務(wù)安全存儲引擎雹嗦。
41范舀、Mysql如何優(yōu)化DISTINCT?
DISTINCT在所有列上轉(zhuǎn)換為GROUP BY了罪,并與ORDER BY子句結(jié)合使用锭环。
1
SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;
42、如何輸入字符為十六進(jìn)制數(shù)字泊藕?
如果想輸入字符為十六進(jìn)制數(shù)字辅辩,可以輸入帶有單引號的十六進(jìn)制數(shù)字和前綴(X),或者只用(Ox)前綴輸入十六進(jìn)制數(shù)字。
如果表達(dá)式上下文是字符串玫锋,則十六進(jìn)制數(shù)字串將自動轉(zhuǎn)換為字符串蛾茉。
43、如何顯示前50行撩鹿?
在Mysql中谦炬,使用以下代碼查詢顯示前50行:
SELECT*FROM
LIMIT 0,50;
44、可以使用多少列創(chuàng)建索引节沦?
任何標(biāo)準(zhǔn)表最多可以創(chuàng)建16個索引列键思。
45、NOW()和CURRENT_DATE()有什么區(qū)別甫贯?
NOW()命令用于顯示當(dāng)前年份吼鳞,月份,日期叫搁,小時(shí)赔桌,分鐘和秒。
CURRENT_DATE()僅顯示當(dāng)前年份渴逻,月份和日期疾党。
46、什么樣的對象可以使用CREATE語句創(chuàng)建裸卫?
以下對象是使用CREATE語句創(chuàng)建的:
DATABASE
EVENT
FUNCTION
INDEX
PROCEDURE
TABLE
TRIGGER
USER
VIEW
47仿贬、Mysql表中允許有多少個TRIGGERS?
在Mysql表中允許有六個觸發(fā)器墓贿,如下:
BEFORE INSERT
AFTER INSERT
BEFORE UPDATE
AFTER UPDATE
BEFORE DELETE
AFTER DELETE
48茧泪、什么是非標(biāo)準(zhǔn)字符串類型?
以下是非標(biāo)準(zhǔn)字符串類型:
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
49聋袋、什么是通用SQL函數(shù)队伟?
CONCAT(A, B) - 連接兩個字符串值以創(chuàng)建單個字符串輸出。通常用于將兩個或多個字段合并為一個字段幽勒。
FORMAT(X, D)- 格式化數(shù)字X到D有效數(shù)字嗜侮。
CURRDATE(), CURRTIME()- 返回當(dāng)前日期或時(shí)間。
NOW() - 將當(dāng)前日期和時(shí)間作為一個值返回啥容。
MONTH()锈颗,DAY(),YEAR()咪惠,WEEK()击吱,WEEKDAY() - 從日期值中提取給定數(shù)據(jù)。
HOUR()遥昧,MINUTE()覆醇,SECOND() - 從時(shí)間值中提取給定數(shù)據(jù)朵纷。
DATEDIFF(A,B) - 確定兩個日期之間的差異永脓,通常用于計(jì)算年齡
SUBTIMES(A袍辞,B) - 確定兩次之間的差異。
FROMDAYS(INT) - 將整數(shù)天數(shù)轉(zhuǎn)換為日期值常摧。
50搅吁、解釋訪問控制列表
ACL(訪問控制列表)是與對象關(guān)聯(lián)的權(quán)限列表。這個列表是Mysql服務(wù)器安全模型的基礎(chǔ)排宰,它有助于排除用戶無法連接的問題似芝。
Mysql將ACL(也稱為授權(quán)表)緩存在內(nèi)存中那婉。當(dāng)用戶嘗試認(rèn)證或運(yùn)行命令時(shí)板甘,Mysql會按照預(yù)定的順序檢查ACL的認(rèn)證信息和權(quán)限。
51详炬、MYSQL支持事務(wù)嗎盐类?
在缺省模式下,MYSQL是autocommit模式的呛谜,所有的數(shù)據(jù)庫更新操作都會即時(shí)提交在跳,所以在缺省情況下,mysql是不支持事務(wù)的隐岛。
但是如果你的MYSQL表類型是使用InnoDB Tables 或 BDB tables的話猫妙,你的MYSQL就可以使用事務(wù)處理,使用SET AUTOCOMMIT=0就可以使MYSQL允許在非autocommit模式,在非autocommit模式下聚凹,你必須使用COMMIT來提交你的更改割坠,或者用ROLLBACK來回滾你的更改。
示例如下:
一
START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summmary=@A WHERE type=1;
COMMIT;
52妒牙、 mysql里記錄貨幣用什么字段類型好
NUMERIC和DECIMAL類型被Mysql實(shí)現(xiàn)為同樣的類型彼哼,這在SQL92標(biāo)準(zhǔn)允許。他們被用于保存值湘今,該值的準(zhǔn)確精度是極其重要的值敢朱,例如與金錢有關(guān)的數(shù)據(jù)。當(dāng)聲明一個類是這些類型之一時(shí)摩瞎,精度和規(guī)模的能被(并且通常是)指定拴签;點(diǎn)擊這里有一套最全阿里面試題總結(jié)。
例如:
salary DECIMAL(9,2)
在這個例子中旗们,9(precision)代表將被用于存儲值的總的小數(shù)位數(shù)蚓哩,而2(scale)代表將被用于存儲小數(shù)點(diǎn)后的位數(shù)。
因此蚪拦,在這種情況下杖剪,能被存儲在salary列中的值的范圍是從-9999999.99到9999999.99冻押。在ANSI/ISO SQL92中,句法DECIMAL(p)等價(jià)于DECIMAL(p,0)盛嘿。
同樣洛巢,句法DECIMAL等價(jià)于DECIMAL(p,0),這里實(shí)現(xiàn)被允許決定值p次兆。Mysql當(dāng)前不支持DECIMAL/NUMERIC數(shù)據(jù)類型的這些變種形式的任一種稿茉。
這一般說來不是一個嚴(yán)重的問題,因?yàn)檫@些類型的主要益處得自于明顯地控制精度和規(guī)模的能力芥炭。
DECIMAL和NUMERIC值作為字符串存儲漓库,而不是作為二進(jìn)制浮點(diǎn)數(shù),以便保存那些值的小數(shù)精度园蝠。
一個字符用于值的每一位渺蒿、小數(shù)點(diǎn)(如果scale>0)和“-”符號(對于負(fù)值)。如果scale是0彪薛,DECIMAL和NUMERIC值不包含小數(shù)點(diǎn)或小數(shù)部分茂装。
DECIMAL和NUMERIC值得最大的范圍與DOUBLE一樣,但是對于一個給定的DECIMAL或NUMERIC列善延,實(shí)際的范圍可由制由給定列的precision或scale限制少态。
當(dāng)這樣的列賦給了小數(shù)點(diǎn)后面的位超過指定scale所允許的位的值,該值根據(jù)scale四舍五入易遣。
當(dāng)一個DECIMAL或NUMERIC列被賦給了其大小超過指定(或缺省的)precision和scale隱含的范圍的值彼妻,Mysql存儲表示那個范圍的相應(yīng)的端點(diǎn)值。
我希望本文可以幫助你提升技術(shù)水平豆茫。那些侨歉,感覺學(xué)的好難,甚至?xí)钅憔趩实娜死奖。瑒e擔(dān)心为肮,我認(rèn)為,如果你愿意試一試本文介紹的幾點(diǎn)肤京,會向前邁進(jìn)颊艳,克服這種感覺。這些要點(diǎn)也許對你不適用忘分,但你會明確一個重要的道理:接受自己覺得受困這個事實(shí)是擺脫這個困境的第一步棋枕。
53、MYSQL數(shù)據(jù)表在什么情況下容易損壞妒峦?
服務(wù)器突然斷電導(dǎo)致數(shù)據(jù)文件損壞重斑。
強(qiáng)制關(guān)機(jī),沒有先關(guān)閉mysql 服務(wù)等肯骇。
54窥浪、mysql有關(guān)權(quán)限的表都有哪幾個祖很?
Mysql服務(wù)器通過權(quán)限表來控制用戶對數(shù)據(jù)庫的訪問,權(quán)限表存放在mysql數(shù)據(jù)庫里漾脂,由mysql_install_db腳本初始化假颇。這些權(quán)限表分別user,db骨稿,table_priv笨鸡,columns_priv和host。
55坦冠、Mysql中有哪幾種鎖形耗?
MyISAM支持表鎖,InnoDB支持表鎖和行鎖辙浑,默認(rèn)為行鎖
表級鎖:開銷小激涤,加鎖快,不會出現(xiàn)死鎖例衍。鎖定粒度大昔期,發(fā)生鎖沖突的概率最高,并發(fā)量最低
行級鎖:開銷大佛玄,加鎖慢,會出現(xiàn)死鎖累澡。鎖力度小梦抢,發(fā)生鎖沖突的概率小,并發(fā)度最高