问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

sql的主键和外键怎么设?

发布网友 发布时间:2022-04-09 06:13

我来回答

4个回答

热心网友 时间:2022-04-09 07:42

一、主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
主键和外键约束的方法:
create table Student --建表格式:create table 自定义的表名
( --字段名一般为有一定意义的英文
StudentName nvarchar(15), -- 格式:字段名类型()括号里面的是允许输入的长度
StudentAge int, --int型的后面不需要接长度
StudentSex nvarchar(2) --最后一个字段后面不要逗号
)
--在创建表时就可以对字段加上约束:
create table Student
(
StudentNo int PRIMARY KEY IDENTITY(1,1), --加主键约束,还有标识列属性(两者构成实体完整性)
StudentName nvarchar(15) not null, --加非空约束,不加"not null" 默认为:可以为空
StudentSchool text(20) FOREIGN KEY REFERENCES SchoolTable(SchoolName), --加外键约束,格式:FOREIGN KEY REFERENCES 关联的表名(字段名)
StudentAge int DEFAULT ((0)), --加默认值约束
StudentSex nvarchar(2) CHECK(StudentSex=N'男' or StudentSex=N'女') --加检查约束,格式:check (条件表达式)
)
--如果在表创建好了以后再加约束,则格式分别为:
-- 主键:
alter table 表名
add constraint PK_字段名--"PK"为主键的缩写,字段名为要在其上创建主键的字段名,'PK_字段名'就为约束名
primary key (字段名) --字段名同
--唯一约束:
alter table 表名
add constraint UQ_字段名
unique (字段名
--外键约束:
alter table 表名
add constraint FK_字段名--"FK"为外键的缩写
foreign key (字段名) references 关联的表名(关联的字段名) --注意'关联的表名'和'关联的字段名'
alter table 表A add constraint FK_B foreign key (ticket_no) references 表B(ticket_no)
alter table 表A add constraint FK_C foreign key (person_no) references 表C(person_no)
alter table 成绩表 add constraint FK_StudentNo foreign key (StudentNo) references Student(StudentNo)
ON UPDATE CASCADE ON DELETE CASCADE
级联更新,级联删除,这样在删除主表Student时,成绩表中该学生的所有成绩都会删除。
--检查约束:
alter table 表名
add constraint CK_字段名
check (条件表达式) --条件表达式中的条件用关系运算符连接
--默认值约束:
alter table 表名
add constraint DF_字段名
default '默认值' for 字段名--其中的'默认值'为你想要默认的值,注意'for'
--删除创建的约束:
alter table 表名
drop constraint 约束名--约束名为你前面创建的如:PK_字段这样的约束名
--注意:如果约束是在创建表的时候创建的,则不能用命令删除
--只能在'企业管理器'里面删除
-- 获取SqlServer中表结构
SELECT syscolumns.name,systypes.name,syscolumns.isnullable,
syscolumns.length
FROM syscolumns,systypes
WHERE syscolumns.xusertype = systypes.xusertype
AND syscolumns.id = OBJECT_ID('Student')
-- 单独查询表递增字段
SELECT [name] FROM syscolumns WHERE
id = OBJECT_ID(N'Student') AND COLUMNPROPERTY(id,name,'IsIdentity')=1
-- 获取表主外键约束
EXEC sp_helpconstraint 'StuResults'
-- 查询表主键外键信息
SELECT sysobjects.id objectId,OBJECT_NAME(sysobjects.parent_obj) tableName,
sysobjects.name constraintName, sysobjects.xtype AS constraintType,
syscolumns.name AS columnName
FROM sysobjects INNER JOIN sysconstraints
ON sysobjects.xtype in('C', 'F', 'PK', 'UQ', 'D')
AND sysobjects.id = sysconstraints.constid
LEFT OUTER JOIN syscolumns ON sysconstraints.id = syscolumns.id
WHERE OBJECT_NAME(sysobjects.parent_obj)='StuResults'

热心网友 时间:2022-04-09 09:00

把B表的主键里的纪录放在A表里,这些纪录就是外键.

热心网友 时间:2022-04-09 10:35

Foreign
Key,只要在搜索引擎搜索这类的信息,你们就可以了解这方面的讯息了.

热心网友 时间:2022-04-09 12:43

哪个数据库?数据库分好多种
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑音乐怎样保存到文件中怎样把歌曲放到文件夹里 电脑上如何把歌曲做成文件夹怎么把歌曲转化为文件 如何把音频加入到电脑文件夹上怎么把歌曲放到文件夹中 海参是不是吃多长时间以后可以不用在吃了 梦见一半黑色 电吉他买了音箱还要买效果器吗 有人去过资和信百货吗? 资和信百货企业理念 资和信百货家庭季家庭季简介 资和信是什么 明天出中考成绩做梦梦到自己得胃癌了怎么回事? 人该怎么选择自己的人生? 怎样选择自己应该喜欢的人? 选择人生道路 自己选择 怎么选择自己爱的人 选择自己喜欢的人还是合适的人 发起人可以自己选择审批人吗? 有些人会为自己选择付出代价吗? 怎样去选择自己喜欢的人呢 如何将excel筛选掉重复的记录 土地使用税的纳税主体有哪些 棘素优品破壁机怎么用? 同一辆火车同时买票怎么价格不一样? 客机座舱能否采用左右不对称座位布局? 为什么相同目的地、相同等级的座位、时间也几乎相同的不同高铁车次票价不一样 京沪高铁座位号似乎与其他车座位号不一样,比如01D等,请问各位大虾有座位表吗? 怎么样才能收紧松驰的腹部我坚持做仰卧起坐减腹部的 仰卧起坐真的能练腹肌么?怎么能减掉腹部赘肉呢? 为什么我坐的高铁二等座一排只有四个位跟之前的不一样 为什么不见b 难道只有我这节车厢是这样? k5031座位11c这是有座吗,怎么和正常座位不一样呢 这个鸡出现什么问题啊 假的鸡蛋泛滥,该选择何种鸡蛋才能放心? 鸡蛋、猪价格下跌,是何缘故导致? 小鸡小藻虾青素鸡蛋是怎样对眼睛好的? 生鸡蛋泡饭,鸭仔蛋,吃下肚安全吗 求《甘十九妹》第十五集中尹剑平的一段话 怎样做何包蛋 一部手机两个快手号都可以开通小黄车吗 增加内存后集成显卡驱动器异常怎么办? 谁知道何包蛋怎样做才好吃?? 调了一下分辨率,白屏,驱动大师重装显卡驱动,硬件检测,都没问? 急!!集成显卡的驱动问题 thinkpad 双显卡切换 显卡驱动异常 求解 迁移户口需要户主本人去吗 户口迁出必须要本人去吗 迁户口需要本人去吗,可以找人代办吗 空气净化器测试舱的检测方法是怎样的? 点淘直播间手机上架产品看不到是什么原因 空气净化器评测 空气净化器质检报告(净化性能)检测项目有哪些?