日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

numeric比较大小 数据库_mysql大小写敏感与校对规则

發(fā)布時(shí)間:2025/3/20 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 numeric比较大小 数据库_mysql大小写敏感与校对规则 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

正文

大家在使用mysql過程中,可能會(huì)遇到類似以下的問題:

模糊匹配 jg%,結(jié)果以JG開頭的字符串也出現(xiàn)在結(jié)果集中,大家很自然的認(rèn)為是大小寫敏感的問題。那么mysql中大小寫敏感是如何控制的;數(shù)據(jù)庫名,表名,字段名這些字典對(duì)象以及字段值的大小敏感是如何控制的;以及校驗(yàn)規(guī)則與索引的關(guān)系,這是本文要討論的內(nèi)容。

數(shù)據(jù)庫名、表名:

windows建庫:

windows建表:

linux建庫:

linux建表:

以上可以看出windows下大小寫不敏感,linux下是敏感的,故前者不可以同時(shí)建test和TEST,而后者可以。

大小寫區(qū)分規(guī)則:

Linux下:

  • 數(shù)據(jù)庫名與表名是嚴(yán)格區(qū)分大小寫的;
    • 表的別名是嚴(yán)格區(qū)分大小寫的;
    • 列名與列的別名在所有的情況下均是忽略大小寫的;
  • 變量名也是嚴(yán)格區(qū)分大小寫的;

Windows下:

  • 都不區(qū)分大小寫。

Mac OS下,文件系統(tǒng)類型HFS+,非UFS卷:

  • 都不區(qū)分大小寫。

mysql中控制數(shù)據(jù)庫名和表名的大小寫敏感由參數(shù)lowercasetable_names控制,為0時(shí)表示區(qū)分大小寫,為1時(shí),表示將名字轉(zhuǎn)化為小寫后存儲(chǔ),不區(qū)分大小寫。

在mysql中,數(shù)據(jù)庫對(duì)應(yīng)數(shù)據(jù)目錄中的目錄。數(shù)據(jù)庫中的每個(gè)表至少對(duì)應(yīng)數(shù)據(jù)庫目錄中的一個(gè)文件(也可能是多個(gè),取決于存儲(chǔ)引擎)。因此,所使用操作系統(tǒng)的大小寫敏感性決定了數(shù)據(jù)庫名和表名的大小寫敏感性。

lowercasefile_system:

變量說明是否數(shù)據(jù)目錄所在的文件系統(tǒng)對(duì)文件名的大小寫敏感。ON說明對(duì)文件名的大小寫不敏感,OFF表示敏感。

lowercasetable_names:

unix下默認(rèn)值為 0 ;Windows下默認(rèn)值是 1 ;Mac OS X下默認(rèn)值是 2

*0:*使用CREATE TABLE或CREATE DATABASE語句指定的大小寫字母在硬盤上保存表名和數(shù)據(jù)庫名。名稱比較對(duì)大小寫敏感。在大小寫不敏感的操作系統(tǒng)如windows或Mac OS x上我們不能將該參數(shù)設(shè)為0,如果在大小寫不敏感的文件系統(tǒng)上將此參數(shù)強(qiáng)制設(shè)為0,并且使用不同的大小寫訪問MyISAM表名,可能會(huì)導(dǎo)致索引破壞。

*1:*表名在硬盤上以小寫保存,名稱比較對(duì)大小寫不敏感。MySQL將所有表名轉(zhuǎn)換為小寫在存儲(chǔ)和查找表上。該行為也適合數(shù)據(jù)庫名和表的別名。該值為Windows的默認(rèn)值。

*2:*表名和數(shù)據(jù)庫名在硬盤上使用CREATE TABLE或CREATE DATABASE語句指定的大小寫字母進(jìn)行保存,但MySQL將它們轉(zhuǎn)換為小寫在查找表上。名稱比較對(duì)大小寫不敏感,即按照大小寫來保存,按照小寫來比較。注釋:只在對(duì)大小寫不敏感的文件系統(tǒng)上適用innodb表名用小寫保存。

windows上:

linux上:

為了避免大小寫引發(fā)的問題,一種推薦的命名規(guī)則是:在定義數(shù)據(jù)庫、表、列的時(shí)候全部采用小寫字母加下劃線的方式,不使用任何大寫字母。

字段名和字段值:

字段名通常都是不區(qū)分大小寫的。

字段值的大小寫由mysql的校對(duì)規(guī)則來控制。提到校對(duì)規(guī)則,就不得不說字符集。字符集是一套符號(hào)和編碼,校對(duì)規(guī)則是在字符集內(nèi)用于比較字符的一套規(guī)則,比如定義'A'<'B'這樣的關(guān)系的規(guī)則。不同的字符集有多種校對(duì)規(guī)則,一般而言,校對(duì)規(guī)則以其相關(guān)的字符集名開始,通常包括一個(gè)語言名,并且以ci(大小寫不敏感)、cs(大小寫敏感)或bin(二元)結(jié)束 。比如 utf8字符集,utf8generalci,表示不區(qū)分大小寫,這個(gè)是utf8字符集默認(rèn)的校對(duì)規(guī)則;utf8generalcs表示區(qū)分大小寫,utf8bin表示二進(jìn)制比較,同樣也區(qū)分大小寫。

校對(duì)規(guī)則通過關(guān)鍵字collate指定,比如創(chuàng)建數(shù)據(jù)庫test2,指定字符集為utf8,校對(duì)規(guī)則為utf8_bin

create database test2 default character set utf8 collate utf8_bin;

通過上述語句說明數(shù)據(jù)庫test2中的數(shù)據(jù)按utf8編碼,并且是對(duì)大小寫敏感的。

有時(shí)候我們建庫時(shí),沒有指定校對(duì)規(guī)則校對(duì)時(shí)字符大小寫敏感,但是我們查詢時(shí),又需要對(duì)字符比較大小寫敏感,就比如開篇中的例子,只想要jg開頭的字符串。沒關(guān)系,mysql提供了collate語法,通過指定utf8_bin校對(duì)規(guī)則即可。

還有另外一種方法,通過binary關(guān)鍵字,將串轉(zhuǎn)為二進(jìn)制進(jìn)行比較,由于大小寫字符的二進(jìn)制肯定不同,因此可以認(rèn)為是區(qū)分大小的一種方式。

校對(duì)規(guī)則與索引存儲(chǔ)的關(guān)系。因?yàn)樾?duì)規(guī)則會(huì)用于字符串之間比較,而索引是基于比較有序排列的,因此校對(duì)規(guī)則會(huì)影響記錄的索引順序。下面舉一個(gè)小例子說明:

建表: create table test3(name varchar(100), primary key(name)); create table test4(name varchar(100), primary key(name)) collate utf8_bin; 給表test3插入數(shù)據(jù): insert into test3(name) values('abc'); insert into test3(name) values('ABD'); insert into test3(name) values('ZBC');給表test4插入數(shù)據(jù): insert into test4(name) values('abc'); insert into test4(name) values('ABD'); insert into test4(name) values('ZBC');查表: select * from test3; select * from test4;

從結(jié)果可以看到test3和test4返回的結(jié)果集中,記錄的相對(duì)順序是不同的,因?yàn)槭侨頀呙?#xff0c;返回的記錄體現(xiàn)了主鍵順序。由于test3表校驗(yàn)規(guī)則采用默認(rèn)的utf8generalci,大小寫不敏感,因此abc

關(guān)于mysql相關(guān)海量教程可以關(guān)注文末公眾號(hào)回復(fù)【1】加助手微信索取。

本公眾號(hào)免費(fèi)提供csdn下載服務(wù),海量IT學(xué)習(xí)資源如果你準(zhǔn)備入IT坑,勵(lì)志成為優(yōu)秀的程序猿,那么這些資源很適合你,包括但不限于java、go、python、springcloud、elk、嵌入式 、大數(shù)據(jù)、面試資料、前端 等資源。同時(shí)我們組建了一個(gè)技術(shù)交流群,里面有很多大佬,會(huì)不定時(shí)分享技術(shù)文章,如果你想來一起學(xué)習(xí)提高,可以公眾號(hào)后臺(tái)回復(fù)【2】,免費(fèi)邀請(qǐng)加技術(shù)交流群互相學(xué)習(xí)提高,會(huì)不定期分享編程IT相關(guān)資源。

掃碼關(guān)注,精彩內(nèi)容第一時(shí)間推給你

總結(jié)

以上是生活随笔為你收集整理的numeric比较大小 数据库_mysql大小写敏感与校对规则的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。