PK FK 命令小记

本文深入探讨了SQL中约束的增加、删除、重命名、禁用与启用操作,包括主键、外键等关键概念及其语法应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PK:

–增加

alter table AAA  add constraint aaa primary key (USERNAME);

ALTER TABLE AAA ADD CONSTRAINT aaa PRIMARY KEY(username) USING INDEX

 ALTER TABLE AAA ADD CONSTRAINT aaa PRIMARY KEY(username) USING INDEX aaa;

–删除

 ALTER TABLE AAA DROP PRIMARY KEY CASCADE; 

 alter table AAA  drop constraint bbb 

 alter table AAA  drop constraint bbb cascade

 alter table AAA  drop constraint bbb cascade drop index

 alter table AAA  drop constraint bbb cascade keep index

–rename

ALTER TABLE aaa RENAME CONSTRAINT aaa   TO bbb;

–disable

alter table t1 disable constraint t1_pk;

 

 

FK:

–增加

alter table AAA
  add constraint bbb foreign key (USERNAME)
  references ccc (AGENT_NAME);

 

alter table empx add constraint fk_deptx foreign key (deptno) references deptx(deptno) novalidate;


alter table AAA
  add constraint bbb foreign key (USERNAME)
  references ccc (AGENT_NAME) on delete cascade;

alter table AAA
  add constraint bbb foreign key (USERNAME)
  references ccc (AGENT_NAME) on delete set null;


alter table AAA
  add constraint bbb foreign key (USERNAME)
  references ccc (AGENT_NAME) on delete set null  deferrable initially deferred;

–删除

 alter table empx drop constraint fk_deptx;

 

–约束范围
disable novalidate 原数据和新数据都不做验证
disable validate已经存在的数据要满足条件,新数据可以不满足条件
enable novalidate新数据不允许违背规则,原有数据可以不满足
enable validate新数据要验证,原有数据也要验证,缺省情况

### 主键(Primary Key, PK) 主键是一种用于唯一标识表中每一行记录的机制。它具有以下特点: - **唯一性**:主键值在表中必须是唯一的,不允许存在重复值[^1]。 - **非空性**:主键字段不能为空值(NULL),即每条记录都必须有一个明确的主键值[^2]。 创建主键的方式通常是在定义表结构时指定某一列为 `PRIMARY KEY`,也可以通过修改现有表来添加主键约束。以下是示例代码: ```sql CREATE TABLE 表名 ( 列名 数据类型 PRIMARY KEY, ... ); ``` 如果需要向已有的表中添加主键,则可以使用如下语句: ```sql ALTER TABLE 表名 ADD CONSTRAINT PK_名称 PRIMARY KEY (列名); ``` --- ### 外键(Foreign Key, FK) 外键是指在一个表中的某个字段,其值必须存在于另一个表的主键字段中。它的主要功能是维护数据的一致性和完整性。具体来说: - **关联性**:外键的作用是用来与其他表建立联系,从而实现多表之间的参照完整性[^3]。 - **可选性**:外键允许为空值(NULL),并且可以有重复值[^4]。 在外键的设计上需要注意的是,外键所在的表被称为“子表”,而被引用的表则称为“父表”。例如,在学生信息管理系统中,“课程成绩表”可能包含学生的学号作为外键,而这些学号来源于“学生基本信息表”。 下面是一个设置外键的例子: ```sql ALTER TABLE 子表_name ADD CONSTRAINT FK_名称 FOREIGN KEY (外键字段) REFERENCES 父表_name(主键字段); ``` 此命令表示将 `子表_name` 的某列设为外键,并将其与 `父表_name` 中的主键相连接。 --- ### 删除外键 当不再需要某些外键约束时,可以通过 SQL 语句移除外键。操作方式如下所示: ```sql ALTER TABLE 子表_name DROP FOREIGN KEY 外键约束名称; ``` 这里的关键在于知道具体的外键约束名称,这通常是创建外键时自动生成的一个名字或者是手动命名的结果[^5]。 --- ### 总结对比 | 特性 | 主键(PK) | 外键(FK) | |--------------|-------------------------------------|-----------------------------------------| | **目的** | 唯一标识一条记录 | 维护不同表间的数据一致性 | | **是否允许 NULL** | 不允许 | 允许 | | **是否允许重复** | 不允许 | 允许 | --- #### 示例场景说明 假设我们有两个表格:“部门表”和“员工表”。其中,“部门表”的主键为 `department_id`,而在“员工表”中有对应的一个字段叫作 `department_id` 来表明每位员工所属的具体部门。“员工表”里的这个 `department_id` 就应该设定成指向“部门表”的外键。 ```sql -- 创建部门表并设置主键 CREATE TABLE departments ( department_id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100), PRIMARY KEY(department_id) ); -- 创建员工表并将 department_id 设定为外键 CREATE TABLE employees ( employee_id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100), department_id INT, PRIMARY KEY(employee_id), CONSTRAINT fk_department FOREIGN KEY(department_id) REFERENCES departments(department_id) ); ``` 上述例子展示了如何利用主键和外键构建两个相互依赖的实体模型。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值