真正約束欄位的是資料型別,但是資料型別很單一,需要一些額外的約束,更好的保證資料的合法性,從業務邏輯的角度保證資料的正確性。
預設值:某一種資料會經常性的出現某個具體的值,可以在一開始就指定好,在需要真實資料的時候,使用者可以選擇性的使用預設值。
我們重新建立乙個課表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 某類內容不能為空...