热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL面试题|附答案解析(十四)

接上篇!!!5.什么是子查询(1)QL语句的查询结果做为另一条查询语句的条件或查询结果(2

接上篇!!!

5. 什么是子查询

(1)QL语句的查询结果做为另一条查询语句的条件或查询结果

(2)SQL语句嵌套使用,内部的SQL查询语句称为子查询。

6. 子查询的三种情况

&#xff08;1&#xff09;询是单行单列的情况&#xff1a;结果集是一个值&#xff0c;父查询使用&#xff1a;&#61;、 <、 > 等运算符

– 查询工资最高的员工是谁&#xff1f;

select * from employee where salary&#61;(select max(salary) from employee);

&#xff08;2&#xff09;询是多行单列的情况&#xff1a;结果集类似于一个数组&#xff0c;父查询使用&#xff1a;in 运算符

– 查询工资最高的员工是谁&#xff1f;

select * from employee where salary&#61;(select max(salary) from employee);

&#xff08;3&#xff09;是多行多列的情况&#xff1a;结果集类似于一张虚拟表&#xff0c;不能用于where条件&#xff0c;用于select子句中做为子表

– 1) 查询出2011年以后入职的员工信息

– 2) 查询所有的部门信息&#xff0c;与上面的虚拟表中的信息比对&#xff0c;找出所有部门ID相等的员工。

select * from dept d, (select * from employee where join_date > ‘2011-1-1’) e where e.dept_id &#61; d.id;

– 使用表连接&#xff1a;select d., e. from dept d inner join employee e on d.id &#61; e.dept_id where e.join_date > ‘2011-1-1’

7. mysql中 in 和 exists 区别

mysql中的in语句是把外表和内表作hash 连接&#xff0c;而exists语句是对外表作loop循环&#xff0c;每次loop循环再对内表进行查询。一直大家都认为exists比in语句的效率要高&#xff0c;这种说法其实是不准确的。这个是要区分环境的。

&#xff08;1&#xff09;果查询的两个表大小相当&#xff0c;那么用in和exists差别不大。

&#xff08;2&#xff09;如果两个表中一个较小&#xff0c;一个是大表&#xff0c;则子查询表大的用exists&#xff0c;子查询表小的用in。

&#xff08;3&#xff09;not in 和not exists&#xff1a;如果查询语句使用了not in&#xff0c;那么内外表都进行全表扫描&#xff0c;没有用到索引&#xff1b;而not extsts的子查询依然能用到表上的索引。所以无论那个表大&#xff0c;用not exists都比not in要快。

8. varchar与char的区别

char的特点

&#xff08;1&#xff09;har表示定长字符串&#xff0c;长度是固定的&#xff1b;

&#xff08;2&#xff09;如果插入数据的长度小于char的固定长度时&#xff0c;则用空格填充&#xff1b;

&#xff08;3&#xff09;因为长度固定&#xff0c;所以存取速度要比varchar快很多&#xff0c;甚至能快50%&#xff0c;但正因为其长度固定&#xff0c;所以会占据多余的空间&#xff0c;是空间换时间的做法&#xff1b;

&#xff08;4&#xff09;char来说&#xff0c;最多能存放的字符个数为255&#xff0c;和编码无关

varchar的特点

&#xff08;1&#xff09;varchar表示可变长字符串&#xff0c;长度是可变的&#xff1b;

&#xff08;2&#xff09;插入的数据是多长&#xff0c;就按照多长来存储&#xff1b;

&#xff08;3&#xff09;varchar在存取方面与char相反&#xff0c;它存取慢&#xff0c;因为长度不固定&#xff0c;但正因如此&#xff0c;不占据多余的空间&#xff0c;是时间换空间的做法&#xff1b;

&#xff08;4&#xff09;对于varchar来说&#xff0c;最多能存放的字符个数为65532总之&#xff0c;结合性能角度&#xff08;char更快&#xff09;和节省磁盘空间角度&#xff08;varchar更小&#xff09;&#xff0c;具体情况还需具体来设计数据库才是妥当的做法。

9. varchar(50)中50的涵义

最多存放50个字符&#xff0c;varchar(50)和(200)存储hello所占空间一样&#xff0c;但后者在排序时会消耗更多内存&#xff0c;因为order by col采用fixed_length计算col长度(memory引擎也一样)。在早期 MySQL 版本中&#xff0c; 50 代表字节数&#xff0c;现在代表字符数。

10. int(20)中20的涵义

是指显示字符的长度。20表示最大显示宽度为20&#xff0c;但仍占4字节存储&#xff0c;存储范围不变&#xff1b;不影响内部存储&#xff0c;只是影响带 zerofill 定义的 int 时&#xff0c;前面补多少个 0&#xff0c;易于报表展示

11. mysql为什么这么设计

对大多数应用没有意义&#xff0c;只是规定一些工具用来显示字符的个数&#xff1b;int(1)和int(20)存储和计算均一样&#xff1b;

12. mysql中int(10)和char(10)以及varchar(10)的区别

&#xff08;1&#xff09;(10)的10表示显示的数据的长度&#xff0c;不是存储数据的大小&#xff1b;chart(10)和varchar(10)的10表示存储数据的大小&#xff0c;即表示存储多少个字符。

int(10) 10位的数据长度 9999999999&#xff0c;占32个字节&#xff0c;int型4位
char(10) 10位固定字符串&#xff0c;不足补空格 最多10个字符
varchar(10) 10位可变字符串&#xff0c;不足补空格 最多10个字符

&#xff08;2&#xff09;char(10)表示存储定长的10个字符&#xff0c;不足10个就用空格补齐&#xff0c;占用更多的存储空间

&#xff08;3&#xff09;varchar(10)表示存储10个变长的字符&#xff0c;存储多少个就是多少个&#xff0c;空格也按一个字符存储&#xff0c;这一点是和char(10)的空格不同的&#xff0c;char(10)的空格表示占位不算一个字符

13. FLOAT和DOUBLE的区别是什么&#xff1f;

&#xff08;1&#xff09;FLOAT类型数据可以存储至多8位十进制数&#xff0c;并在内存中占4字节。

&#xff08;2&#xff09;DOUBLE类型数据可以存储至多18位十进制数&#xff0c;并在内存中占8字节。

14. drop、delete与truncate的区别

三者都表示删除&#xff0c;但是三者有一些差别&#xff1a;
在这里插入图片描述
15. UNION与UNION ALL的区别&#xff1f;

&#xff08;1&#xff09;用UNION ALL&#xff0c;不会合并重复的记录行

&#xff08;2&#xff09;效率 UNION 高于 UNION ALL

最后&#xff0c;小编分类整理了许多java进阶学习材料和BAT面试给热爱IT行业的你&#xff0c;如果需要资料的请转发此文章后再私聊小编回复【java】就能领取2019年java进阶学习资料和BAT面试题以及《Effective Java》&#xff08;第3版&#xff09;电子版书籍。也可以加群&#xff1a;712263501领取海量学习资料进行学习。


推荐阅读
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • MySQL外键1对多问题的解决方法及实例
    本文介绍了解决MySQL外键1对多问题的方法,通过准备数据、创建表和设置外键关联等步骤,实现了用户分组和插入数据的功能。详细介绍了数据准备的过程和外键关联的设置,以及插入数据的示例。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
author-avatar
chajian004_566_696
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有