㈠ 怎样在sql SERVER设置双主键或多个主键
首先一个表是不能有两个主键的。但是可以有两个字段组合成一个主键,这就是为什么有时候表里为什么会有两个字段都有主键的标志,那是因为他们组合成了一个主键了。我们可以先删除了原来的主键再用类似下面SQL语句建立:
alter table 你的表名 add constraint pk_name primary key (字段1,字段2);
或者在表设计器里面按住ctrl选中要设置主键的两列再设置主键就OK了.
㈡ SqlServer t-sql 主键定义问题
复合主键不能直接加在建表的列后面的
create table test
(a int ,
b int ,
c int
)
CONSTRAINT PK_test primary key
(a,b) on primary
㈢ 请问SQLserver中的主键和外键的作用
主键是对表的约束,保证数据的唯一性!
外键是建立表于表之间的联系,方便程序的编写!!
㈣ 如何在sqlserver数据库表中建立复合主键
方法一:创建表之后,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
方法三:建表后,右键-->设计,选中作为符合主键的列,选中之后右击-->设为主键
㈤ 数据表sqlserver,复合主键,一个主键是姓名,一个主键是id,如果姓名重复会不会出错
不会出错,既然是复合主键,保存的时候会比较以前的主键,只有姓名和id完全相同才认为主键重复
㈥ SQL Server 怎么建立联合主键
建立联合主键有两种方式:
一种是在建表时就写出,语句如下:
Create Table 表名 (字段名1 Int Not Null,
字段名2 nvarchar(13) Not Null Primary Key (字段名1, 字段名2),
字段名3…………
字段名N………… )
另一种是在建表后更改,语句如下:
alter table 你的表名 add constraint pk_你的表名 primary key (字段1,字段2)
ALTER TABLE 表名 WITH NOCHECK ADD
CONSTRAINT [PK_表名] PRIMARY KEY NONCLUSTERED
(
[字段名1],
[字段名2]
)
创建联合主键还可以这样写:
create table huayunkeji_today(device_id int , year int, month int, day int, hour int, temperature float, humidity float,
primary key(device_id,year,month,day,hour));
(6)sqlserver复合主键扩展阅读:
联合主键的使用情况及优点:
联合主键就是用2个或2个以上的字段组成主键。用这个主键包含的字段作为主键,这个组合在数据表中是唯一,且加了主键索引。
可以这么理解,比如,你的订单表里有很多字段,一般情况只要有个订单号bill_no做主键就可以了,但是,现在要求可能会有补充订单,使用相同的订单号,那么这时单独使用订单号就不可以了。
再使用个订单序列号bill_seq来作为区别。把bill_no和bill_seq设成联合主键。即使bill_no相同,bill_seq不同也是可以的。
㈦ 搞定了100分!两个问题! sqlserver
可以把两个字段联合起来设主键的
create table test
(
id int,
id2 int,
constraint PK_test_idid2 primary key (id, id2)
)
另外告诉你哦,给表添加约束有很多种语法的,直接在字段定义后加primary key是最简单的一种,他会建立一个由系统自动命名的主键约束。
如果要自己命名约束,完整的语法是:
id int constraint 约束名 primary key
如果要把多个字段设为联合主键,只要在primary key后面加个括号,然后把字段名都写在里面就可以了,比如:
id2 int constraint 约束名 primary key (id, id2)
还有一点,constraint 约束名 primary key (id, id2)这个子句可以跟在任何一个字段后面,也可以在字段定义完成后再单独定义,偶觉得语法还是比较自由的哈哈~
至于你的第二个问题么~
偷懒方法:就是取出data1相同记录中id最大和id最小的记录,再用union all连接起来,再去掉重复记录,排下序就OK了……可能有点不符合要求~
select distinct *
from (select min (id) as id,data1,data2
from test
group by data1,data2
union all
select max (id) as id,data1,data2
from test
group by data1,data2) as tmp
order by id
完美方法:你看吧,我不想说……这是参考字段数不确定时,SQL交叉表的建立方法。头都晕了……
declare @sql varchar(max)
set @sql = ''
select @sql = @sql + ' union all select top 2 * from test where data1 = ''' + data1 + ''''
from (select distinct data1 from test) as temp
set @sql = right(@sql, len(@sql) - 11)
exec (@sql)
㈧ sqlserver复合主键的问题,其中的一个键值是可以重复的,我想将只用这个键作为另一个表的外键,可有办法
这个好像不行,做外键的话要求主键具有唯一约束,没试过用复合主键做外键的
㈨ sqlserver里如何实现联合主键及如下自增功能
不会,不过有些思路
提取你要输入的A的值,判断 select count(*) from TABLE where A=你输入的值。
case1:如果查到的值是0,则B为1;
case2:如果查到的值不是0,查询 select max(B)+1 from TABLE where A=你输入的值 ,并将查询到的值和A要输入的值一起插入;
如果只是用数据库实现的话带参数的存储结构应该能实现你这个要求,编程的话就更简单了