键值约束与扩展属性ER关系图三大范式分组查询多表联查
Posted 程序字母K
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了键值约束与扩展属性ER关系图三大范式分组查询多表联查相关的知识,希望对你有一定的参考价值。
键值约束与扩展属性,ER关系图,三大范式,分组查询,多表联查
键值约束与扩展属性
键值约束与扩展属性:
键值约束:约束表中指定字段的数据必须符合某种规则;
种类:
非空约束:NOT NULL —— 约束指定字段数据不能为NULL
唯一约束:UNIQUE —— 约束指定字段数据不能出现重复
主键约束:primary key —— 数据非空且唯一,一个表中只能有一个主键
外键约束:foreign key —— 表中指定字段数据受父表数据约束
foreign key (字段名) references 主表名(字段名)
默认值:DEFAULT —— 为指定字段设置默认值
自增属性:AUTO_INCREMENT —— 整形字段数据自动+1(用于主键字段)
分组查询:group by —— having
分组查询的字段只能是分组依据字段以及聚合函数
分组查询中不能使用where,如果要用条件过滤使用having
select role,sum(salary),max(salary),min(salary),avg(salary) from tbname group by role having avg(salary)>1500;
聚合函数:针对结果中的数据的某个字段进行某种统计运算
count(*) ——统计数据条数
sum(fields) ——统计指定字段的和
max(字段) ——统计指定字段中最大值
min(fields) ——统计指定字段中最小值
avg(fields) ——统计指定字段的平均值
数据库中表的设计:ER,三大范式
ER关系图
ER关系图:
一对一:一个学生只有一个学生证
能唯一标识一个学生的字段就是主键
一对多:向学生实体(多的一方)添加一个学生id
一个学生能学多个课,一个课可以有多个学生上
多对多:设计一个中间表包含两个实体的ID,通过中间表将两个实体关联
三大范式
三大范式:数据库表设计的三大规范
第一范式:表中每个字段都必须具有不可分割的原子操作(第一范式是其他范式的前提)(确保每列保持原子性)
上表违反第一范式,后两栏可分割。
不遵循第一范式会导致按照某个非原子字段进行查询时效率降低。
第二范式:表中每个字段都应与主键完全关联,而不是部分关联(确保表中的每列都和主键相关)
上图不遵循第二范式标准品那个会出现大量数据冗余。
第三范式:表中每个字段都应该与主键直接关联,而不是间接关联
上图不遵循第三范式,班主任信息和学生信息间接关联,可拆分为下面
…
多表联查
多表联查:将多张表合在一起进行查询
将多张表合在一起:笛卡尔积
连接方式:内连接+外连接(左连接,右连接)
内连接:连接数据交集 inner join
class |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| stu
select stu.name,class.name from stu inner join
class on
class.id=stu.class_id
左连接:以左表为基表在右表中查询符合条件的进行连接
select stu.name,class.name from stu left join
class on
stu.class_id=class.id
右连接:以有表为基表在左表中查询符合条件的进行连接
select stu.name,class.name from stu right join
class on
stu.class_id=class.id
以上是关于键值约束与扩展属性ER关系图三大范式分组查询多表联查的主要内容,如果未能解决你的问题,请参考以下文章
第七周 Java语法总结之数据库大全_DDL_DML_DQL_约束_备份与还原_表的关系_三大范式_多表查询(内连接_外连接_子查询)_musql事务_隔离级别