真的郁闷得很,SQL Server快学完了,根本没体会到主键、外键、标识列的作用,多表查询也没体会到外键的作用,也从没设置过外键
问题:1:主键和标识列有什么区别啊?IDENTITY关键字是设置标识列吗?UNIQUE又是设置什么的?2:下面语句,要求查询出下了订单的所有客户、订单编号、和订单金额SELECT 客户表.姓名, 订单主表.订单编号, 订单主表.订单金额
FROM 客户表,订单主表
WHERE 客户表.客户编号 = 订单主表.客户编号
ORDER BY 姓名,订单金额 上面是多表查询的SQL语句,那些表也都是我自己创建的,我没设置过外键,请问,它如何能体现外键的作用?
谢谢!!!1
问题:1:主键和标识列有什么区别啊?IDENTITY关键字是设置标识列吗?UNIQUE又是设置什么的?2:下面语句,要求查询出下了订单的所有客户、订单编号、和订单金额SELECT 客户表.姓名, 订单主表.订单编号, 订单主表.订单金额
FROM 客户表,订单主表
WHERE 客户表.客户编号 = 订单主表.客户编号
ORDER BY 姓名,订单金额 上面是多表查询的SQL语句,那些表也都是我自己创建的,我没设置过外键,请问,它如何能体现外键的作用?
谢谢!!!1
标识列和主键没有任何关系。
只是通常喜欢用标识列来做主键罢了--2
IDENTITY 是设置标识列的
UNIQUE 和PRIMARY KEY 都是约束
共同点是约束强制实施列集中值的唯一性
PRIMARY KEY 不允许有nuil
外键也是约束,约束主表与从表的数据完成性。
主键由表中一个或多个列组成,包含一个唯一跨所有记录的值。如果将一列标识为主键,那么数据库引擎可以确保最终不会出现有相同值的两个记录。主键可以由单个列(例如Id数字列包含了表中每条记录的唯一数字)组成,也可以跨多个列,其中的列组合起来构成整条记录的唯一ID。SQL Server也支持标识列。标识列是一个数字列,其值是在插入新记录时生成的。它们通常用作表的主键。
标识列可以用IDENTITY设置自动增长。1:主键和标识列有什么区别啊?IDENTITY关键字是设置标识列吗?UNIQUE又是设置什么的?不是一个概念,但是标识列可以作为主键。
IDENTITY是设置标识列自动增长的。
UNIQUE 是唯一约束。
2:下面语句,要求查询出下了订单的所有客户、订单编号、和订单金额
如果有外键约束的话,体现在如果这个客户已有订单,在订单存在的情况下,这个客户的信息是不能删除的。
订单主表 设置订单编号(作为主键)、客户编号(作为外键,这样就可以和客户表关联了)可以再设置一个订单明细表 设置一个自增ID(identity(1,1)),订单编号(外键也就是订单主表的主键),其他属性列(比如商品编号、商品数量、商品单价等等)
其实泡个精通SQL的妞也能很好的解决问题滴。
http://msdn.microsoft.com/zh-cn/library/ms191236(v=sql.90)UNIQUE 约束
http://msdn.microsoft.com/zh-cn/library/ms191166(v=sql.90)
IDENTITY
http://msdn.microsoft.com/zh-cn/library/ms186775(v=sql.90)
主键、索引,唯一性约束三者到底有啥不一样啊,都是唯一性,分别用在哪些地方啊?
UNIQUE 约束确保在非主键列中不输入重复的值.
标识列是一个数字列,其值是在插入新记录时生成的。它们通常用作表的主键。标识列不一定是主键。
标识列可以用IDENTITY设置自动增长。