86.如何获得高效的数据库逻辑结构?

从关系数据库的表中
删除冗余信息的过程
称为数据规范化,
是得到高效的关系型数据库表的逻辑结构
最好和最容易的方法。 规范化数据时应执行以下操作:
1.将数据库的结构精简为最简单的形式
2.从表中删除冗余值
3.标识所有依赖与其他数据的数据
规范化过程有几个阶段,
分别称作第一范式(1NF)、
第二范式(2NF)、
第三范式(3NF)、
第四范式(4NF)
以及第五范式(5NF)。
对于所有的实际应用,
3NF已经足够了。

87.数据库三范式是什么?

第一范式(1NF):
字段具有原子性,不可再分。
所有关系型数据库系统
都满足第一范式) 数据库表中的字段都是单一属性的,
不可再分。
例如,姓名字段,
其中的姓和名必须作为一个整体,
无法区分哪部分是姓,
哪部分是名,
如果要区分出姓和名,
必须设计成两个独立的字段。 第二范式(2NF):
第二范式(2NF)是在第一范式(1NF)的基础上
建立起来的,即满足第二范式(2NF)
必须先满足第一范式(1NF)。 要求数据库表中的每个实例
或行必须可以被惟一地区分。
通常需要为表加上一个列,
以存储各个实例的惟一标识。
这个惟一属性列被
称为主关键字或主键。 第二范式(2NF)要求实体的属性
完全依赖于主关键字。
所谓完全依赖是指不能存在
仅依赖主关键字一部分的属性,
如果存在,
那么这个属性和主关键字的这一部分
应该分离出来形成一个新的实体,
新实体与原实体之间是一对多的关系。
为实现区分通常需要为表加上一个列,
以存储各个实例的惟一标识。
简而言之,
第二范式就是非主属性
非部分依赖于主关键字。 第三范式(3NF)
是在第二范式的基础上建立起来的,
即满足第三范式(3NF)
必须先满足第二范式(2NF)。 第三范式(3NF)要求
非主关键字不能依赖于
其他非主关键字。
即非主关键字之间
不能有函数(传递)依赖关系.
即不能从一个表的某个字段
推出该表的另一个字段。 满足三范式的设计,
基本可以解决数据冗余、
插入异常、
更新异常、
删除异常等数据存储问题。

88.SQL语句分为哪几种?

SQL语句主要可以划分为以下几类:

DDL(Data Definition Language):
数据定义语言,
定义对数据库对象(库、表、列、索引)的操作。
包括:
CREATE、
DROP、
ALTER、
RENAME、
TRUNCATE等 DML(Data Manipulation Language):
数据操作语言,
定义对数据库记录的操作。
包括:
INSERT、
DELETE、
UPDATE、
SELECT等 DCL(Data Control Language):
数据控制语言,
定义对数据库、表、字段、
用户的访问权限和安全级别。 包括:
GRANT、
REVOKE等 Transaction Control:
事务控制
包括:
COMMIT、
ROLLBACK、
SAVEPOINT等

89. Delete、truncaate、drop都是删除语句,它们有什么分别?

delete 属于DML语句,
删除数据,
保留表结构,
需要commit,
可以回滚,
如果数据量大,
很慢。 truncate 属于DDL语句,
删除所有数据,
保留表结构,
自动commit,
不可以回滚,
一次全部删除所有数据,
速度相对较快。 Drop属于 DDL语句,
删除数据和表结构,
不需要commit,
删除速度最快。

90.Where和having都是条件筛选关键字,它们有什么分别?

1.Where语句是一条一条从磁盘读取的,
然后进行判断,
满足条件的存放到内存,
不满足忽略,
而having是将所有的数据读入内存中,
然后在内存内部逐条判断,
不满足直接删除
where是判断数据从磁盘
读入内存的时候,
having是判断分组
统计之前的所有条件 2.having子句中可以使用字段别名,
而where不能使用 3.having能够使用统计函数,
但是where不能使用 4.where 后不能跟聚合函数,
因为where执行顺序大于聚合函数。 5.having 是筛选组
而where是筛选记录
注意:HAVING用于应被用于WHERE子句的条目,
从我们开头的2条语句来看,
这样用并没有出错,
但是mysql不推荐。
而且也没有明确说明原因,
但是既然它要求,
我们遵循就可以了

撩课-Java每天5道面试题第11天的更多相关文章

  1. 撩课-Java每天5道面试题第13天

    撩课Java+系统架构点击开始学习 96.JDBC操作数据库的步骤 ? .加载数据库驱动 .创建并获取数据库链接 .创建jdbc statement对象 .设置sql语句 .设置sql语句中的参数(使 ...

  2. 撩课-Java每天5道面试题第15天

    撩课Java+系统架构点击开始学习 106.什么是Hibernate的并发机制?怎么去处理并发问题? a.Hibernate的Session对象是非线程安全的, 对于单个请求,单个会话, 单个的工作单 ...

  3. 撩课-Java每天5道面试题第10天

    撩课Java+系统架构 视频 点击开始学习 81.Servlet的会话机制? HTTP 是一种无状态协议, 这意味着每次客户端检索网页时, 都要单独打开一个服务器连接, 因此服务器不会记录下 先前客户 ...

  4. 撩课-Java每天5道面试题第9天

    撩课Java+系统架构 视频 点击开始学习 76.XML技术的作用? XML技术用于数据存储. 信息配置. 数据交换三方面. 可以将数据存储在XML中, 通过节点. 元素内容. 属性标示数据内容及关系 ...

  5. 撩课-Java每天5道面试题第8天

    撩课Java+系统架构 视频 点击开始学习 71.jsp有哪些内置对象?作用分别是什么? Page, pageContext, request, response, session, applicat ...

  6. 撩课-Java每天10道面试题第7天

    撩课Java+系统架构 视频 点击开始学习 61.什么是并发修改异常? 什么是并发修改异常: 当我们在遍历实现了collection接口 与iterator接口的集合时(List.Set.Map), ...

  7. 撩课-Java每天10道面试题第4天

    撩课Java+系统架构 视频 点击开始学习 31.静态变量和实例变量的区别? 静态变量也叫类变量, 这种变量前加了static修饰符. 可以直接用类名调用, 也可以用对象调用, 而且所有对象的同一个类 ...

  8. 撩课-Java每天5道面试题第17天

    116.说下Struts的设计模式 MVC模式: web应用程序启动时 就会加载并初始化ActionServler. 用户提交表单时, 一个配置好的ActionForm对象被创建, 并被填入表单相应的 ...

  9. 撩课-Java每天5道面试题第24天

    151.springMVC和struts2的区别有哪些? .springmvc的入口是一个servlet即前端控制器(DispatchServlet), 而struts2入口是一个filter过虑器( ...

随机推荐

  1. 【FCS NOI2018】福建省冬摸鱼笔记 day4

    第四天. 动态规划专题,讲师:闫神 讲了一些DP优化技巧,然而思想难度好大啊……根本没想到能优化那地步,连DP方程都没有呢. 不过有几题我还是想明白了. 讲了单调队列,决策单调性,四边形不等式,斜率优 ...

  2. Python标准库笔记(10) — itertools模块

    itertools 用于更高效地创建迭代器的函数工具. itertools 提供的功能受Clojure,Haskell,APL和SML等函数式编程语言的类似功能的启发.它们的目的是快速有效地使用内存, ...

  3. HDU 6212 Zuma 2017青岛网络赛 区间DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6212 解法:看了眼题就发现这个BZOJ 1032不是一毛一样?但是BZOJ上那是个巨坑,数据有错,原来 ...

  4. ios 个人开发者账户 给其他团队用坑爹的教程

    最新版本的 ios  支持 3个开发者证书 和 3个发布者证书  ,如果是多余3台电脑设备要真机调试,就比较麻烦 (手机支持100个设备) 解决方案就是: 在别人的电脑上要成功安装,须具备两个文件: ...

  5. vue总结 08状态管理vuex

      状态管理 类 Flux 状态管理的官方实现 由于状态零散地分布在许多组件和组件之间的交互中,大型应用复杂度也经常逐渐增长.为了解决这个问题,Vue 提供 vuex:我们有受到 Elm 启发的状态管 ...

  6. git内部原理

    Git 内部原理 无论是从之前的章节直接跳到本章,还是读完了其余章节一直到这——你都将在本章见识到 Git 的内部工作原理 和实现方式. 我们发现学习这部分内容对于理解 Git 的用途和强大至关重要. ...

  7. 从一份配置清单详解 Nginx 服务器配置

      概述 在前面< Nginx 服务器开箱体验> 一文中我们从开箱到体验,感受了一下 Nginx 服务器的魅力.Nginx 是轻量级的高性能 Web 服务器,提供了诸如 HTTP 代理和反 ...

  8. python3实现socket通信

    目的:实现两台机器之间的通信.也就是说一个作为服务端(时刻监听接收数据),另一个作为客户端(发送数据). Python实现的过程个人理解: 1.服务端开始监听. 2.客户端发起连接请求. 3.服务端收 ...

  9. 为GHOST远控添加ROOTKIT功能

    原版的ghost远控似乎有一个SSDT HOOK功能的模块,当然已经没有什么用处了.这里在GHOST的基础上添加一些ROOTKIT功能.而且随着x64下主动防御技术的发展,这里不打算使用传统的HOOK ...

  10. SQL 根据生日和日期计算年龄

    FLOOR(datediff(DY,p.Dob,o.RegisterTime)/365