- 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 条件;
以右边表为主,查询左边满足条件的数据