MySQL約束之默認(rèn)約束default與零填充約束zerofill
默認(rèn)約束
MySQL 默認(rèn)值約束用來指定某列的默認(rèn)值。
添加默認(rèn)約束
- 方式1: <字段名> <數(shù)據(jù)類型> default <默認(rèn)值>;
- 方式2: alter table 表名 modify 列名 類型 default 默認(rèn)值;
create table t_user10 ( id int , name varchar(20) , address varchar(20) default ‘北京' -- 指定默認(rèn)約束 );
-- alter table 表名 modify 列名 類型 default 默認(rèn)值; create table t_user11 ( id int , name varchar(20) , address varchar(20) ); alter table t_user11 modify address varchar(20) default ‘北京';
刪除默認(rèn)約束
-- alter table <表名> modify column <字段名> <類型> default null; alter table t_user11 modify column address varchar(20) default null;
零填充約束
1、插入數(shù)據(jù)時(shí),當(dāng)該字段的值的長(zhǎng)度小于定義的長(zhǎng)度時(shí),會(huì)在該值的前面補(bǔ)上相應(yīng)的0
2、zerofill默認(rèn)為int(10)
3、當(dāng)使用zerofill 時(shí),默認(rèn)會(huì)自動(dòng)加unsigned(無符號(hào))屬性,使用unsigned屬性后,數(shù)值范圍是原值的2倍,例如,有符號(hào)為-128~+127,無符號(hào)為0~256。
比如:現(xiàn)在設(shè)置某個(gè)字段的長(zhǎng)度為5,那么真實(shí)數(shù)據(jù)是1,那么顯示在你的數(shù)據(jù)庫(kù)的是00001;
create table t_user12 ( id int zerofill , -- 零填充約束 name varchar(20) );
alter table t_user12 modify id int;
-- 1. 添加約束 create table t_user12 ( id int zerofill , -- 零填充約束 name varchar(20) ); insert into t_user12 values(123, '張三'); insert into t_user12 values(1, '李四'); insert into t_user12 values(2, '王五');
總結(jié)
前面我們學(xué)習(xí)了很多的約束,這里這一個(gè)大致的總結(jié),我們需要根據(jù)自己的應(yīng)用場(chǎng)景去設(shè)置這些約束,最終才可以達(dá)到我們的日常需求:
-- 總結(jié) -- 1:通過修改表結(jié)構(gòu)添加主鍵約束 create table emp4( eid int primary key, name varchar(20), deptId int, salary double ); -- 2:添加自增正約束 create table t_user1 ( id int primary key auto_increment, name varchar(20) ); -- 3:創(chuàng)建非空約束 create table mydb1.t_user6 ( id int , name varchar(20) not null, -- 指定非空約束 address varchar(20) not null -- 指定非空約束 ); -- 4:創(chuàng)建唯一約束 create table t_user8 ( id int , name varchar(20) , phone_number varchar(20) unique -- 指定唯一約束 ); -- 5:創(chuàng)建默認(rèn)約束 create table t_user10 ( id int , name varchar(20) , address varchar(20) default '北京' -- 指定默認(rèn)約束 );
到此這篇關(guān)于MySQL約束之默認(rèn)約束default與零填充約束zerofill的文章就介紹到這了,更多相關(guān)MySQL約束 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
my.cnf參數(shù)配置實(shí)現(xiàn)InnoDB引擎性能優(yōu)化
目前來說:InnoDB是為Mysql處理巨大數(shù)據(jù)量時(shí)的最大性能設(shè)計(jì)。它的CPU效率可能是任何其它基于磁盤的關(guān)系數(shù)據(jù)庫(kù)引擎所不能匹敵的。在數(shù)據(jù)量大的網(wǎng)站或是應(yīng)用中Innodb是倍受青睞的。另一方面,在數(shù)據(jù)庫(kù)的復(fù)制操作中Innodb也是能保證master和slave數(shù)據(jù)一致有一定的作用。2017-05-05MySQL學(xué)習(xí)第一天 第一次接觸MySQL
這篇文章是學(xué)習(xí)MySQL的第一篇文章,開啟了探究MySQL的奇妙旅程,內(nèi)容主要是對(duì)MySQL的基礎(chǔ)知識(shí)進(jìn)行學(xué)習(xí),了解,感興趣的小伙伴們可以參考一下2016-05-05幾個(gè)常見的MySQL的可優(yōu)化點(diǎn)歸納總結(jié)
這篇文章主要介紹了幾個(gè)常見的MySQL的可優(yōu)化點(diǎn)歸納總結(jié),包括在編程時(shí)處理索引、分頁(yè)以及數(shù)據(jù)類型時(shí)可用到的地方,需要的朋友可以參考下2015-05-05MySQL之Field‘***’doesn’t have a default value錯(cuò)誤解決辦法
這篇文章主要介紹了MySQL之Field‘***’doesn’t have a default value錯(cuò)誤解決辦法,需要的朋友可以參考下2015-04-04mysql從執(zhí)行.sql文件時(shí)處理\n換行的問題
后來注意到,在上面我們恢復(fù)數(shù)據(jù)的時(shí)候是在沒有連接數(shù)據(jù)的狀態(tài)下執(zhí)行的。2009-05-05Mysql逗號(hào)拼接字符串的關(guān)聯(lián)查詢以及統(tǒng)計(jì)問題
有時(shí)為了數(shù)據(jù)庫(kù)簡(jiǎn)潔,存放數(shù)據(jù)的時(shí)候,某一字段采用逗號(hào)隔開的形式進(jìn)行存儲(chǔ),下面這篇文章主要給大家介紹了關(guān)于Mysql逗號(hào)拼接字符串的關(guān)聯(lián)查詢以及統(tǒng)計(jì)問題的相關(guān)資料,需要的朋友可以參考下2023-03-03MySQL數(shù)據(jù)的讀寫分離之maxscale的使用方式
這篇文章主要介紹了MySQL數(shù)據(jù)的讀寫分離之maxscale的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12PostgreSQL物化視圖(materialized view)過程解析
這篇文章主要介紹了PostgreSQL物化視圖(materialized view)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02