通過約束:來防止不合法的資料進入表中
通過定義約束:來限制表中的資料 實現表資料的完整性(資料的統一,和諧,準確)
資料完整性的分類:
域完整性:列取值的準確,和諧
實體完整性:行資料的完整,統一
參照完整性:表與表之間的參照關係
預設值:default(列如果沒有賦值,自動存入指定值)
create table tab4(
sid int,
sname varchar(4) default "無名"
);insert into tab4(sid,sname) values(2,"張三");
insert into tab4(sid) values(3);
insert into tab4(sid,sname) values(2,null);/*可存null值*/
非空:not null(值不能為null)
drop table tab4;
create table tab4(
sid int,
sname varchar(4) default "無名",
*** char(1) not null
);insert into tab4 values(1,"張三",null);/*編譯不通過*/
唯一約束:unique(列的值不能重複)
drop table tab4;
create table tab4(
sid int,
sname varchar(4) default "無名",
*** char(1) not null,
sorder int unique
);insert into tab4(sid,sname,***,sorder) values(2,"張三",'男',10);
insert into tab4(sid,sname,***,sorder) values(3,"張三1",'女',10);/*不通過,表中已經有sorder=10的記錄了*/
檢查約束:check(老版本不算sql語法錯誤,但是無效;高版本語法錯誤)
主鍵:primary key(列的值可以唯一標識本行記錄)
特點1:值不能重複
特點2:不能為null
特點3:可以被引用
drop table tab4;
create table tab4(
sid int primary key,
sname varchar(4) default "無名",
*** char(1) not null,
sorder int unique
);insert into tab4(sid,sname,***,sorder) values(2,"張三",'男',10);
insert into tab4(sid,sname,***,sorder) values(2,"張三",'男',20);
主鍵自增:auto_increment(只適用於數字型別的主鍵列:自動增長)
drop table tab4;
create table tab4(
sid int primary key auto_increment,
sname varchar(4) default "無名",
*** char(1) not null,
sorder int unique
);insert into tab4(sid,sname,***,sorder) values(2,"張三",'男',10);
insert into tab4(sname,***,sorder) values("張三",'男',20);/*未設定sid,自動加一*/
建立完錶後,新增約束
create table tab5(
sid int,
sname varchar(11)
);/*新增約束: 用 change 和 modify*/
alter table tab5 change sname sname varchar(11) default"無名";
insert into tab5(sid) values(2);
desc tab5;/*顯示表結構*/
刪除約束
/*刪除約束:change 和 modify*/
刪除唯一約束
聯合主鍵:兩列共同組成主鍵(學號+班號)
特點:兩個值都不能為bull
兩個不能同時重複
刪除聯合主鍵
/*drop*/
新增聯合主鍵(創表後)
alter table tab6 add primary key(sid,cid);
外來鍵約束:從表的主鍵用來約束主表的指定字段
乙個從表中可以定義多個主鍵
可以為null
可以重複
如果外來鍵列有值 此值必須在主表列中存在
外來鍵列只能引用主表的主鍵
刪除主表/主記錄前 需要先刪除從表.從表記錄,從表的外來鍵約束
create table tab7(/*主表*/
sid int primary key,
cid int,
score float(4,1)
);desc tab7;
create table tab8(/*從表*/
sid int primary key,
cid int,
score float(4,1),
constraint xx foreign key(cid) references tab7(sid)/*references 後就是主表*/
);desc tab8;
你點的 ES6一些小技巧,請查收
es6出來已經有好幾年了,同時很多新特性可以被巧妙地運用在專案中。我想要列下其中一些,希望它們對你有用。如果你還知道其他一些小技巧,歡迎留言。我很高興把它們補充進來。1.強制要求引數 es6提供了預設引數值機制,允許你為引數設定預設值,防止在函式被呼叫時沒有傳入這些引數。在下面的例子中,我們寫了乙個...
女神節 請收下為您精選的節日禮物
資料中心基礎架構 ibm spectrum scale技術和架構詳解 開源大資料引擎greenplum 資料庫架構分析 如何打好存量經營保衛戰 遷移讓資料活的更美好 端到端方案相容性 x86架構小機以何應對核心業務 伺服器虛擬化發展歷程 ibm powerha小型機中的戰鬥機 軟體定義和硬體重構知多...
資料分析師的必讀書單,菜鳥程式設計師請查收!
誰說菜鳥不會資料分析 很多人看到資料分析就望而卻步,擔心門檻高,無法邁入資料分析的門檻。誰說菜鳥不會資料分析 全彩 在降低學習難度方面做了大量的嘗試 基於通用的excel工具,加上必知必會的資料分析概念,並且採用通俗易懂的講解方式。誰說菜鳥不會資料分析 全彩 努力將資料分析寫成像 一樣通俗易懂,使讀...