欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)邀請(qǐng)碼778899分享:【MySQL】數(shù)據(jù)庫(kù)數(shù)據(jù)類型

柚子快報(bào)邀請(qǐng)碼778899分享:【MySQL】數(shù)據(jù)庫(kù)數(shù)據(jù)類型

http://yzkb.51969.com/

文章目錄

1. 整體概要2. 數(shù)值類型(有符號(hào)) tinyint 創(chuàng)建表(無符號(hào)) tinyint 創(chuàng)建表bit類型float 類型(無符號(hào))floatdecimal

3. 二進(jìn)制類型char類型varchar類型

4. 日期時(shí)間日期時(shí)間類型

5. string 類型enum類型和set類型enum類型和set類型的查找在枚舉中的查找在set中的查找

1. 整體概要

看起來分為很多類型,例如數(shù)值類型,有一些看一眼就懂啦,所以不會(huì)全部介紹

2. 數(shù)值類型

(有符號(hào)) tinyint 創(chuàng)建表

進(jìn)入 test_db數(shù)據(jù)庫(kù)中,并創(chuàng)建表t1 ,其內(nèi)部包含 tinyint類型的num

輸入 desc t1; 查看t1表結(jié)構(gòu)

tinyint類型為一個(gè)字節(jié),有符號(hào),所以取值范圍為 -128 到 127

向t1 表中分別插入 -128 、128 、1

輸入 select * from t1; 查詢 t1 表的結(jié)構(gòu)

由于 -129 和128 超過了 tinyint類型的取值范圍,所以插入失敗

(無符號(hào)) tinyint 創(chuàng)建表

再次創(chuàng)建表,內(nèi)部包含一個(gè)無符號(hào)的 tinyint類型的num 所以取值范圍為 0 到255

輸入 desc t2; 查詢t2表的結(jié)構(gòu)

由于取值范圍是 0 到255 所以向t2表插入 0 100 255 ,可以插入成功 而向t2表插入 -1,則會(huì)插入失敗

bit類型

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

先進(jìn)入 test_db 數(shù)據(jù)庫(kù)中,創(chuàng)建一張 t3表 內(nèi)部包含 int類型的id 、 1字節(jié)的online id 表示 用戶某一個(gè)身份id online 表示 當(dāng)前用戶是否登錄 (1表示登錄 0表示沒有登錄)

插入 (123 ,0 ) 表示123號(hào)用戶不在線 插入 (124 ,1 ) 表示 124號(hào)用戶在線 可當(dāng)插入 (123,5)時(shí) ,由于 online 的類型為1個(gè)比特位,所以只能插入0或者1,所以會(huì)報(bào)錯(cuò)

輸入 select * from t3; 即查看t3表的結(jié)構(gòu) 發(fā)現(xiàn)online 對(duì)應(yīng)的位置 什么都看不到 是因?yàn)橥ǔR訟SCII值形式顯示的,而ASCII值在當(dāng)前是不可顯示的

讓 online 以十進(jìn)制方案顯示出來 這樣就可以看到 0 或者 1

創(chuàng)建表時(shí),bit范圍是1到64,而當(dāng)前設(shè)置是65,所以創(chuàng)建表不成功 會(huì)報(bào)錯(cuò)

float 類型

float [ (m,d) ] [unsigned] : m指定顯示長(zhǎng)度(數(shù)字位數(shù)的總個(gè)數(shù)) d指定小數(shù)位數(shù) 占用空間4個(gè)字節(jié)

創(chuàng)建一張表t5,包含 int類型的id 以及 float類型的salary,并且salary共有4位,其中2位是小數(shù) id 表示 這個(gè)人的身份 salary 表示 這個(gè)人的工資 float [ (4,2) ] 的取值范圍是 -99.99 和 99.99

向t5表插入 (1,99.99) 和(1,-99.99) ,是可以插入成功的 (float的取值范圍是有符號(hào)區(qū)分的)

若slary為23.46,則插入成功,并且顯示為23.46

若slary為23.467,則插入成功,并且顯示為23.47 ,因?yàn)樗纳嵛迦?,將其進(jìn)位

若slary為23.464,則插入成功,并且顯示為23.46,因?yàn)樗纳嵛迦耄瑢⑵渖崛?/p>

所以進(jìn)行浮點(diǎn)數(shù)存儲(chǔ)時(shí),若要求是2位精度,而傳入更多位的精度,mysql就會(huì)采用 四舍五入的方式 將數(shù)據(jù)進(jìn)行存儲(chǔ)

(無符號(hào))float

mysql支持定義符號(hào)的浮點(diǎn)數(shù)

float [ (4,2) ] 的取值范圍為 0 到 99.99

創(chuàng)建一張表t6,內(nèi)部包含 一個(gè)bigint類型的id 以及 無符號(hào)的浮點(diǎn)數(shù)類型的salary,并且salary共有4位,其中2位是小數(shù)

若插入 一個(gè)99.999,正常來說小數(shù)末尾是9 是要四舍五入的,但是進(jìn)位 就會(huì)超過99.99的取值范圍 ,所以會(huì)報(bào)錯(cuò)

decimal

decimal (m,d) [unsigned] : 定點(diǎn)數(shù)m指定長(zhǎng)度 ,d表示小數(shù)點(diǎn)的位數(shù)

decimal(5,2) 的取值范圍是 -999.99 - 999.99 decimal(5,2)unsigned的取值范圍是 0 - 999.99 decimal和float很像,但是有區(qū)別: float 和 decimal 表示的精度不一樣

創(chuàng)建一張表 t7 ,內(nèi)部包含 float類型的f1,f1總長(zhǎng)度為10 ,其中小數(shù)部分為8 以及decimal 類型的f2,f2總長(zhǎng)度為4,其中小數(shù)部分為2

當(dāng)插入 99.99 在decimal的取值范圍內(nèi)時(shí),則插入成功 當(dāng)插入99.999不在decimal的取值范圍內(nèi)時(shí),則插入失敗

將屬于t7表的 decimal類型的f2 的精度 改為 總長(zhǎng)度為10 ,其中小數(shù)部分為8

在t7表中的成員 f1和f2中分別插入 23.12345612

輸入 select *from t7; 查看t7表的信息 發(fā)現(xiàn) f1是精度方面的問題

float在精度過大時(shí),會(huì)進(jìn)行優(yōu)化策略 但decimal不會(huì)這樣,decimal可以完全保證數(shù)據(jù)的精度

3. 二進(jìn)制類型

char類型

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

在test_db數(shù)據(jù)庫(kù)中,創(chuàng)建一張表t8 ,內(nèi)部包含 int類型的id 以及 char類型的name

輸入 desc t8; 查看t8表中更詳細(xì)信息 t8表中的name 最多儲(chǔ)存2個(gè)字符

向t8表中插入 一個(gè)字符’a’ 或者插入兩個(gè)字符’ab’ 時(shí),就可以插入成功 向t8表中插入三個(gè)字符’abc’時(shí),就會(huì)報(bào)錯(cuò)

MySQL中的字符代表一種符號(hào),一個(gè)漢字代表一個(gè)字符

當(dāng)插入1個(gè)字符 中 和2個(gè)字符 中國(guó) 時(shí),是可以插入成功的 但當(dāng)插入 3個(gè)字符 中國(guó)人時(shí) ,因?yàn)樽疃鄡?chǔ)存2個(gè)字符,所以會(huì)報(bào)錯(cuò)

varchar類型

varchar(L) :可變長(zhǎng)度字符串,L表示字符串長(zhǎng)度,最大長(zhǎng)度為65535個(gè)字節(jié)

創(chuàng)建一張表t9,內(nèi)部包含int類型的id 和 varchar類型的name,最多儲(chǔ)存6個(gè)字符 并默認(rèn)字符集為uft8

每一個(gè)漢字都可以看做是一個(gè)字符 若輸入 1個(gè)字符 中, 3個(gè)字符中國(guó)人 都可以插入成功 若輸入 7個(gè)字符時(shí),就會(huì)報(bào)錯(cuò)

想要修改 t9表中的name成員的varchar類型 最多儲(chǔ)存65536個(gè)字符 但是報(bào)錯(cuò)顯示 最多 為21845 個(gè)字符 ,可明明varchar 最大長(zhǎng)度為65535個(gè)字節(jié)

MysQL在存儲(chǔ)varchar類型時(shí),是按照utf8編碼的 在uft8編碼中,一個(gè)英文字符等于1個(gè)字節(jié),一個(gè)中文等于3個(gè)字節(jié) 假設(shè)以中文計(jì)算,21845個(gè)字符 乘以3 就為 65535 個(gè)字節(jié)

char為固定長(zhǎng)度字符串,類似于c++中的數(shù)組 如:char(6) 就表示數(shù)組字符個(gè)數(shù)為6個(gè)字符,可能只用了1個(gè)字符空間,但是依舊會(huì)給6個(gè)字符空間

varchar為變長(zhǎng)字符串 varchar(len) len定義多大就表示字符空間的上限 如:varchar(6) 可能只用了1個(gè)字符空間,就只會(huì)分配保存一個(gè)字符空間

varchar的字節(jié)長(zhǎng)度在0 -65535之間 ,需要有1-3個(gè)字節(jié)用于記錄數(shù)據(jù)的大小 (傳入數(shù)據(jù)的大小不同,有可能數(shù)據(jù)小 1個(gè)字節(jié)就能記錄,有可能數(shù)據(jù)太大,就需要3個(gè)字節(jié)才能記錄) 假設(shè)有3個(gè)字節(jié)記錄數(shù)據(jù),所以有效字節(jié)數(shù)為65532

當(dāng)表的編碼為utf8時(shí),varchar(len) 的參數(shù) len最大值為 65532/3=218844 (一個(gè)字符占用3個(gè)字節(jié)為例) 所以最大字符個(gè)數(shù)為 21844

創(chuàng)建一張表t10,內(nèi)部包含 varchar類型的name ,其最多儲(chǔ)存21845個(gè)字符 因?yàn)槌^了21844范圍,所以會(huì)報(bào)錯(cuò)

當(dāng)表中 name的varchar類型的取值為21844時(shí),就可以創(chuàng)建成功

4. 日期時(shí)間

日期時(shí)間類型

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

創(chuàng)建一張表 t10 ,內(nèi)部包含 date類型的t1 ,datetime類型的t2,timestamp類型的 t3

輸入 desc t10; 查看t10表的更多詳細(xì)信息 t3的類型為時(shí)間戳,默認(rèn)值為 CURRENT_TIMESTAMP 擴(kuò)展說明:創(chuàng)建表結(jié)構(gòu)時(shí),向表中插入數(shù)據(jù),timestamp會(huì)自動(dòng)更新 而date與datetime 需要外部插入

向t10表中的成員 date類型的t1 和 datetime類型的t2 分別插入 2001-10-02 和2002-10-03 08:00:00

輸入 select * from t10; 查看t10表的更詳細(xì)的信息 發(fā)現(xiàn)t3自動(dòng)更新為當(dāng)前時(shí)間

當(dāng)輸入 update t10 set t1=‘2003-10-04’; 更新t10表中t1的時(shí)間 發(fā)現(xiàn)t3所表示的時(shí)間戳 也會(huì)跟著變化

5. string 類型

enum類型和set類型

enum:枚舉 enum(‘選項(xiàng)1’,‘選項(xiàng)2’,‘選項(xiàng)3’); 提供若干個(gè)選項(xiàng)的值,最終一個(gè)單元格中,實(shí)際只存儲(chǔ)其中一個(gè)值 如:?jiǎn)柧碚{(diào)查 性別 只能選男或者女

set :集合 set(‘選項(xiàng)1’,‘選項(xiàng)2’,‘選項(xiàng)3’); 提供若干個(gè)選項(xiàng)的值,最終一個(gè)單元格中,可存儲(chǔ)任意多個(gè)值 如:?jiǎn)柧碚{(diào)查 愛好 可以選打羽毛球 乒乓球 籃球等

創(chuàng)建一張表 votes,其中包含 最多存儲(chǔ)30字節(jié)的名字 、 性別 、 愛好 同時(shí) 性別 只能從男或者女中 選擇一個(gè) 而愛好 可以從 代碼 籃球 游泳中 選擇一個(gè)或者多個(gè)

向votes表中插入 姓名為 張三 性別為 男 愛 好為代碼

當(dāng)性別中 插入 0 和3 是不可以的,可插入 1 和 2 是可以的

輸入 select * from votes 時(shí),發(fā)現(xiàn) 1對(duì)應(yīng)性別男 2對(duì)應(yīng)性別女

所以使用枚舉類型,可以使用對(duì)應(yīng)的枚舉常量 也可以使用枚舉常量對(duì)應(yīng)的下標(biāo) (從1開始 分別代表第一個(gè)枚舉值 依次往后推)

向votes表中插入 姓名 為趙六 、性別為男、 愛好為 代碼、籃球、游泳 (不允許插入不存在的愛好,同時(shí)也可以選擇插入一個(gè)愛好或者多個(gè)愛好)

enum類型 與 set類型 允許為空

只插入 名字,性別與愛好會(huì)顯示為NULL NULL表示什么都沒有

’ ’ 表示有東西,但是 為空串

若set類型 對(duì)應(yīng)的愛好 插入 0 ,則顯示為空串 若set類型 對(duì)應(yīng)的愛好 插入 1 ,則顯示為第一個(gè)設(shè)置的值 ,依次類推

若set類型 對(duì)應(yīng)的愛好 插入 2,則顯示為第二個(gè)設(shè)置的值 若set類型 對(duì)應(yīng)的愛好 插入 3 ,則顯示為第一個(gè)設(shè)置的值 和第二個(gè)設(shè)置的值

因?yàn)楣灿?個(gè)愛好,所以設(shè)置3個(gè)比特位 000 從右到左,依次為從低到高 若表示代碼,則為 001 若表示籃球,則為 010 若表示代碼和籃球,則為011 若表示游泳,則為 100

enum類型和set類型的查找

在枚舉中的查找

輸入 select * from votes where gender=‘男’; 挑選出votes表中所有男生的信息

輸入 select * from votes where gender=‘女’; 挑選出votes表中所有女生的信息

在set中的查找

輸入 select * from votes where hobby=‘游泳’; 挑選出votes表中愛好只有游泳的人 有的人愛好是廣泛的,其中就包含游泳,但是篩選并不顯示

所以需要借助 mysql的篩選函數(shù) —— find_in_set 函數(shù)

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

輸入 select * frin votes where find_in_set(‘游泳’,hobby); 在votes表 的 hobby 查找所有愛好有游泳 的人

and相當(dāng)于 C語言的邏輯與 在votes表 的 hobby 查找所有愛好有游泳 以及 愛好有籃球的人

柚子快報(bào)邀請(qǐng)碼778899分享:【MySQL】數(shù)據(jù)庫(kù)數(shù)據(jù)類型

http://yzkb.51969.com/

相關(guān)鏈接

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/18889914.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄