您的約束詳解請查收

2021-10-08 02:58:07 字數 3957 閱讀 9169

通過約束:來防止不合法的資料進入表中

通過定義約束:來限制表中的資料 實現表資料的完整性(資料的統一,和諧,準確)

資料完整性的分類:

域完整性:列取值的準確,和諧

實體完整性:行資料的完整,統一

參照完整性:表與表之間的參照關係

預設值: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工具,加上必知必會的資料分析概念,並且採用通俗易懂的講解方式。誰說菜鳥不會資料分析 全彩 努力將資料分析寫成像 一樣通俗易懂,使讀...