07列屬性
01列屬性——自動增長
字段從1開始每次遞增1戏锹,特點(diǎn)是字段中的數(shù)據(jù)不可能重復(fù)冠胯,適合記錄生成唯一id。
自動增長都是無符號整數(shù)锦针。
在MySQL中荠察,auto_increment必須是主鍵,但主鍵不一定自增奈搜。
如果要給自增的字段插入數(shù)據(jù)悉盆,使用null關(guān)鍵字。
自動增長列上的數(shù)據(jù)被刪除馋吗,則默認(rèn)情況下此記錄的編號就不會再使用了焕盟。
字段從1開始
02列屬性——主鍵
- 主鍵是唯一標(biāo)識表中記錄的一個列或一組列。
- 主鍵特點(diǎn):值不能重復(fù)宏粤,不能為空脚翘。
- 一個表只能有一個主鍵,一個主鍵可以由多個字段共同組成绍哎。
- 主鍵的創(chuàng)建:
- 創(chuàng)建表時来农,在數(shù)據(jù)類型后直接寫primary key。
- 創(chuàng)建表時崇堰,使用primary key(字段名) 語句創(chuàng)建一般主鍵或組合鍵沃于。
- 修改表時,用語句
alter table add 表名 primary key (字段名);
添加主鍵海诲。 - 修改表時繁莹,使用modify或change關(guān)鍵字也可以添加主鍵。
- 主鍵的刪除:
alter table 表名 drop primary key;
- 主鍵的作用:
- 保證數(shù)據(jù)完整性特幔。
- 加快查詢速度咨演。
- 選擇主鍵的原則:
- 最少性:盡量選擇一個字段做主鍵。
- 穩(wěn)定性:盡量選擇更新少的列做主鍵敬辣。
- 盡量選擇數(shù)字類型的列做主鍵雪标。
- 關(guān)于主鍵的一些思考題:
- 在主鍵列輸入數(shù)值零院,允許為空嗎溉跃?——不可以
- 一個表可以有多個主鍵嗎?——不可以
- 一個學(xué)校數(shù)據(jù)庫中告抄,如果一個學(xué)校內(nèi)撰茎,允許學(xué)員重名,但是在班級內(nèi)打洼,不允許學(xué)員重名龄糊,可以組合班級和姓名做主鍵嗎逆粹?——可以
- 標(biāo)識列(自動增長列)允許為字符數(shù)據(jù)類型嗎?——不允許
- 表中沒有合適的列做主鍵怎么辦炫惩?——添加自動增長列僻弹。
- 一個表可以有兩個自動增長列嗎?——不可以
例子(關(guān)于創(chuàng)建和刪除主鍵):
/*
一他嚷、創(chuàng)建表時添加主鍵
*/
# 4.a 在數(shù)據(jù)類型后直接寫primary key蹋绽。
create table t1(
id int primary key,
name varchar(10)
);
# 4.b 使用primary key(字段名) 語句創(chuàng)建一般主鍵或組合鍵。
create table t2(
id int ,
name varchar(10),
primary key(id) -- 添加一個主鍵
);
create table t3(
id int ,
name varchar(10),
primary key(id,name) -- 添加一個組合鍵
);
/*
二筋蓖、修改表時添加主鍵
*/
alter table t4 add primary key (id); -- 添加一個主鍵
alter table t4 add primary key (id,name) -- 添加一個組合鍵
/*
三卸耘、刪除主鍵
*/
alter table t6 drop primary key;
03列屬性——唯一鍵
-
特點(diǎn):
- 不能重復(fù),可以為空粘咖。
- 一個表可以有多個唯一鍵蚣抗。
-
作用:
- 保證數(shù)據(jù)不能重復(fù),保障數(shù)據(jù)完整性瓮下。
- 加快數(shù)據(jù)訪問翰铡。
-
查看唯一鍵:
語法:
show create table 表名 \G;
-
添加唯一鍵:
- 創(chuàng)建表時,直接在數(shù)據(jù)類型后寫
unique [key]
關(guān)鍵詞讽坏。 - 創(chuàng)建表時两蟀,寫
unique (字段名);
創(chuàng)建一個唯一鍵。 - 創(chuàng)建表時震缭,寫
unique (字段名1),unique (字段名2),……
創(chuàng)建多個唯一鍵赂毯。 - 創(chuàng)建表時,寫
unique (字段名1,字段名2,....)
創(chuàng)建組合唯一鍵拣宰。 - 修改表時使用
alter table 表名 add unique (字段名);
添加一個唯一鍵党涕。 - 修改表時使用
alter table 表名 add unique (字段名1) , add unique(字段名2),....;
添加多個唯一鍵。 - 修改表時使用
alter table 表名 add unique (字段名1,字段名2,....);
添加組合唯一鍵巡社。 - 使用modify或change關(guān)鍵詞也可以添加唯一鍵膛堤。
- 創(chuàng)建表時,直接在數(shù)據(jù)類型后寫
刪除唯一鍵:
alter table 表名 drop index 唯一鍵的名字;
查詢唯一鍵的名字:
show create table 表名 \G;
,唯一鍵可以自己命名晌该,在適當(dāng)位置命名即可肥荔。
# 唯一鍵的創(chuàng)建與刪除
/*
一、創(chuàng)建表時創(chuàng)建唯一鍵
*/
# 4.a 創(chuàng)建表時朝群,直接在數(shù)據(jù)類型后寫 unique [key]關(guān)鍵詞燕耿。
create table t1(
id int,
stuid char(11) unique comment '學(xué)號',
name varchar(10) unique,
);
# 4.b 創(chuàng)建表時,寫 unique (字段名);創(chuàng)建一個唯一鍵姜胖。
create table t2(
id int ,
stuid char(11),
name varchar(10),
unique(stuid)
);
# 4.c 創(chuàng)建表時誉帅,寫 unique (字段名1),unique (字段名2),……創(chuàng)建多個唯一鍵。
create table t3(
id int ,
stuid char(11),
name varchar(10),
unique(stuid),
unique(name)
);
# 4.d 創(chuàng)建表時,寫 unique (字段名1,字段名2,....)創(chuàng)建組合唯一鍵蚜锨。
create table t4(
id int,
stuid char(11),
name varchar(10),
unique(stuid,name)
)
/*
二档插、修改表時創(chuàng)建唯一鍵
*/
# 4.e 修改表時使用 alter table 表名 add unique (字段名);添加唯一鍵。
alter table t5 add unique (stuid);
# 4.f 修改表時使用 alter table 表名 add unique (字段名1) , add unique(字段名2),....;添加多個唯一鍵亚再。
alter table t6 add unique (stuid),add unique(name);
# 4.g 修改表時使用 alter table 表名 add unique (字段名1,字段名2,....);添加組合唯一鍵郭膛。
alter table t7 add unique (stuid,name);
/*
三、刪除唯一鍵
*/
alter table 表名 drop index 唯一鍵的名字;
04列屬性——備注
為了程序員之間的交流氛悬,使用comment在創(chuàng)建表時進(jìn)行備注饲鄙。實(shí)用查詢顯示創(chuàng)建表的語句查看備注,沒啥可說的圆雁。
05注釋
# 這是一個單行注釋
-- 這是一個單行注釋
/*
這是一個多行注釋
*/