在sql中请举例说明主键,和外键?详细举例,快,好,采纳!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在sql中请举例说明主键,和外键?详细举例,快,好,采纳!!!相关的知识,希望对你有一定的参考价值。

参考技术A 例子:
CREATE TABLE products (
prod_id NUMBER(3) CONSTRAINT p_ck CHECK (prod_id > 0),
prod_name CHAR(30),
prod_qty NUMBER(6),
CONSTRAINT p_name UNIQUE NOT NULL,
CONSTRAINT prod_pk PRIMARY KEY (prod_id));

CREATE TABLE warehouse (
warehouse_id NUMBER(4),
roomno NUMBER(10) CONSTRAINT r_id CHECK(roomno BETWEEN 101 AND 200),
location VARCHAR2(25),
prod_id NUMBER(3),
CONSTRAINT wr_pr_pk PRIMARY KEY (warehouse_id,prod_id),
CONSTRAINT prod_fk FOREIGN KEY (prod_id) REFERENCES products(prod_id));

例如这两个表格,prod_id是products的主键,也是warehouse这个表格的外键,主外键之间的关联语法就是上述两个表格的创建语句。
这样这两个表格就互相关联了,当然主键中不能有重复语句和null值,并且每一个表格只可以有一个主键,但可以有多个外键,希望采纳
(点右下角的展开,格式会好很多)
参考技术B 主键(primary key):唯一确定关系表中的一个实体
外部键(foreign key):若表A中某属性组是表B的主键,而在A表中不是主键标,则该属性组是A表的外键。
主键与外部键均是属性组,但不可能是派生属性组。
E.G:
表student的各属性为:stu_no, stu_name,stu_supervisor
表teacher的各属性为:emp_no, t_name, t_stu
stu_no是表student的主键标,唯一确定一个学生信息,stu_supervisor是外键标,确定学生的导师信息。
emp_no是老师的职工号,作为teacher的主键标,唯一确定一个老师信息,t_stu是外键标,确定该老师的学生信息。
该例中:导师与学生是1:1关系。即一个导师只能带一个学生,一个学生只能有一个导师。本回答被提问者采纳

sql server 主键与外键约束无法创建

RT 代码是这样的:CREATE table 会员证
(
会员编号 varchar(20),
会员姓名 varchar(10),
会员年龄 int,
会员住址 varchar(50),
primary key (会员编号,会员姓名))
create table 图书
(
书号 int,
书名 varchar(20) not null,
价格 decimal(6,2),
页数 int,
出版社 varchar(50) default '清华大学出版社',
作者 varchar(50),
primary key (书号)
)
create table 借阅
(
会员编号 varchar(20)references 会员证(会员编号),
会员姓名 varchar(20)references 会员证(会员姓名),
书号 int references 图书(书号),
借阅时间 datetime,
归还时间 datetime,
primary key (会员编号,会员姓名,书号)
)

提示错误:
消息 1776,级别 16,状态 0,第 18 行
在被引用表 '会员证' 中没有与外键 'FK__借阅__会员编号__52593CB8' 中的引用列列表匹配的主键或候选键。
消息 1750,级别 16,状态 0,第 18 行
无法创建约束。请参阅前面的错误消息。

建议改成这样

create table 会员证 (
会员编号 varchar(20),
会员姓名 varchar(10),
会员年龄 int,
会员住址 varchar(50),
primary key (会员编号) )

create table 图书 (
书号 int,
书名 varchar(20) not null,
价格 decimal(6,2),
页数 int,
出版社 varchar(50) default '清华大学出版社',
作者 varchar(50),
primary key (书号) )

create table 借阅 (
会员编号 varchar(20) foreign key references 会员证(会员编号),
书号 int foreign key references 图书(书号),
借阅时间 datetime,
归还时间 datetime,
primary key (会员编号,书号,借阅时间) )

一般user表只用一个id或者编号来做主键

参考技术A 外键引用要求引用键必须是唯一键,如果是联合主键,那么算作联合唯一,不能作为外键引用
像你的表,一般只需要把编号设置为主键即可,姓名作为冗余字段可加可不加追问

我是不是只需要吧编号设置为主键就不会报错了?

追答

你需要把会员证表中的编号设置为主键,姓名其实就不用管了
如果你下面还需要把姓名用作外键,那么姓名需要设置唯一键约束,
因为姓名会有重名的嘛,所以一般建议表与表关联设置只用编号就行了

以上是关于在sql中请举例说明主键,和外键?详细举例,快,好,采纳!!!的主要内容,如果未能解决你的问题,请参考以下文章

什么是主键和外键?

SQL Server 中的“键”是啥意思?主键和外键是啥?

主键和外键的作用

主键和外键的作用

SQL 外键名称问题

3.啥是键、候选键、主键和外键?