日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

int类型存小数 mysql_2020年最新版MySQL面试题(一)

發(fā)布時間:2025/3/19 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 int类型存小数 mysql_2020年最新版MySQL面试题(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

數(shù)據(jù)庫基礎(chǔ)知識

一、為什么要使用數(shù)據(jù)庫

1.數(shù)據(jù)保存在內(nèi)存

  • 優(yōu)點:存取速度快
  • 缺點:數(shù)據(jù)不能永久保存

2.數(shù)據(jù)保存在文件

  • 優(yōu)點:數(shù)據(jù)永久保存
  • 缺點:①速度比內(nèi)存操作慢,頻繁的IO操作;②查詢數(shù)據(jù)不方便。

3.數(shù)據(jù)保存在數(shù)據(jù)庫

①數(shù)據(jù)永久保存;②使用SQL語句,查詢方便效率高;③管理數(shù)據(jù)方便。

二、什么是SQL?

定義:結(jié)構(gòu)化查詢語言(Structured Query Language)簡稱SQL,是一種數(shù)據(jù)庫查詢語言。

作用:用于存取數(shù)據(jù)、查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)。

三、什么是MySQL?

MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件之一。在PHP企業(yè)級開發(fā)中非常常用,因為 MySQL 是開源免費的,并且方便擴(kuò)展。

四、數(shù)據(jù)庫三大范式是什么?

  • 第一范式:每個列都不可以再拆分。
  • 第二范式:在第一范式的基礎(chǔ)上,非主鍵列完全依賴于主鍵,而不能是依賴于主鍵的一部分。
  • 第三范式:在第二范式的基礎(chǔ)上,非主鍵列只依賴于主鍵,不依賴于其他非主鍵。

在設(shè)計數(shù)據(jù)庫結(jié)構(gòu)的時候,要盡量遵守三范式,如果不遵守,必須有足夠的理由。比如性能。事實上我們經(jīng)常會為了性能而妥協(xié)數(shù)據(jù)庫的設(shè)計。

五、mysql有關(guān)權(quán)限的表都有哪幾個?

MySQL服務(wù)器通過權(quán)限表來控制用戶對數(shù)據(jù)庫的訪問,權(quán)限表存放在mysql數(shù)據(jù)庫里,由mysql_install_db腳本初始化。這些權(quán)限表分別user,db,table_priv,columns_priv和host。

下面分別介紹一下這些表的結(jié)構(gòu)和內(nèi)容:

  • user權(quán)限表:記錄允許連接到服務(wù)器的用戶帳號信息,里面的權(quán)限是全局級的。
  • db權(quán)限表:記錄各個帳號在各個數(shù)據(jù)庫上的操作權(quán)限。
  • table_priv權(quán)限表:記錄數(shù)據(jù)表級的操作權(quán)限。
  • columns_priv權(quán)限表:記錄數(shù)據(jù)列級的操作權(quán)限。
  • host權(quán)限表:配合db權(quán)限表對給定主機(jī)上數(shù)據(jù)庫級操作權(quán)限作更細(xì)致的控制。這個權(quán)限表不受GRANT和REVOKE語句的影響。

六、MySQL的binlog有有幾種錄入格式?分別有什么區(qū)別?

有三種格式,statement,row和mixed。

  • statement模式下,每一條會修改數(shù)據(jù)的sql都會記錄在binlog中。不需要記錄每一行的變化,減少了binlog日志量,節(jié)約了IO,提高性能。由于sql的執(zhí)行是有上下文的,因此在保存的時候需要保存相關(guān)的信息,同時還有一些使用了函數(shù)之類的語句無法被記錄復(fù)制。
  • row級別下,不記錄sql語句上下文相關(guān)信息,僅保存哪條記錄被修改。記錄單元為每一行的改動,基本是可以全部記下來但是由于很多操作,會導(dǎo)致大量行的改動(比如alter table),因此這種模式的文件保存的信息太多,日志量太大。
  • mixed,一種折中的方案,普通操作使用statement記錄,當(dāng)無法使用statement的時候使用row。

此外,新版的MySQL中對row級別也做了一些優(yōu)化,當(dāng)表結(jié)構(gòu)發(fā)生變化的時候,會記錄語句而不是逐行記錄。

數(shù)據(jù)類型

一、mysql有哪些數(shù)據(jù)類型?

1.整數(shù)類型,包括TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT。

  • 分別表示1字節(jié)、2字節(jié)、3字節(jié)、4字節(jié)、8字節(jié)整數(shù)。任何整數(shù)類型都可以加上UNSIGNED屬性,表示數(shù)據(jù)是無符號的,即非負(fù)整數(shù)。
  • 長度:整數(shù)類型可以被指定長度。例如:INT(11)表示長度為11的INT類型。長度在大多數(shù)場景是沒有意義的,它不會限制值的合法范圍,只會影響顯示字符的個數(shù),而且需要和UNSIGNED ZEROFILL屬性配合使用才有意義。
  • 例子。假定類型設(shè)定為INT(5),屬性為UNSIGNED ZEROFILL,如果用戶插入的數(shù)據(jù)為12的話,那么數(shù)據(jù)庫實際存儲數(shù)據(jù)為00012。

2.實數(shù)類型,包括FLOAT、DOUBLE、DECIMAL。

  • DECIMAL可以用于存儲比BIGINT還大的整型,能存儲精確的小數(shù)。
  • 而FLOAT和DOUBLE是有取值范圍的,并支持使用標(biāo)準(zhǔn)的浮點進(jìn)行近似計算。
  • 計算時FLOAT和DOUBLE相比DECIMAL效率更高一些,DECIMAL你可以理解成是用字符串進(jìn)行處理。

3.字符串類型,包括VARCHAR、CHAR、TEXT、BLOB。

  • VARCHAR用于存儲可變長字符串,它比定長類型更節(jié)省空間。
  • VARCHAR使用額外1或2個字節(jié)存儲字符串長度。列長度小于255字節(jié)時,使用1字節(jié)表示,否則使用2字節(jié)表示。
  • VARCHAR存儲的內(nèi)容超出設(shè)置的長度時,內(nèi)容會被截斷。
  • CHAR是定長的,根據(jù)定義的字符串長度分配足夠的空間。
  • CHAR會根據(jù)需要使用空格進(jìn)行填充方便比較。
  • CHAR適合存儲很短的字符串,或者所有值都接近同一個長度。
  • CHAR存儲的內(nèi)容超出設(shè)置的長度時,內(nèi)容同樣會被截斷。

使用策略:

對于經(jīng)常變更的數(shù)據(jù)來說,CHAR比VARCHAR更好,因為CHAR不容易產(chǎn)生碎片。

對于非常短的列,CHAR比VARCHAR在存儲空間上更有效率。

使用時要注意只分配需要的空間,更長的列排序時會消耗更多內(nèi)存。

盡量避免使用TEXT/BLOB類型,查詢時會使用臨時表,導(dǎo)致嚴(yán)重的性能開銷。

4.枚舉類型(ENUM),把不重復(fù)的數(shù)據(jù)存儲為一個預(yù)定義的集合。

  • 有時可以使用ENUM代替常用的字符串類型。
  • ENUM存儲非常緊湊,會把列表值壓縮到一個或兩個字節(jié)。
  • ENUM在內(nèi)部存儲時,其實存的是整數(shù)。
  • 盡量避免使用數(shù)字作為ENUM枚舉的常量,因為容易混亂。
  • 排序是按照內(nèi)部存儲的整數(shù)

5.日期和時間類型,盡量使用timestamp,空間效率高于datetime,用整數(shù)保存時間戳通常不方便處理。

  • 如果需要存儲微妙,可以使用bigint存儲。
  • 看到這里,這道真題是不是就比較容易回答了。

引擎

一、MySQL存儲引擎MyISAM與InnoDB區(qū)別

存儲引擎Storage engine:MySQL中的數(shù)據(jù)、索引以及其他對象是如何存儲的,是一套文件系統(tǒng)的實現(xiàn)。

常用的存儲引擎有以下:

  • Innodb引擎:Innodb引擎提供了對數(shù)據(jù)庫ACID事務(wù)的支持。并且還提供了行級鎖和外鍵的約束。它的設(shè)計的目標(biāo)就是處理大數(shù)據(jù)容量的數(shù)據(jù)庫系統(tǒng)。
  • MyIASM引擎(原本Mysql的默認(rèn)引擎):不提供事務(wù)的支持,也不支持行級鎖和外鍵。
  • MEMORY引擎:所有的數(shù)據(jù)都在內(nèi)存中,數(shù)據(jù)的處理速度快,但是安全性不高。

二、MyISAM與InnoDB區(qū)別

三、MyISAM索引與InnoDB索引的區(qū)別?

  • InnoDB索引是聚簇索引,MyISAM索引是非聚簇索引。
  • InnoDB的主鍵索引的葉子節(jié)點存儲著行數(shù)據(jù),因此主鍵索引非常高效。
  • MyISAM索引的葉子節(jié)點存儲的是行數(shù)據(jù)地址,需要再尋址一次才能得到數(shù)據(jù)。
  • InnoDB非主鍵索引的葉子節(jié)點存儲的是主鍵和其他帶索引的列數(shù)據(jù),因此查詢時做到覆蓋索引會非常高效。

四、InnoDB引擎的4大特性

  • 插入緩沖(insert buffer)
  • 二次寫(double write)
  • 自適應(yīng)哈希索引(ahi)
  • 預(yù)讀(read ahead)

五、存儲引擎選擇

如果沒有特別的需求,使用默認(rèn)的Innodb即可。

  • MyISAM:以讀寫插入為主的應(yīng)用程序,比如博客系統(tǒng)、新聞門戶網(wǎng)站。
  • Innodb:更新(刪除)操作頻率也高,或者要保證數(shù)據(jù)的完整性;并發(fā)量高,支持事務(wù)和外鍵。比如OA自動化辦公系統(tǒng)。

來源:https://blog.csdn.net/ThinkWon/article/details/104778621

總結(jié)

以上是生活随笔為你收集整理的int类型存小数 mysql_2020年最新版MySQL面试题(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。