大战熟女丰满人妻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" 字符串所占空間是一樣的,后者在排序時會消耗更多內存

目錄

返回頂部
主站蜘蛛池模板: 国内一级特黄女人精品片 | 国产精品视频免费在线观看 | 欧美日日射 | 色播久久| 国产好大好爽久久久久久久 | 99热久久精品国产 | 四虎成人精品在永久免费 | www.色午夜 | 亚洲性夜夜综合久久麻豆 | 麻豆成人久久精品二区三 | 一级aa 毛片高清免费看 | 国模无水印一区二区三区 | 久青草视频97国内免费影视 | 日本一级毛一级毛片短视频 | 99er久久 | 国产一区二区三区四区在线观看 | 四虎影院免费观看 | 国产区综合另类亚洲欧美 | 亚洲九九九 | 美女视频国产 | 国产亚洲精品一区久久 | 亚洲国产人成在线观看69网站 | 日本三区视频 | 亚洲韩国日本一级二级r级 亚洲韩精品欧美一区二区三区 | 亚洲一区二区三区首页 | 日日操操操 | 色综合网址 | 亚洲精品中文字幕在线 | 中文字幕一区二区三区视频在线 | 免费黄色的视频 | 亚洲国产精久久久久久久 | 色综合久久六月婷婷中文字幕 | 亚洲在线小视频 | 综合色好色 | 日韩你懂得 | 天天操操| 国产成人精品999在线 | 久久综合成人 | 亚洲国产成人精品久久 | 一及 片日本 | 亚洲不卡在线观看 |