SQL中主键的使用

来源:百度知道 编辑:UC知道 时间:2024/06/14 06:19:48
对主键虽然了解一些,但不总是模模糊糊的。有哪位高手,详细给我讲解一下。(像它的特点,使用方法等等)
我这儿有个储存过程:
CREATE PROCEDURE sp_InsertPhoto
@name AS VARCHAR(50),
@image AS IMAGE,
@album AS INT
AS
INSERT INTO Photos ([name], photo, category)
VALUES (@name, @image, @album)
RETURN @@identity

主键是ID。不是说主键必须赋值吗,这里INSERT就没有插主键值。

其实很简单,你就知道一下几点就可以了,在以后的工作中就足够了。
1,主键非空,也就是说被设定为主键的列在插入数据的时候就不能为空,如果为空SQL就会报错。
2,主键是唯一的,一个表通过一个主键可以确定一条记录,有一条记录的主键是SF110如果你再向里面插入SF110的记录SQL就会报错。
3,有时可以用两个字段来建立主键,这叫联合主键。这种情况出现在当一个字段无法唯一的时候要借助另一个字段来确保唯一性的时候。

主键一般都是挑选能够唯一表示一条记录的字段来做,你比如说现在有一个“学生表”里面有“学生编号”“学生姓名”“学生年龄”等
根据原则肯定要以“学生编号”为主键。

CREATE TABLE student
(sid char(4) not null PRIMARY KEY,
sname VARCHAR(10),
sage int,
)

sid 就是主键 唯一标识每一个学生

主键能大大提高查询速度,尤其是大数据量的情况下

主键是数据完整性的保障之一,具体说是实体完整行,主键不允许为空也不能重复。
假如你做了一个员工表格
有一列是身份证号
如果这个人没有身份证号,那么你就是雇黑工,如果有两个人身份证号相同,那么一个人是伪造的身份。哈哈 所以正常情况下这两种情况都不允许出现。这是你只要给身份号这一列设置了主键,那么你插入或者修改数据时,数据库管理系统就会自动要求他们不能为空也不能有两条记录的号码相同。
这就是主键的作用

你那个id 是个标识列,dbms会自动为他赋值,而且保证其唯一性,所以你就不用给他赋值了

简单讲
主键就是你选定能够唯一标识一条记录的那个属性,
有的属性也能唯一标识一条记录,但是没有被你选定,那他不能算主键,只能算候选键。

如果你的主键设置为标识列,插入的时候可以不用指定。他是自动增加的。