bigint(20)、smallint(5)
CREATE TABLE `idc_logistics_assign_rules` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵ID', `sp_id` bigint(20) unsigned NOT NULL COMMENT '外鍵關(guān)聯(lián)表ID', `creator` varchar(255) NOT NULL COMMENT '創(chuàng)建人工號(hào)', `gmt_create` datetime NOT NULL COMMENT '創(chuàng)建時(shí)間', `modifier` varchar(255) NOT NULL COMMENT '修改人工號(hào)', `gmt_modified` datetime NOT NULL COMMENT '修改時(shí)間', `rule_name` varchar(255) NOT NULL COMMENT '規(guī)則名稱(chēng)', `rule_json_val` varchar(4096) NOT NULL COMMENT '規(guī)則JSON字符串', `rule_content` varchar(4096) NOT NULL COMMENT '規(guī)則中文描述', `type` varchar(128) NOT NULL COMMENT '類(lèi)型(同機(jī)房、同城、區(qū)域內(nèi)、區(qū)域外、其他)', `rule_lable` varchar(256) NOT NULL COMMENT '標(biāo)簽', `is_valid` char(1) NOT NULL COMMENT '是否有效(y/n),默認(rèn)n', `is_deleted` char(1) NOT NULL COMMENT '是否刪除', `ordering` smallint(5) unsigned NOT NULL COMMENT '排序字段', PRIMARY KEY (`id`), UNIQUE KEY `uk_ordering` (`ordering`), KEY `idx_rule_content` (`rule_content`(255))) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='表名';上面是建表的SQL語(yǔ)句,對(duì)于其中的數(shù)據(jù)類(lèi)型有不明白的地方,如下:1.smallint(5),我看了smallint本來(lái)的范圍是:A smallint is between -32768 and 32767 signed, or 0 and 65535 unsigned.但是加了smallint(5)之后,對(duì)它的范圍并沒(méi)有影響,那么加這個(gè)有什么用呢?。假如我不指定括號(hào)中的位數(shù)呢?它的默認(rèn)值是要取什么值呢?2.同理varchar(255)是表示255個(gè)字節(jié)么?如果要存中文的話(huà),用utf8編碼,算上標(biāo)點(diǎn)符號(hào),大概能存多少個(gè)中文漢字呢?3.另外還有datetime這種數(shù)據(jù)類(lèi)型,一般并不指定有效位數(shù)的。那么如果我要精確到秒的、精確的分的、精確到月的,數(shù)據(jù)庫(kù)中是不能直接這么存的么?只能存一個(gè)完整的時(shí)間(存一個(gè)以1970開(kāi)始的long型方便),然后查的時(shí)候,可以用Mysql提供的函數(shù)來(lái)過(guò)濾??======================================================================在列中使用zerofill,如插入int(4),你插入1,顯示0001,你插入55555,顯示也是55555,插入負(fù)數(shù)顯示為0000,因?yàn)閙ysql自動(dòng)增加UNSIGNED屬性 UNSIGNED不能為負(fù)數(shù),當(dāng)你插入負(fù)數(shù)時(shí)就顯示0, 多操作就能理解 希望采納
查看完整描述