❶ sql 主码和外码
表外建主键:alter table 课程表add constraint major_id_pk primary key(课程号);表外建外码:alter table 成绩表add constraint major_id_fk foreign key
(课程号) references 课程表(课程号);成绩表外码 课程号 参照课程表 课程号
❷ sql里的主码和外码的设置可以一样吗
主码包含候选码和码,候选码包含码。
1、含义不同:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码;若一个关系有多个候选码,其中任何一个都可以做主码,主码的诸属性就正侍搭称为主属性;一个表中如果有一个字段,存储另外一个表的主键,这个字段就是外键,又称外码。
2、实际操作不同:码是可以确定一个元组的所有信息的属性名或属性名组。
例如在{a,b,c,d}中,假设知道a的值就能确定a,b,c,d的值,假设知道c,d的值就可以确定a,b,c,d的值,那么{a}就是码,{c,d}就是码。
并且{a,b},{a,c},{a,b,c},{a,b,c,d}等也都是码,因为它们也可以确定一个元组的所有值,即使很多余。
候选码的真子集中不存在码,候选码可以有多个。
就上面的例子而言举拿,{a}是候选码,{c,d}是候选码,因为它们的真子集中不存在码。
而诸如{a,b}并不是候选码,因为它的真子集中含有{a
开通谈好VIP解锁全文
❸ sql server 2008如何设置外码
用关键语句:foreign key ...(属性名) references ....表名+(属性名)
下边举例说明:
create table Student /*建立一个学生表*/
Sno char(8),
Sname char(6) unique not null default 'wang',
Ssex char(2) check(Ssex='男'or Ssex='女') not null,
Sage smallint not null check(Sage<150),
Sdept char(20) not null,
primary key(Sno)
create table Course /*建立课程表*/
(Cno char(3) primary key ,
Cname char(20) not null,
Cpno char(3) foreign key references Course(Cno), /*这里是自引用主码*/
Ccredit smallint,
--foreign key Cpno references Course(Cno)
create table SC /*建立学生选课表*/
(Sno char(8) ,
Cno char(3) not null ,
Grade smallint not null,
--foreign key Sno references Student(Sno)
primary key (Sno,Cno), /*主码由两个属性构成*/
foreign key (Sno) references Student(Sno), /*引用学生表的主码Sno*/
foreign key (Cno) references Course(Cno) /*引用课程表的主码Cno*/
(3)sql可视化设外码扩展阅读
SQL Server 有两个接亩旅喊口可以认为是 SQL Server 7.0 的本机接口,即 OLE-DB 和 ODBC。DB-Library 接口也是本机的,它与 TDS 通信,但是 DB-Library 使用的迅野是 TDS 较老的版本,需要在服务器上进行一些转换。
现有的 DB-Library应用程序仍然可以继续与 SQL Server 7.0 协同使用,但是很多新的功能和性能提高等好处只能通过 ODBC 和 OLE DB 才能利用。
参镇颂考资料来源:网络-Microsoft SQL Server
❹ 怎么在SQL server2005中为表添加外码限制
外码?
如果你说的是外键就应该这样写SQL语句
alter table 表名1
add constraint fk_表名1_表名2 foreign key (列名) references 表名2(列名)
可以可视化操作,用SQL Server Management Studio在表右键-设计,再列名右键-关系 里面有设置
❺ sql,如何用sql语句对一个已经编辑好的表在设置主码和外码
sql中的主码和外码,属于索引,SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQLServer系统的性能,加快数据的查询速度与减少系统的响应时间
创建索引的语法:
CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEXindex_name
ON{table_name|view_name}[WITH[index_property[,....n]]
说明:
UNIQUE:建立唯一索引。
CLUSTERED:建立聚集索引。
NONCLUSTERED:建立非聚集索引。
Index_property:索引属性。
UNIQUE索引既可以采用聚集索引结构,也可以采用非聚集索引的结构,如果不指明采用的索引结构,则SQLServer系统默认为采用非聚集索引结构。
删除索引语法:
DROPINDEXtable_name.index_name[,table_name.index_name]
说明:table_name:索引所在的表名称。
index_name:要删除的索引名称。
修改索引的语法:
ALTER INDEX命令在其用来做什么方面多少有些欺骗性。截止到现在,ALTER命令总是与修改对象的定义有关。例如ALTER表以添加或禁用约束和列。ALTER INDEX是不同的-该命令与维护有关,而与结构完全不相干。如果需修改索引的组成,那么只能DROP然后CREATE索引,或者用DROP_EXISTING=ON选项CREATE并使用索引。
ALTER INDEX {<name of index> | ALL}
ON<table or view name>
{ REBUILD
[[ WITH (
[PAD_INDEX = {ON | OFF}]
| [[,] FILLFACTOR = <fillfactor>
| [[,] SORT_IN_TEMPDB = { ON | OFF }]
| [[,] IGNORE_DUP_KEY = { ON | OFF }]
| [[,] STATISTICS_NORECOMPUTE = { ON | OFF }]
| [[,] ONLINE = { ON| OFF }]
| [[,] ALLOW_ROW_LOCKS = { ON | OFF }]
| [[,] ALLOW_PAGE_LOCKS = { ON | OFF }]
| [[,] MAXDOP = <max degree of parallelism>
)]
|[ PARTITION = <partition number>
[ WITH (< partition rebuild index option>
[,...N])]]]
| DISABLE
| REORGANIZE
[ PARTITION = <partition number> ]
[ WITH (LOB_COMPACTION = { ON | OFF })]
| SET ([ ALLOW_ROW_LOCKS = { ON | OFF} ]
| [[,] ALLOW_PAGE_LOCKS = { ON | OFF } ]
| [[,] IGNORE_DUP_KEY = { ON | OFF } ]
| [[,] STATISTICS_NORECOMPUTE = { ON | OFF }]
)
}[;]
❻ 用SQL SERVER 如何在建好表后添加外码SQL语句怎么写呀
1、打开SQL,选择“WINDOWS身份验证”,点击连接。在左边的框条中找到“数据库“,右击选择”新建数据库“,建立名为”test“的数据库,其他默认。可以在数据库下找到新建的test。
❼ sql server怎样在现有表上创建外码
在 SQL Server Management Studio 中,打开对象资源管理器。
在对象资源管理器中,单击“连接”,然后选择“SQL Server Compact Edition”。
在“连接到服务器”对话框的“数据库文件”下拉列表中,选择“<新建数据库…”。
在“创建新的 SQL Server Compact Edition 数据库”对话框中,为新数据库文件键入文件路径和文件名。您也可以选择默认排序顺序和选择是否要对数据库进行加密或密码保护。如果选择对数据库进行加密或密码保护,请键入密码,然后单击“确定”。
单击“连接”,连接到新的 SQL Server Compact Edition 数据库。此数据库现在将显示在对象资源管理器中。
❽ sql,如何用sql语句对一个已经编辑好的表在设置主码和外码
--修改主键
ALTER
TABLE
tablename
--修改表
ADD
CONSTRAINT
tb_PRIMARY
PRIMARY
KEY
CLUSTERED
(列名)
/*将你要设置为主键约束的列*/
--修改约束ALTER
TABLE
销售表
--修改表
ADD
CONSTRAINT
ck_sl
--创建检查约束
CHECK
(数量
>=
1
and
数量
<=
10000)
--添加约束条件
--修改外键alter
table
表名
add
constraint
外键名称
foreign
key
(字段)
references
关系表名
(关系表内字段)
❾ 在SQL SERVER中,外码是怎么建立的有什么作用
外码就是其他字段的主码,外码的取值只能是主码。如果取其他的值就会报错。建立的时候指定是哪个表中的哪个字段的外码就行
❿ SQL语言创建表时候怎么定义主码和外码
SQL语言创建表时候用Primary Key(属如局性名)定义主码,用Foreign Key(属性名)定义外码。
主码是一种唯一关键字,表定义的一部分。一个表的主码可以由多个关键字共同组成,并且主码的列不能包含空值。主码是可选的,并且可在 CREATE TABLE语句中用Primary Key(属性名)定义。
将一个表的值放入第二个表来表示关联,所使用的值是第一个表的主键值(在必要时可包括复合主洞雹键值)。此时,第二个表中保存这些值的属性称为外键,用Foreign Key(纳橡帆属性名)定义。
如:
CREATE TABLE Customer
(SID integer,
CID integer,
Last_Name varchar(30),
First_Name varchar(30),
PRIMARY KEY (SID),ForeignKey(CID名));
(10)sql可视化设外码扩展阅读:
主码不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。实际上,因为主码除了唯一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主码需要更新,则说明主码应对用户无意义的原则被违反了。
主码应当由计算机自动生成。如果由人来对主码的创建进行干预,就会使它带有除了唯一标识一行以外的意义。一旦越过这个界限,就可能产生人为修改主码的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。