求数据库高手做几道基础题

问题 3 :SELECT DISTINCT 删除重复行。
我上周刚刚编辑了一篇,删除重复项非常重要。

问题5 :AVG(SCORE)统计平均值,零值也包含在计算中。
I came across this on this project.
问题1 1 :关键字IN限制查询范围。
说白了:就是匹配列表中的值。

问题 1 5 :要删除存储过程,请使用 DROP,而不是 DELETE。
This question option is incorrect.
问题1 8 :使用DATEDIFF函数求日期差。
It is very clear in the textbook.
问题 2 9 :WHERE homeis NOT NULL 过滤非零值。
In fact, NULL processing is the key point.
问题3 2 :搜索2 5 岁以上的员工编号。
这是一个简单的条件查询。

问题 3 5 :使用 OR 过滤“苹果”或“香蕉”。
Remember to use single quotes.
问题3 7 :COUNT()统计所有记录,包括空值。
The effect is the same as COUNT(1 ).
问题4 0:LIKE '_[ae]%'匹配以ae开头的值。
安妮特可以删除。

你自己看看。

MySQL面试题-数据库基础知识

哎哟,说到数据库,这已经是陈词滥调了。
在过去十年的问答论坛里,我问了很多关于数据库的问题,所以今天我就和大家聊聊。

首先我们要知道为什么需要使用数据库。
简单来说,数据库帮助我们管理数据。
想想看,数据存在内存里,速度很快,但是一关掉电源,就全没了。
虽然可以永久保存在文件中,但是速度慢而且必须自己写代码解析,非常麻烦。
因此,使用数据库可以解决这些问题。
它不仅可以永久保存数据,还可以通过SQL语句轻松查询。
它还可以管理数据,备份和恢复变得轻而易举。

我们来谈谈 SQL。
这个东西就是数据库的查询语言,相当于和数据库对话的语法。
使用SQL,我们可以保存数据、查询数据、修改数据以及管理数据库,比如创建表、索引、视图等。

然后就是MySQL。
这是一个旧的关系数据库管理系统。
它开源、免费、易于扩展、性能良好。
在Java企业级开发中,是一个热门话题。

接下来我们来说一下数据库的三大范式。
这三种范式是第一范式(1 NF)、第二范式(2 NF)和第三范式(3 NF)。
它们是设计数据库时需要遵循的原则,主要是规范数据库结构,减少数据冗余。

第一范式是指每一列都是一个不可分割的基本数据项,不能有多个值。
第二范式,基于第一范式,非主键列完全依赖于主键。
第三范式中,在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。

我们来谈谈MySQL的权限表。
这个东西就是控制用户对数据库的访问。
主要权限表有user、db、table_priv、columns_priv和host。

最后说一下MySQL的binlog。
这个东西有三种输入格式:statement、row、mixed。
语句格式是指每一条改变数据的SQL语句都会记录在binlog中。
优点是日志量小,缺点是无法记录一些操作。
行格式记录每行的变化。
优点是可以记录所有变更,缺点是日志量较大。
混合格式是两者之间的折衷。
优点是结合了两者的优点,缺点是实现复杂。

哎,说了这么多,其实数据库的关键还是要多实践。
理论知识再丰富,没有实践经验也是没有用的。

Oracle数据库的面试题目及答案

嗨,谈起Oracle面试问题,我确实有一些想法。
我记得有一次面试官问我:“截断和删除命令有什么区别?”我当时很兴奋,说了很多话。

我说了truncate和delete都是用来删除表中所有记录的,但是它们有明显的不同。
截断是一个 DDL 操作。
这就像一般清洁一样。
它直接删除数据,不需要回滚段,因此效率更高。
删除是一个DML操作,就像一个一个的清理。
删除操作会记录在回滚段中。
如果事务回滚,这些操作可以撤消,但这也意味着需要更多的时间。

然后我也说了,这两个命令的相似之处就是,不带where子句的delete和truncate,以及drop,都会删除表中的数据。
但它们之间也有很多不同之处。

我说了,第一,truncate不会删除表结构,只删除数据,而drop会删除表结构,包括约束、触发器、索引等。
第二,delete是DML操作,会记录在回滚段中。
这些操作只有在交易提交后才会生效。
如果有触发器,它将在执行过程中触发。
truncate 和 drop 是 DDL 操作,立即生效,不会记录在回滚段中,也不会触发触发器。

我还提到,truncation不会影响表占用的空间,而drop会释放所有空间。
从速度上来说,一般来说drop是最快的,然后truncate和delete是最慢的。
在安全性方面,使用drop和truncate时要小心,尤其是在没有备份的情况下。

还有一次面试官问我“在Oracle中如何将查询结果中的空值输出为0?”我立刻想到了nvl函数,我说:“用nvl(field, 0)就可以了,这个函数会将null值替换为指定的值,比如0。

还有一次,面试官问:“char和varchar2 数据类型有什么区别?”我说:“char的长度是固定的,而varchar2 的长度是可变的。
比如存储字符串'test',char(1 0)会占用1 0个字符的空间。
不管'test'实际占用多少个字符,其他位置都会用空格填充。
而varchar2 (1 0)只会占用那些'>0'字符实际占用的空间'>0',”大家都是在实际工作中遇见我的。
谈论它实际上有点令人兴奋。
😄