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