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

字符串函数:

image-20201015212414472

注:这里字符串的索引是从1开始的,不是0

数学函数:

image-20201015212505671

日期函数:

image-20201015212524466

数据库设计范式:

​ 数据库的设计有五大设计范式

​ 常用的有三大设计范式,称之为第一范式( 1NF ),第二范式( 2NF ),第 三范式( 3NF )

​ 满足第二范式,就必须满足先满足第一范式,满足第三范式时就 必须首先满足第二范式

第一范式:

​ 1.原子列

​ 2.不出现重复属性

​ 3.不允许出现多个数据项

第二范式:

​ 在满足第一范式的基础上,要求数据表里的所有数据都要和数据表的主键有完全的依赖关系

第三范式:

​ 第三范式是在满足第二范式的基础之上,每一个非主键列都直接依赖主键列,不依赖其他非主键列,即数据库中不能存在传递函数的依赖关系

范式的优缺点:

​ 优点:

​ 1.范式化的数据库更新起来更加的快

​ 2.范式化之后只有很少的重复数据,只需要修改更少的数据

​ 3.范式化的表更小,可以在内存中直接执行

​ 4.很少的冗余数据,在查询时可以减少distinct或者group by语句

​ 缺点:

​ 1.范式化的设计会产生更多的表

​ 2.在查询的时候经常需要很多的表连接查询,导致查询性能降低

学习心得:

​ 今天就已经学完了MySQL数据库的基础了,感觉还是挺快的,MySQL的基础感觉不是很难,只是需要在写代码的时候很细心,不然出错的几率会很大,而且需要多练才能熟悉sql的语句结构,希望在学完之后能够很好的掌数据库吧,毕竟现在数据好像挺珍贵的。

标签

评论

this is is footer