不能這么寫吧
公司主營業(yè)務(wù):網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出下陸免費(fèi)做網(wǎng)站回饋大家。
添加完復(fù)合主鍵之后再添加unique約束
alter table borrow add cosntraint PK_ID primary key(Rid,bid,lenddate)--添加表級(jí)復(fù)合主鍵
alter table borrow add constraint CK_ID check(ID0)--添加標(biāo)級(jí)check約束
你那個(gè)寫法,只能在create table 時(shí)候這么寫吧,我測試沒有通過,只有create時(shí)候好用
create table tb(co1 int not null)
alter table tb add constraint PK_co1 primary key(co1)
alter table tb add constraint CK_co1 check(co110)
drop table tb
create table tb(co1 int not null)
create table tb(co1 int not null constraint PK_co1 primary key(co1) constraint CK_co1 check(co110))
1.約束主要有一下幾種:
NOT NULL : 用于控制字段的內(nèi)容一定不能為空(NULL)。
UNIQUE : 控件字段內(nèi)容不能重復(fù),一個(gè)表允許有多個(gè) Unique 約束。
PRIMARY KEY: 也是用于控件字段內(nèi)容不能重復(fù),但它在一個(gè)表只允許出現(xiàn)一個(gè)。
FOREIGN KEY: FOREIGN KEY 約束用于預(yù)防破壞表之間連接的動(dòng)作,F(xiàn)OREIGN KEY 約束 2. 也能防止非法數(shù)據(jù)插入外鍵列,因?yàn)樗仨毷撬赶虻哪莻€(gè)表中的值之一。
CHECK: 用于控制字段的值范圍。
DEFAULT: 用于設(shè)置新記錄的默認(rèn)值。
3. not null : 用于控制字段的內(nèi)容一定不能為空(NULL)。
用法 :Create table MyTable
(
id varchar(32) not null,
name varchar (32)
)
4. Primary Key :也是用于控件字段內(nèi)容不能重復(fù),但它在一個(gè)表只允許出現(xiàn)一個(gè)。
在Sql Server、Orcale、MS Access 支持的添加Primary Key語法:
Create table myTB1
(
id nvarchar(32) not null primary key,
name nvarchar(32)
)
你好朋友
1.簡介
外鍵表示一個(gè)表中的一個(gè)字段被另外一個(gè)表中的字段應(yīng)用.外鍵對相關(guān)表中的數(shù)據(jù)造成了限制,使MySQL 能夠保證參照完整性.
在MySQL 中,InnoDB 存儲(chǔ)引擎支持外鍵.在一張表中,可以存在多個(gè)外鍵.
外鍵的創(chuàng)建可以在創(chuàng)建表的時(shí)候創(chuàng)建,也可以在創(chuàng)建表之后增加(考慮數(shù)據(jù)的完整性問題).
父表:外鍵所指向的表.
字表:相對于父表,擁有外鍵的表.
2.語法
create 語法
create table table_name(
column_1,
column_2,
....
constraint constraint_name foreign key (column_name)
references parent_table(column_name)
on delete action
on update action
) engine=InnoDB default charset utf8;
constraint 子句允許為外鍵定義一個(gè)名稱,如果不寫,MySQL 自動(dòng)生成一個(gè)名稱
foreign key 子句指定子表中要應(yīng)用父表的列.注意:MySQL 會(huì)自動(dòng)創(chuàng)建一個(gè)基于外鍵的索引.
references 子句指定父表中的被引用字段.foreign key 和references 指定的列數(shù)必須相同.
on delete: 定義當(dāng)父表中的記錄被刪除時(shí),子表的記錄應(yīng)該執(zhí)行的動(dòng)作.action包括:
on delete restrict:(默認(rèn)),父表不能刪除一個(gè)已經(jīng)被子表引用的記錄.
on delete no action:等同與on delete restrict
on delete cascade: 級(jí)聯(lián)模式,父表刪除后,對應(yīng)子表關(guān)聯(lián)的數(shù)據(jù)也跟著被刪除
on delete set null:置空模式,父表刪除后,對應(yīng)子表關(guān)聯(lián)的外鍵值被設(shè)置為NULL,需要注意的是,如果子表的外鍵設(shè)置not null ,則不能使用這種模式,因?yàn)闀?huì)相互沖突.
on update:定義父表中的記錄更新時(shí),子表的記錄應(yīng)該執(zhí)行的動(dòng)作.action 包括:
on update restrict:(默認(rèn)),父表不能更新一個(gè)已經(jīng)被子表引用的記錄.
on update no action:等同與on delete restrict
on update cascade: 級(jí)聯(lián)模式,父表更新后,對應(yīng)子表關(guān)聯(lián)的數(shù)據(jù)也跟著被更新
on update set null:置空模式,父表更新后,對應(yīng)子表關(guān)聯(lián)的外鍵值被設(shè)置為NULL,需要注意的是,如果子表的外鍵設(shè)置not null ,則不能使用這種模式.
alter 語法
-- 添加外鍵
alter table table_name add constraint constraint_name
foreign key column_name
references parent_table(column_name)
on delete action
on update action
-- 刪除外鍵
alter table table_name drop constraint_name;
-- 如果沒有顯式的定義名字,可以使用如下命令獲取
show create table table_name;
3.演示
構(gòu)造兩張表categoryes 和products.每個(gè)類別有多種產(chǎn)品,而每個(gè)產(chǎn)品只屬于一個(gè)類別.
-- 設(shè)置 類別表 categoryes 和產(chǎn)品表 products
create table categoryes(
c_id int not null auto_increment,
c_name varchar(45) not null,
c_description text,
primary key (c_id)
) engine=InnoDB default charset utf8 comment '類別表';
create table products(
p_id int not null auto_increment,
p_name varchar(45) not null,
p_price decimal(8,4),
c_id int,
primary key (p_id),
constraint fk_products_categoryes
foreign key (c_id)
references categoryes(c_id)
on delete set null
on update cascade
) engine=InnoDB default charset utf8 comment '產(chǎn)品表';
在這兩張表的基礎(chǔ)上,新生成一張vendors 供應(yīng)商表,并更新products字段
-- 新生成一張表 供應(yīng)商 vendors ,并為 products 新添加字段 v_id 外鍵
-- 引用 vendors.v_id
create table vendors(
v_id int not null auto_increment,
v_name varchar(45),
primary key (v_id)
) engine=InnoDB default charset utf8 comment '供應(yīng)商';
alter table products add column v_id int not null;
alter table products add
constraint fk_products_vendors foreign key (v_id)
references vendors(v_id)
on delete no action
on update cascade;
望采納祝你好運(yùn)