05.Mysql的約束練習(xí)

-- 1:通過修改表結(jié)構(gòu)添加主鍵

/*

? create table 表名(

? ? ...

? );

? alter table <表名> add primary key(字段列表);

*/

use mydb1;

-- 添加單列主鍵

create table emp4(

? eid int,

? name varchar(20),

? deptId int,

? salary double

);

alter table emp4 add primary key(eid);

-- 添加多列主鍵

create table emp5(

? eid int,

? name varchar(20),

? deptId int,

? salary double

);

alter table emp5 add primary key(name, deptId);

-- 刪除主鍵

-- 1.刪除單列主鍵

alter table emp1 drop primary key;

-- 2.刪除多列主鍵

alter table emp5 drop primary key;

use mydb1;

-- 自增正約束

create table t_user1 (

? id int primary key auto_increment,

? name varchar(20)

);

insert into t_user1 values(NULL,'張三');

insert into t_user1(name) values('李四');

delete from t_user1;? -- delete刪除數(shù)據(jù)之后,自增長還是在最后一個(gè)值基礎(chǔ)上加1

insert into t_user1 values(NULL,'張三');

insert into t_user1(name) values('李四');

truncate t_user1; -- truncate刪除之后逞壁,自增長從1開始

insert into t_user1 values(NULL,'張三');

insert into t_user1(name) values('李四');

-- 指定自增長的初始值

-- 方式一:創(chuàng)建表時(shí)指定

create table t_user2 (

? id int primary key auto_increment,

? name varchar(20)

)auto_increment = 100;

insert into t_user2 values(NULL,'張三');

insert into t_user2 values(NULL,'張三');

delete from t_user2;

insert into t_user2 values(NULL,'張三');

insert into t_user2 values(NULL,'張三');

truncate t_user2; -- truncate刪除之后流济,自增長從1開始

insert into t_user2 values(NULL,'張三');

insert into t_user2 values(NULL,'張三');

-- 方式二:創(chuàng)建表之后指定

create table t_user3 (

? id int primary key auto_increment,

? name varchar(20)

);

alter table t_user3 auto_increment = 200;

insert into t_user3 values(NULL,'張三');

insert into t_user3 values(NULL,'張三');

-- 非空約束

/*

MySQL 非空約束(NOT? NULL)指字段的值不能為空。對于使用了非空約束的字段腌闯,如果用戶在添加數(shù)據(jù)時(shí)沒有指定值绳瘟,數(shù)據(jù)庫系統(tǒng)就會報(bào)錯(cuò)。

*/

-- 格式

/*

方式1:<字段名><數(shù)據(jù)類型> not null;

方式2:alter table 表名 modify 字段 類型 not null;

*/

use mydb1;

-- 1. 創(chuàng)建非空約束-方式1姿骏,創(chuàng)建表時(shí)指定

create table mydb1.t_user6 (

? id int ,

? name varchar(20)? not null,? -- 指定非空約束

? address varchar(20) not null? -- 指定非空約束

);

insert into t_user6(id) values(1001); -- 不可以

insert into t_user6(id,name,address) values(1001,NULL,NULL); -- 不可以

insert into t_user6(id,name,address) values(1001,'NULL','NULL'); -- 可以(字符串:NULL)

insert into t_user6(id,name,address) values(1001,'',''); -- 可以(空串)

-- 2.創(chuàng)建非空約束-方式2糖声,創(chuàng)建表之后指定

create table t_user7 (

? id int ,

? name varchar(20) ,? -- 指定非空約束

? address varchar(20)? -- 指定非空約束

);

alter table t_user7 modify name varchar(20) not null;

alter table t_user7 modify address varchar(20) not null;

desc t_user7;

-- 3.刪除非空約束

-- alter table 表名 modify 字段 類型

alter table t_user7 modify name varchar(20) ;

alter table t_user7 modify address varchar(20) ;

-- 唯一約束

/*

唯一約束(Unique Key)是指所有記錄中字段的值不能重復(fù)出現(xiàn)。例如分瘦,為 id 字段加上唯一性約束后蘸泻,每條記錄的 id 值都是唯一的,不能出現(xiàn)重復(fù)的情況嘲玫。

*/

-- 語法:

/*

方式1:<字段名> <數(shù)據(jù)類型> unique

方式2:alter table 表名 modify 字段 類型 not null;

*/

use mydb1;

-- 1. 添加唯一約束-方式1-創(chuàng)建表時(shí)指定

create table t_user8 (

id int ,

name varchar(20) ,

phone_number varchar(20) unique? -- 指定唯一約束

);

insert into t_user8 values(1001,'張三',138);

insert into t_user8 values(1002,'張三2',139);

insert into t_user8 values(1003,'張三3',NULL);

insert into t_user8 values(1004,'張三4',NULL);? -- 在MySQL中NULL和任何值都不相同 甚至和自己都不相同

-- 2. 添加唯一約束-方式1-創(chuàng)建表之后指定

-- 格式:alter table 表名 add constraint 約束名 unique(列);

create table t_user9 (

? id int ,

? name varchar(20) ,

? phone_number varchar(20) -- 指定唯一約束

);

alter table t_user9 add constraint unique_pn unique(phone_number);

insert into t_user9 values(1001,'張三',138);

insert into t_user9 values(1002,'張三2',138);

-- 3. 刪除唯一約束

-- 格式:alter table <表名> drop index <唯一約束名>;

alter table t_user9 drop index unique_pn;

-- 默認(rèn)約束

-- 1.創(chuàng)建默認(rèn)約束

/*

方式1: <字段名> <數(shù)據(jù)類型> default <默認(rèn)值>;

方式2: alter table 表名 modify 列名 類型 default 默認(rèn)值;

*/

use mydb1;

-- 方式1-創(chuàng)建表時(shí)指定

create table t_user10 (

? id int ,

? name varchar(20) ,

? address varchar(20) default '北京' -- 指定默認(rèn)約束

);

insert into t_user10(id,name,address) values(1001,'張三','上海');

insert into t_user10 values(1002,'李四',NULL);

-- 方式2-創(chuàng)建表之后指定

-- 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 '深圳';

insert into t_user11(id,name) values(1001,'張三');

-- 2.刪除默認(rèn)約束

-- alter table <表名> change column <字段名> <類型> default null;

alter table t_user11 modify address varchar(20) default null;

insert into t_user11(id,name) values(1002,'李四');

-- 零填充約束(zerofill)

-- 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, '王五');

-- 2.刪除約束

alter table t_user12 modify id int;

-- 總結(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)約束

);

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末悦施,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子去团,更是在濱河造成了極大的恐慌抡诞,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件土陪,死亡現(xiàn)場離奇詭異昼汗,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鬼雀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門顷窒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人源哩,你說我怎么就攤上這事鞋吉。” “怎么了励烦?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵谓着,是天一觀的道長。 經(jīng)常有香客問我崩侠,道長漆魔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任却音,我火速辦了婚禮改抡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘系瓢。我一直安慰自己阿纤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布夷陋。 她就那樣靜靜地躺著欠拾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪骗绕。 梳的紋絲不亂的頭發(fā)上藐窄,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天,我揣著相機(jī)與錄音酬土,去河邊找鬼荆忍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛撤缴,可吹牛的內(nèi)容都是我干的刹枉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼屈呕,長吁一口氣:“原來是場噩夢啊……” “哼微宝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起虎眨,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤蟋软,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后专甩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钟鸵,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年涤躲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了棺耍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡种樱,死狀恐怖蒙袍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嫩挤,我是刑警寧澤害幅,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站岂昭,受9級特大地震影響以现,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一邑遏、第九天 我趴在偏房一處隱蔽的房頂上張望佣赖。 院中可真熱鬧,春花似錦记盒、人聲如沸憎蛤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽俩檬。三九已至,卻和暖如春碾盟,著一層夾襖步出監(jiān)牢的瞬間棚辽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工冰肴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留晚胡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓嚼沿,卻偏偏與公主長得像估盘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子骡尽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容