SQL PRIMARY KEY:如何创建并添加到现有表
SQL中的主键是什么?
首要的关键 是唯一标识一条记录的字段或字段组合。主键是唯一的一列或一组列。换句话说,对于主键来说,每个值都是唯一的。
主键规则
- 每个表只能有一个 SQL 主键。
- 所有值都是唯一的,并且主键 SQL 值可以唯一地标识每一行。
- 系统不允许插入表中已存在的具有 SQL Server 主键的行。
- 主键不能为 NULL。
下图总结了 SQL 主键的所有上述要点。
如何在 SQL Server 中创建主键
我们可以在 2种方式:
1. SQL Server Management Studio中
2. T-SQL:在创建新表时创建主表
SQL Server Management Studio中
步骤1) 右键单击表名称。单击 设计。
步骤2) 右键单击列名称。单击“设置主键'
结果: Course_Id 现在是 首要的关键。
T-SQL:在创建新表时创建主键。
以下是使用 T-SQL 创建带主键表的语法
语法:
CREATE TABLE <Table_Name> ( Column1 datatype, Column2 datatype,CONSTRAINT <Name> PRIMARY KEY (Column name) . );
让我们创建一个以一列作为 SQL 主键的表。
查询:
CREATE TABLE COURSE_TSQL_PK (Course_ID Int not Null, Course_name Varchar(20) CONSTRAINT PK PRIMARY KEY (Course_ID) )
步骤1) 点击运行查询 '执行。'
结果: Course_Id 现在是 首要的关键。
计费示例: 让我们看看它是否允许输入具有相同课程 ID 的多条记录。
步骤1) 插入 4 行 不同的 Course_ID
Insert into COURSE_TSQL_PK values (1,'SQL'); Insert into COURSE_TSQL_PK values (2,'Python'); Insert into COURSE_TSQL_PK values (3,'SQL'); Insert into COURSE_TSQL_PK values (4,'C');
步骤2) 通过运行选择查询来验证所有数据是否已成功插入。
备注:我们可以在非主键中插入重复值。
步骤3) 现在让我们尝试使用现有的 Course_ID 作为主键插入新记录。
Insert into COURSE_TSQL_PK values (4,'JAVA');
结果: 系统不允许插入新值,因为 4 是 Course_ID 列,它是主键。
如何在 SQL 中向现有表添加主键?
现在我们将看到如何在 SQL 中向现有表添加主键:
您可以使用 ALTER 语句创建主键。但是,只能在定义为 NOT NULL 的列上创建主键。您无法在允许 NULL 的列上创建主键。如果需要这样做,您必须删除并重新创建表。
这是语法:
ALTER TABLE tableName ADD CONSTRAINT constraintName PRIMARY KEY (column_1, column_2, ... column_n);
例如:
ALTER TABLE students ADD CONSTRAINT students_pk PRIMARY KEY (admission);
我们为现有表添加了主键约束。约束已添加到 admission 列,并指定名称为 students_pk。
有趣的事实!
- 主键可以是多个列的组合。此组合称为 复合主键.
- 主键最多可以有 16 列。
总结
- 每个表只能有一个主键
- 所有的值都是唯一的,可以 唯一地标识每一行。