create table a
(
a int primary key,
b int not null unique
)
;
注:not null unique相当于主键,这样就形成了复合主键
方法一:创建表之后,alter table table_name add primary key(字段1,字段2)
方法二:CREATE TABLE 表名 (字段名1 Int Not Null, 字段名2 nvarchar(13) Not Null 字段名3………… 字段名N…………) GO ALTER TABLE 表名 WITH NOCHECK ADD CONSTRAINT [PK_表名] PRIMARY KEY NONCLUSTERED ( [字段名1], [字段名2] ) GO
方法三:建表后,右键-->设计,选中作为符合主键的列,选中之后右击-->设为主键
1表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键。
2、外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键
Reports表的主键 Sno,Tno,Cno
Sno关联StudentsSno,
Tno关联TeachersTno,
Cno关联CoursesCno
可以
第一张表JK_USE用UseId属性作主键
第二张表JK_INFO用UseId属性作外键
这样就可以将这两个表关联上了
第一张表JK_USE定义主键时如下:
PRIMARY
KEY(UseId)
第二张表JK_INFO定义外键时如下:
FOREIGN
KEY(UseId)
REFERENCES
JK_USE(UseId)
一个表只能有一个字段做做主键,但如果这个表没有主键,你又想找出惟一的记录,那么你可以使用多个字段组合成为主键来惟一标识一条记录。
你的问题:
一个表中只能有一个主键 (对)
是不是只能有一个字段为主键 (错,主键可由多字段组成)
联合主键是有着特殊的需求的。
建表的时候创建
Create Table 表名 (字段名1 Int Not Null,
字段名2 nvarchar(13) Not Null Primary Key (字段名1, 字段名2),
字段名3…………
字段名N………… )
或者
建表之后修改表结构
ALTER TABLE 表名 WITH NOCHECK ADD
CONSTRAINT [PK_表名] PRIMARY KEY NONCLUSTERED
(
[字段名1],
[字段名2]
)
根据你的提问,我认为你所说的是物理主键和逻辑主键的概念
一般所言的数据库中的主键是物理主键,他可能在系统中由数据库自动生成,比如一个32位长的随机字符串
而逻辑主键一般是用来表示一个包含确切意义的并唯一的键值,使用者可以根据逻辑主键的值清晰的了解到一些信息,但这些信息从物理主键是无法了解的
你上面的表里是打算用逻辑主键当物理主键用这样做可以,但不推荐
一般的做法,尤其在大型项目中建议使用物理主键,该主键交由数据库自动生成并使用自己的逻辑主键,需要在程序中判断自己逻辑主键的唯一性,当然如果要求不高的系统可以不做判断
优点,在数据库迁移等过程中,可最大可能的保护你数据的完整性,比如你从一个ORACLE数据库移动到SEQ SERVER数据库时,可能物理主键会存在这样或那样的问题,这时你可以选择放弃原有的物理主键,只移动数据内容并生成新的物理主键
还有点建议,在程序中使用的时候,建议使用物理主键来关联你的数据内容~
答题完毕,希望对你有所帮助
以上就是关于我在数据库中建了两表怎么用联合主键连起来啊/全部的内容,包括:我在数据库中建了两表怎么用联合主键连起来啊/、如何在sqlserver数据库表中建立复合主键、SQL中一个表中有几个外键,它们共同组成它的主键,这什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)