mysql-面试题

一、SQL语句

1、SQL语句的分类

  1. DQL:数据查询语言—select
  2. DML:数据操作语言—insert/update/delete
  3. DDL:数据定义语言—create/drop/alter
  4. DCL:数据控制语言—start transaction/commit/rollback

2、Sql语句的执行顺序

  1. SQL 语句的执行顺序与编写顺序并不相同
  2. FROM、ON、JOIN、WHERE、GROUP BY、HAVING、SELECT、DISTINCT、ORDER BY、LIMIT
  3. 最终返回结果

3、Truncate与delete的区别

  1. Truncate不能加where条件,而delete可以
  2. Truncate更高效,不记录任何日志,整个表数据立即删除;delete则会为每行记录一条日志
  3. Truncate后,再插入数据,主键从1开始;Delete则从上次的断点开始
  4. Truncate不能回滚,delete可以

4、count(1)、count(*)和count(col)的区别

  1. count(1)和count(*)返回记录的行数,包括NULL的统计
  2. count(col)是不包括NULL的统计

5、char与varchar的区别

  1. 长度:char类型的长度是固定的,而varchar类型的长度是可变的。char类型的长度一旦定义,无论存储的数据有多少,都会占用固定长度的空间。当存储的数据长度小于定义长度时,char类型会在数据后面用空格填充至定义长度。而varchar类型则不同,它仅存储实际的数据长度,不会额外使用空间。
  2. 存储方式:char和varchar的存储方式也有所不同。在存储英文字符时,char类型占用1个字节,而varchar类型占用2个字节。对于汉字的存储,两种类型都是占用2个字节。
  3. 效率:char类型的存取速度要比varchar类型快得多。因为char类型的长度固定,程序在存储和查找时可以更加高效。然而,这种效率的提升是以空间为代价的,因为char类型会产生额外的隐藏空格。varchar类型虽然存取速度相对较慢,但可以节省空间,尤其是当存储的数据长度小于定义长度时。
  4. 场景:char适合用于存储长度固定且数据量不大的字符字段,例如身份证号、手机号等;而varchar则更适合用于存储长度可变、数据量较大的字符字段,例如文章内容、用户备注等。在实际应用中,应根据具体需求和场景选择合适的字符类型。

5、varchar(10)和varchar(20)的区别

  1. 存储hello所占空间一样
  2. 后者在排序时会消耗更多内存

6、什么是多表查询

  1. 内连接:驱动表中的记录在被驱动表中找不到匹配的记录,该记录不会加入到最后的结果集
  2. 外连接:驱动表中的记录即使在被驱动表中没有匹配的记录,也仍然需要加入到结果集
    1. 左连接:选取左侧的表为驱动表
    2. 右连接:选取右侧的表为驱动表
  3. 子查询

7、什么是SQL注入

  1. Sql字符串拼接存在漏洞
  2. 解决

8、为什么SQL 语句不要过多的join?

  1. 性能问题:每个join 操作都需要对两个或多个表进行连接操作,这个操作需要消耗大量的计算资源和时间,如果join 操作过多,会导致SQL 的执行效率降低,从而影响整个系统的性能。
  2. 可读性和维护性问题:join 操作会使SQL 语句变得复杂,难以理解和维护,特别是当join 操作涉及到多个表的时候,SQL 语句的复杂度会呈现指数级增长,给代码的可读性和可维护性带来挑战。

二、索引

1、索引的分类

  1. 主键索引:数据列不允许重复,不允许为NULL,一个表只能有一个主键
  2. 唯一索引:数据列不允许重复,允许为NULL 值,一个表允许多个列创建唯一索引
  3. 普通索引:基本的索引类型,没有唯一性的限制,允许为NULL 值。
  4. 覆盖索引:查询列要被所建的索引覆盖,不必读取数据行
  5. 联合索引:多列组成一个索引,用于组合搜索,效率大于索引合并

2、索引的类型

3、与B树、红黑树相比,B+树索引的优点

  1. 数据库文件很大,需要存储到磁盘,索引的结构要尽量减少查找过程
  2. 高度原因:B+树每个节点包含许多关键字,降低树的深度。任何关键字查找,都要从根节点到叶子节点,查询路径相同,每一个数据查询的效率相当。
  3. B树适合随机检索,而B+树适用于顺序检索和随机检索
  4. B

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/677243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【正式】今年第一篇CSDN(纯技术教学)

一、文件上传简介 文件上传漏洞是指用户上传了一个可执行的脚本文件(木马、病毒、恶意脚本、webshell等),并通过此脚本文件获得了执行服务器端命令的能力。上传点一般出现在头像、导入数据、上传压缩包等地方,由于程序对用户上传…

Ubuntu in VMware的问题

文章目录 安装单用户模式(安全模式)扩容硬盘复制粘贴必装共享文件夹在虚拟机中不显示猫孔堵塞需要通过VMware来实现重启效果后记 just 安装 下载iso文件后 安装向导中兼容性选14x 版本的VMware 后面不会出现vcpu问题 cpu 4x4 装完后启动会出现vcpu问题 重启虚拟机Ubuntu 此问题…

使用内联函数,降低函数调用开销,实现移动时绘制

easyx devc 开发。 AWSD移动&#xff0c;移动时可以左键绘制 左键绘制 左上角画笔颜色 右键拖拽 #include <graphics.h> // 使用关键字 inline 声明为内联函数&#xff0c;减少贴图函数频繁调用的开销导致的卡顿。 // 缓冲区纹理映射函数&#xff1a;bkmesh 映射目…

Python语言例题集(002)

#!/usr/bin/python3 #使用del语句删除元素 motorcycles[‘honda’,‘yamaha’,‘suzuki’] print(motorcycles) del motorcycles[0] print(motorcycles) motorcycles[‘honda’,‘yamaha’,‘suzuki’] print(motorcycles) del motorcycles[1] print(motorcycles) #使用方法po…

TOP100 二叉树(三)

11.114. 二叉树展开为链表 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺…

PVST详解

PVST&#xff08;Per-VLAN Spanning Tree&#xff09;是Cisco公司的一种扩展的Spanning Tree协议&#xff0c;允许在每个VLAN中独立运行一个Spanning Tree实例&#xff0c;从而提高网络的可靠性和性能。 PVST协议在每个交换机中维护多个Spanning Tree实例&#xff0c;每个实例…

SegmentAnything官网demo使用vue+python实现

一、效果&准备工作 1.效果 没啥好说的&#xff0c;低质量复刻SAM官网 https://segment-anything.com/ 需要提一点&#xff1a;所有生成embedding和mask的操作都是python后端做的&#xff0c;计算mask不是onnxruntime-web实现的&#xff0c;前端只负责了把rle编码的mask解…

5G技术对物联网的影响

随着数字化转型的加速&#xff0c;5G技术作为通信领域的一次重大革新&#xff0c;正在对物联网&#xff08;IoT&#xff09;产生深远的影响。对于刚入行的朋友们来说&#xff0c;理解5G技术及其对物联网应用的意义&#xff0c;是把握行业发展趋势的关键。 让我们简单了解什么是…

AutoSAR(基础入门篇)7.2-AppL在Dev中的配置

目录 一、Application Component Types(SWC Type) 二、Service Component Types 三、Data Types 1、Application Data Types(ADT)

巧用liteflow,告别if else,SpringBoot整合liteflow

假设有一个三个原子业务&#xff0c;吃饭、喝水、刷牙。 现在有三个场景&#xff0c;分别是 场景A: 吃饭->刷牙->喝水 官网地址&#xff1a;https://liteflow.cc/ 1.添加依赖&#xff1a; <dependency><groupId>com.yomahub</groupId><artifactI…

基于鲲鹏服务NodeJs安装

准备工作 查看当前环境 uname -a查看鲲鹏云CPU架构 cat /proc/cpuinfo# 查看CPU architecture项&#xff0c;8表示v8&#xff0c;7表示v7下载Node.js NodeJs 选择 Linux Binaries (ARM) ARMv8 wget -c https://nodejs.org/dist/v12.18.3/node-v12.18.3-linux-arm64.tar.xz…

基于完全二叉树实现线段树-- [爆竹声中一岁除,线段树下苦踌躇]

文章目录 一.完全二叉树完全二叉树的父子结点引索关系 二.线段树三.基于完全二叉树实现线段树关于线段树的结点数量问题的证明递归建树递归查询区间和递归单点修改线段树模板题 一.完全二叉树 完全二叉树的物理结构是线性表,逻辑结构是二叉树 完全二叉树的父子结点引索关系 …

【Make编译控制 04】Makefile项目编译

目录 一、编译选项 二、链接选项 三、项目编译 一、编译选项 -std: 指定编译标准&#xff0c;例如&#xff1a;-stdc11、-stdc14-g: 包含调试信息-w: 不显示警告-O: 优化等级&#xff0c;通常使用&#xff1a;-O3-I: 加在头文件路径前-m64: 指定编译为 64 位应用程序fPIC: …

OpenCV与机器学习:使用opencv和sklearn实现线性回归

前言 线性回归是一种统计分析方法&#xff0c;用于确定两种或两种以上变量之间相互依赖的定量关系。在统计学中&#xff0c;线性回归利用线性回归方程&#xff08;最小二乘函数&#xff09;对一个或多个自变量&#xff08;特征值&#xff09;和因变量&#xff08;目标值&#…

深度优先搜索(DFS)与广度优先搜索(BFS):探索图与树的算法

一、引言 在图论和树形结构中&#xff0c;搜索算法是寻找从起点到终点的路径的关键。其中&#xff0c;深度优先搜索&#xff08;DFS&#xff09;和广度优先搜索&#xff08;BFS&#xff09;是最常用且最基础的两种搜索算法。本文将详细介绍广度优先搜索&#xff08;BFS&#xf…

一文彻底搞懂Kafka如何保证消息不丢失

文章目录 1. kafka 架构2. producer端是如何保证数据不丢失的2.1 同步发送2.2 异步发送2.3 批量发送 3. consumer端是如何保证数据不丢失的3.1 手动提交3.2 幂等性消费 4. broker端是如何保证数据不丢失的4.1 副本机制4.2 ISR机制4.3 刷盘机制 1. kafka 架构 Producer&#xff…

ES6 ~ ES11 学习笔记

课程地址 ES6 let let 不能重复声明变量&#xff08;var 可以&#xff09; let a; let b, c, d; let e 100; let f 521, g "atguigu", h [];let 具有块级作用域&#xff0c;内层变量外层无法访问 let 不存在变量提升&#xff08;运行前收集变量和函数&#…

基于SpringBoot+Vue的服装销售商城系统

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…

电脑数据误删如何恢复?9 个Windows 数据恢复方案

无论您是由于软件或硬件故障、网络犯罪还是意外删除而丢失数据&#xff0c;数据丢失都会带来压力和令人不快。 如今的企业通常将其重要数据存储在云或硬盘上。但在执行其中任何一项操作之前&#xff0c;您很有可能会丢失数据。 数据丢失的主要原因是意外删除&#xff0c;任何…

springBoot,springSecurity返回乱码

框架&#xff1a;SpringBoot3 问题&#xff1a;响应内容乱码 问题代码&#xff1a; // 成功登录响应的内容Overridepublic void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication…