03.數據類型

數據類型

  • 數據長什么樣
  • 數據需要多少空間來存放
  • 系統內置數據類型
  • 用戶定義數據類型

選擇正確的數據類型對于獲得高性能至關重要

三大原則:

  • 更小的通常更好,盡量使用可正確存儲數據的最小數據類型
  • 簡單就好,簡單數據類型的操作通常需要更少的CPU周期
  • 盡量避免NULL,包含為NULL的列,對MySQL更難優化

1. 整數型

  • tinyint(m) 1個字節 范圍(-128~127)
  • smallint(m) 2個字節 范圍(-32768~32767)
  • mediumint(m) 3個字節 范圍(-8388608~8388607)
  • int(m) 4個字節 范圍(-2147483648~2147483647)
  • bigint(m) 8個字節 范圍(±9.22*10的18次方)

上述數據類型,如果加修飾符unsigned后,則最大值翻倍

如:tinyint unsigned的取值范圍為(0~255)

int(m)里的m是表示SELECT查詢結果集中的顯示寬度,并不影響實際的取值范圍,規定了MySQL的一些交互工具(例如MySQL命令行客戶端)用來顯示字符的個數。對于存儲和計算來說,Int(1)和Int(20)是相同的

BOOL,BOOLEAN:布爾型,是TINYINT(1)的同義詞。

zero值被視為假,非zero值視為真

2. 浮點型(float和double)

浮點型為近似值,不精確,分為單精度和雙精度

float(m,d) 單精度浮點型 8位精度(4字節) m總個數,d小數位,

注意: 小數點不占用總個數

double(m,d) 雙精度浮點型 16位精度(8字節) m總個數,d小數位,

注意: 小數點不占用總個數

示例:
設一個字段定義為float(6,3),如果插入一個數123.45678,實際數據庫里存的是123.457,但總個數還以實際為準,即6位

3. 定點數

在數據庫中存放的是精確值,存為十進制

格式 decimal(m,d) 表示最多 m 位數字,其中 d個小數,小數點不算在長度內

比如: DECIMAL(6,2)總共能存6位數字,末尾2位是小數,字段最大值 9999.99(小數點不算在長度內)

參數m<65 是總個數,d<30目 d<m 是小數位

MySQL5.0和更高版本將數字打包保存到一個二進制字符串中(每4個字節存9個數字)。

例如: decimal(18,9)小數點兩邊將各存儲9個數字,一共使用9個字節:其中,小數點前的9個數字用4個字節,小數點后的9個數字用4個字節,小數點本身占1個字節

浮點類型在存儲同樣范圍的值時,通常比decimal使用更少的空間。foat使用4個字節存儲。double占用8個字節

因為需要額外的空間和計算開銷,所以應該盡量只在對小數進行精確計算時才使用decimal,例如存儲財務數據。但在數據量比較大的時候,可以考慮使用bigint代替decimal

4. 字符串(char,varchar,text)

  • char(n) 固定長度,最多255個字符,注意不是字節
  • varchar(n) 可變長度,最多65535個字符
  • tinytext 可變長度,最多255個字符
  • text 可變長度,最多65535個字符
  • mediumtext 可變長度,最多2的24次方-1個字符
  • longtext 可變長度,最多2的32次方-1個字符
  • BINARY(M) 固定長度,可存二進制或字符,長度為0-M字節
  • VARBINARY(M) 可變長度,可存二進制或字符,允許長度為0-M字節
  • 內建類型:ENUM枚舉,SET集合

char和varchar的比較:

  • char(n)若存入字符數小于n,則以空格補于其后,查詢之時再將空格去掉,所以char類型存儲的字符串末尾不能有空格,varchar不限于此
  • char(n)固定長度,char(4)不管是存入幾個字符,都將占用4個字節,varchar是存入的實際字符數+1個字節(n < n > 255),所以varchar(4),存入3個字符將占用4個字節
  • char類型的字符串檢索速度要比varchar類型的快

varchar 和text:

  • varchar可指定n,text不能指定,內部存儲varchar是存入的實際字符數+1個字節(n < n > 255),text是實際字符數+2個字節。
  • text類型不能有默認值
  • varchar可直接創建索引,text創建索引要指定前多少個字符。varchar查詢速度快于text

5. 二進制數據BLOB

  • BLOB和text存儲方式不同,TEXT以文本方式存儲,英文存儲區分大小寫,而Blob以二進制方式存儲不分大小寫
  • BLOB存儲的數據只能整體讀出
  • TEXT可以指定字符集,BLOB不用指定字符集

6. 日期時間類型

  • date 日期 ‘2008-12-2’
  • time 時間 ‘12:25:36’
  • datetime 日期時間 ‘2008-12-2 22:06:44’
  • timestamp 自動存儲記錄修改時間
  • YEAR(2),YEAR(4):年份
  • timestamp 此字段里的時間數據會隨其他字段修改的時候自動刷新,這個數據類型的字段可以存放這條記錄最后被修改的時間

7. 修飾符

適用所有類型的修飾符:

  • NULL 數據列可包含NULL值,默認值
  • NOT NULL 數據列不允許包含NULL值,相當于網站注冊表中的*為必填選項
  • DEFAULT 默認值
  • PRIMARY KEY 主鍵,所有記錄中此字段的值不能重復,且不能為NULL
  • UNIQUE KEY 唯一鍵,所有記錄中此字段的值不能重復,但可以為NULL
  • CHARACTER SET name 指定一個字符集

適用數值型的修飾符:

  • AUTO_INCREMENT 自動遞增,適用于整數類型,必須作用于某個 key 的字段,比如primary key
  • UNSIGNED 無符號

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82988.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82988.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82988.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

達夢數據庫字段類型 varchar 轉 text

達夢數據庫字段類型 varchar 轉 text 業務場景問題浮現問題處理方式一 總結 業務場景 在初次創建達夢數據庫表的時候&#xff0c;僅僅設定了基礎的表字段。然而&#xff0c;在預估字段值的長度時&#xff0c;常常會出現不夠準確的情況。例如&#xff0c;我創建了一張參數配置表…

MyBatis 緩存機制源碼深度解析:一級緩存與二級緩存

MyBatis 緩存機制源碼深度解析&#xff1a;一級緩存與二級緩存 一、一級緩存1.1 邏輯位置與核心源碼解析1.2 一級緩存容器&#xff1a;PerpetualCache1.3 createCacheKey 方法與緩存命中1.4 命中與失效時機1.5 使用方式 二、二級緩存2.1 邏輯位置與核心源碼解析2.2 查詢流程、命…

【題解-Acwing】1097. 池塘計數

題目&#xff1a;1097. 池塘計數 題目描述 農夫約翰有一片 N?M 的矩形土地。 最近&#xff0c;由于降雨的原因&#xff0c;部分土地被水淹沒了。 現在用一個字符矩陣來表示他的土地。 每個單元格內&#xff0c;如果包含雨水&#xff0c;則用”W”表示&#xff0c;如果不含…

基于Flask框架的前后端分離項目開發流程是怎樣的?

基于Flask框架的前后端分離項目開發流程可分為需求分析、架構設計、并行開發、集成測試和部署上線五個階段。以下是詳細步驟和技術要點&#xff1a; 一、需求分析與規劃 1. 明確項目邊界 功能范圍&#xff1a;確定核心功能&#xff08;如用戶認證、數據管理、支付流程&#…

板凳-------Mysql cookbook學習 (十--2)

5.12 模式匹配中的大小寫問題 mysql> use cookbook Database changed mysql> select a like A, a regexp A; ------------------------------ | a like A | a regexp A | ------------------------------ | 1 | 1 | --------------------------…

編程實驗篇--線性探測哈希表

線性探測哈希表性能測試實驗報告 1. 實驗目的 編程實現線性探測哈希表。編程測試線性探測哈希表。了解線性探測哈希表的性能特征&#xff0c;并運行程序進行驗證。 2. 實驗背景與理論基礎 哈希表是一種高效的數據結構&#xff0c;用于實現符號表&#xff08;Symbol Table&a…

使用Python提取PDF元數據的完整指南

PDF文檔中包含著豐富的元數據信息&#xff0c;這些信息對文檔管理和數據分析具有重要意義。本文將詳細介紹如何利用Python高效提取PDF元數據&#xff0c;并對比主流技術方案的優劣。 ## 一、PDF元數據概述 PDF元數據&#xff08;Metadata&#xff09;是包含在文檔中的結構化信…

【量化】策略交易類型

通過查找相關資料&#xff0c;這里羅列了一些常見的策略交易類型&#xff0c;如下&#xff1a; &#x1f4ca; 技術分析類策略 均線交叉策略&#xff08;SMA、EMA&#xff09;動量策略&#xff08;Momentum&#xff09;相對強弱指數策略&#xff08;RSI&#xff09;隨機指標策…

【Go語言基礎【17】】切片:一種動態數組

文章目錄 零、概述一、切片基礎1、切片的結構2、切片的創建方式3、切片的操作與擴容 二、切片的拷貝與共享內存三、切片作為函數參數 Go語言的切片&#xff08;slice&#xff09;是一種動態數組&#xff0c;提供了靈活、高效的元素序列操作。它基于底層數組實現&#xff0c;通過…

MybatisPlus使用DB靜態工具出現找不到實體類的報錯

報錯&#xff1a;Not Found TableInfoCache. 原因在于沒有創建實體類對應的mapper&#xff0c;并且該mapper還必須繼承baseMapper。 猜測大概的原理應該是DB會去查找實體類對應的mapper&#xff0c;然后通過mapper去查找對應的實體類。

Linux nano命令的基本使用

參考資料 GNU nanoを使いこなすnano基礎 目錄 一. 簡介二. 文件打開2.1 普通方式打開文件2.2 只讀方式打開文件 三. 文件查看3.1 打開文件時&#xff0c;顯示行號3.2 翻頁查看 四. 文件編輯4.1 Ctrl K 復制 和 Ctrl U 粘貼4.2 Alt/Esc U 撤回 五. 文件保存與退出5.1 Ctrl …

LLMs 系列科普文(15)

前面 14 篇文章&#xff0c;就是本系列科普文中想介紹的大部分技術內容。重點講述了訓練這些模型的三個主要階段和范式&#xff1a;預訓練、監督微調和強化學習。 我向你們展示了這些步驟大致對應于我們已用于教導兒童的過程。具體來說&#xff0c;我們將預訓練比作通過閱讀說…

深入理解匯編語言中的順序與分支結構

本文將結合Visual Studio環境配置、順序結構編程和分支結構實現&#xff0c;全面解析匯編語言中的核心編程概念。通過實際案例演示無符號/有符號數處理、分段函數實現和邏輯表達式短路計算等關鍵技術。 一、匯編環境配置回顧&#xff08;Win32MASM&#xff09; 在Visual Studi…

Selenium4+Python的web自動化測試框架

一、什么是Selenium&#xff1f; Selenium是一個基于瀏覽器的自動化測試工具&#xff0c;它提供了一種跨平臺、跨瀏覽器的端到端的web自動化解決方案。Selenium主要包括三部分&#xff1a;Selenium IDE、Selenium WebDriver 和Selenium Grid。 Selenium IDE&#xff1a;Firefo…

React 樣式方案與狀態方案初探

React 本身只提供了基礎 UI 層開發范式&#xff0c;其他特性的支持需要借助相關社區方案實現。本文將介紹 React 應用體系中樣式方案與狀態方案的主流選擇&#xff0c;幫助開發者根據項目需求做出合適的選擇。 1. React 樣式方案 1.1. 內聯樣式 (Inline Styles) 通過 style …

PHP中如何定義常量以及常量和變量的主要區別

在PHP編程中&#xff0c;常量和變量是存儲數據的兩種重要方式。常量在定義后值不能改變&#xff0c;而變量的值可以在程序執行過程中發生變化。本文將詳細介紹如何在PHP中定義常量&#xff0c;并深入探討常量和變量的主要區別。 一、PHP中定義常量 1. 使用 define 函數定義常…

奈飛工廠官網,國內Netflix影視在線看|中文網頁電腦版入口

奈飛工廠是一個專注于提供免費Netflix影視資源的在線播放平臺&#xff0c;致力于為國內用戶提供的Netflix熱門影視內容。該平臺的資源與Netflix官網基本同步&#xff0c;涵蓋電影、電視劇、動漫和綜藝等多個領域。奈飛工廠的界面簡潔流暢&#xff0c;資源分類清晰&#xff0c;方…

CMS內容管理系統的設計與實現:架構設計

一、整體架構方案 &#xff08;一&#xff09;架構方案選擇&#xff08;根據項目規模&#xff09; 1. 中小型項目推薦方案&#xff08;團隊<10人&#xff09; #mermaid-svg-cjzaHpptY8pYWnzo {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:1…

嵌入式里的時間魔法:RTC 與 BKP 深度拆解

文章目錄 RTC實時時鐘與BKPUnix時間戳UTC/GMT時間戳轉換時間戳轉換BKP簡介BKP基本結構1. 電池供電模塊&#xff08;VBAT 輸入&#xff09;2. 侵入檢測模塊&#xff08;TAMPER 輸入&#xff09;3. 時鐘輸出模塊&#xff08;RTC 輸出&#xff09;4. 內部寄存器組 RTC簡介RTC時鐘源…

STC8H系列 驅動步進電機

STC8H 驅動步進電機 一、引言二、硬件設計三、軟件設計Step_Motor2.c文件Step_ Motor2.h文件 一、引言 眾所周知STC8H系列有兩個PWM&#xff0c;分別為PWMA和PWMB外設模塊&#xff0c;我全都用上&#xff0c;豈不是就有兩個帶動電機的脈沖信號&#xff1f;&#xff01;哈哈哈哈…