sql

来源:互联网 发布:易奇八字准不准知乎 编辑:程序博客网 时间:2024/06/05 16:19

SQL/MySQL

在关系型数据库中,最重要的说就是字段的概念

  • 字段

  1. 字段名

  2. 数据类型
  3. 长度
  4. 约束(非空、默认值、主键、外键、唯一性、自增);

    所谓约束就是给数据加了条件,让表中的数据更加严谨。

    比较普遍的建表建字段的规范,因为数据库中不区分大小写的,所有一般多个单词之间使用“_”连接。

数据库设计的三大范式

应用的范式等级越高,则表越多。表多会带来很多问题:

  1. 查询时要连接多个表,增加了查询的复杂度

  2. 查询时需要连接多个表,降低了数据库查询性能

而现在的情况,磁盘空间成本基本可以忽略不计,所以数据冗余所造成的问题并不是应用数据库范式的理由。

因此,并不是应用的范式越高越好,要看实际情况而定。第三范式已经很大程度上减少了数据冗余,并且减少了造成插入异常,更新异常,和删除异常了。大多数情况应用到第三范式已经足够,在一定情况下第二范式也是可以的。

数据库学习重点

  • 学会将业务模型转换成数据模型。

    在实际应用开发中,数据模型的确认,数据模型的确认就是业务逻辑确认,系统业务数据的完整度就满足要求了。 
    在数据库模型设计可以分为:逻辑设计(表的结构基本确认,但是各个表的详细字段还需再确认,而且逻辑设计更多的是考虑业务数据的流转过程是否合理)、物理设计(最终确认的完整的数据结构)

  • 数据库查询

    关于数据库的增加操作、删除操作、修改操作都不是重点,因为语法相对简单,而且需求变化度不大。

在update和delete操作中,一定要注意是否需要加入判断条件,否则会带来灾难性的问题。

在初级阶段,要了解的复杂查询:

  • 左关联(left join)

    例如:员工表employee(ID,Name,DepartmentId,JobId)/部门表department(ID,Name)/职位表Job(ID,Name)

  • 分组查询(group by having) 
    了解聚合函数 avg(),max(),min(),count(),sum()……

    例如:查询班级小组的学员平均分、小组最高分、小组人数 
    学员表student_score(ID,GroupName,Name,Course,Score) 
    1组:87 
    2组:86

    1
    select groupName,course,avg(score) from student_score where course='数学' group by groupName,course having avg(score)>80

    首先将where条件的数据进行过滤 
    再对数据进行分组 
    分组完成再过滤掉having子句的条件 
    在查询条件中,只能出现聚合函数和分组的条件字段

    原创粉丝点击