Mysql系列常見面試題(二)


1.如何區分FLOAT和DOUBLE?

區別:浮點數以8位精度存儲在FLOAT中,並且有四個字節。浮點數存儲在DOUBLE中,精度為18位,有八個字節。

2.怎么.區分CHAR_LENGTH和LENTH?

:CHAR_LENGTH是字符數,而LENGTH是字節數,Latin字符的這兩個數據是相同的,但是對於Unicode和其他編碼,他們是不同的。

3.請簡介描述Mysql和InnoDB支持的四種事物隔離級別名稱,以及逐級之間的區別?

SQL標准定義的四個隔離級別為:

read uncommited:讀到未提交數據

read commited 臟讀,不可重復讀

repeatable read:可重復讀

serializable :串行事物

4.在Mysql中ENUM的用法是什么?

ENUM是一個字符串對象,用於指定一組預定義的值,並可在創建表時使用。

Create table size(name ENUM('Smail,Medium','Large'));

5.如何定義REGEXP?

REGEXP是模式匹配,其中匹配模式在搜索值的任何位置。

6.CHAR和VARCHAR的區別?

一下是CHAR和VARCHAR的區別:

CHAR和VARCHAR類型在存儲和檢索方面有所不同,

CHAR列長度固定為創建表時聲明的長度,長度值范圍是1-255

當CHAR值被存儲時,他們被用空格填充到特定長度,檢索char值是需要刪除尾隨空格。

7.列的字符串類型可以是什么?

字符串類型是:

SET,BLOB,ENUM,CHAR,TEXT,VARCHAR

8.如何獲取當前的Mysql版本?

Select VERSION();用於獲取當前Mysql的版本。

9.Mysql中使用什么存儲引擎?

存儲引擎稱為表類型,數據使用各種技術存儲在文件中。

技術設計:

Storage mechanism

Locking levels

Indexing

Capabilities and functions

10.Mysql驅動程序是什么?

以下是 Mysql 中可用的驅動程序:
PHP 驅動程序
JDBC 驅動程序
ODBC 驅動程序
CWRAPPER
PYTHON 驅動程序
PERL 驅動程序
RUBY 驅動程序
CAP11PHP 驅動程序
Ado.net5.mxj

11.TIMESTAMP在UPDATE CURRENT_TIMESTAMP數據類型上做什么?

創建表時TIMESTAMP列同Zero更新。只要表中的其他字段發送更改,UPDATE CURRENT_TIMESTAMP修飾符就

將時間戳字段更新為當前時間。

12.主鍵和候選鍵有什么區別?

表格的每一行都由主鍵唯一表示,一個表只有一個主鍵。

主鍵也是候選鍵。按照慣例,候選鍵可以被指定為主鍵,並且可以用於任何外鍵引用。

13.如何使用Unix shell 登陸Mysql?

我們可以通過以下命令登陸:

[mysql dir]/bin/mysql -h hostname -u

14.myisamchk是用來做什么的?

它是用來壓縮MyISAM表,這減少了磁盤或內存使用。

15.Mysql數據庫服務器性能分析的方法命令有哪些?

:https://www.cnblogs.com/jackchen001/p/6964411.html  (博客詳解)

16.如何控制HEAP表的最大尺寸?

:Heap表的大小可以通過稱為max_heap_table_size的Msql配置變量來控制。

17.MyISAM Static 和MyISAM Dynamic有什么區別?

在MyISAM Static上的所有字段有固定寬帶、動態MyISAM表將具有像TEXT,BLOB等字段,

以適應不同長度的數據類型。MyISAM Static 在受損情況下更容易恢復。 

18.federated表是什么?

federated表,允許訪問位於其他服務器數據庫上的表。

19.如果一個表有一列定義為TIMESTAMP,將發生什么?

每當行被更改時,時間戳字段將獲取當前時間戳。

20.列設置為AUTO INCREMENT時,如果在表中達到最大值,會發生什么情況?

:它會停止遞增,任何進一步插入都將產生錯誤,因為密鑰已經被使用。

21.怎樣才能找出最好一次插入時分配了那字自動遞增量?

:LAST_INSERT_ID將返回由Auto_increment分配的最后一個值,並且不需要知道表名稱。

22.你怎么看到為表格定義的所有索引?

:索引是通過以下方式為表定義的:SHOW INDEX FROM

23.LIKE聲明中的%和_是什么意思?

:%對應於0個或者多個字符,_值是like語句中的一個字符。

24.如何在Unix和Mysql時間戳之間進行轉換?

:UNIX_TIMESTAMP是從Mysql時間戳轉換為Unix時間戳的命令,

FROM_UNIXTIME是從unix時間戳轉換為Mysql時間戳的命令。

25.;列對比運算符是什么?

:在 SELECT 語句的列比較中使用=<><=<> =><<>><=>ANDOR LIKE
算符。

 

26.我們如何得到受查詢影響的行數?
行數可以通過以下代碼獲得:

select count(user_id)from users;

27.Mysql查詢是否區分大小寫?

不區分

SELECT VERSION(), CURRENT_DATE;
SeLect version(), current_date;
seleCt vErSiOn(), current_DATE;
所有這些例子都是一樣的, Mysql 不區分大小寫。
28.LIKE和REGEXP操作有什么區別?
Like和REGEXP操作用於表示^和%。

SELECT * FROM employee WHERE emp_name REGEXP "^b";
SELECT * FROM employee WHERE emp_name LIKE "%b";
29.BLOB和TEXT有什么區別?

BLOB是一個二進制對象,可以容納可變數量的數據,有四種類型的

BLOB-TINYBLOB   BLOB MEDIUMBLOB和LONGBLOB

它們總股本部分在所能容納價值的最大長度上有所不同。

TEXT是一個不區分大小寫的BLOB,四種TEXT類型

TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
它們對應於四種 BLOB 類型,並具有相同的最大長度和存儲要求。
BLOB TEXT 類型之間的唯一區別在於對 BLOB 值進行排序和比較時區分大小寫,對 TEXT
值不區分大小寫。
30.我們如何在mysql中運行批處理模式?

以下命令用於在批處理模式下運行:

Msql;Msql Mysql.out

31.MyISAM表格將在哪里存儲,並且還提高其存儲格式?

每個MyISAM表格以三種表格式存儲在磁盤上:

 “.frm”文件存儲表定義,數據文件具有“.MYD”(MYData)擴展名,索引文件具有“.MYI”(MYIndex)擴展名

32.Mysql中有哪些不同的表格?

共有5種類型的表格:

MyISAM Heap Merge INNODB,ISAM,MyISAM是默認存儲引擎。

33.ISAM是什么?

:ISAM簡稱為索引順序訪問方法。它是由IBM開發的,用於在磁盤等輔助存儲系統上存儲和檢索數據。

34.InnoDB是什么?

InnoDB是一個由Oracle公司開發的Innobase Oy事物安全存儲引擎。

35.Mysql如何優化DISTINCT?

DISTINCT在所有列上轉換為GROUP BY,並與ORDER BY子句結合使用。

SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;
36.如何輸入字符為十六進制數據?

:如果想輸入字符為十六進制數字,可以輸入帶有單引號的十六進制數據和前綴(X),或者只有(Ox)前綴輸入十六

進制數字。

如果表達式上下文是字符串,則十六進制數據串將自動轉換為字符串。

37.如何顯示前50行?

在Mysql中,使用以下代碼查詢顯示前50行:

select * from limit 0,50;

38.可以使用多少列創建索引?

任何標准表最大可以創建16個索引列。

39.NOW()和CURRENT_DATE()有什么區別?

NOW()命令用於顯示當前年份,月份,日期,小時,分鍾和秒。

CURRENT_DATE()僅顯示當前年份,月份,日期。

40.什么樣的對象是使用CREATE語句創建的:

DATABASE-(數據庫),EVENT-(事物),FUNCTION-(函數),INDEX(索引),

PROCEDURE-(存儲過程),TABLE(表) TRIGGER(觸發器),

USER(用戶),VIEW-(視圖)

41.Mysql表中允許有多少個TRIGGERS?

在Mysql表中允許有留個觸發器,如下:

BEFORE INSERT
AFTER INSERT
BEFORE UPDATE
AFTER UPDATE
BEFORE DELETE
AFTER DELETE
42.什么是非標標准字符串類型?

TINYTEXT,TEXT,MEDIUMTEXT,LONGTEXT

43.什么是通用SQL函數?

CONCAT(a,b)-連接兩個字符串值以創建單個字符串輸出。通常用於將兩個或者多個字段合並為一個字段。

FORMAT(X,D)-格式化數字X到D有效數字。

CURRDATE(),CURRTIME()-返回當前日期或時間。

NOW()-將當前日期和時間作為一個值返回。

MONTH().DAY(),YEAR(),WEEK(),WEEKDAT(),從日期值中提取給定數據。

HOUR(),MINUTE(),SECOND()-從時間值中提取給定數據。

DATEDIFF(A,B)-確定兩個日期之間的差異,一般用於計算年齡

SUNTIMES(A,B)-確定兩次之間的差異。

FROMDAYS(INT)-將整數天數轉換為日期值。

44.解釋訪問控制列表

ACL(訪問控制列表) 是與對象關聯的權限列表。這個列表是Mysql服務器安全模型的基礎,它有助於排除童虎無法連接的問題。

Mysql將ACL(也稱授權表)緩存在內存中,當用戶嘗試認證或運行命令時,Mysql會按照預定的順序檢查ACL的認證信息和權限。

45.Mysql支持事物嗎?

在缺省模式下,Mysql是autocommit模式的,所有的數據庫更新操作都會及時提交,所以在缺省情況下,Mysql是不支持事物的。

但是如果你的Mysql表類型是使用InnoDB Tables或 BDB tables的話,你的Mysql就可以使用事物出來,使用SET AUTOCOMMIT=0就可以使用Mysql允許在非autocommit模式,在非自動提交模式下,你必須使用Commit來提交你的更改,或者使用ROLLBACK來回滾你得更改。

實例:START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summmary=@A WHERE type=1;
COMMIT;
46.mysql 里記錄貨幣用什么字段類型好

NUMERIC DECIMAL 類型被 Mysql 實現為同樣的類型,這在 SQL92 標准允許。他們被用於
保存值,該值的准確精度是極其重要的值,例如與金錢有關的數據。當聲明一個類是這些
類型之一時,精度和規模的能被(並且通常是)指定;點擊這里有一套最全阿里面試題總
結。
例如:
salary DECIMAL(9,2)
在這個例子中, 9(precision)代表將被用於存儲值的總的小數位數,而 2(scale)代表將被用於
存儲小數點后的位數。
因此,在這種情況下,能被存儲在 salary 列中的值的范圍是從-9999999.99 9999999.99
ANSI/ISO SQL92 中,句法 DECIMAL(p)等價於 DECIMAL(p,0)
同樣,句法 DECIMAL 等價於 DECIMAL(p,0),這里實現被允許決定值 pMysql 當前不支持
DECIMAL/NUMERIC 數據類型的這些變種形式的任一種。
這一般說來不是一個嚴重的問題,因為這些類型的主要益處得自於明顯地控制精度和規模
的能力。
DECIMAL NUMERIC 值作為字符串存儲,而不是作為二進制浮點數,以便保存那些值的小
數精度。
一個字符用於值的每一位、小數點(如果 scale>0)和“-”符號(對於負值)。如果 scale 0
DECIMAL NUMERIC 值不包含小數點或小數部分。
DECIMAL NUMERIC 值得最大的范圍與 DOUBLE 一樣,但是對於一個給定的 DECIMAL
NUMERIC 列,實際的范圍可由制由給定列的 precision scale 限制。
當這樣的列賦給了小數點后面的位超過指定 scale 所允許的位的值,該值根據 scale 四舍五
入。
當一個 DECIMAL NUMERIC 列被賦給了其大小超過指定(或缺省的) precision scale 隱含
的范圍的值, Mysql 存儲表示那個范圍的相應的端點值。
我希望本文可以幫助你提升技術水平。那些,感覺學的好難,甚至會令你沮喪的人,別擔
心,我認為,如果你願意試一試本文介紹的幾點,會向前邁進,克服這種感覺。這些要點
也許對你不適用,但你會明確一個重要的道理:接受自己覺得受困這個事實是擺脫這個困
境的第一步。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM