MySQL面試題集錦,聽說知名互聯網公司都用

在今年上半年的數據庫使用情況調查中,筆者收集了衆多國內外知名互聯網公司的數據庫使用狀況,其中,國外GitHub、Airbnb、Yelp、Coursera均在使用MySQL數據庫,國內阿里巴巴、去哪兒網、騰訊、魅族、京東的部分關鍵業務一樣使用了MySQL數據庫。同時,MySQL也是衆多數據庫排行榜單的第一名,這個開發者和一線互聯網企業都在用的開源數據庫,你瞭解多少?這份MySQL自測卷,你會多少呢?mysql

MySQL面試題,聽說知名互聯網公司都用面試

  一、一張表,裏面有ID自增主鍵,當insert了17條記錄以後,刪除了第15,16,17條記錄,再把Mysql重啓,再insert一條記錄,這條記錄的ID是18仍是15 ?sql

MySQL面試題,聽說知名互聯網公司都用shell

  二、MySQL的技術特色是什麼?數據庫

  MySQL數據庫軟件是一個客戶端或服務器系統,其中包括:支持各類客戶端程序和庫的多線程SQL服務器、不一樣的後端、普遍的應用程序編程接口和管理工具。編程

  三、Heap表是什麼?後端

  ·HEAP表存在於內存中,用於臨時高速存儲。數組

  ·BLOB或TEXT字段是不容許的瀏覽器

  ·只能使用比較運算符=,<,>,=>,= <緩存

  ·HEAP表不支持AUTO_INCREMENT

  ·索引不可爲NULL

  四、MySQL服務器默認端口是什麼?

  MySQL服務器的默認端口是3306。

  五、與Oracle相比,MySQL有什麼優點?

  ·MySQL是開源軟件,隨時可用,無需付費。

  ·MySQL是便攜式的

  ·帶有命令提示符的GUI。

  ·使用MySQL查詢瀏覽器支持管理

  六、如何區分FLOAT和DOUBLE?

  如下是FLOAT和DOUBLE的區別:

  ·浮點數以8位精度存儲在FLOAT中,而且有四個字節。

  ·浮點數存儲在DOUBLE中,精度爲18位,有八個字節。

  七、區分CHAR_LENGTH和LENGTH?

  CHAR_LENGTH是字符數,而LENGTH是字節數。Latin字符的這兩個數據是相同的,可是對於Unicode和其餘編碼,它們是不一樣的。

  八、請簡潔描述MySQL中InnoDB支持的四種事務隔離級別名稱,以及逐級之間的區別?

  SQL標準定義的四個隔離級別爲:

  ·read uncommited :讀到未提交數據

  ·read committed:髒讀,不可重複讀

  ·repeatable read:可重讀

  ·serializable :串行事物

  MySQL面試題集錦,聽說國內外知名互聯網公司都在用!

  MySQL面試題集錦,聽說國內外知名互聯網公司都在用!

  九、在MySQL中ENUM的用法是什麼?

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

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

  十、如何定義REGEXP?

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

  十一、CHAR和VARCHAR的區別?

  如下是CHAR和VARCHAR的區別:

  ·CHAR和VARCHAR類型在存儲和檢索方面有所不一樣

  ·CHAR列長度固定爲建立表時聲明的長度,長度值範圍是1到255

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

  十二、列的字符串類型能夠是什麼?

  字符串類型是:

  ·SET

  ·BLOB

  ·ENUM

  ·CHAR

  ·TEXT

  ·VARCHAR

  1三、如何獲取當前的MySQL版本?

  SELECT VERSION();用於獲取當前MySQL的版本。

  1四、MySQL中使用什麼存儲引擎?

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

  技術涉及:

  ·Storage mechanism

  ·Locking levels

  ·Indexing

  ·Capabilities and functions.

  1五、MySQL驅動程序是什麼?

  如下是MySQL中可用的驅動程序:

  ·PHP驅動程序

  ·JDBC驅動程序

  ·ODBC驅動程序

  ·CWRAPPER

  ·PYTHON驅動程序

  ·PERL驅動程序

  ·RUBY驅動程序

  ·CAP11PHP驅動程序

  ·Ado.net5.mxj

  1六、TIMESTAMP在UPDATE CURRENT_TIMESTAMP數據類型上作什麼?

  建立表時TIMESTAMP列用Zero更新。只要表中的其餘字段發生更改,UPDATE CURRENT_TIMESTAMP修飾符就將時間戳字段更新爲當前時間。

  1七、主鍵和候選鍵有什麼區別?

  表格的每一行都由主鍵惟一標識,一個表只有一個主鍵。

  主鍵也是候選鍵。按照慣例,候選鍵能夠被指定爲主鍵,而且能夠用於任何外鍵引用。

  1八、如何使用Unix shell登陸MySql?

  咱們能夠經過如下命令登陸:

# [mysql dir]/bin/mysql -h hostname -u <UserName> -p <password>

  1九、 myisamchk是用來作什麼的?

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

  20、MYSQL數據庫服務器性能分析的方法命令有哪些?

  MySQL面試題集錦,聽說國內外知名互聯網公司都在用!

  2一、如何控制HEAP表的最大尺寸?

  Heal表的大小可經過稱爲max_heap_table_size的MySQL配置變量來控制。

  2二、MyISAM Static和MyISAM Dynamic有什麼區別?

  在MyISAM Static上的全部字段有固定寬度。動態MyISAM表將具備像TEXT,BLOB等字段,以適應不一樣長度的數據類型。

  MyISAM Static在受損狀況下更容易恢復。

  2三、federated表是什麼?

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

  2四、若是一個表有一列定義爲TIMESTAMP,將發生什麼?

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

  2五、列設置爲AUTO INCREMENT時,若是在表中達到最大值,會發生什麼狀況?

  它會中止遞增,任何進一步的插入都將產生錯誤,由於密鑰已被使用。

  2六、怎樣才能找出最後一次插入時分配了哪一個自動增量?

  LAST_INSERT_ID將返回由Auto_increment分配的最後一個值,而且不須要指定表名稱。

  2七、你怎麼看到爲表格定義的全部索引?

  索引是經過如下方式爲表格定義的:

  SHOW INDEX FROM <tablename>;

  28.、LIKE聲明中的%和_是什麼意思?

  %對應於0個或更多字符,_只是LIKE語句中的一個字符。

  2九、如何在Unix和MySQL時間戳之間進行轉換?

  UNIX_TIMESTAMP是從MySQL時間戳轉換爲Unix時間戳的命令

  FROM_UNIXTIME是從Unix時間戳轉換爲MySQL時間戳的命令

  30、列對比運算符是什麼?

  在SELECT語句的列比較中使用=,<>,<=,<,> =,>,<<,>>,<=>,AND,OR或LIKE運算符。

  3一、咱們如何獲得受查詢影響的行數?

  行數能夠經過如下代碼得到:

  SELECT COUNT(user_id)FROM users;

  3二、Mysql查詢是否區分大小寫?

  不區分

  SELECT VERSION(), CURRENT_DATE;

  SeLect version(), current_date;

  seleCt vErSiOn(), current_DATE;

  全部這些例子都是同樣的,MySQL不區分大小寫。

  33.、LIKE和REGEXP操做有什麼區別?

  LIKE和REGEXP運算符用於表示^和%。

  SELECT * FROM employee WHERE emp_name REGEXP "^b";

  SELECT * FROM employee WHERE emp_name LIKE "%b";

  34.、BLOB和TEXT有什麼區別?

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

  ·TINYBLOB

  ·BLOB

  ·MEDIUMBLOB和

  ·LONGBLOB

  它們只能在所能容納價值的最大長度上有所不一樣。

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

  ·TINYTEXT

  ·TEXT

  ·MEDIUMTEXT和

  ·LONGTEXT

  它們對應於四種BLOB類型,並具備相同的最大長度和存儲要求。

  BLOB和TEXT類型之間的惟一區別在於對BLOB值進行排序和比較時區分大小寫,對TEXT值不區分大小寫。

  3五、mysql_fetch_array和mysql_fetch_object的區別是什麼?

  如下是mysql_fetch_array和mysql_fetch_object的區別:

  mysql_fetch_array() - 將結果行做爲關聯數組或來自數據庫的常規數組返回。

  mysql_fetch_object - 從數據庫返回結果行做爲對象。

  3六、咱們如何在mysql中運行批處理模式?

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

  mysql;

  mysql mysql.out

  3七、MyISAM表格將在哪裏存儲,而且還提供其存儲格式?

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

  ·「.frm」文件存儲表定義

  ·數據文件具備「.MYD」(MYData)擴展名

  索引文件具備「.MYI」(MYIndex)擴展名

  38.、MySQL中有哪些不一樣的表格?

  共有5種類型的表格:

  ·MyISAM

  ·Heap

  ·Merge

  ·INNODB

  ·ISAM

  MyISAM是MySQL的默認存儲引擎。

  3九、ISAM是什麼?

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

  40、InnoDB是什麼?

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

  4一、MySQL如何優化DISTINCT?

  DISTINCT在全部列上轉換爲GROUP BY,並與ORDER BY子句結合使用。

  1

  SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;

  4二、如何輸入字符爲十六進制數字?

  若是想輸入字符爲十六進制數字,能夠輸入帶有單引號的十六進制數字和前綴(X),或者只用(Ox)前綴輸入十六進制數字。

  若是表達式上下文是字符串,則十六進制數字串將自動轉換爲字符串。

  4三、如何顯示前50行?

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

  SELECT*FROM

  LIMIT 0,50;

  4四、可使用多少列建立索引?

  任何標準表最多能夠建立16個索引列。

  4五、NOW()和CURRENT_DATE()有什麼區別?

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

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

  4六、什麼樣的對象可使用CREATE語句建立?

  如下對象是使用CREATE語句建立的:

  ·DATABASE

  ·EVENT

  ·FUNCTION

  ·INDEX

  ·PROCEDURE

  ·TABLE

  ·TRIGGER

  ·USER

  ·VIEW

  47.、MySql表中容許有多少個TRIGGERS?

  在MySql表中容許有六個觸發器,以下:

  ·BEFORE INSERT

  ·AFTER INSERT

  ·BEFORE UPDATE

  ·AFTER UPDATE

  ·BEFORE DELETE and

  ·AFTER DELETE

  4八、什麼是非標準字符串類型?

  如下是非標準字符串類型:

  ·TINYTEXT

  ·TEXT

  ·MEDIUMTEXT

  ·LONGTEXT

  4九、什麼是通用SQL函數?

  ·CONCAT(A, B) - 鏈接兩個字符串值以建立單個字符串輸出。一般用於將兩個或多個字段合併爲一個字段。

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

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

  ·NOW() - 將當前日期和時間做爲一個值返回。

  ·MONTH(),DAY(),YEAR(),WEEK(),WEEKDAY() - 從日期值中提取給定數據。

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

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

  ·SUBTIMES(A,B) - 肯定兩次之間的差別。

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

  50、解釋訪問控制列表

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

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

相關文章
相關標籤/搜索