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

【?MySQL | 數(shù)據(jù)類型(二)】字符串 | 二進(jìn)制類型

這篇具有很好參考價(jià)值的文章主要介紹了【?MySQL | 數(shù)據(jù)類型(二)】字符串 | 二進(jìn)制類型。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

?歡迎來到小K的MySQL專欄,本節(jié)將為大家?guī)鞰ySQL字符串 | 二進(jìn)制類型類型的分享?


【?MySQL | 數(shù)據(jù)類型(二)】字符串 | 二進(jìn)制類型,# MySQL,mysql,android,數(shù)據(jù)庫

5 字符串類型

字符串類型用來存儲(chǔ)字符串?dāng)?shù)據(jù),還可以存儲(chǔ)圖片和聲音的二進(jìn)制數(shù)據(jù)。字符串可以區(qū)分或者不區(qū)分大小寫的串比較,還可以進(jìn)行正則表達(dá)式的匹配查找。

下表中列出了 MySQL 中的字符串?dāng)?shù)據(jù)類型,括號(hào)中的M表示可以為其指定長度。

類型名稱 說明 長度范圍 占用的存儲(chǔ)空間
CHAR(M) 固定長度 0<=M<=255 M 個(gè)字節(jié)
VARCHAR(M) 變長字符串 0<=M<=65535 M+1個(gè)字節(jié)
TINYTEXT 非常小字符串 0<=L<=255 L+1字節(jié)
TEXT 小的字符串 0<=L<=65535 L+2字節(jié)
MEDIUMTEXT 中等大小的字符串 0<=L<=16777215 L+3字節(jié)
LONGTEXT 大的字符串 0<=L<=4294967295 L+4字節(jié)
ENUM 枚舉類型,只能有一個(gè)枚舉字符串值 0<=L<=65535 1或2個(gè)字節(jié),取決于枚舉值的數(shù)目 (最大值為65535)
SET 字符串集合,字符串對(duì)象可以有零個(gè)或 多個(gè)SET成員 0<=L<=64 1、2、3、4或8個(gè)字節(jié),取決于集合 成員的數(shù)量(最多64個(gè)成員)

CHAR 和 VARCHAR 類型

CHAR 和 VARCHAR 類型都可以存儲(chǔ)比較短的字符串。

類型 特點(diǎn) 長度 長度范圍 占用存儲(chǔ)空間
CHAR(M) 固定長度 M 0<=M<=255 M個(gè)字節(jié)
VARCHAR(M) 可變長度 M 0<=M<=65535 (實(shí)際長度+1/2)個(gè)字節(jié)

CHAR類型:

  • CHAR(M) 為固定長度字符串,在定義時(shí)指定字符串長度。如果不指定,則默認(rèn)為1個(gè)字符。

  • 如果保存時(shí),數(shù)據(jù)的實(shí)際長度比CHAR類型聲明的長度小,則會(huì)在右側(cè)填充空格以達(dá)到指定的長度。當(dāng)檢索 CHAR 值時(shí),尾部的空格將被刪除。

  • 定義CHAR類型字段時(shí),申明的字段長度即為CHAR類型字段所占的存儲(chǔ)空間的字節(jié)數(shù)。

CREATE TABLE test_char
(
	f1 CHAR,
	f2 CHAR(5)
);

DESC test_char;

INSERT INTO test_char(f1) VALUES('h');
#Data too long for column 'f1' at row 1
INSERT INTO test_char(f1) VALUES('he');
INSERT INTO test_char(f1) VALUES('你');

INSERT INTO test_char(f2) VALUES('C語言');
#Data too long for column 'f2' at row 1
INSERT INTO test_char(f2) VALUES('C語言Plus');

#測(cè)試在右側(cè)填充的空格,會(huì)在查詢的時(shí)候去掉的情況
SELECT CONCAT(f2,'***') FROM test_char;
#注意:自己插入的空格也會(huì)被去掉
INSERT INTO test_char(f2) VALUES('fk  ');

SELECT * FROM test_char;

VARCHAR類型:

  • VARCHAR(M) 定義時(shí),必須指定長度M,否則會(huì)報(bào)錯(cuò)。

  • VARCHAR(M)指的是能存儲(chǔ)M個(gè)字符,而實(shí)際占用的空間為字符串的實(shí)際長度加 1或者2。

  • VARCHAR 在值保存和檢索時(shí)尾部的空格仍保留。

#錯(cuò)誤,沒有指定長度
CREATE TABLE test_varchar
(
	name VARCHAR
);

CREATE TABLE test_varchar
(
	name VARCHAR(5)
);

INSERT INTO test_varchar VALUES('星星'),('太陽月亮');
#Data too long forcolumn 'NAME' at row 1
INSERT INTO test_varchar VALUES('星星太陽月亮');

TEXT 類型

TEXT用來保存文本類型的字符串,如文章內(nèi)容、評(píng)論等。當(dāng)保存或查詢 TEXT 列的值時(shí),不刪除尾部空格。

TEXT 類型分為 4 種:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。不同的 TEXT 類型的存儲(chǔ)空間和數(shù)據(jù)長度不同。

在向TEXT類型的字段插入數(shù)據(jù)時(shí),系統(tǒng)自動(dòng)按照實(shí)際長度存儲(chǔ),不需要預(yù)先定義長度。

類型 說明 大小(字節(jié))
TINYTEXT 小文本 0<=L<=255
TEXT 普通文本 0<=L<=65535
MEDIUMTEXT 中等大小文本 0<=L<=16777215
LONGTEXT 長文本 0<=L<=4294967295 (相當(dāng)于4GB字符)

TEXT文本類型,可以存儲(chǔ)比較大的文本段,搜索速度稍慢,因此如果不是特別大的內(nèi)容,建議使用CHAR,VARCHAR來替代。還有TEXT類型不用加默認(rèn)值,加了也沒用。

ENUM 類型

ENUM 類型也叫作枚舉類型,ENUM類型的取值范圍需要在定義字段是進(jìn)行指定。設(shè)置字段值時(shí),ENUM類型只允許從成員中選取單個(gè)值,不能一次選取多個(gè)值。如果創(chuàng)建的成員中有空格,尾部的空格將自動(dòng)被刪除。

類型 長度范圍 占用存儲(chǔ)空間
ENUM 1<=L<=65535 1或2個(gè)字節(jié)
  • ENUM 值在內(nèi)部用整數(shù)表示,每個(gè)枚舉值均有一個(gè)索引值;
  • 列表值所允許的成員值從 1 開始編號(hào),MySQL 存儲(chǔ)的就是這個(gè)索引編號(hào),枚舉最多可以有 65535 個(gè)元素。

ENUM 值依照列索引順序排列,并且空字符串排在非空字符串前,NULL 值排在其他所有枚舉值前。

提示:ENUM 列總有一個(gè)默認(rèn)值。如果將 ENUM 列聲明為 NULL,NULL 值則為該列的一個(gè)有效值,并且默認(rèn)值為 NULL。如果 ENUM 列被聲明為 NOT NULL,其默認(rèn)值為允許的值列表的第 1 個(gè)元素。

  • 查看enum字段的所有值
SELECT
column_type
FROM
information_schema. COLUMNS
WHERE
#TABLE_SCHEMA = "test" AND
DATA_TYPE = 'enum'
AND table_name="test_enum"
AND column_name="ch";
  • 測(cè)試
CREATE TABLE test_enum
(
	gender ENUM('男','女','unknown')
);

INSERT INTO test_enum VALUES('男');
#Data truncated for column 'ch' at row 1
INSERT INTO test_enum VALUES('中');
#可以使用索引來插入枚舉元素(注意:索引從1開始)
INSERT INTO test_enum VALUES(1),('2');

#當(dāng)enum字段沒有申明為NOT NULL時(shí),插入NULL也是合法的
INSERT INTO test_enum VALUES(NULL);

SELECT * FROM test_enum;

SET 類型

SET 是一個(gè)字符串的對(duì)象,可以有零或多個(gè)值,SET 列最多可以有 64 個(gè)成員,值為表創(chuàng)建時(shí)規(guī)定的一列值。

成員個(gè)數(shù)范圍 占用的存儲(chǔ)空間
1<=L<=8 1個(gè)字節(jié)
9<=L<=16 2個(gè)字節(jié)
17<=L<=24 3個(gè)字節(jié)
25<=L<=32 4個(gè)字節(jié)
33<=L<=64 8個(gè)字節(jié)
  • 與 ENUM 類型相同,SET 值在內(nèi)部用整數(shù)表示,列表中每個(gè)值都有一個(gè)索引編號(hào)。當(dāng)創(chuàng)建表時(shí),SET 成員值的尾部空格將自動(dòng)刪除。

  • 但與 ENUM 類型不同的是,ENUM 類型的字段只能從定義的列值中選擇一個(gè)值插入,而 SET 類型的列可從定義的列值中選擇多個(gè)字符的聯(lián)合。

提示:如果插入 SET 字段中的列值有重復(fù),則 MySQL 自動(dòng)刪除重復(fù)的值;插入 SET 字段的值的順序并不重要,MySQL 會(huì)在存入數(shù)據(jù)庫時(shí),按照定義的順序顯示;

測(cè)試

CREATE TABLE test_set
(
	hobby SET('吃飯','睡覺','寫B(tài)ug')
);

INSERT INTO test_set VALUES('吃飯');

INSERT INTO test_set VALUES('吃飯,睡覺');

#重復(fù)插入時(shí),會(huì)自動(dòng)刪除重復(fù)數(shù)據(jù)
INSERT INTO test_set VALUES('吃飯,睡覺,吃飯');
#插入的值在set中不存在時(shí),會(huì)報(bào)錯(cuò)
INSERT INTO test_set VALUES('吃飯,睡覺,花錢');

SELECT * FROM test_set;

6 二進(jìn)制類型

MySQL中的二進(jìn)制字符串類型主要存儲(chǔ)一些二進(jìn)制數(shù)據(jù),比如可以存儲(chǔ)圖片、音頻、視頻等二進(jìn)制數(shù)據(jù)。

包括 BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。

下表中列出了 MySQL 中的二進(jìn)制數(shù)據(jù)類型,括號(hào)中的M表示可以為其指定長度。

類型名稱 說明 大小(字節(jié))
BIT(M) 位字段類型 大約 (M+7)/8 字節(jié)
BINARY(M) 固定長度二進(jìn)制字符串 M 字節(jié)
VARBINARY (M) 可變長度二進(jìn)制字符串 M+1 字節(jié)
TINYBLOB (M) 非常小的BLOB L+1 字節(jié),在此,L<2^8
BLOB (M) 小 BLOB L+2 字節(jié),在此,L<2^16
MEDIUMBLOB (M) 中等大小的BLOB L+3 字節(jié),在此,L<2^24
LONGBLOB (M) 非常大的BLOB L+4 字節(jié),在此,L<2^32

BIT 類型

位字段類型。M 表示每個(gè)值的位數(shù),范圍為 1~64。如果 M 被省略,默認(rèn)值為 1。如果為 BIT(M) 列分配的值的長度小于 M 位,在值的左邊用 0 填充。例如,為 BIT(6) 列分配一個(gè)值 b’101’,其效果與分配 b’000101’ 相同。

BIT 數(shù)據(jù)類型用來保存位字段值,例如以二進(jìn)制的形式保存數(shù)據(jù) 13,13 的二進(jìn)制形式為 1101,在這里需要位數(shù)至少為 4 位的 BIT 類型,即可以定義列類型為 BIT(4)。大于二進(jìn)制 1111 的數(shù)據(jù)是不能插入 BIT(4) 類型的字段中的。

提示:默認(rèn)情況下,MySQL 不可以插入超出該列允許范圍的值,因而插入數(shù)據(jù)時(shí)要確保插入的值在指定的范圍內(nèi)。

BINARY 和 VARBINARY 類型

BINARY 和 VARBINARY 類型類似于 CHAR 和 VARCHAR,不同的是它們包含二進(jìn)制字節(jié)字符串。使用的語法格式如下:

列名稱 BINARY(M) 或者 VARBINARY(M)

BINARY 類型的長度是固定的,指定長度后,不足最大長度的,將在它們右邊填充 “\0” 補(bǔ)齊,以達(dá)到指定長度。例如,指定列數(shù)據(jù)類型為 BINARY(3),當(dāng)插入 a 時(shí),存儲(chǔ)的內(nèi)容實(shí)際為 “a\0\0”,當(dāng)插入 ab 時(shí),實(shí)際存儲(chǔ)的內(nèi)容為“ab\0”,無論存儲(chǔ)的內(nèi)容是否達(dá)到指定的長度,存儲(chǔ)空間均為指定的值 M。

VARBINARY 類型的長度是可變的,指定好長度之后,長度可以在 0 到最大值之間。例如,指定列數(shù)據(jù)類型為 VARBINARY(20),如果插入的值長度只有 10,則實(shí)際存儲(chǔ)空間為 10 加 1,實(shí)際占用的空間為字符串的實(shí)際長度加 1。

BLOB 類型

BLOB 是一個(gè)二進(jìn)制的對(duì)象,用來存儲(chǔ)可變數(shù)量的數(shù)據(jù)。BLOB 類型分為 4 種:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB,它們可容納值的最大長度不同,如下表所示。

數(shù)據(jù)類型 存儲(chǔ)范圍
TINYBLOB 最大長度為255 (28-1)字節(jié)
BLOB 最大長度為65535 (216-1)字節(jié)
MEDIUMBLOB 最大長度為16777215 (224-1)字節(jié)
LONGBLOB 最大長度為4294967295或4GB (231-1)字節(jié)

BLOB 列存儲(chǔ)的是二進(jìn)制字符串(字節(jié)字符串),TEXT 列存儲(chǔ)的是非進(jìn)制字符串(字符字符串)。BLOB 列是字符集,并且排序和比較基于列值字節(jié)的數(shù)值;TEXT 列有一個(gè)字符集,并且根據(jù)字符集對(duì)值進(jìn)行排序和比較。

總結(jié)

總的來說,選擇合適的數(shù)據(jù)類型可以提高數(shù)據(jù)庫的性能、節(jié)省存儲(chǔ)空間、確保數(shù)據(jù)的一致性和有效性,并方便進(jìn)行數(shù)據(jù)處理和計(jì)算。因此,在設(shè)計(jì)數(shù)據(jù)庫時(shí),選擇合適的數(shù)據(jù)類型非常重要。~下節(jié)帶來MySQL視圖的分享文章來源地址http://www.zghlxwxcb.cn/news/detail-671494.html

到了這里,關(guān)于【?MySQL | 數(shù)據(jù)類型(二)】字符串 | 二進(jìn)制類型的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?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)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

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

相關(guān)文章

  • 【Golang】十六進(jìn)制字符串轉(zhuǎn)二進(jìn)制字符串

    在計(jì)算機(jī)科學(xué)中,我們經(jīng)常需要在不同進(jìn)制的數(shù)字之間進(jìn)行轉(zhuǎn)換。Go語言提供了一系列的標(biāo)準(zhǔn)庫來方便我們進(jìn)行這些進(jìn)制轉(zhuǎn)換。本文將介紹如何使用Go語言將十六進(jìn)制字符串轉(zhuǎn)換為二進(jìn)制字符串。 首先,我們定義一個(gè)函數(shù) hexToBinary 用于執(zhí)行這個(gè)轉(zhuǎn)換。該函數(shù)接受一個(gè)十六進(jìn)制

    2024年02月02日
    瀏覽(36)
  • Python字符串與二進(jìn)制字符串之間的轉(zhuǎn)換

    字符串:可以包含任意字符 二進(jìn)制字符串:轉(zhuǎn)換結(jié)果的長度為8的倍數(shù) 涉及的內(nèi)容: 字符串與bytes類型的互相轉(zhuǎn)換 bytes類轉(zhuǎn)與 list 列表的互相轉(zhuǎn)換 bin函數(shù)的使用 int函數(shù)的使用 步驟: 將字符串轉(zhuǎn)成bytes類型 將bytes類型轉(zhuǎn)成list類型(元素為int型) 將list的每個(gè)元素轉(zhuǎn)成二進(jìn)制字

    2024年02月13日
    瀏覽(28)
  • 【Golang】二進(jìn)制字符串轉(zhuǎn)換為數(shù)字

    【Golang】二進(jìn)制字符串轉(zhuǎn)換為數(shù)字

    ?在本文中,我們將探討如何使用 Go 語言將十六進(jìn)制字符串轉(zhuǎn)換為二進(jìn)制字符串,將不定長整型補(bǔ)碼字符串轉(zhuǎn)換為數(shù)字,以及如何將 IEEE754 標(biāo)準(zhǔn)的單精度(32位)和雙精度(64位)浮點(diǎn)數(shù)字符串轉(zhuǎn)換為數(shù)字。最后,我們將討論如何將布爾類型的二進(jìn)制字符串轉(zhuǎn)換為布爾值。 這

    2024年01月16日
    瀏覽(27)
  • [ERR] [22001] [Microsoft][SQL Server Native Client 10.0][SQL Server]將截?cái)嘧址蚨M(jìn)制數(shù)據(jù)

    [ERR] [22001] [Microsoft][SQL Server Native Client 10.0][SQL Server]將截?cái)嘧址蚨M(jìn)制數(shù)據(jù)

    使用Navicat導(dǎo)入.csv SQL Server導(dǎo)入.csv文件時(shí)報(bào)錯(cuò),但是這個(gè)錯(cuò)誤不知道具體是哪里的錯(cuò),然后使用DBeaver導(dǎo)入,提示如下錯(cuò)誤 根據(jù)報(bào)錯(cuò)信息可以看到 Can\\\'t parse numeric value [NULL] using formatter ,不能解析NULL為numeric的值,到.csv文件中查看列值 可以看到列中有NULL值 既然報(bào)的是 Can\\\'t pa

    2024年02月12日
    瀏覽(23)
  • 【Golang】補(bǔ)碼二進(jìn)制字符串轉(zhuǎn)整型

    ?在計(jì)算機(jī)科學(xué)中,原碼、反碼和補(bǔ)碼是用來表示有符號(hào)整數(shù)的三種不同的二進(jìn)制編碼方式。下面將詳細(xì)解釋每一種編碼方式的特點(diǎn)和用途。 原碼 ?原碼是最直觀的有符號(hào)數(shù)表示方法。在原碼表示法中,最高位(符號(hào)位)用來表示數(shù)的正負(fù),0表示正數(shù),1表示負(fù)數(shù)。正數(shù)的原

    2024年01月21日
    瀏覽(23)
  • SQL server中:常見問題匯總(如:修改表時(shí)不允許修改表結(jié)構(gòu)、將截?cái)嘧址蚨M(jìn)制數(shù)據(jù)等)

    SQL server中:常見問題匯總(如:修改表時(shí)不允許修改表結(jié)構(gòu)、將截?cái)嘧址蚨M(jìn)制數(shù)據(jù)等)

    步驟 選擇菜單欄中的“工具”-“選項(xiàng)”,在選項(xiàng)對(duì)話框左欄中找到“設(shè)計(jì)器”,在設(shè)計(jì)器右邊取消勾選“阻止保存要求重新創(chuàng)建表的更改”即可。 圖例 注意 設(shè)計(jì)表時(shí),盡量一次性設(shè)計(jì)成功,避免使用alter修改表,修改起來有各種約束,不容易修改。 解決: 你設(shè)置的數(shù)據(jù)類型

    2024年02月03日
    瀏覽(22)
  • java案例5-4 字符串轉(zhuǎn)換為二進(jìn)制

    java案例5-4 字符串轉(zhuǎn)換為二進(jìn)制

    本例要求編寫一個(gè)程序,從鍵盤錄入一個(gè)字符串,將字符串轉(zhuǎn)換為二進(jìn)制數(shù)。在轉(zhuǎn)換時(shí),將字符串中的每個(gè)字符單獨(dú)轉(zhuǎn)換為一個(gè)二進(jìn)制數(shù),將所有二進(jìn)制數(shù)連接起來進(jìn)行輸出。 案例在實(shí)現(xiàn)時(shí),要求使用Math類、String類以及Scanner等常見Java API的常用方法. 2.運(yùn)行結(jié)果 學(xué)會(huì)分析“十

    2024年02月09日
    瀏覽(43)
  • LeetCode_字符串_簡單_67.二進(jìn)制求和

    給你兩個(gè)二進(jìn)制字符串 a 和 b,以二進(jìn)制字符串的形式返回它們的和。 示例 1: 輸入:a = “11”, b = “1” 輸出:“100” 示例 2: 輸入:a = “1010”, b = “1011” 輸出:“10101” 提示: 1 = a.length, b.length = 10 4 a 和 b 僅由字符 ‘0’ 或 ‘1’ 組成 字符串如果不是 “0” ,就不含前

    2024年02月09日
    瀏覽(33)
  • 2023-06-14 LeetCode每日一題(二進(jìn)制字符串前綴一致的次數(shù))

    點(diǎn)擊跳轉(zhuǎn)到題目位置 給你一個(gè)長度為 n 、下標(biāo)從 1 開始的二進(jìn)制字符串,所有位最開始都是 0 。我們會(huì)按步翻轉(zhuǎn)該二進(jìn)制字符串的所有位(即,將 0 變?yōu)?1)。 給你一個(gè)下標(biāo)從 1 開始的整數(shù)數(shù)組 flips ,其中 flips[i] 表示對(duì)應(yīng)下標(biāo) i 的位將會(huì)在第 i 步翻轉(zhuǎn)。 二進(jìn)制字符串 前綴

    2024年02月08日
    瀏覽(98)
  • Python每日一練(20230420) 數(shù)組逐位判斷、交錯(cuò)字符串、二進(jìn)制求和

    Python每日一練(20230420) 數(shù)組逐位判斷、交錯(cuò)字符串、二進(jìn)制求和

    目錄 1. 數(shù)組逐位判斷???? 2. 交錯(cuò)字符串?????? 3. 二進(jìn)制求和???? ?? 每日一練刷題專欄??? Golang每日一練 專欄 Python每日一練 專欄 C/C++每日一練 專欄 Java每日一練 專欄 比如有以下數(shù)組: a1: 1,0,0,1,0,0,0,1 a2: 0,0,0,0,1,1,1,1 a3: 0,1,0,1,0,1,0,0 a4: 1,0,1,1,1,1,0,0 a5: ....... 抓取三個(gè)數(shù)

    2024年02月15日
    瀏覽(90)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包