键值约束与扩展属性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事务_隔离级别

MySQL学习笔记

数据库的三大范式以及五大约束

mysql约束