建立主鍵(三種方法)
****************
建立學生表:
第一種:
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將表的引擎改為了...