MySQL篇三:數據類型

文章目錄

  • 前言
  • 1. 數值類型
    • 1.1 tinyint類型
    • 1.2 bit類型
    • 1.3 小數類型
      • 1.3.1 float
      • 1.3.2 decimal
  • 2. 字符串類型
    • 2.1 char
    • 2.2 varchar
    • 2.3 char和varchar比較
  • 3. 日期類型
  • 4. enum和set

前言

??數據類型分類:
在這里插入圖片描述

1. 數值類型

在這里插入圖片描述

1.1 tinyint類型

  • 在MySQL中,整型可以指定是有符號的和無符號的,默認是有符號的。
  • 可以通過UNSIGNED來說明某個字段是無符號的
    在這里插入圖片描述

??注意:盡量不使用unsigned,對于int類型可能存放不下的數據,int unsigned同樣可能存放不下,與其如此,還不如設計時,將int類型提升為bigint類型。

1.2 bit類型

??基本語法:

bit[(M)] : 位字段類型。M表示每個值的位數,范圍從164。如果M被忽略,默認為1

在這里插入圖片描述

??bit使用的注意事項:

  1. bit字段在顯示時,是按照ASCII碼對應的值顯示。
  2. 如果我們有這樣的值,只存放0或1,這時可以定義bit(1)。這樣可以節省空間。

在這里插入圖片描述

1.3 小數類型

1.3.1 float

??語法:

float[(m, d)] [unsigned] : M指定顯示長度,d指定小數位數,占用空間4個字節

??float(4,2)表示的范圍是-99.99 ~ 99.99,MySQL在保存值時會進行四舍五入。比如說先就是只能插入-99.99 ~ 99.99,但是實際上的范圍是-99.994 ~ 99.994。

1.3.2 decimal

decimal(m, d) [unsigned] : 定點數m指定長度,d表示小數點的位數
  • decimal(5,2) 表示的范圍是 -999.99 ~ 999.99
  • decimal(5,2) unsigned 表示的范圍 0 ~ 999.99

??decimal和float很像,但是有區別: float和decimal表示的精度不一樣。
??說明:float表示的精度大約是7位。decimal整數最大位數m為65。支持小數最大位數d是30。如果d被省略,默認為0。如果m被省略,默認是10。
??建議:如果希望小數的精度高,推薦使用decimal。

2. 字符串類型

2.1 char

??語法:

char(L): 固定長度字符串,L是可以存儲的長度,單位為字符,最大長度值可以為255

??說明:char(2) 表示可以存放兩個字符,可以是字母或漢字,但是不能超過2個, 最多只能是255。在MySQL中的字符和我們之前語言層面的字符含義是不一樣的,在語言中,一個字符就是一個字節,但是在MySQL中,一個字符就是代表一個符號。 實際上一個漢字是需要占三個字節的。

2.2 varchar

??語法:

varchar(L): 可變長度字符串,L表示字符長度,最大長度65535個字節

??關于varchar(len),len到底是多大,這個len值,和表的編碼密切相關:

  • varchar長度可以指定為0到65535之間的值,但是有1 - 3 個字節用于記錄數據大小,所以說有效字節數是65532。
  • 當我們的表的編碼是utf8時,varchar(n)的參數n最大值是65532/3=21844,因為utf中,一個字符占用3個字節,如果編碼是gbk,varchar(n)的參數n最大是65532/2=32766(因為gbk中,一個字符占用2字節)。

2.3 char和varchar比較

在這里插入圖片描述

??如何選擇定長或變長字符串?

  • 如果數據確定長度都一樣,就使用定長(char),比如:身份證,手機號,md5
  • 如果數據長度有變化,就使用變長(varchar), 比如:名字,地址,但是你要保證最長的能存的進去。
  • 定長的磁盤空間比較浪費,但是效率高。
  • 變長的磁盤空間比較節省,但是效率低。
  • 定長的意義是,直接開辟好對應的空間。
  • 變長的意義是,在不超過自定義范圍的情況下,用多少,開辟多少。

3. 日期類型

??常用的日期有如下三個:

  • date :日期 ‘yyyy-mm-dd’ ,占用三字節。
  • datetime 時間日期格式 ‘yyyy-mm-dd HH:ii:ss’ 表示范圍從 1000 到 9999 ,占用八字節。
  • timestamp :時間戳,從1970年開始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用四字節。(相比較datetime,時間戳會自動更新)

??更新時間:

update 表的名字 set 元素='2024-7-4';

4. enum和set

??語法:

  • enum:枚舉,“單選”類型;enum(‘選項1’,‘選項2’,‘選項3’,…);
    該設定只是提供了若干個選項的值,最終一個單元格中,實際只存儲了其中一個值;而且出于效率考慮,這些值實際存儲的是“數字”,因為這些選項的每個選項值依次對應如下數字:1,2,3,…最多65535個;當我們添加枚舉值時,也可以添加對應的數字編號。
  • set:集合,“多選”類型;set(‘選項值1’,‘選項值2’,‘選項值3’, …);
    該設定只是提供了若干個選項的值,最終一個單元格中,設計可存儲了其中任意多個值;而且出于效率考慮,這些值實際存儲的是“數字”,因為這些選項的每個選項值依次對應如下數字:1,2,4,8,16,32,…最多64個。

在這里插入圖片描述
??說明:不建議在添加枚舉值和集合值的時候采用數字的方式,因為不利于閱讀。
??集合查詢使用find_ in_ set函數: find_in_set(sub,str_list) :如果 sub 在 str_list 中,則返回下標;如果不在,返回0;str_list 用逗號分隔的字符串。
在這里插入圖片描述
??拿上面的例子舉例:
在這里插入圖片描述
??當出現多個選擇時,需要用and連接:
在這里插入圖片描述
??當然也可以通過使用比特位的方式來選擇:
在這里插入圖片描述
??籃球是第一個也就是0001,足球是第四個也就是1000,加起來就是1001,轉為十進制就是9。

??注意:在enum中是可以用下標來進行插入的(不過是從1開始)。但是在set集合中,它的下標是無法與其中的元素一一對應的,在set中是按照比特位來辨別的,比如上面我們設置了四個愛好,那么就是0000,0001(十進制為1)代表第一個愛好,0010(2)代表第二個,0011(3)代表前兩個……

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

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

相關文章

排隊系統、Head and Tail of the Queue 題目

題目 JAVA40 排隊系統描述輸入描述:輸出描述: 分析:代碼: JAVA41 Head and Tail of the Queue(隊列的頭和尾)描述輸入描述:輸出描述: 示例:分析:代碼:大佬代碼…

【Java13】包

“包”這個機制,類似于分組。主要作用是區分不同組內的同名類。例如,高三三班有一個“王五”,高二八班也有一個“王五”。高三三班和高三八班就是兩個不同的包。 Java中的包(package)機制主要提供了類的多層命名空間&…

MISRA C2012學習筆記(6)-Rules 8.11

文章目錄 8.11 指針類型轉換(Pointer type conversions)Rule 11.1 不能在函數指針和任何其他類型指針之間進行轉換Rule 11.2 不得在指向不完整類型的指針和其他任何類型間進行轉換Rule 11.3 不得在指向不同對象類型的指針之間執行強制轉換Rule 11.4 不得在指向對象的指針和整數…

HTTP長連接

長連接優點 HTTP為什么要開啟長連接呢? 主要是為了節省建立的時間,請求可以復用同一條TCP鏈路,不用重復進行三握+四揮 如果沒有長連接,每次請求都做三握+四揮 如果有長鏈接,在一個 TCP 連接中可以持續發送多份數據而不會斷開連接,即請求可以復用TCP鏈路 長連接缺點 …

第六十八回 東平府誤陷九紋龍 宋公明義釋雙槍將-文心大模型ernie-speed免費使用方法

宋江和盧俊義抓鬮兒,宋江打東平府,盧俊義打東昌府,誰先打下誰做梁山泊主。宋江帶領林沖、花榮、劉唐等二十八人,盧俊義帶領吳用、公孫勝、關勝等二十八人。 宋江等人到了東平府外安山鎮,郁保四和王定六自告奮勇去下戰…

比Elasticsearch更高效的開源搜索引擎Meilisearch——筑夢之路

功能說明 快速與高效: Meilisearch 旨在提供快速的搜索速度。它可以在毫秒級別內返回查詢結果,即使在處理大型數據集時也是如此。 例如,在官方提供的基準測試中,使用 Meilisearch 處理 10 萬個文檔時,平均搜索時間為 …

vue3制作輪播圖+vue輪播圖的圖片引入方式

對應的<teemplate> <template><div class"box"><ul class"ul1" ref"ul1"><li v-for"(img, idx) in images" :key"idx" :style"{ zIndex: img.zIndex }"><img :src"img.s…

深度學習驅動的中文情感分析:PlugLink 在實踐中的橋梁作用

深度學習驅動的中文情感分析&#xff1a;PlugLink 在實踐中的橋梁作用 情感分析技術則如同濾網&#xff0c;幫助我們從這股洪流中篩選出有價值的情感信號。特別是對于中文這樣的多音字、同音詞豐富且語境復雜度高的語言&#xff0c;深度學習模型展現了無與倫比的優勢。本文將以…

代碼隨想錄第45天|動態規劃

300.最長遞增子序列 參考 dp[i] 表示以 i 為結尾的最長遞增子序列長度遞推公式: 使用 i 和 j 判斷 dp[i] max(dp[j] 1, dp[i])每次 j 都需要從頭遍歷 初始化: dp[i] 1 class Solution { public:int lengthOfLIS(vector<int>& nums) {vector<int> dp(nums…

基于STM32設計的管道有害氣體檢測裝置(ESP8266局域網)176

基于STM32設計的管道有害氣體檢測裝置(176) 文章目錄 一、前言1.1 項目介紹【1】項目功能介紹【2】項目硬件模塊組成【3】ESP8266模塊配置【4】上位機開發思路【5】項目模塊劃分【6】LCD顯示屏界面布局【7】上位機界面布局1.2 項目功能需求1.3 項目開發背景1.4 開發工具的選擇1…

國產化新標桿:TiDB 助力廣發銀行新一代總賬系統投產上線

隨著全球金融市場的快速發展和數字化轉型的深入推進&#xff0c;金融科技已成為推動銀行業創新的核心力量。特別是在當前復雜多變的經濟環境下&#xff0c;銀行業務的高效運作和風險管理能力顯得尤為重要。總賬系統作為銀行會計信息系統的核心&#xff0c;承載著記錄、處理和匯…

2024年06月CCF-GESP編程能力等級認證Python編程二級真題解析

本文收錄于專欄《Python等級認證CCF-GESP真題解析》&#xff0c;專欄總目錄&#xff1a;點這里&#xff0c;訂閱后可閱讀專欄內所有文章。 一、單選題&#xff08;每題 2 分&#xff0c;共 30 分&#xff09; 第 1 題 小楊父母帶他到某培訓機構給他報名參加CCF組織的GESP認證…

云動態摘要 2024-07-07

給您帶來云廠商的最新動態,最新產品資訊和最新優惠更新。 最新優惠與活動 數據庫上云優選 阿里云 2024-07-04 RDS、PolarDB、Redis、MongoDB 全系產品新用戶低至首年6折起! [免費體驗]智能助手ChatBI上線 騰訊云 2024-07-02 基于混元大模型打造,可通過對話方式生成可視化…

說一說null 和 undefined 的區別,如何讓一個屬性變為null

共同點 null和undefined是JavaScript中的兩個基本數據類型 不同點 undefined&#xff1a;這個值表示變量已聲明但還沒被賦值。 null&#xff1a;這個值表示空值或無值&#xff0c;通常用于手動置一個變量為空 要將一個屬性設置為null&#xff0c;你可以直接給屬性賦值 let…

18_特征金字塔網絡FPN結構詳解

1.1 簡介 在深度學習領域&#xff0c;尤其是計算機視覺和目標檢測任務中&#xff0c;Feature Pyramid Networks (FPN) 是一種革命性的架構設計&#xff0c;它解決了多尺度特征檢測和融合的關鍵問題。FPN最初由何凱明等人在2017年的論文《Feature Pyramid Networks for Object …

保護您的數據:應對MKP勒索病毒的有效策略

導言&#xff1a; 在當今數字化時代&#xff0c;.mkp勒索病毒等惡意軟件已經成為廣泛存在的安全威脅&#xff0c;對個人用戶和企業的數據安全構成了嚴峻挑戰。本文將探討.mkp勒索病毒的特點、傳播方式以及創新的應對策略&#xff0c;旨在幫助讀者更有效地應對這一威脅。如不幸…

Python面試題:請解釋什么是模塊和包,并描述它們的區別

在 Python 中&#xff0c;模塊&#xff08;module&#xff09;和包&#xff08;package&#xff09;是組織和管理代碼的兩種方式。它們幫助開發者創建結構化、可維護和可復用的代碼。 模塊&#xff08;Module&#xff09; 模塊是包含 Python 代碼的文件&#xff0c;擴展名為 …

ansible常見問題配置好了密碼還是報錯

| FAILED! > { “msg”: “Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host’s fingerprint to your known_hosts file to manage this host.” } 怎么解決&#xf…

Stable Diffusion圖像的臉部細節控制——采樣器全解析

文章目錄 藝術地掌控人物形象好易智算原因分析為什么在使用Stable Diffusion生成全身圖像時&#xff0c;臉部細節往往不夠精細&#xff1f; 解決策略 局部重繪采樣器總結 藝術地掌控人物形象 在運用Stable Diffusion這一功能強大的AI繪圖工具時&#xff0c;我們往往會發現自己…

ESP32 步進電機精準控制:打造高精度 DIY 寫字機器人,實現流暢書寫體驗

摘要: 想讓你的 ESP32 不再僅僅是控制燈光的工具嗎&#xff1f; 本文將帶你使用 ESP32 開發板、步進電機和簡單的機械結構打造一個能夠自動寫字的機器人。我們將深入淺出地講解硬件連接、軟件代碼以及控制邏輯&#xff0c;并提供完整的項目代碼和電路圖&#xff0c;即使是 Ardu…