Oracle数据库操作笔记:主键、外键与约束

5星 · 超过95%的资源 需积分: 10 39 下载量 87 浏览量 更新于2024-07-31 收藏 600KB DOC 举报
"Oracle学习笔记,包含了SQL语句的多种操作,如添加主键、外键,启用或禁用约束,查看约束信息以及删除主键和外键等核心知识点。" Oracle是世界上最流行的数据库管理系统之一,它支持丰富的SQL语法用于数据管理和操作。在Oracle学习笔记中,我们关注的是对数据库表结构的维护,特别是与主键、外键和约束相关的操作。以下是对这些知识点的详细说明: 1. 增加主键: 主键是表中的一个或一组列,其值唯一标识表中的每一行。使用`ALTER TABLE`语句可以添加主键约束,例如: ``` ALTER TABLE TABLE_NAME ADD CONSTRAINT KEY_NAME PRIMARY KEY (TABLE_COLUMN); ``` 如果希望指定特定的表空间存储索引,可以使用`USING INDEX TABLESPACE`子句: ``` ALTER TABLE TABLE_NAME ADD CONSTRAINT KEY_NAME PRIMARY KEY (TABLE_COLUMN) USING INDEX TABLESPACE TABLE_SPACE_NAME; ``` 2. 增加外键: 外键是用来维护两个表之间关系的字段,它引用另一个表的主键。创建外键的SQL语句如下: ``` ALTER TABLE TABLE_NAME ADD CONSTRAINT FK_NAME FOREIGN KEY (TABLE_COLUMN) REFERENCES KEY_TABLE_NAME; ``` 3. 使主键或外键失效/生效: 当需要暂时禁用或恢复约束时,可以使用`DISABLE`或`ENABLE`: ``` ALTER TABLE TABLE_NAME DISABLE (ENABLE) CONSTRAINT KEY_NAME; ``` 4. 查看约束信息: 要检查表的约束状态,可以查询`USER_CONSTRAINTS`视图: - 获取所有约束的信息: ``` SELECT constraint_name, table_name, constraint_type, status FROM user_constraints; ``` - 获取特定表的外键信息: ``` SELECT constraint_name, constraint_type, search_condition, r_constraint_name FROM user_constraints WHERE table_name = upper('&table_name'); ``` - 获取约束的列名: ``` SELECT c.constraint_name, c.constraint_type, cc.column_name FROM user_constraints c, user_cons_columns cc WHERE c.owner = upper('&table_owner') AND c.table_name = upper('&table_name') AND c.owner = cc.owner AND c.constraint_name = cc.constraint_name ORDER BY cc.position; ``` 5. 删除主键或外键: 当不再需要某个约束时,可以使用`DROP CONSTRAINT`语句: ``` ALTER TABLE TABLE_NAME DROP CONSTRAINT KEY_NAME; ``` 6. 创建外键: 创建外键时,需要指定被引用的表和字段。对于单个字段,语句如下: ``` CREATE TABLE 表名 (col1 char(8), cno char(4) REFERENCES course); ``` 对于多个字段,可以在末尾添加`FOREIGN KEY`子句,指定引用的表和字段: ``` CREATE TABLE 表名 (...其他字段, ForeignKey(字段名) REFERENCES 另一表名(字段)); ``` 并且,外键还可以包含`ON DELETE CASCADE`选项,这样当父表中的记录被删除时,子表中相应的记录也会被自动删除。 以上就是Oracle学习笔记中关于SQL语句操作主键、外键和约束的主要内容。理解并熟练掌握这些操作对于数据库的设计和管理至关重要,能确保数据的完整性和一致性。