sql
来源:互联网 发布:易奇八字准不准知乎 编辑:程序博客网 时间:2024/06/05 16:19
SQL/MySQL
在关系型数据库中,最重要的说就是表是字段的概念
字段
字段名
- 数据类型
- 长度
约束(非空、默认值、主键、外键、唯一性、自增);
所谓约束就是给数据加了条件,让表中的数据更加严谨。
比较普遍的建表建字段的规范,因为数据库中不区分大小写的,所有一般多个单词之间使用“_”连接。
数据库设计的三大范式
应用的范式等级越高,则表越多。表多会带来很多问题:
查询时要连接多个表,增加了查询的复杂度
查询时需要连接多个表,降低了数据库查询性能
而现在的情况,磁盘空间成本基本可以忽略不计,所以数据冗余所造成的问题并不是应用数据库范式的理由。
因此,并不是应用的范式越高越好,要看实际情况而定。第三范式已经很大程度上减少了数据冗余,并且减少了造成插入异常,更新异常,和删除异常了。大多数情况应用到第三范式已经足够,在一定情况下第二范式也是可以的。
数据库学习重点
学会将业务模型转换成数据模型。
在实际应用开发中,数据模型的确认,数据模型的确认就是业务逻辑确认,系统业务数据的完整度就满足要求了。
在数据库模型设计可以分为:逻辑设计(表的结构基本确认,但是各个表的详细字段还需再确认,而且逻辑设计更多的是考虑业务数据的流转过程是否合理)、物理设计(最终确认的完整的数据结构)数据库查询
关于数据库的增加操作、删除操作、修改操作都不是重点,因为语法相对简单,而且需求变化度不大。
在update和delete操作中,一定要注意是否需要加入判断条件,否则会带来灾难性的问题。
在初级阶段,要了解的复杂查询:
左关联(left join)
例如:员工表employee(ID,Name,DepartmentId,JobId)/部门表department(ID,Name)/职位表Job(ID,Name)
SELECT a.name,d.name,j.name FROM employee a
LEFT JOIN dempartment d on a.DepartmentId = d.id
LEFT JOIN job j on a.jobId = j.id
分组查询(group by having)
了解聚合函数 avg(),max(),min(),count(),sum()……例如:查询班级小组的学员平均分、小组最高分、小组人数
学员表student_score(ID,GroupName,Name,Course,Score)
1组:87
2组:861select groupName,course,avg(score) from student_score where course='数学' group by groupName,course having avg(score)>80
首先将where条件的数据进行过滤
再对数据进行分组
分组完成再过滤掉having子句的条件
在查询条件中,只能出现聚合函数和分组的条件字段
- SQL
- SQL
- SQL
- sql
- sql
- SQL
- sql
- SQL (-)
- sql
- SQL
- SQL
- SQL
- sql
- sql
- sql
- sql
- SQL
- sql
- Mac下安装php的mongodb扩展
- Java数据库连接——JDBC基础知识(操作数据库:增删改查)
- 内存,指针定义使用字符串相关函数数组指针
- 早早早
- 如果使用AJAX
- sql
- Java volatile 理解
- SQL 查询的列中截取一部分字符串作为新列
- yeild关键字的理解
- Linux笔记(3)-求助指令man和info
- oracle的一个定时执行任务(job定时执行存储过程)
- Spring-HelloWorld
- Eclipse使用Ctrl+C和Ctrl+V复制粘贴时总是卡顿
- 关于是否要从游戏测试行业跳出来的思考