sql用命令创建主键与外键,怎么 *** 作?

sql用命令创建主键与外键,怎么 *** 作?,第1张

用命令创建主键与外键方法如下:

--用命令创建主键与外键. 

--使用SQL语句创建主键约束可以在创建表(CreateTable)或修改表(AlterTable)时进行 创建。

--例创建表时

createtabletablename

(

idint(CONSTRAINTpk_id)PRIMARYKEY

)

--例修改表时

ALTERTABLEtablename  --修改表

ADD

CONSTRAINTtb_PRIMARY

PRIMARYKEYCLUSTERED(列名)/*将你要设置为主键约束的列*/

建立联合主键有两种方式:

一种是在建表时就写出,语句如下:

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))

扩展资料:

联合主键的使用情况及优点:

联合主键就是用2个或2个以上的字段组成主键。用这个主键包含的字段作为主键,这个组合在数据表中是唯一,且加了主键索引。

可以这么理解,比如,你的订单表里有很多字段,一般情况只要有个订单号bill_no做主键就可以了,但是,现在要求可能会有补充订单,使用相同的订单号,那么这时单独使用订单号就不可以了。

再使用个订单序列号bill_seq来作为区别。把bill_no和bill_seq设成联合主键。即使bill_no相同,bill_seq不同也是可以的。

1.主键语法

①创建时:create table sc (

studentno int,

courseid int,

score int,

primary key (studentno) )

②修改时:ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名)

前提是原先没有设置主键。

2.外键语法

①创建时:create table sc (

studentno int,

courseid int,

score int,

foreign key (courseid) )

②修改时:

ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[约束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列]

3.使用组合主键

如果一列不能唯一区分一个表里的记录时,可以考虑多个列组合起来达到区分表记录的唯一性,形式

①创建时:create table sc (

studentno int,

courseid int,

score int,

primary key (studentno,courseid) )

②修改时:alter table tb_name add primary key (字段1,字段2,字段3)

前提是原来表中没有设置主键,若原先已有主键则会报错。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11537930.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存