1、一張表,裡面有 ID 自增主鍵,當 insert 了 17 條記錄之後,刪除了第 15,16,17 條記錄, 再把 Mysql 重啟,再 insert 一條記錄,這條記錄的 ID 是 18 還是 15 ? (1)如果表的類型是 MyISAM,那麼是 18 因為 MyISAM 表會把自增主鍵的最大 ...
1、一張表,裡面有 ID 自增主鍵,當 insert 了 17 條記錄之後,刪除了第 15,16,17 條記錄, 再把 Mysql 重啟,再 insert 一條記錄,這條記錄的 ID 是 18 還是 15 ?
(1)如果表的類型是 MyISAM,那麼是 18
因為 MyISAM 表會把自增主鍵的最大 ID 記錄到數據文件里,重啟 MySQL 自增主鍵的最大 ID 也不會丟失 (2)如果表的類型是 InnoDB,那麼是 15 InnoDB 表只是把自增主鍵的最大 ID 記錄到記憶體中,所以重啟資料庫或者是對錶進行 OPTIMIZE 操作,都會導致最大 ID 丟失 2、Mysql 的技術特點是什麼? Mysql 資料庫軟體是一個客戶端或伺服器系統,其中包括:支持各種客戶端程式和庫的多 線程 SQL 伺服器、不同的後端、廣泛的應用程式編程介面和管理工具。 3、Heap 表是什麼? HEAP 表存在於記憶體中,用於臨時高速存儲。- BLOB 或 TEXT 欄位是不允許的
- 只能使用比較運算符=,<,>,=>,= <
- HEAP 表不支持 AUTO_INCREMENT
- 索引不可為 NULL
- Mysql 是開源軟體,隨時可用,無需付費。
- Mysql 是攜帶型的
- 帶有命令提示符的 GUI。
- 使用 Mysql 查詢瀏覽器支持管理
- 浮點數以 8 位精度存儲在 FLOAT 中,並且有四個位元組。
- 浮點數存儲在 DOUBLE 中,精度為 18 位,有八個位元組。
7、區分 CHAR_LENGTH 和 LENGTH?
CHAR_LENGTH 是字元數,而 LENGTH 是位元組數。Latin 字元的這兩個數據是相同的, 但是對於 Unicode 和其他編碼,它們是不同的。 8、請簡潔描述 Mysql 中 InnoDB 支持的四種事務隔離級別名 稱,以及逐級之間的區別? SQL 標准定義的四個隔離級別為:- read uncommited :讀到未提交數據
- read committed:臟讀,不可重覆讀
- repeatable read:可重讀
- serializable :串列事物
- CHAR 和 VARCHAR 類型在存儲和檢索方面有所不同
- CHAR 列長度固定為創建表時聲明的長度,長度值範圍是 1 到 255
- SET
- BLOB
- ENUM
- CHAR
- TEXT
- VARCHAR
- Storage mechanism
- Locking levels
- Indexing
- Capabilities and functions.
- PHP 驅動程式
- JDBC 驅動程式
- ODBC 驅動程式
- CWRAPPER
- PYTHON 驅動程式
- PERL 驅動程式
- RUBY 驅動程式
- CAP11PHP 驅動程式
- Ado.net5.mxj
16、TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 數據
類型上做什麼? 創建表時 TIMESTAMP 列用 Zero 更新。只要表中的其他欄位發生更改,UPDATE CURRENT_TIMESTAMP 修飾符就將時間戳欄位更新為當前時間。 17、主鍵和候選鍵有什麼區別? 表格的每一行都由主鍵唯一標識,一個表只有一個主鍵。 主鍵也是候選鍵。按照慣例,候選鍵可以被指定為主鍵,並且可以用於任何外鍵引用。 18、如何使用 Unix shell 登錄 Mysql? 我們可以通過以下命令登錄: # [mysql dir]/bin/mysql -h hostname -u <UserName> -p <password> 19、 myisamchk 是用來做什麼的? 它用來壓縮 MyISAM 表,這減少了磁碟或記憶體使用。 20、MYSQL 資料庫伺服器性能分析的方法命令有哪些? 21、如何控制 HEAP 表的最大尺寸? Heal 表的大小可通過稱為 max_heap_table_size 的 Mysql 配置變數來控制。 22、MyISAM Static 和 MyISAM Dynamic 有什麼區別? 在 MyISAM Static 上的所有欄位有固定寬度。動態 MyISAM 表將具有像 TEXT,BLOB 等欄位,以適應不同長度的數據類型。點擊這裡有一套最全阿裡面試題總結。 MyISAM Static 在受損情況下更容易恢復。 23、federated 表是什麼? federated 表,允許訪問位於其他伺服器資料庫上的表。 24、如果一個表有一列定義為 TIMESTAMP,將發生什麼? 每當行被更改時,時間戳欄位將獲取當前時間戳。 25、列設置為 AUTO INCREMENT 時,如果在表中達到最大 值,會發生什麼情況? 它會停止遞增,任何進一步的插入都將產生錯誤,因為密鑰已被使用。 26、怎樣才能找出最後一次插入時分配了哪個自動增量? LAST_INSERT_ID 將返回由 Auto_increment 分配的最後一個值,並且不需要指定表名 稱。 27、你怎麼看到為表格定義的所有索引? 索引是通過以下方式為表格定義的: SHOW INDEX FROM <tablename>; 28.、LIKE 聲明中的%和_是什麼意思? %對應於 0 個或更多字元,_只是 LIKE 語句中的一個字元。 29、如何在 Unix 和 Mysql 時間戳之間進行轉換? UNIX_TIMESTAMP 是從 Mysql 時間戳轉換為 Unix 時間戳的命令 FROM_UNIXTIME 是從 Unix 時間戳轉換為 Mysql 時間戳的命令 30、列對比運算符是什麼? 在 SELECT 語句的列比較中使用=,<>,<=,<,> =,>,<<,>>,<=>,AND,OR 或LIKE 運算符。 31、我們如何得到受查詢影響的行數? 行數可以通過以下代碼獲得: SELECT COUNT(user_id)FROM users; 32、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
- TINYTEXT
- TEXT
- MEDIUMTEXT
- LONGTEXT
- DATABASE
- EVENT
- FUNCTION
- INDEX
- PROCEDURE
- TABLE
- TRIGGER
- USER
- VIEW
- BEFORE INSERT
- AFTER INSERT
- BEFORE UPDATE
- AFTER UPDATE
- BEFORE DELETE
- AFTER DELETE
- TINYTEXT
- TEXT
- MEDIUMTEXT LONGTEXT
- 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) - 將整數天數轉換為日期值。