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不推荐。
而且也没有明确说明原因,
但是既然它要求,
我们遵循就可以了

Web大前端面试题-Day11的更多相关文章

  1. Web大前端面试题-Day12

    1.前端需要注意哪些SEO? 合理的title.description.keywords: 搜索对着三项的权重逐个减小, title值强调重点即可, 重要关键词出现不要超过2次, 而且要靠前, 不同页 ...

  2. Web大前端面试题-Day7

    1. 你能描述一下渐进增强和优雅降级之间的不同吗? 定义: 优雅降级(graceful degradation): 一开始就构建站点的完整功能, 然后针对浏览器测试和修复 渐进增强(progressi ...

  3. Web大前端面试题-Day6

    1.请说明ECMAScript, JavaScript, Jscript之间的关系? ECMAScript提供脚本语言必须遵守的规则. 细节和准则,是脚本语言的规范. 比如:ES5,ES6就是具体的一 ...

  4. Web大前端面试题-Day4

    1. 如何实现瀑布流? 瀑布流布局的原理:1) 瀑布流布局要求要进行布置的元素等宽,   然后计算元素的宽度,   与浏览器宽度之比,得到需要布置的列数;2) 创建一个数组,长度为列数,   里面的值 ...

  5. Web大前端面试题-Day10

    1. px和em的区别? px和em都是长度单位; 区别是: px的值是固定的,指定是多少就是多少, 计算比较容易. em得值不是固定的,并且em会继承父级元素的字体大小. 浏览器的默认字体高都是16 ...

  6. Web大前端面试题-Day8

    1. 说说你对作用域链的理解? 作用域链的作用是保证执行环境里 有权访问的变量和函数是有序的, 作用域链的变量只能向上访问, 变量访问到window对象即被终止, 作用域链向下访问变量是不被允许的; ...

  7. Web大前端面试题-Day1

    1. var的变量提升的底层原理是什么? JS引擎的工作方式是:1) 先解析代码,获取所有被声明的变量:2)然后在运行.也就是说分为预处理和执行两个阶段. 变量提升:所有变量的声明语句都会被提升到代码 ...

  8. Web大前端面试题-Day9

    1. 请用至少3中方式实现数组去重? 方法一: indexOfvar arr1=[1,2,3,4,5,4,3,2,1];  function repeat1(arr){    for(var i=0, ...

  9. Web大前端面试题-Day5

    1.写一个深度克隆方法(es5)? /** *  深拷贝 * @param {object}fromObj 拷贝的对象 * @param {object}toObj  目标对象 */ function ...

随机推荐

  1. Shiro后台实现验证权限

    今天发现一个问题:使用shiro的时候,虽然隐藏掉了一些菜单,但是当我们通过get请求直接访问菜单的时候还是会访问到,也就是shiro可以在界面实现隐藏一些信息,但是没有真正的根据权限码验证请求,于是 ...

  2. Your Database is downloaded and backed up on....(腾讯云的mysql被攻击)

    今天发现自己的服务器被黑客攻击,自己的mysql服务器的库被删掉,并且新创了一个warning库,只有一个readme表.不知道原因,也许是自己再github上的项目暴漏了自己的密码,还要0.6比特币 ...

  3. spring整合ehcache2.5.2缓存异常-- net.sf.ehcache.CacheException

    报错如下: The source of the existing CacheManager is: DefaultConfigurationSource [ ehcache.xml or ehcach ...

  4. JSON的理解

    官方解释: JSON的全称是”JavaScript Object Notation”,单单从字面上的理解就是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式. 理解: ...

  5. 【windows核心编程】注入DLL时BUG排除与调试

    DLL注入排除bug的思路步骤. 1.在VS中监视输入err,hr检查DLL是否注入成功 2.OD断点loadlibraryW,loadlibraryA是否已经注入成功,eax是否有值. 3.检查路径 ...

  6. [转]RJ45接口说明

    [转]http://blog.csdn.net/dog0138/article/details/7016351 1.前言 常见的RJ45接口有两类: 用于以太网网卡.路由器以太网接口等的DTE类型,可 ...

  7. Win7 启动修复

    先让我们看一下windows7的启动过程的常识:电脑加电后,首先是启动BIOS程序,BIOS自检完毕后,找到硬盘上的主引导记录MBR,MBR读取DPT(分区表),从中找出活动的主分区,然后读取活动主分 ...

  8. 转载:磁盘目录(1.3.3)《深入理解Nginx》(陶辉)

    原文:https://book.2cto.com/201304/19614.html 要使用Nginx,还需要在Linux文件系统上准备以下目录. (1)Nginx源代码存放目录 该目录用于放置从官网 ...

  9. 5种PHP创建数组的方式

    在PHP以及其他程序语言程序设计中,经常会用到数组的创建,在前端开发中,js的数组创建可以由[]和new Array()直接创建和赋值.然而PHP创建数组的方法有哪些呢?在查阅资料并且网上收集整理总结 ...

  10. Eclipse开发环境配置

    1. java环境 安装 本系统使用java6开发,老师使用1.6.0 _45版本开发,如下图所示: "开发工具"目录提供了1.6.0 _45版本32位和64位两个安装程序,大家根 ...