国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【MySQL】數(shù)據(jù)庫中這么多數(shù)據(jù)類型你真的了解嗎?一文看懂不同數(shù)據(jù)類型有何區(qū)別

這篇具有很好參考價(jià)值的文章主要介紹了【MySQL】數(shù)據(jù)庫中這么多數(shù)據(jù)類型你真的了解嗎?一文看懂不同數(shù)據(jù)類型有何區(qū)別。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、常見數(shù)據(jù)類型

mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux

二、數(shù)值類型

mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux

2.1 整型

  1. 創(chuàng)建表t1,將name列數(shù)據(jù)類型設(shè)置為要tinyint
    mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux
  2. 插入屬性值:由于這里是tinyint類型,取值范圍是【-128–127】,當(dāng)插入這個(gè)范圍內(nèi)的數(shù)據(jù)顯示成功,范圍之外失敗
    mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux
  3. 使用tinyint unsigned類型創(chuàng)建表t2
    mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux
    無符號類型取值范圍【0,255】,這點(diǎn)與C/C++一樣

2.1.1 小結(jié)

  • MySQL對于數(shù)據(jù)類型不合法行為采取直接報(bào)錯(cuò),阻止我們繼續(xù)操作
  • 這也說明了我們插入表里面的數(shù)據(jù)一定是合法的
  • 在MySQL中,數(shù)據(jù)類型本身也是一種約束:逼著程序員合法使用,保證數(shù)據(jù)庫中的數(shù)據(jù)是可預(yù)期,完整的
  • 創(chuàng)建表的時(shí)候,使用無符號類型需要在后面定義,這點(diǎn)與C/C++不同

其余整型使用方法和約束與tinyint一樣

2.2 bit類型

bit[(M)] : 位字段類型。M表示每個(gè)值的位數(shù),范圍從1到64。如果M被忽略,默認(rèn)為1。

  1. 創(chuàng)建表t3
    mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux

  2. 插入數(shù)據(jù)
    mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux
    可以發(fā)現(xiàn)插入2的時(shí)候報(bào)錯(cuò),這是因?yàn)?無法用1個(gè)bit位表示;
    查表發(fā)現(xiàn),gender沒有顯示任何屬性,這是因?yàn)閎it類型的數(shù)據(jù)默認(rèn)以ASCLL碼顯示,但是ASCLL碼0、1不可見,可以通過select id,hex(gender) from t3;進(jìn)行十進(jìn)制查看
    mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux

  3. 修改列的屬性
    mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux

  4. 修改列的屬性
    將gender列bit位改為10位,插入
    mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux
    對比之下可以發(fā)現(xiàn):bit字段在顯示時(shí),是按照ASCII碼對應(yīng)的值顯示
    mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux

2.3 float 類型

float[(m, d)] [unsigned] : M指定顯示長度,d指定小數(shù)位數(shù),占用空間4個(gè)字節(jié)
小數(shù):float(4,2)表示的范圍是-99.99 ~ 99.99,MySQL在保存值時(shí)會(huì)進(jìn)行四舍五入。

這里我創(chuàng)建了一個(gè)表t4:要求其salary字段是float類型,并且顯示長度為4,小數(shù)位數(shù)為2
mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux
mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux
無符號測試
這里我在表t4的基礎(chǔ)上增加一個(gè)字段aneno,并將其設(shè)置為無符號float類型
mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux
通過上圖可以發(fā)現(xiàn)。無符號類型的float,負(fù)數(shù)是無法插入的

2.4 decimal類型—精度更高

decimal(m, d) [unsigned] : 定點(diǎn)數(shù)m指定長度,d表示小數(shù)點(diǎn)的位數(shù)
decimal使用方法和限制條件與float一樣,唯一不同的就是精度方面
mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux
float表示的精度大約是7位
decimal整數(shù)最大位數(shù)m為65。支持小數(shù)最大位數(shù)d是30。如果d被省略,默認(rèn)為0.如果m被省略,
默認(rèn)是10。(不同平臺(tái)精度或許不用,僅供參考)

三、字符串類型

3.1 char—固定字符串

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

創(chuàng)建一個(gè)表t5將其name字段設(shè)置為兩個(gè)字符,插入英文字符與中文字符實(shí)驗(yàn)結(jié)果如下
mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux

結(jié)論:

  1. char數(shù)據(jù)類型本身與前面幾種一樣帶有約束(越界報(bào)錯(cuò))
  2. 與C/C++語言中一個(gè)字符占一個(gè)字節(jié)不一樣,在GBK中一個(gè)漢字占兩個(gè)字節(jié),UTF-8中一個(gè)漢字占三個(gè)字節(jié),但是 在mysql中,一個(gè)漢字就是一個(gè)字符
  3. 由于char固定長度最大為255,建表的時(shí)候超過這個(gè)數(shù)會(huì)直接報(bào)錯(cuò)

3.2 varchar—變長字符串

varchar(L): 可變長度字符串,L表示字符長度,最大長度65535個(gè)字節(jié),在不同編碼中,L的最大長度不同,utf-8中最大是是21845

創(chuàng)建表t7,name字段設(shè)置為4個(gè)字符,使用方法和char一樣mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux

  • varchar長度可以指定為0到65535之間的值,但是有1 - 3 個(gè)字節(jié)用于記錄數(shù)據(jù)大小,所以說有效字
    節(jié)數(shù)是65532。
  • 當(dāng)我們的表的編碼是utf8時(shí),varchar(n)的參數(shù)n最大值是65532/3=21844[因?yàn)閡tf中,一個(gè)字符占
    用3個(gè)字節(jié)],如果編碼是gbk,varchar(n)的參數(shù)n最大是65532/2=32766(因?yàn)間bk中,一個(gè)字符
    占用2字節(jié))
  • 表的一行也有長度限制如果一行中有其他字段,那么varchar就不能設(shè)置為最大值

3.2.1 char和varchar區(qū)別

mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux
根據(jù)需求,合理選擇char/varchar
如果數(shù)據(jù)確定長度都一樣,就使用定長(char),比如:身份證,手機(jī)號,md5(密碼摘要)
如果數(shù)據(jù)長度有變化,就使用變長(varchar), 比如:名字,地址,但是你要保證最長的能存的進(jìn)去。
定長的磁盤空間比較浪費(fèi),但是效率高。
變長的磁盤空間比較節(jié)省,但是效率低。

定長的意義是,直接開辟好對應(yīng)的空間
變長的意義是,在不超過自定義范圍的情況下,用多少,開辟多少。

3.3 日期和時(shí)間類型

常用的日期有如下三個(gè):

  • date :日期 ‘yyyy-mm-dd’ ,占用三字節(jié)
  • datetime 時(shí)間日期格式 ‘yyyy-mm-dd HH:ii:ss’ 表示范圍從 1000 到 9999 ,占用八字節(jié)
  • timestamp :時(shí)間戳,從1970年開始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用四字節(jié)

創(chuàng)建表t8,帶有三個(gè)字段,分別是日期、日期時(shí)間、時(shí)間戳;前兩個(gè)字段需要傳入,時(shí)間戳不需要
mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux
更新數(shù)據(jù)或新插入數(shù)據(jù),時(shí)間戳也會(huì)被改變,如下圖
mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux
日期時(shí)間類型適用于不需要改變時(shí)間的場景:上下班打卡
時(shí)間戳類型適應(yīng)于頻繁改變時(shí)間場景:發(fā)帖子

3.4 enum和set

enum:枚舉,“單選”類型;enum(‘選項(xiàng)1’,‘選項(xiàng)2’,‘選項(xiàng)3’,…);
set:集合,“多選”類型;set(‘選項(xiàng)值1’,‘選項(xiàng)值2’,‘選項(xiàng)值3’, …);


有一個(gè)調(diào)查表,需要調(diào)查人的喜好, 比如(唱,跳,rap,籃球)中去選擇(可以多選),(男,女)[單選]

enum插入可以選擇直接用枚舉常量,也可以選擇常量下標(biāo),但是注意,枚舉常量下標(biāo)默認(rèn)從1開始;對于非枚舉常量,mysql直接報(bào)錯(cuò)
mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux


set插入特點(diǎn):可以直接用選項(xiàng)值,也可以用數(shù)字,但是插入的數(shù)據(jù)必須是集合里面的

mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux


使用數(shù)字進(jìn)行插入,結(jié)合linux權(quán)限理解
mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux


這個(gè)數(shù)字使用位圖來表示的,比如以上愛好中全選對應(yīng)的位圖結(jié)構(gòu)就是1111(15)
mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux

3.4.1 set查詢----find_in_set

find_in_set(sub,str_list) :如果 sub 在 str_list 中,則返回下標(biāo);如果不在,返回0;
str_list 用逗號分隔的字符串。


絕對查詢:結(jié)果是只含有特定字段的信息,如:select * from t9 where hobby='唱';
mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux

查詢包含有特定字段的的信息
mysql中數(shù)值類型的區(qū)別,MySQL,數(shù)據(jù)庫,mysql,linux文章來源地址http://www.zghlxwxcb.cn/news/detail-544787.html

到了這里,關(guān)于【MySQL】數(shù)據(jù)庫中這么多數(shù)據(jù)類型你真的了解嗎?一文看懂不同數(shù)據(jù)類型有何區(qū)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【?MySQL】· 一文了解數(shù)據(jù)類型(一)

    【?MySQL】· 一文了解數(shù)據(jù)類型(一)

    ?歡迎來到小K的MySQL專欄,本節(jié)將為大家?guī)鞰ySQL數(shù)據(jù)類型簡介 | 整數(shù) | 浮點(diǎn) | 定點(diǎn) | 時(shí)間/日期類型的分享 ? 0.數(shù)據(jù)類型簡介 數(shù)據(jù)類型(data_type)是指系統(tǒng)中所允許的數(shù)據(jù)的類型。MySQL 數(shù)據(jù)類型定義了列中可以存儲(chǔ)什么數(shù)據(jù)以及該數(shù)據(jù)怎樣存儲(chǔ)的規(guī)則。 數(shù)據(jù)庫中的每個(gè)列都

    2024年02月11日
    瀏覽(23)
  • 一文了解數(shù)據(jù)庫,數(shù)據(jù)倉庫,數(shù)據(jù)湖,數(shù)據(jù)集市,數(shù)據(jù)湖倉

    目錄 一、定義 1. 數(shù)據(jù)庫(Database) 2. 數(shù)據(jù)倉庫(Data Warehouse) 3. 數(shù)據(jù)湖(Data Lake) 4. 數(shù)據(jù)集市(Data Mart) 5. 數(shù)據(jù)湖倉(Data Lakehouse) 二、相同、異同 2.1 相同點(diǎn) 2.2 不同點(diǎn) 三、常見的工具 數(shù)據(jù)庫: 數(shù)據(jù)倉庫: 數(shù)據(jù)湖: 數(shù)據(jù)集市: 數(shù)據(jù)湖倉: 當(dāng)然,以下是關(guān)于數(shù)據(jù)庫、數(shù)

    2024年01月17日
    瀏覽(25)
  • 一文了解數(shù)據(jù)庫vs數(shù)據(jù)倉庫vs數(shù)據(jù)湖

    一文了解數(shù)據(jù)庫vs數(shù)據(jù)倉庫vs數(shù)據(jù)湖

    大家好,我是KD,一名10年以上大數(shù)據(jù)架構(gòu)研發(fā)經(jīng)驗(yàn)從業(yè)者,目前主要從事云原生大數(shù)據(jù)方向設(shè)計(jì),擅長云原生技術(shù)、數(shù)據(jù)架構(gòu)、數(shù)據(jù)平臺(tái)構(gòu)建、大數(shù)據(jù)組件性能調(diào)優(yōu) 以下是本文目錄: 什么是數(shù)據(jù)庫? 為什么會(huì)有數(shù)據(jù)倉庫? 拆解幾個(gè)OLAP核心概念 大數(shù)據(jù)技術(shù)架構(gòu)演進(jìn)過程 什

    2024年01月23日
    瀏覽(16)
  • 【MySQL】數(shù)據(jù)庫數(shù)據(jù)類型

    【MySQL】數(shù)據(jù)庫數(shù)據(jù)類型

    看起來分為很多類型,例如數(shù)值類型,有一些看一眼就懂啦,所以不會(huì)全部介紹 進(jìn)入 test_db數(shù)據(jù)庫中,并創(chuàng)建表t1 ,其內(nèi)部包含 tinyint類型的num 輸入 desc t1; 查看t1表結(jié)構(gòu) tinyint類型為一個(gè)字節(jié),有符號,所以 取值范圍為 -128 到 127 向t1 表中分別插入 -128 、128 、1 輸入 select * fr

    2024年02月08日
    瀏覽(40)
  • MySQL數(shù)據(jù)庫的數(shù)據(jù)類型和基于MySQL數(shù)據(jù)類型的綜合實(shí)例項(xiàng)目

    MySQL數(shù)據(jù)庫的數(shù)據(jù)類型和基于MySQL數(shù)據(jù)類型的綜合實(shí)例項(xiàng)目

    數(shù)值型數(shù)據(jù)類型主要用來存儲(chǔ)數(shù)字。MySQL的整數(shù)類型如下所示 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)、 BIGINT。 類型名稱 說明 存儲(chǔ)需求 TINYINT 很小的整數(shù) 1字節(jié) SMALLINT 小的整數(shù) 2字節(jié) MEDIUMINT 中等大小的整數(shù) 3字節(jié) INT 普通大小的整數(shù) 4字節(jié) BIGINT 大整數(shù) 8字節(jié) 創(chuàng)建表tmp1,其中字段

    2023年04月08日
    瀏覽(31)
  • 【MySQL】數(shù)據(jù)庫的數(shù)據(jù)類型

    【MySQL】數(shù)據(jù)庫的數(shù)據(jù)類型

    mysql 中的數(shù)據(jù)類型分類如下,其中紅色字體的為常用的類型: mysql 中表的建立屬性列: 列名稱 數(shù)據(jù)類型 ,例如 num int ,它與我們平時(shí)寫的語言數(shù)據(jù)類型是倒過來的! 接下來我們創(chuàng)建一個(gè)只有 tinyint 類型的表,然后分別插入 1 和 128,會(huì)發(fā)現(xiàn) 128 插入失敗,因?yàn)樵浇绮迦肓耍?/p>

    2024年02月04日
    瀏覽(21)
  • mysql數(shù)據(jù)庫常見數(shù)據(jù)類型

    數(shù)據(jù)類型: MySQL支持所有標(biāo)準(zhǔn)SQL數(shù)值數(shù)據(jù)類型。 這些類型包括嚴(yán)格數(shù)值數(shù)據(jù)類型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似數(shù)值數(shù)據(jù)類型(FLOAT、REAL和DOUBLE PRECISION)。 INT是INTEGER的同義詞,DEC是DECIMAL的同義詞。 BIT數(shù)據(jù)類型保存位字段值,并且支持MyISAM、MEMORY、Inn

    2024年02月15日
    瀏覽(96)
  • mysql數(shù)據(jù)庫的數(shù)據(jù)類型 -- 4

    mysql數(shù)據(jù)庫的數(shù)據(jù)類型 -- 4

    目錄 數(shù)據(jù)類型 4.1:數(shù)據(jù)類型的分類 4.2:數(shù)值類型 4.3:字符類型 4.5:enum和set類型 4.1:數(shù)據(jù)類型的分類 數(shù)值類型 描述 TINYINT [UNSIGNED] 整數(shù),占用1字節(jié) SMALLINT?[UNSIGNED]? 整數(shù),占用2字節(jié) INT [UNSIGNED]? 整數(shù),占用4字節(jié) BIGINT [UNSIGNED] 整數(shù),占用8字節(jié) FLOAT [(M, D)] [UNSIGNED] 單精度浮

    2024年02月04日
    瀏覽(23)
  • 【Mysql】數(shù)據(jù)庫第二講(數(shù)據(jù)庫中數(shù)據(jù)類型的介紹)

    【Mysql】數(shù)據(jù)庫第二講(數(shù)據(jù)庫中數(shù)據(jù)類型的介紹)

    數(shù)值越界測試: 說明: 在MySQL中,整型可以指定是有符號的和無符號的,默認(rèn)是有符號的。 可以通過UNSIGNED來說明某個(gè)字段是無符號的 無符號案例: 注意 注意:盡量不使用unsigned,對于int類型可能存放不下的數(shù)據(jù),int unsigned同樣可能存放不下,與其如此,還不如設(shè)計(jì)時(shí),將

    2024年02月09日
    瀏覽(25)
  • MySQL數(shù)據(jù)庫基礎(chǔ):JSON函數(shù)各類操作一文詳解

    MySQL數(shù)據(jù)庫基礎(chǔ):JSON函數(shù)各類操作一文詳解

    很多日常業(yè)務(wù)場景都會(huì)用到j(luò)son文件作為數(shù)據(jù)存儲(chǔ)起來,而mysql5.7以上就提供了存儲(chǔ)json的支撐。往常存儲(chǔ)json一般都保留在pg庫或者是hive庫里面,現(xiàn)在mysql有了支持的話基本業(yè)務(wù)都可以用mysql來實(shí)現(xiàn)?,F(xiàn)在mysql8.x版本對json字符出處理已經(jīng)做的非常完善了?,F(xiàn)在就讓我們來詳細(xì)了解

    2024年02月04日
    瀏覽(94)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包