數據庫——(5)列屬性

列屬性
列屬性:真正約束字段的是數據類型,但是數據類型的約束很單一需要一些額外的約束來更加保證數據的合法性。有以下屬性:

1.空屬性:NULL(默認)和NOT NULL(不爲空)。
雖然默認的數據庫基本都是字段爲空,都是在實際開發的時候,儘可能保證所有的數據都不應該爲空,因爲空數據沒有意義,空數據沒有辦法參與計算。

create table my_teacher(
name varchar(20) not null 
)charset utf8;

2.列描述:comment
沒有實際意義:專門用來描述字段,會根據表創建語句保存:用來給程序員(數據庫管理員)來進行了解的。

create table my_teacher(
name varchar(20) not null comment '姓名'
)charset utf8;

3.默認值:default
某一種數據會經常性的出現某個具體的值,可以一開始就指定,在需要真實數據的時候,用戶可以選擇性的使用默認值。

create table my_teacher(
money decimal(10,2) not null default 0
)charset utf8;

4.主鍵:primary key
主要的鍵,一張表只能有一個字段可以使用對應的鍵,用來唯一約束該字段裏面的數據,不能重複。
1)增加主鍵的方式大體分三種:
方案1:在創建表的時候直接在字段後面加上primary key

create table my_teacher(
tid char(10) primary key comment '編號'
)charset utf8;

優點:非常直接;缺點:只能使用一個字段作爲主鍵。
方案2:創建表的時候,在所有的字段之後使用primary key(主鍵字段列表)來創建主鍵(如果有多個字段作爲主鍵,可以是複合主鍵)

create table my_stu(
sid char(10) comment '學號',
course char(10) comment '課程號',
score tinyint unsigned default 60 comment '成績',
-- 增加主鍵限制:學號和課程號應該是對應的,具有唯一性
primary key(sid,course)
)charset utf8;

方案3:當表創建好之後,再次額外增加主鍵,可以通過修改字段屬性,也可以直接追加。
Alter table 表名 add primary key(字段列表);

create table my_pri(
course char(10)not null comment '課程號',
name varchar(10)not null comment '姓名'
)charset utf8;
alter table my_pri add primary key(course);

前提:表中字段對應的數據本身不重複

2)主鍵約束:主鍵對應的字段中的數據不允許重複,一旦重複,數據操作失敗(增和改)。
3)刪除主鍵:alter table 表名 drop primary key;
4)主鍵分類:在實際創建表的過程中,大部分時候使用邏輯性的字段(沒有業務含義)作爲主鍵。

5.自動增長:auto_increment
當對應的字段不給值或者默認值的時候,系統會從當前字段中已有的最大值再進行+1操作,得到一個新的不同的字段,自增長通常和主鍵搭配。
特點:

1.任何一個字段要做自增長必須前提是本身是一個索引(key一欄有值)。
2.自增長字段必須是數字而且是整型。

修改自增長:alter table 表名 auto_increment = 值;
查看自增長對應的變量:show variables like ‘auto_increment%’;
修改自增長步長:set auto_increment _increment = 5;
刪除自增長:alter table 表名 modify 字段名 數據類型;

6.唯一鍵:unique key
一張表往往很多字段需要具有唯一性,數據不能重複:但一張表中只能有一個主鍵;唯一鍵可以解決表中多個字段需要唯一性約束的問題
唯一鍵的本質與主鍵差不多:唯一鍵默認的允許爲空,而且可以允許多個爲空(空字段不參與唯一鍵比較)。
1)增加唯一鍵:三種方案
方案1:在創建表的時候,字段之後直接跟上unique key/unique

create table my_unique1(
number char(10) unique comment '學號'
)charset utf8;

方案2:在所有的字段之後增加unique key(字段列表); –複合唯一鍵

create table my_unique2(
number char(10) not null comment '學號',
name varchar(10) not null,
unique key(number)
)charset utf8;

執行desc my_unique2;
結果:這裏寫圖片描述
注意這裏不是主鍵,之所以顯示PRI是因爲剛好是一個不爲空的唯一鍵(和主鍵性質一樣):根本原因是該表沒有主鍵。

方案3:在創建表之後增加唯一鍵

create table my_unique3(
id int primary key auto_increment,
number char(10) not null comment '學號',
name varchar(10) not null
)charset utf8;
alter table my_unique3 add unique key(number);

2)唯一鍵約束
唯一鍵與主鍵本質區別是唯一鍵允許爲空,而且是允許多個爲空。
如果唯一鍵不允許爲空,那麼與主鍵的約束一樣。
3)更新唯一鍵&刪除唯一鍵
更新唯一鍵:先刪除後新增,(唯一鍵可以有多個,所以可以不刪除)。
刪除唯一鍵:alter table 表名 drop index 索引名字;– –唯一鍵默認使用字段名作爲索引名字。

發佈了38 篇原創文章 · 獲贊 2 · 訪問量 9708
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章