目标;第一步;创建两张表 用户表和文章表
第二步;发表文章
1,建表;
---用户表 BlogUsers --userID唯一的 --userName --pwd --sex create table BlogUsers( userID number(10) primary key not null, userName varchar2(20), pwd varchar2(20) ) ---文章表 Article --articleID唯一 --articleTittle --articleContent --UpTime 时间 --userID 发表文章的用户ID create table Article( articleID number(10) primary key not null, articleTittle varchar2(40), articleContent varchar2(4000), UpTime Date, userID number(10) );
2, 建立索引;索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息
--建立索引
根据blogusers中的表创建索引,以便快速的根据username字段快速的查找
create unique index CUS_uniquel on BLOGUSERS (username);
3,联机删除;
cascade : 删除子表中所有的相关记录 set null : 将所有相关记录的外部码字段值设置为 no action: 不做任何操作
4, 设置主外键和联机删除(由于在建表时就已经设置了主键,现在只需要设置外键即可);
文章表的userid就是用户表中的userid只用主外键关联起来,文章表示属于某个用户的,发表文章前需要指定用户的存在
主键;唯一标示
外键;外键中的数据就是主键中的数据
alter table ARTICLE add constraint CUS_FOREIGN foreign key (USERID) references BLOGUSERS (USERID) on delete cascade;
5,插入数据;
insert into article values(2,'我在这里','是否会存在这样的事情呢?',to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') ,1182);
此时会提示找不到父级
原因是没有创建用户
创建用户
insert into blogusers values(1181,'王辉','wanghui');
再执行发表文章
insert into article values(1,'我在这里','是否会存在这样的事情呢?',to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') ,1181);
查询插入的数据;
select * from blogusers;
USERID USERNAME PWD
----------- -------------------- --------------------
1181 王辉 wanghui
select * from article;
ARTICLEID ARTICLETITTLE ARTICLECONTENT UPTIME USERID
----------- ---------------------------------------- -------------------------------------------------------------------------------- ----------- -----------
1 我在这里 是否会存在这样的事情呢? 2005/1/1 13 1181
相关推荐
3. **增加约束**:再次应用完整性约束,包括主键约束、外键约束和其他用户定义的约束。例如,重新设置`Depts`、`Students`、`Reports`和`Courses`表的完整性约束,并添加针对`班级`、`Ssex`和`Sage`的新约束。 4. *...
3) **索引类型**:唯一性约束默认创建非聚集索引,而主键创建的通常是聚集索引,这影响了数据在磁盘上的存储方式。 最后,**约束(Constraint)**是对表中数据的一种限制,它确保了数据的完整性。约束可以是主键、...
根据提供的标题、描述、标签及部分内容,我们可以了解到本篇文章主要关注的是如何在Oracle数据库中进行主外键查询,包括查询表结构以及通过主外键关联表名的方式。下面将详细介绍这些知识点。 ### 一、Oracle数据库...
4. **唯一性约束(Unique Constraint)**:确保列中的数据唯一,但允许存在NULL值。 5. **检查约束(Check Constraint)**:用于限制列中的值范围或满足某些特定条件。 6. **默认约束(Default Constraint)**:为未...
### 主外键关系 除了复合主键之外,外键也是数据库设计中不可或缺的一部分。外键用于建立不同表之间的联系,确保引用完整性。例如,在一个订单系统中,可能存在“订单”表和“客户”表,其中“订单”表中的`...
MySQL 创建数据表并建立主外键关系是数据库设计中的关键步骤,这有助于确保数据的一致性和完整性。在MySQL中,主键和外键是实现这种关系的重要工具。...在实际应用中,应根据业务需求灵活调整主外键的设置和约束行为。
- **解决方法**:利用数据库提供的唯一性约束来自动检查主键值的唯一性。 5. **主键选择不当**:有时候,主键的选择可能会影响到查询的效率。例如,选择一个经常更新的字段作为主键,可能会导致频繁的表重组,从而...
应用索引的扫描方式包括INDEX UNIQUE SCAN(按索引唯一值扫描)、INDEX RANGE SCAN(按索引值范围扫描)和INDEX FAST FULL SCAN(按索引值快速全部扫描)。这些扫描类型决定了数据库如何利用索引来执行不同的SQL查询...
总的来说,主键和唯一索引都是为了提高数据的唯一性和查询效率,但它们的约束程度、允许的NULL值、在外键中的使用以及在查询优化中的地位有所不同。在设计数据库时,理解这些差异并根据实际需求合理选择,对于构建...
- **唯一索引(Unique Index)**:确保索引中的每一行数据都是唯一的,适用于需要保持唯一性的场景。 #### 二、索引的创建与修改 - **通过企业管理器创建索引**: - 打开企业管理器,选择需要添加索引的数据库和...
在实验过程中,我们也讨论了一些重要的问题,例如NOTNULL 参数的作用、外键约束的设置问题、主码和唯一约束的设置问题等。这些问题都是数据库表设计和实现中需要注意的问题。 通过这次实验,我们掌握了数据库表的...
索引则是一种加速查询的技术,它可以提高对特定字段的搜索速度,但并不强制唯一性,可以有重复值,也可能包含NULL值。 创建SQL的主键和外键约束通常在创建表的时候进行。例如,创建学生表时,可以定义StudentNo为...
在SQL Server中,实体完整性通常通过以下方式来实现:索引、主键约束、唯一性约束和IDENTITY属性。索引用于加快数据检索速度,同时也保证了表中的行不重复。主键约束是通过设置表中的某一列或一组列来确保数据的唯一...
- **确保数据的一致性和完整性**:通过外键约束可以防止插入无效的数据。 - **加速查询操作**:通过外键可以快速找到关联的数据,便于进行跨表查询。 **示例代码** ```sql CREATE TABLE orders ( order_id INT ...
- **数据完整性**:通过主外键约束和主键约束保证了数据的完整性和一致性。 - **易于维护和移植**:简化数据操作,方便数据的添加、删除和更新。 - **查询效率**:连接查询时无遗漏、无重复,减少逻辑I/O。 - **性能...
9. **异常处理**:在编程中,需要捕获和处理外键约束失败的异常,以确保程序的健壮性。 10. **数据库设计范式**:外键是符合第三范式(3NF)和更高范式(如BCNF)的数据库设计的一部分,有助于减少数据冗余和提高...
- **实现数据的一致性**:外键可以确保当在从表中插入一条记录时,该记录中指向主表的字段必须存在于主表中相应的主键或唯一索引中。 - **维护关系的完整性**:通过定义外键,可以在删除或更新主表的数据时,自动...
1. **违反约束的错误**:如`ORA-00001: unique constraint violated`表示尝试插入的数据违反了唯一性约束。必须识别并修正导致冲突的数据。 2. **级联删除与更新**:外键约束的ON DELETE CASCADE和ON UPDATE ...