实体完整性是数据库设计中的一个概念,指的是确保数据库中每个实体(表)在逻辑上是完整和一致的状态。它涉及到定义和强制执行一些规则和约束,以确保数据的完整性和准确性。
实体完整性通常通过以下方式来实现:
1. 主键约束:每个实体(表)应该有一个主键,用于唯一标识每个记录。主键的值不能重复,也不能为NULL。
2. 唯一约束:除了主键以外,某些属性可能需要具有唯一性约束,即其值在整个实体中是唯一的。
3. 外键约束:如果一个实体的属性引用另一个实体的主键,则可以使用外键约束来确保引用的完整性。外键将一个实体与另一个实体关联起来,并且确保引用的数据存在于关联的实体中。
4. 检查约束:使用检查约束可以定义特定属性上的条件,以确保只有满足条件的数据能够被插入或更新。
通过实体完整性的规则和约束,数据库可以维护数据的一致性、准确性和完整性,提高数据质量和可靠性。
select
gender, university,
count(device_id) as user_num,
avg(active_days_within_30) as avg_active_days,
avg(question_cnt) as avg_question_cnt
from user_profile
group by gender, university
所谓按性别和学校分组就是说会产生出四类,如果只有性别或学校则只有两类
也就是说先依据性别分两类,然后在性别里再依据大学继续分类
Group
group by之后就是已经将原集合分为多个子集了,之后的操作都是在子集里进行的
就是说出现的顺序代表了执行的优先级,优先级越高那么出现的位置越靠前
插入
INSERT INTO exam_record_before_2021(uid, exam_id, start_time, submit_time, score)
SELECT uid, exam_id, start_time, submit_time, score
FROM exam_record
WHERE YEAR(submit_time) < '2021';
用户定义完整性就是说要求在输入时,必须要输入某些值或某些值必须满足某些条件
参照完整性就是说要定义外键
实体完整性就是要求要定义主键
insert into exam_record_before_2021(uid,exam_id,start_time,submit_time,score) select uid,exam_id,start_time,submit_time,score from exam_record where year(submit_time)<'2021'