Database 表的約束

2021-09-25 15:04:43 字數 2660 閱讀 7763

真正約束欄位的是資料型別,但是資料型別很單一,需要一些額外的約束,更好的保證資料的合法性,從業務邏輯的角度保證資料的正確性。

預設值:某一種資料會經常性的出現某個具體的值,可以在一開始就指定好,在需要真實資料的時候,使用者可以選擇性的使用預設值。

我們重新建立乙個課表myclass2,將class_room的預設值設定為room1,

create table myclass2( -> class_name varchar(20) not null, -> class_room varchar(10) default 'room1');

重複上述操作:

再次嘗試只插入class_nameinsert into myclass2(class_name) values('class1');

插入成功。

列描述:comment,沒有實際含義,專門用來描述字段

create table stu( -> name varchar(20) not null comment '姓名', -> age tinyint unsigned default 0 comment '年齡', -> *** char(2) default '男' comment '性別');

zerofill屬性的作用:如果寬度小於設定的寬度(這裡設定的是5),自動填充0。要注意的是,這只是最後顯示的結果,在mysql中實際儲存的還是1。

給a欄位新增zerofill屬性alter table zerof change a a int(5) unsigned zerofill;

主鍵:primary key用來唯一的約束該欄位裡面的資料,不能重複,不能為空,一張表中最多只能有乙個主鍵;主鍵所在的列通常是整數型別。

auto_increment: 當對應的字段,不給值,會自動的被系統觸發,系統會從當前欄位中已經有的最大值+1操作,得到乙個新的不同的值。通常和主鍵搭配使用,作為邏輯主鍵。

自增長的特點:

任何乙個欄位要做自增長,前提是本身是乙個索引(key一欄有值)

自增長字段必須是整數

一張表最多只能有乙個自增長

一張表中有往往有很多字段需要唯一性,資料不能重複,但是一張表中只能有乙個主鍵:唯一鍵就可以解決表中有多個字段需要唯一性約束的問題。

唯一鍵的本質和主鍵差不多,唯一鍵允許為空,而且可以多個為空,空字段不做唯一性比較。

外來鍵用於定義主表和從表之間的關係:外來鍵約束主要定義在從表上,主表則必須是有主鍵約束或unique約束。當定義外來鍵後,要求外來鍵列資料必須在主表的主鍵列存在或為null。

myclass的id欄位對stu的class_id有約束作用,class_id中不能插入不存在的班級代號。

建立主表:

create table class( ->id int unsigned primary key comment'班級代號', ->name varchar(20) not null comment'班級名稱');

建立從表:

create table student( ->id int unsigned comment'學號', ->name varchar(20) not null comment'姓名', ->class_id int unsigned, foreign key(class_id) references class(id));

向class表中插入幾組資料

Database之HBase表設計

1.表的設計 1.1 pre creating regions 預設情況下,在建立hbase表的時候會自動建立乙個region分割槽,當匯入資料的時候,所有的hbase客戶端都向這乙個region 寫資料,直到這 個region足夠大了才進行切分。一種可以加快批量寫入速度的方法是通過預先建立一些空的...

SQL表的約束

create table students s char 8 not null unique,sname char 10 s char 2 constraint cts check s 男 or s 女 sage integer check sage 1 and sage 150 d char 2 ...

Mysql 表的約束

約束型別 說明主鍵約束 primary key 要求主鍵列資料唯一,並且不允許空。主鍵可以包含表的一列或多列,如果包含火烈,則序號在表級定義。唯一約束 unique 要求該列唯一,允許為空。檢查約束 check 某列取值範圍限制 格式等限制,如年齡的約束。非空約束 not null 某類內容不能為空...