mysql考試考點 MySQL資料庫基礎考點

2021-10-25 14:57:40 字數 4071 閱讀 6877

資料型別

數值型別

型別大小範圍(有符號)範圍(無符號)用途

tinyint

1 byte

(-128,127)

(0,255)

小整數值

smallint

2 bytes

(-32 768,32 767)

(0,65 535)

大整數值

mediumint

3 bytes

(-8 388 608,8 388 607)

(0,16 777 215)

大整數值

int或integer

4 bytes

(-2 147 483 648,2 147 483 647)

(0,4 294 967 295)

大整數值

bigint

8 bytes

(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)

(0,18 446 744 073 709 551 615)

極大整數值

float

4 bytes

(-3.402 823 466 e+38,-1.175 494 351 e-38),0,(1.175 494 351 e-38,3.402 823 466 351 e+38)

0,(1.175 494 351 e-38,3.402 823 466 e+38)

單精度浮點數值

double

8 bytes

(-1.797 693 134 862 315 7 e+308,-2.225 073 858 507 201 4 e-308),0,(2.225 073 858 507 201 4 e-308,1.797 693 134 862 315 7 e+308)

0,(2.225 073 858 507 201 4 e-308,1.797 693 134 862 315 7 e+308)

雙精度浮點數值

decimal

對decimal(m,d) ,如果m>d,為m+2否則為d+2

依賴於m和d的值

依賴於m和d的值

小數值注意:長度:可以為整數型別指定寬度,例如:int(11),對大多數應用是沒有意義的,它不會限制值的合法範圍,只會影響顯示字元的個數

日期和時間型別

型別大小

( bytes)範圍格式用途

date

1000-01-01/9999-12-31

yyyy-mm-dd

日期值time

'-838:59:59'/'838:59:59'

hh:mm:ss

時間值或持續時間

year

1901/2155

yyyy

年份值datetime

1000-01-01 00:00:00/9999-12-31 23:59:59

yyyy-mm-dd hh:mm:ss

混合日期和時間值

timestamp

1970-01-01 00:00:00/2038

結束時間是第 2147483647 秒,北京時間 2038-1-19 11:14:07,格林尼治時間 2023年1月19日 凌晨 03:14:07

yyyymmdd hhmmss

混合日期和時間值,時間戳

字串型別

型別大小用途

char

0-255 bytes

定長字串

varchar

0-65535 bytes

變長字串

tinyblob

0-255 bytes

不超過 255 個字元的二進位制字串

tinytext

0-255 bytes

短文本字串

blob

0-65 535 bytes

二進位制形式的長文字資料

text

0-65 535 bytes

長文字資料

mediumblob

0-16 777 215 bytes

二進位制形式的中等長度文字資料

mediumtext

0-16 777 215 bytes

中等長度文字資料

longblob

0-4 294 967 295 bytes

二進位制形式的極大文字資料

longtext

0-4 294 967 295 bytes

極大文字資料

注意:varchar使用1個或者2個額外位元組記錄字串的長度,列長度小於255位元組,使用1個位元組表示,否則用2個

char適合儲存很短的字串,或者所有的值都接近同乙個長度

char長度,超出設定的長度,會被截斷

對於經常變更的資料,char比varchar更好,char不容易產生碎片

對於非常短的列,char比varchar在儲存空間上更有效率

只分配真正需要的空間,更長的列會消耗更多短的記憶體

盡量避免使用blob/text型別,查詢會使用臨時表,導致嚴重的效能開銷

列舉有時可以使用列舉代替常用的字串型別

把不重複的集合儲存成乙個預定義的集合

非常緊湊,把列表值壓縮成乙個或兩個位元組

內部儲存的是整數

盡量避免使用數字作為enum列舉的常量,易混亂

排序是按照內部儲存的整數進行排序

列舉表會使表大小大大減小

日期和時間型別

盡量使用timestamp,比datetime空間效率高

用整數儲存時間戳的格式通常不方便處理,可以使用timestamp

如果需要儲存到微秒,可以使用bigint儲存

列屬性auto_increment、default、not null、zerofill

mysql資料表引擎

innodb表引擎

預設事務性引擎,最重要最廣泛的儲存引擎,效能非常優秀

儲存在共享表空間,可以通過配置分開

對主鍵查詢的效能高於其他型別的儲存引擎

內部做了很多優化,從磁碟讀取資料時自動在記憶體構建hash索引,插入資料時自動構建插入緩衝區

通過一些機制和工具支援真正的熱備份

支援奔潰後的安全恢復

支援行級鎖

支援外來鍵

myisam表引擎

5.1版本以前,myisam是預設的儲存引擎

擁有全文索引、壓縮、空間函式

不支援事務和行級鎖,不支援奔潰後的安全恢復

表儲存在兩個檔案,myd和myi

設計簡單,某些場景下效能很好

其他表引擎

archive、blackhole、csv、memory

在使用過程中,優先使用innodb

mysql鎖機制

基礎概念

表鎖是日常開發中常見的問題,因此也是面試當中最常見的考察點,當多個查詢同一時刻進行資料修改時,就會產生併發控制的問題

共享鎖和排他鎖,其實就是讀鎖和寫鎖

讀鎖:共享的,不堵塞,多個使用者可以同時,讀乙個資源,互不干擾

寫鎖:排他的,乙個寫鎖會阻塞其他的寫鎖和讀鎖,這樣可以只允許乙個人進行寫入,防止其他使用者讀取和正在寫入的資源

鎖粒度:表鎖,系統效能開銷最小,會鎖定整張表,myisam使用表鎖

innodb實現行級鎖

事務處理:

mysql提供事務處理的表引擎:innodb

伺服器層不管理事務,由下層的引擎實現,所以同乙個事務中,使用多種儲存引擎不靠譜

在非事務到的表上執行事務操作mysql不會發出提醒,也不會報錯

mysql儲存過程

儲存過程:

為以後的使用而儲存的一條或者多條mysql語句的集合

儲存過程就是有業務邏輯和流程的集合

可以在儲存過程中建立表,更新資料,刪除等等

使用場景:

通過把處理封裝在容易使用的單元中,簡化複雜的操作

保證資料的一致性

簡化對變動的管理

mysql觸發器

使用場景:

可通過資料庫中的相關表實現級聯更改

實時監控某張表中的某個欄位的更改而需要作出相應的處理

某些業務編號的生成等

濫用會造成資料庫及應用程式的維護困難

新書試讀 網路規劃設計師考試考點分析與真題詳解

網路規劃設計師考試考點分析與真題詳解 最新版 作譯者 郭春柱 2012 01 千字 數 1184 版 次 01 01 頁數 740 2012 01 開本 16 185 260 印 次 01 01 定價 79.00元 i s b n 9787121150272 所屬分類 科技 考試與認證 計算機考試 ...

Mysql命令mysql 連線Mysql資料庫

mysql命令格式 mysql h主機位址 u使用者名稱 p使用者密碼 1 連線到本機上的mysql 首先開啟dos視窗,然後進入目錄mysql bin,再鍵入命令mysql u root p,回車後提示你輸密碼。注意使用者名稱前可以有空格也可以沒有空格,但是密碼前必須沒有空格,否則讓你重新輸入密碼...

mysql二級考試技巧 mysql二級考試怎麼考

mysql計算機二級考試是上機考試,考試內容是mysql的基礎知識。下面一起來詳細了解一下吧。題型及分值 單項選擇題 40分 含公共基礎知識部分10分 操作題 60分 包括基本操作題 簡單應用題及綜合應用題 考試環境 開發環境 wamp 5.0及以上 資料庫管理系統 mysql 5.5 程式語言 p...