大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

面試題首頁 > MySQL面試題

MySQL表設計面試題

001如何設置自增的主鍵?

很簡單,只需要在主鍵后面添加AUTO_INCREMENT關鍵字就行了

CREATE TABLE `user`(
?? ?id INT PRIMARY KEY AUTO_INCREMENT,
?? ?username VARCHAR(10),
?? ?`password` VARCHAR(20)
);

002插入數據時指定主鍵了怎么辦?

剛才,我們在user表中已經把主鍵id設置為自增的了,但是又在表中插入了一條設置了id值的數據
insert into `user` values(1, "張三", "zs666")
那么MySQL會直接忽略掉我們自己設置的id,繼續通過自增來設置插入數據的id

003主鍵不連續是什么情況?

例如id從5直接跳到了8,這是因為我們之前在嘗試進行插入操作時,雖然事務沒有提交,但是id已經自增了

004主鍵是用自增還是隨機(UUID)?

主鍵建議是自增的好。因為InnoDB中的主鍵是聚簇索引,如果主鍵是自增的話,每次插入新的記錄就會順序添加到當前索引節點的后續位置,當一頁寫滿就會自動開辟新的頁。如果不是自增主鍵,可能就會在中間插入,引發頁的分裂導致產生很多表空間的碎片。可以理解為當主鍵是UUID的時候,插入表記錄的時間會更長,占用空間也會更大。

005主鍵為什么不推薦有業務含義?

1.任何有業務含義的列都有改變的可能性,主鍵一旦帶上了業務含義,那么主鍵就有可能發生變更。而主鍵一旦發生變更,該記錄數據在磁盤上的存儲位置就會發生改變,甚至有可能會引發頁分裂導致產生空間碎片。
2.帶有業務含義的主鍵就不一定是順序自增的了,這樣就會導致數據的插入順序不到有序的,也不能保證后面插入數據的主鍵一定比前面的數據大。如果出現了后面插入數據的主鍵比前面的小的情況,就有可能引發頁分裂導致產生空間碎片。

006表示枚舉的字段為什么不用enum類型?

表示枚舉的字段一般選用tinyint類型。不選用enum類型主要有兩個原因:
1.enum類型的order by的操作效率低,需要額外的操作。
2.如果枚舉值是數值類型的,會很容易出現語法陷阱,枚舉的下標和數值很容易會被弄混淆。

007貨幣字段用什么類型?

如果貨幣單位是分,可以是int類型;如果堅持用元,則要用decimal類型。
但是是不能用float和double類型的,因為這兩個類型是以二進制存儲的,會有一定的誤差。比如float類型如果你insert一個1234567.23,查詢出來的結果可能是1234567.25。

008時間字段用什么類型?

時間字段的話需要結合項目背景,varchar、timestamp、datetime或bigint類型都可以。
1.varchar類型。如果用varchar類型來存時間,優點在于顯示直觀,存取都方便。但是缺點也是挺多的,比如插入的數據沒有校驗,某一天你可能會發現數據庫中存了一個2019-06-31的數據。其次,做時間比較運算時需要用str_to_date()等函數將其轉化為時間類型,除非建立基于函數的索引,否則這么寫是無法命中索引的,數據量一大,查詢效率就會很低。
2.timestamp類型。這個類型是四個字節的整數,它能表示的時間范圍為1970-01-01 08:00:01到2038-01-19 11:14:07,而2038年以后的時間,是無法用timestamp類型存儲的。但是它有一個優勢是它帶有時區信息的,一旦系統中的時區發生改變,項目中的該字段的值也會自己發生改變。
3.datetime類型。datetime類型的儲存占用8個字節,存儲的時間范圍為1000-01-01 00:00:00 ~ 9999-12-31 23:59:59。顯然,存儲時間范圍更大,但是它存儲的是時間絕對值,不帶有時區信息。如果改變了數據庫的時區,該項的值不會自己發生變更。
4.bigint類型。這個類型也是8個字節,自己維護一個時間戳,表示范圍比timestamp類型大多了。缺點就是要自己維護,不大方便。

009為什么不直接存儲圖片、音頻和視頻等大容量內容?

在實際應用中,一般都是用HDFS來存儲文件的,在MySQL中只會存文件的存放路徑。但是實際上MySQL是有提供兩個字段類型被涉及用來存放大容量文件的,一個是text類型,一個是blob類型。然而在生產中基本不會使用這兩個類型,主要原因如下:
1.MySQL內存臨時表不支持text和blob這樣的大數據類型。如果查詢中包含這樣的數據,那么在排序等操作的時候就不能夠使用內存臨時表,只能使用磁盤臨時表,會導致查詢效率低下。
2.這兩種類型會造成binlog的內容太多。因為數據的內容比較大,也就會造成binlog的內容比較多。我們知道,主從同步是通過binlog來進行的,如果binlog過大,就會導致主從同步的效率問題。

010為什么字段要被定義為NOT NULL?

1.索引的性能不好。MySQL難以優化引用可空列查詢,它會使得索引、索引統計和值更加復雜。可空列需要更多的存儲空間,還需要MySQL內部進行特殊處理。可空列被索引后,每條記錄都需要一個額外的字節。
2.查詢可能會出現一些不可預料的結果。比如說使用count()聚合函數去統計一個可為空的字段,那么最后統計出來的記錄數可能會和實際的記錄數不同。

011varchar(50)中50的含義?

1)字段最多存放 50 個字符
2)如 varchar(50) 和 varchar(200) 存儲 "jay" 字符串所占空間是一樣的,后者在排序時會消耗更多內存

目錄

返回頂部
主站蜘蛛池模板: 四虎免费在线观看视频 | 特级黄色毛片视频 | 中文字幕最新在线 | 夜夜操夜夜 | 日本成人一区二区 | 日本福利片国产午夜久久 | 97超视频在线观看 | 久久777国产线看观看精品卜 | 精品视频网站 | 国产精品美女免费视频大全 | 99久久999久久久综合精品涩 | 一区二区三区在线免费 | 日韩高清欧美 | 久久精品店 | 欧美视频在线观在线看 | 五月天婷婷免费观看视频在线 | 亚洲欧美日韩中文v在线 | 热久久99影院 | 高清国产一区 | 日韩精品一区二区三区 在线观看 | 欧洲自拍偷拍 | 天天操天天操天天操 | 99热这里只有精品在在 | 欧美日韩视频在线播放 | 手机看片国产免费 | 国产aaa级一级毛片 国产aaa毛片 | 亚洲精品视频免费观看 | 日韩一区二区精品久久高清 | 亚洲色图国产精品 | www.国产| 欧美另类久久久精品 | 春暖花开亚洲 | 国产精品久久毛片 | 欧洲欧美成人免费大片 | 一级黄视频 | 狠狠色狠色综合曰曰 | 久久精品视频在线 | 高清不卡视频 | 国内精品不卡一区二区三区 | 中文字幕天天躁夜夜狠狠综合 | 97福利在线 |