MySQL——mysql分组及多表查询基础

- DQL 查询:
select *from 表明 where 条件;
order by 属性 排序方式 :排序
asc:升序 (默认)
desc:降序

---例子:按员工薪资降序排序
	select *from employee where job=‘M’ order by salary desc;
注意:如果是多条件排序,那么只有当第一个条件相同的时候才会 按照第二个条件排序

- 聚合函数:
count(计数)、max(最大)、min(最小)、avg(平均数),sum(求和)
用法:select 聚合函数(属性) from 表名 where 条件;

--例子:求一共有多少个 员工
select count(*) from employee;
--例子:计算奖金和工资共和大于3000的员工的个数
select count(*) from employee将where (salary+ifnull(bonus,0))>3000;
--例子:求工资的最大值
select max(salary) from employee;

- 分组查询:
group by
注意:分组之后 如果要进行条件查询,那么只能使用having,不能使用where

	**where 和 having  之间的区别:**
		1、where在分组之前使用,如果不满足条件,则不参与分组;
		     having在分组之后进行限定,如果不满足条件,则不会被查询出来。
		2、where不可以使用聚合函数,having可以使用聚合函数
	
	--例子:按照性别分组,分别查询男、女同学的平均分、人数
	select gender,avg(score),count(*)from student group by gender;
	--例子:按照性别分组,分别查询男、女同学的平均分、人数,要求:不及格的不参与平均分计算
	select gender,avg(score),count(*)from student where score>60 group by gender;
	--例子:按照性别分组,分别查询男、女同学的平均分、人数,要求:不及格的不参与平均分计算,完成分组后,只显示人数大于2的情况
	select gender,avg(score),count(*)from student where score>60 group by gender  having count(*)>2;
  • limit:分页查询

     select *from student limit 1,3;(1:索引<下标>   3:一共查询几行)
     select*from student limit 3;(默认从0开始,查询3行)
    

    约束:对表中的数据进行限定,保证数据的正确性,有效性和完整性
    分类:
    1、主键约束 primary key ——属性的值 唯一且非空
    auto_increment :自动增长
    2、非空约束 not null ——属性的值 不能为null
    3、唯一约束 unique ——属性的值 唯一
    4、外键约束 forigen key

    多表关系:
    一对一:
    一对多:
    多对多:

  • 数据库设计规范:
    设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。
    目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。

    第一范式(1NF):数据库表的每一列都是不可分割的原子数据项
    第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)
    第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

几个概念:
1、函数依赖:A–>B,如果通过A属性(属性组)的值,可以确定唯一B属性的值,则称B依赖于A
例如:学号—》姓名
2、完整函数依赖:A–>B,如果A是一个属性组,同时B属性值的确定需要依赖于A属性组中的所有属性值,那么称B完全依赖于A
例如:学号+课程名称–》分数
3、部分函数依赖:A–>B,如果A是一个属性组,同时B属性值的确定只需依赖于A属性组的某些属性值,那么称B部分依赖于A
4、传递函数依赖:A–>B,B–>C,如果通过A属性(属性组)的值,可以确定唯一的B属性的值,在同B属性(属性组)可以确定唯一C属性的值,那么称C传递依赖于A
例如:学号—系–系主任
5、码:在一张表中,一个属性或属性组,被其他属性完全依赖,则称该属性(属性组)为该表的码
主属性:码属性组中的所有属性
非主属性:除开码中的属性

  • 多表查询:

     笛卡尔积:有两个集合AB,取这两个集合的所有组成情况
     要完成多表查询,那么需要一定的条件来消除无用的数据
    

    多表查询的分类:
    1、内连接查询: 注意点:要查哪些字段;从什么表汇中查询;两张表的关联条件
    1)隐式内连接:
    –例子:查询所有员工信息和对应的部门信息
    select *from 表1,表2 where 连接条件
    2)显式内连接:
    语法:select 字段名 from 表1 inner(可省略) join 表2 on 条件;
    2、外连接查询
    1)左外连接:
    语法:select 字段名 from 表1 left outer(可省略) join 表2 on 条件;
    以左边表为主,查询右边满足条件的数据
    2) 右外连接:
    语法:select 字段名 from 表1 right outer(可省略) join 表2 on 条件;
    以右边表为主,查询左边满足条件的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值