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的语句结构,希望在学完之后能够很好的掌数据库吧,毕竟现在数据好像挺珍贵的。
        


评论留言