資料庫列屬性

2021-12-29 21:29:28 字數 3326 閱讀 8569

列屬性

列屬性:真正約束欄位的是資料型別,但是資料型別的約束很單一需要一些額外的約束來更加保證資料的合法性。有以下屬性:

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 索引名字;– –唯一鍵預設使用欄位名作為索引名字。

資料庫 MySQL mysql列屬性及SQL注釋

1 null屬性 null not null 預設為null 如果資料為null還得用is來查詢 所以 後期在建立表的時候字段統一加上not null 2 預設值 default 作用 省略字段 或 default佔位則填充預設值 3 主鍵 primary key 乙個表只能有乙個主鍵 不能重複且不...

資料庫刪除列

先刪除約束。刪除指定表中的指定列的約束 create procedure p delconstraint table name varchar 50 表名 col name varchar 50 列名 as declare tbname sysname,fdname sysname select t...

資料庫列約束

你還看不懂資料庫列約束嗎?資料庫列約束 1.主鍵約束 primary key 宣告了主鍵約束的列上不允許插入重複的值 乙個表中只能有乙個主鍵約束 一般將主鍵約束設定給編號,特點 主鍵約束會自動由小到大自動排序 語法 create table 表名 lid int primary key,lid 表示...