建立主鍵 建立外來鍵 建立約束

2021-07-03 11:01:10 字數 3545 閱讀 7425

建立主鍵(三種方法)

****************

建立學生表:

第一種:

create table student

(sno char(5) primary key,/*學號*/ /*可以直接指定主鍵*/

sname char(20) not null,/*姓名*/

s*** char(3) not null,/*性別*/

sage integer not null,/*年齡*/

sdept char(15);/*系別*/

第二種:

create table student

(sno char(5) not null,

constraint pk_student   /*可以指定主鍵名稱*/

primary key (sno),

sname char(20) not null ,/*非空,不可重複*/

s*** char(3) not null,

sage integer ,

sdept char(15));

第三種:

建立課程表:

create table course

(cno char(5),/*課程號*/

cname char(20) not null unique,/*課程名,非空,不可重複*/

cpno char(5),/*前置課程號(學此課之前必修課)*/

ccredit number);/*學分*/

通過修改表,設定主鍵.

alter table course

add constraint pk_course

primary key (cno);

*************

建立外來鍵(3種方法)

*************

建立"學生-課程-成績"表

create table sc

(sno char(5) constraint fk_student   /*第一種,寫在屬性定義裡面的*/  /*可以指定外來鍵名稱,*/

references student(sno),

cno char(5),

foreign key(cno) /*可省略外來鍵名稱*/

references course(cno),

grade number);

**********

第二種**********

create table sc

(sno char(5),

constraint fk_student   /*第二種,寫在屬性定義外面的*/

foreign key (sno)

references student(sno),

cno char(5),

foreign key(cno)

references course(cno),

grade number);

***********

第三種***********

alter table sc

add constraint fk_student

foreign key(sno)

references student(sno);

****************************

建好表之後,新增或修改,刪除約束

****************************

先用此語句檢視某個表的所有約束:

select table_name,constraint_name,search_condition,status from user_constraints where table_name=upper('&table_name');

0.增加not null約束

alter table student modify sname not null;

1.修改null約束

alter table student modify sname null;/*姓名可以為空*/

2.增加主鍵約束

alter table student

add constraint pk_student

primary key(id);

3.刪除主鍵約束

先用此語句檢視某個表的所有約束:

select table_name,constraint_name,search_condition,status from user_constraints where table_name=upper('&table_name');

這裡要刪除的是約束"fk_student"

alter table drop constraint  fk_student;

4.增加外來鍵約束

alter table sc

add constraint fk_student

foreign key(sno)

references student(sno);

5.刪除外來鍵約束

需要知道要刪除的外來鍵名稱,

先用此語句檢視某個表的所有約束:

select table_name,constraint_name,search_condition,status from user_constraints where table_name=upper('&table_name');

alter table drop constraint fk_student;

6.新增unique約束

alter table course modify cname unique;

新增unique的同時,會自動建立乙個相同名稱的索引.

7.取消unique

alter table course

drop constraint sys_c005472;

8.刪除索引

查詢要刪除的索引名稱

執行此語句:

select index_name,table_owner,table_name,tablespace_name,status from user_indexes order by table_name;

然後執行

drop index sys_coo5472;

今天在對乙個表,對其中乙個屬性,新建unique約束,

原因是該屬性已經是primary key了.

如果該屬性已經有unique約束,則不能賦予該屬性primary key約束.

1.乙個表只能有乙個primary key,可以有多個unique約束

2.當建立primary key的時候,會同時建立乙個索引,名字和primary key的名稱相同.

3.當某屬性為primary key,會預設新增not null約束,當刪除primary key後,not null屬性取消.

4.表的乙個屬性可以同時設定not null和primary key約束.

/*撤消主鍵*/ alter table [student] drop primary key (s_id)

/*增加主鍵*/ alter table [student] add primary key (s_id)

建立表主鍵,外來鍵

使用者表 create table gb bbs user id bigint primary key identity 1,1 bbs使用者 memberid bigint foreign key memberid references t member id staus int default ...

mysql建立外來鍵約束

mysql建立關聯表可以理解為是兩個表之間有個外來鍵關係,但這兩個表必須滿足三個條件 1.兩個表必須是innodb資料引擎 2.使用在外鍵關係的域必須為索引型 index 3.使用在外鍵關係的域必須與資料型別相似 例如 1 建立s user表 create table s user u id int...

mysql 無法建立外來鍵約束

對mysql資料庫不太熟悉,今天遇到了外來鍵建立問題。alter外來鍵建立語句命令列下提示成功了,但就是沒看到外來鍵。後來改用workbench工具來建立,發現是因為資料預設是採用的myisam儲存引擎,該引擎不支援外來鍵,需要修改引擎為innodb才可以。我直接在workbench將表的引擎改為了...