Mysql學習日記

2021-07-07 07:51:45 字數 3116 閱讀 7681

今天在csdn看到了乙個笑話,是這麼寫的:程式猿的讀書歷程:x語言入門—>x語言應用實踐—>x語言高階程式設計—>x語言的科學與藝術—>程式設計之美—>程式設計之道—>程式設計之禪—>頸椎病**指南。然後我默默看了看書架,任重而道遠啊,感覺自己還要努力,爭取早日讀到勁椎病**指南……

今天花時間複習了mysql的列資料型別,怎麼說呢,感覺以前學習真是囫圇吞棗,很多細節都忽略了。重新複習一遍,收穫挺多的。

這裡的m要配上乙個zerofill屬性才能夠起作用,我用mysql進行了測試

-- 沒有zerofill 的整型資料

create

table human (

human_id int auto_increment primary

key,

human_name varchar(20) not

null

default

'',human_num smallint(4) not

null

default

0)engine = myisam charset = utf8;

-- human_num插入資料寬度一致 插入正常

insert

into human (human_name,human_num) values ('張浩',1000);

query ok, 1 row affected (0.00 sec)

-- 插入寬度不一致insert

into human (human_name,human_num) values ('劉偉',10);

query ok, 1 row affected (0.00 sec)

-- 插入寬度不一致》m 插入正常

insert

into human (human_name,human_num) values ('王浩',10000);

query ok, 1 row affected (0.00 sec)

那麼在這裡可以做乙個小小的總結:這個寬度對普通資料無其它特殊作用,和不加寬度限制是一樣的,那麼它不是作為 字元寬度限制?

既然不是作為字元限制,有是不是作為位元組限制呢?顯然m也不是作為位元組限制,如下

-- 測試2 將smallint(4) 替換成 smallint(1)

create

table human (

human_id int auto_increment primary

key,

human_name varchar(20) not

null

default

'',human_num smallint(1) not

null

default

0)engine = myisam charset = utf8;

-- 插入

insert

into human (human_name,human_num) values ('張浩',1000);

-- 插入正常 query ok, 1 row affected (0.00 sec)

由此看出m也不是作為位元組限制,因為如果是乙個位元組的話,乙個位元組8位,最大取值為255,1000超過了限制,如果作為位元組限制的話,顯然是插不進去的。

那麼 它既不是字元寬度,也不是位元組限制,它是幹嘛的?

-- 測試3 含有zerofill 屬性 的整型資料 

-- 還是human 表

create

table human (

human_id int auto_increment primary

key,

human_name varchar(20) not

null

default

'',human_num smallint(4) zerofill not

null

default

0)engine = myisam charset = utf8;

-- 插入資料

insert

into human (human_name,human_num) values ('張浩',1000);

-- query ok, 1 row affected (0.00 sec)

-- 插入正常 沒什麼變化

insert

into human (human_name,human_num) values ('王浩',10000);

-- query ok, 1 row affected (0.00 sec)

+----------+------------+-----------+

| human_id | human_name | human_num |

+----------+------------+-----------+

| 1 | 張浩 | 1000 |

| 2 | 王浩 | 10000 |

+----------+------------+-----------+

這時插入小於4字元寬度的資料時,再次查詢

insert into human (human_name,human_num) values ('劉偉',10);

-- 再次查詢資料庫

+----------+------------+-----------+

| human_id | human_name | human_num |

+----------+------------+-----------+

| 1 | 張浩 | 1000 |

| 2 | 王浩 | 10000 |

| 3 | 劉偉 | 0010 |

+----------+------------+-----------+

可以看出human_id=3的行的human_num少於4的部分被 0 填充了,這就是m的作用,只有有了zerofill才能發揮神奇的作用。顯然這個用法可以用於一些號碼的自動生成 比如 某序列號 必須保證6位 ,設定了m=6,那麼少於的6位的就能夠自動完成了。

MySQL學習日記

time 2018.3.29 01 34 設定嚮導檔案位於c program files mysql bin mysqlinstanceconfig.exe 可以用它來對mysql進行一些設定 mysql預設埠號 3306 mysql中超級使用者 rootmysql配置檔案 編輯資料表的預設儲存引擎...

MySQL 學習日記 二

我只是將文件裡的一些東西寫了下來,我的學習參考也是在網上找的乙個中文文件,有人需要的話可以去提 mysql 中的一些特殊處理 select from where item 等價於strings query select from where item include using namespace ...

mysql學習日記之索引

在mysql資料庫中,資料的查詢是我們經常用到的操作。在查詢的時候,我們經常是根據一些條件進行過濾而不是把所有的記錄都查詢出來,當乙個表中的記錄很多的時候,有時候我們查詢一條記錄可能需要遍歷整張表,這樣效率是非常低下的,建立索引可以有效提高查詢效率。簡單的分,索引可以分為單列索引和組合索引 單列索引...