20201015_陈宇_
日志
学习总结:
where条件连接:
多个条件之间的连接:
and:表示需要同时满足and两边的条件
or:表示只需满足or一边的条件即可
in(a...b):相当于多个or,只需满足a到b之间的其中一个即可
笛卡尔乘积现象:
表查询中的笛卡尔乘积现象:多行表在查询时,如果定义了无效连接或者漏写了连接条件,就会产生笛卡尔乘积现象,所谓的笛卡尔乘积即每个表的每一行都和其他表每一行组合
等值连接查询:
通常是在存在主键外键关联关系的表之间的连接进行,使用"="连接相关的表
n个表进行等值连接查询,最少需要n-1个等值条件来约束
自连接查询:
在一个表之中进行多表查询
内连接查询:
内连接查询使用 inner join 关键字实现, inner 可以省略
条件用 on 连接,多个条件使用()将其括起来
和等值查询差不多
外连接:
外连接分为左外连接( left outer join ) 和右外连接( right outer join )outer 可以省略
外连接查询时,条件用 on 连接,多个条件使用 () 将其括起来
左外连接:表示以左表为主表
右外连接:表示以右表为主表
查询时将主表信息在从表中进行匹配
子查询:
当行子查询:
只能查询一行
多行查询:
可以查询多行记录
需用到多行操作符:
in、all、any
>any:表示大于子查询中的任意一个值,即大于最小值
>all: 表示大于子查询中的所有值,即大于最大的值
当行多列子查询
分页查询:
使用limit关键字
select * from emp limit 0,2;
第一个参数0是表示从第几条开始查询 这里的 0 是可以省略不写的
第二个参数 表示查询出几条数据
后面不够的,有多少写多少
去重:
使用distinct关键字可以对查询结果进行去重
去重必须是结果集中每个列的值都相同
order by:
order by 用于对结果进行排序显示
ASC:表示升序排列,如果不写就是此排序方式
DESC:表示降序排列
可以有多个排序条件
聚合函数:
MySQL内置5种函数:
sum:
求和 select sum(列) from table_name [其他子句];
max:
求最大值 select max(列) from table_name [其他子句];
min:
求最小值 select min(列) from table_name [其他子句];
avg:
求平均值 select avg(列) from table_name [其他子句];
count:
求数量 select count(列) from table_name [其他子句];
group by:
对数据进行分组,将有相同的值分为一组
分组后可以进行聚合查询
在group by分组后的查询中,select的列不能出现除了group by分组条件以及聚合函数外的其他列
sql查询的执行顺序:
from --> on --> join --> where --> group by --> having --> select --> distinct-- > order by-- >limit
字符串函数:
注:这里字符串的索引是从1开始的,不是0
数学函数:
日期函数:
数据库设计范式:
数据库的设计有五大设计范式
常用的有三大设计范式,称之为第一范式( 1NF ),第二范式( 2NF ),第 三范式( 3NF )
满足第二范式,就必须满足先满足第一范式,满足第三范式时就 必须首先满足第二范式
第一范式:
1.原子列
2.不出现重复属性
3.不允许出现多个数据项
第二范式:
在满足第一范式的基础上,要求数据表里的所有数据都要和数据表的主键有完全的依赖关系
第三范式:
第三范式是在满足第二范式的基础之上,每一个非主键列都直接依赖主键列,不依赖其他非主键列,即数据库中不能存在传递函数的依赖关系
范式的优缺点:
优点:
1.范式化的数据库更新起来更加的快
2.范式化之后只有很少的重复数据,只需要修改更少的数据
3.范式化的表更小,可以在内存中直接执行
4.很少的冗余数据,在查询时可以减少distinct或者group by语句
缺点:
1.范式化的设计会产生更多的表
2.在查询的时候经常需要很多的表连接查询,导致查询性能降低
学习心得:
今天就已经学完了MySQL数据库的基础了,感觉还是挺快的,MySQL的基础感觉不是很难,只是需要在写代码的时候很细心,不然出错的几率会很大,而且需要多练才能熟悉sql的语句结构,希望在学完之后能够很好的掌数据库吧,毕竟现在数据好像挺珍贵的。
评论留言