创建成绩表T_GRADE,并把学号S_ID+课程编号C_ID设为复合主键。
在潜山等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站制作、网站建设 网站设计制作按需定制,公司网站建设,企业网站建设,高端网站设计,成都全网营销推广,成都外贸网站建设,潜山网站建设费用合理。
Create Table T_GRADE( --学生成绩表
S_ID Number(8), --学生编号
C_ID number(4), --课程编码
G_PS varchar2(6), --平时成绩
G_KS varchar2(6), --考试成绩
Constraint Grade_pk Primary Key (S_ID,C_ID)); --表级复合主键
可以设置复合外键。设置方法与复合主键一样,Primary Key(...) 换成
FOREIGN KEY(...) REFERENCES 主表(...)
或 ALTER TABLE 表 ADD CONSTRAINT 外键名
FOREIGN KEY(复合外键) REFERENCES 主表(主键|唯一键);
复合主键没法忽略顺序,因为复合索引在使用的时候语言遵照最左选择
像资源管理器中选择文件一样,按住Ctrl,然后选中多个要被设置成主键的字段,最后点击右键,选择(主键)即可,或者直接点击工具栏上的钥匙图标即可。 备注:本操作适合在Access和SQL上操作,Oracle不得知。
你说的是单一主键和联合主键的问题,一个表只能有一个主键: 基于一列的主键:alter table test add constraint PK_TEST primary key(ename); 基于多列的联合主键: alter table test add constraint PK_TEST primary key(ename,birthday);
建表时候设置
CREATE TABLE TAB (
ID1 NUMBER(10) ,
ID2 NUMBER(4),
CREDIT NUMBER(2),
CONSTRAINT PK_TAB PRIMARY KEY (ID1,ID2) -- 主键
);
或者建表之后追加
alter table tab add constraint pk_tab2 primary key (id1,id2);
看下下边这句运行的结果
select distinct a.zhanghbm as jigh ,a.kehh ,a.zhanghxz as duizlx from d_zhanghb a, d_kemb b where a.kem=b.kemh and (a.zhanghye10000.00 or a.nianjs1800000.00) order by a.zhanghbm,a.kehh ;
你看前两个字段有没有重复的,应该肯定有重复的,没重复就不报错了,因为你有联合主键
只不过查出来要怎么办啊?你还想强行插的话,就得把联合主键删掉