天天看點

學Mysql你要知道的55個簡單的面試知識(1)

作者:我是大陳老師

1、一張表,裡面有 ID 自增主鍵,當 insert 了 19 條記錄之後,删除了第 18,19 條記錄,再把 Mysql 重新開機,再 insert 一條記錄,這條記錄的 ID 是 20 還是 18 ?

(1)如果表的類型是 MyISAM,那麼是 20

因為 MyISAM 表會把自增主鍵的最大 ID 記錄到資料檔案裡,重新開機 MySQL 自增主鍵的最大ID 也不會丢失

(2)如果表的類型是 InnoDB,那麼是 18

InnoDB 表隻是把自增主鍵的最大 ID 記錄到記憶體中,是以重新開機資料庫或者是對表進行OPTIMIZE 操作,都會導緻最大 ID 丢失

2、Heap 表是什麼?

HEAP 表存在于記憶體中,用于臨時高速存儲。BLOB 或 TEXT 字段是不允許的隻能使用比較運算符=,<,>,=>,= <HEAP 表不支援 AUTO_INCREMENT索引不可為 NULL

3、怎麼區分 FLOAT 和 DOUBLE?

以下是 FLOAT 和 DOUBLE 的差別:

FLOAT 中,有四個位元組,以 8 位精度存儲。DOUBLE 中,有八個位元組,精度為 18 位。

4、在 Mysql 中 ENUM 的用法是什麼?

ENUM 是一個字元串對象,用于指定一組預定義的值,并可在建立表時使用。

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

5、列的字元串類型可以是什麼?

字元串類型是:SET、BLOB、ENUM、CHAR、TEXT、VARCHAR

6、Mysql 驅動程式是什麼?

以下是 Mysql 中可用的驅動程式:PHP 驅動程式、JDBC 驅動程式、ODBC 驅動程式、CWRAPPER、PYTHON 驅動程式、PERL 驅動程式、RUBY 驅動程式、CAP11PHP 驅動程式、

7、如何使用 Unix shell 登入 Mysql?

我們可以通過以下指令登入:

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

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

Heal 表的大小可通過稱為 max_heap_table_size 的 Mysql 配置變量來控制。

9、如果一個表有一列定義為 TIMESTAMP,将發生什麼?

每當行被更改時,時間戳字段将擷取目前時間戳。

10、你怎麼看到為表格定義的所有索引?

索引是通過以下方式為表格定義的:

SHOW INDEX FROM           

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

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

12.、LIKE 和 REGEXP 操作有什麼差別?

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

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

13、我們如何在 mysql 中運作批處理模式?

以下指令用于在批處理模式下運作:

mysql;           
mysql mysql.out           

14、ISAM 是什麼?

ISAM 簡稱為索引順序通路方法。它是由 IBM 開發的,用于在錄音帶等輔助存儲系統上存儲和

檢索資料。

15、如何輸入字元為十六進制數字?

如果想輸入字元為十六進制數字,可以輸入帶有單引号的十六進制數字和字首(X),或者隻用(Ox)字首輸入十六進制數字。如果表達式上下文是字元串,則十六進制數字串将自動轉換為字元串。

16、NOW()和 CURRENT_DATE()有什麼差別?

NOW()指令用于顯示目前年份,月份,日期,小時,分鐘和秒。CURRENT_DATE()僅顯示目前年份,月份和日期。

17、什麼是非标準字元串類型?

以下是非标準字元串類型:

TINYTEXT

TEXT

MEDIUMTEXT

LONGTEXT

18、MYSQL 支援事務嗎?

在預設模式下,MYSQL 是 autocommit 模式的,所有的資料庫更新操作都會即時送出,是以在預設情況下,mysql 是不支援事務的。

但是如果你的 MYSQL 表類型是使用 InnoDB Tables 或 BDB tables 的話,你的 MYSQL 就可以使用事務處理,使用 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;           

18、Mysql 中有哪幾種鎖?

MyISAM 支援表鎖,InnoDB 支援表鎖和行鎖,預設為行鎖

表級鎖:開銷小,加鎖快,不會出現死鎖。鎖定粒度大,發生鎖沖突的機率最高,并發量最最低

行級鎖:開銷大,加鎖慢,會出現死鎖。鎖力度小,發生鎖沖突的機率小,并發度最高

繼續閱讀