最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL數(shù)據(jù)類型之淺談字符串(string)

 更新時間:2022年10月01日 09:19:23   作者:leboop-L  
這篇文章主要介紹了MySQL數(shù)據(jù)類型之字符串(string)的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

字符類型(CHAR Types)

CREATE TABLE t1 (c1 CHAR(10));

該語句創(chuàng)建了一張t1表,表中只有一個字段c1,類型為char,char(10)括號中的10表示字段c1最多能夠存儲10個字符。

char最多可以存儲255個字符,最小可以存儲0個字符。

可以如下向表中插入數(shù)據(jù):

INSERT INTO t1 (c1) VALUES('');
INSERT INTO t1 (c1) VALUES('xy');
INSERT INTO t1 (c1) VALUES('0123456789');

該語句向c1字符中分別插入了長度為0,2和10的三個字符,可以如下查詢數(shù)據(jù):

select * from t1

結(jié)果如圖:

雖然插入了兩條不足10個字符的數(shù)據(jù),但是MySQL在存儲char類型數(shù)據(jù)時,仍然占用10個字符個空間,它在不足10個字符的右邊添加空白字符補(bǔ)足10個字符長度,所以char類型存儲時的長度是固定的。

可以如下查詢字符長度:

SELECT c1, CHAR_LENGTH(c1) FROM t1;

結(jié)果如圖:

有人肯定要問,剛剛不是說每個值都應(yīng)該是10個字符長度嗎?沒錯。但是MySQL在查詢char類型數(shù)據(jù)時,默認(rèn)做了一個處理,它將值后面的所有空格全部移除,然后再將結(jié)果返回給我們。

也就是上面的這個結(jié)果??梢匀缦聛砣∠@個處理

SET sql_mode = 'PAD_CHAR_TO_FULL_LENGTH';

再次執(zhí)行上面的這個查詢,結(jié)果是:

圖中豎線是鼠標(biāo)光標(biāo)位置,光標(biāo)前面就是10個空白字符。

可變字符類型(Varchar Types)

varchar類型和char類型非常相似。如下創(chuàng)建一張表t2

CREATE TABLE t2 (c1 VARCHAR(10));

該表c1字段是varchar類型,10也是表示c1字符能夠存儲的最大字符長度。如下向表中插入三條數(shù)據(jù)

INSERT INTO t2 (c1) VALUES('');
INSERT INTO t2 (c1) VALUES('xy');
INSERT INTO t2 (c1) VALUES('0123456789');

不同的是MySQL在存儲VARCHAR類型時,存儲實際長度,也就是說存儲c1字段的值時分別占用0、2和10個字符空間(實際要大1-2個字節(jié)用于存儲字符長度),這點和char類型是不同的。

可以執(zhí)行如下語句來驗證

SET sql_mode = 'PAD_CHAR_TO_FULL_LENGTH';
SELECT c1, CHAR_LENGTH(c1) FROM t2;

設(shè)置sql_mode之前和之后,c1的長度不變,如圖:

varchar類型能夠存儲最多65535個字符,但是需要注意,不是每個表的字段都能申請到這個長度,因為MySQL對單行的大小限制為65535個字節(jié),也就是表的一行的所有字段大小的和不能超過65535個字節(jié)。如果其他字段已經(jīng)申請了比較大的空間,那么c1字段可能就不能申請65535個字符空間了。

(1)存儲超過定義時指定長度的字符

這個由sql_mode決定,在strict mode下,插入失敗并報錯,在非strict mode會插入成功,超過部分會被截取掉,如圖:

strict mode:

重新設(shè)置sql_mode變量,再插入:

二進(jìn)制類型(BINARY Types)

binary類型和char類型很相似,binary類型存儲的是字節(jié)串而不是字符串,存儲的最大字節(jié)串長度也是255,binary類型存儲不足長度的值時也是在值的右邊進(jìn)行補(bǔ)全,不過用于補(bǔ)全的值是0x00(字符表示為'\0'),但查詢時會保留尾部補(bǔ)全的值。

例如對于BINARY(3),插入'a '時,存儲的是'a \0',插入'a\0'時,存儲的是'a\0\0',查詢時分別是'a \0'和'a\0\0'。

可以如下驗證

CREATE TABLE t3 (c BINARY(3));
INSERT INTO t3 VALUES('a');
SELECT c,CHAR_LENGTH(c),HEX(c),c = 'a', c = 'a\0\0' from t3;

結(jié)果如圖:

說明查詢到的是'a\0\0',不過顯示的是a。

可變二進(jìn)制類型(VARBINARY Types)

varbinary和varchar類似,存儲的是字節(jié)串,存儲的最大字節(jié)長度為65535,存儲實際定義的字節(jié)長度,不會在尾部用'\0'補(bǔ)全,查詢時當(dāng)然也就沒有移除尾部補(bǔ)全的值。

二進(jìn)制大對象類型(BLOB Types)

blob類型可以看成是varbinary類型,可以存儲超大二進(jìn)制數(shù)據(jù)。

根據(jù)存儲長度不同又分為四種: TINYBLOB, BLOB, MEDIUMBLOB, 和 LONGBLOB。

文本類型(Text Types)

text可以看成是varchar,可以存儲超大的字符串?dāng)?shù)據(jù)。

根據(jù)存儲長度不同又分為四種:TINYTEXT, TEXT,MEDIUMTEXT和 LONGTEXT.

枚舉類型(ENUM Type)

枚舉類型主要用于某個列的取值只有有限的幾個,比如表示星期幾的列,只會是星期一,星期二,...,星期日這個值。

可以如下創(chuàng)建枚舉類型:

CREATE TABLE shirts (
    name VARCHAR(40),
    size ENUM('x-small', 'small', 'medium', 'large', 'x-large')
);

 如下插入一些數(shù)據(jù)

INSERT INTO shirts (name, size) VALUES 
('dress shirt','large'),
('t-shirt','medium'),
('polo shirt','ss');

結(jié)果如下:

當(dāng)插入的值不在枚舉類型中,size中會是空白。可以通過索引進(jìn)行查詢:

select * from shirts where size=4

等價于

select * from shirts where size='larger'

'x-small', 'small', 'medium', 'large', 'x-large'的索引分別是1,2,3,4,NULL的索引是NULL,空字符串''的索引是0。

枚舉類型中可以有65535個不同的取值。

集合類型(SET Type)

有時候,一個列的取值只可能是有限個值的不重復(fù)組合,如下創(chuàng)建集合類型

CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));

插入數(shù)據(jù): 

INSERT INTO myset (col) VALUES 
('a,d'),
('d,a'), 
('a,d,a'), 
('a,d,d'), 
('d,a,d');

結(jié)果如圖:

從結(jié)果來看,集合類型中的集合就是數(shù)學(xué)中的集合,滿足無序和不重復(fù)。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mysql處理Duplicate entry ‘6‘ for key ‘PRIMARY‘問題及解決

    Mysql處理Duplicate entry ‘6‘ for key 

    這篇文章主要介紹了Mysql處理Duplicate entry ‘6‘ for key ‘PRIMARY‘問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 詳解Mysql主從同步配置實戰(zhàn)

    詳解Mysql主從同步配置實戰(zhàn)

    這篇文章主要介紹了詳解Mysql主從同步實戰(zhàn),實例分析了Mysql主從同步的原理和實現(xiàn),非常具有實用價值,需要的朋友可以參考下。
    2017-03-03
  • MySQL5.7.14下載安裝圖文教程及MySQL數(shù)據(jù)庫語句入門大全

    MySQL5.7.14下載安裝圖文教程及MySQL數(shù)據(jù)庫語句入門大全

    這篇文章主要介紹了MySQL5.7.14下載安裝詳細(xì)教程及MySQL數(shù)據(jù)庫語句入門大全的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • mysql 按中文字段排序

    mysql 按中文字段排序

    在MySQL中,進(jìn)行中文排序和查找的時候,對漢字的排序和查找結(jié)果是錯誤的。 這種情況在MySQL的很多版本中都存在。
    2009-01-01
  • 淺析MySQL之字符串函數(shù)

    淺析MySQL之字符串函數(shù)

    這篇文章介紹了MySQL字符串函數(shù),有需要的朋友可以參考一下
    2013-10-10
  • MySQL?source導(dǎo)入很慢的解決方法

    MySQL?source導(dǎo)入很慢的解決方法

    在mysql導(dǎo)入數(shù)據(jù)量非常大的sql文件的時候,速度會非常慢,這篇文章主要給大家介紹了關(guān)于MySQL?source導(dǎo)入很慢的解決方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • MySQL中Stmt 預(yù)處理提高效率問題的小研究

    MySQL中Stmt 預(yù)處理提高效率問題的小研究

    在oracle數(shù)據(jù)庫中,有一個變量綁定的用法,很多人都比較熟悉,可以調(diào)高數(shù)據(jù)庫效率,應(yīng)對高并發(fā)等,好吧,這其中并不包括我,當(dāng)同事問我MySQL中有沒有類似的寫法時,我是很茫然的,于是就上網(wǎng)查,找到了如下一種寫法
    2011-08-08
  • 基于MySQL在磁盤上存儲NULL值

    基于MySQL在磁盤上存儲NULL值

    這篇文章主要介紹了基于MySQL在磁盤上存儲NULL值,NULL值列表,一行數(shù)據(jù)里可能有的字段值是NULL,比如nickname字段,允許為NULL,存儲時,如果沒賦值,這字段值就是NULL,下文關(guān)于NULL值的相關(guān)資料,需要的小伙伴可以參考一下
    2022-02-02
  • MySQL中的集合運算符詳解

    MySQL中的集合運算符詳解

    本文主要介紹了MySQL中的集合運算符,包括UNION、INTERSECT、EXCEPT等,這些運算符用于結(jié)合兩個或多個SELECT語句的結(jié)果集,并進(jìn)行去重、合并或差集操作
    2025-02-02
  • MySQL遞歸sql語句WITH表達(dá)式實現(xiàn)方法代碼

    MySQL遞歸sql語句WITH表達(dá)式實現(xiàn)方法代碼

    SQL遞歸查詢語句是指通過遞歸方式對數(shù)據(jù)進(jìn)行查詢的語句,下面這篇文章主要給大家介紹了關(guān)于MySQL遞歸sql語句WITH表達(dá)式實現(xiàn)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01

最新評論

平谷区| 客服| 江津市| 金华市| 晋城| 专栏| 德昌县| 通州市| 青铜峡市| 清苑县| 北票市| 马关县| 南皮县| 股票| 庆元县| 惠来县| 卓资县| 桐柏县| 娱乐| 九台市| 商河县| 邵东县| 安宁市| 吴桥县| 德格县| 安顺市| 会东县| 海宁市| 上高县| 扎兰屯市| 乌苏市| 微博| 资阳市| 古田县| 墨江| 桃园县| 石柱| 福贡县| 枣阳市| 饶河县| 木里|