当前位置: 首页 > news >正文

SQL相关常见的面试题

SQL(Structured Query Language)是数据库管理中不可或缺的一部分,因此在技术面试中经常会被问到与 SQL 相关的问题。以下是一些常见的 SQL 面试题及其答案。

基础概念

  1. 什么是 SQL?

    • SQL 是一种用于管理和处理关系型数据库的标准语言。它用于查询、更新、插入和删除数据库记录。
  2. SQL 的主要命令类型有哪些?

    • DDL(Data Definition Language):用于定义数据库结构,如 CREATE, ALTER, DROP
    • DML(Data Manipulation Language):用于操作数据库中的数据,如 SELECT, INSERT, UPDATE, DELETE
    • DCL(Data Control Language):用于控制权限和访问,如 GRANT, REVOKE
    • TCL(Transaction Control Language):用于管理事务,如 COMMIT, ROLLBACK, SAVEPOINT
  3. 什么是主键和外键?

    • 主键(Primary Key):唯一标识表中每一行的字段,不允许为空且必须唯一。
    • 外键(Foreign Key):用于建立和加强两个表数据之间的链接,通常引用另一个表的主键。

常见查询

  1. 如何查询表中的所有记录?

    SELECT * FROM table_name;
    
  2. 如何查询表中的特定列?

    SELECT column1, column2 FROM table_name;
    
  3. 如何对查询结果进行排序?

    SELECT * FROM table_name ORDER BY column1 ASC;  -- 升序
    SELECT * FROM table_name ORDER BY column1 DESC; -- 降序
    
  4. 如何使用条件查询?

    SELECT * FROM table_name WHERE condition;
    
  5. 如何使用 LIKE 进行模糊查询?

    SELECT * FROM table_name WHERE column LIKE '%pattern%';
    

聚合函数

  1. 常见的聚合函数有哪些?

    • COUNT(): 计算行数。
    • SUM(): 计算总和。
    • AVG(): 计算平均值。
    • MAX(): 返回最大值。
    • MIN(): 返回最小值。
  2. 如何使用 GROUP BYHAVING

    SELECT department, COUNT(*) AS num_employees
    FROM employees
    GROUP BY department
    HAVING COUNT(*) > 5;
    

子查询

  1. 什么是子查询?

    • 子查询是在另一个查询语句内部的查询语句。子查询可以嵌套在 SELECT, INSERT, UPDATE, DELETE 语句中。
  2. 如何使用子查询?

    SELECT * FROM employees
    WHERE salary > (SELECT AVG(salary) FROM employees);
    

连接(JOIN)

  1. 常见的连接类型有哪些?

    • 内连接(INNER JOIN):返回两个表中匹配的记录。
    • 左连接(LEFT JOIN):返回左表中的所有记录,以及右表中匹配的记录。如果右表中没有匹配的记录,则返回 NULL。
    • 右连接(RIGHT JOIN):返回右表中的所有记录,以及左表中匹配的记录。如果左表中没有匹配的记录,则返回 NULL。
    • 全连接(FULL JOIN):返回两个表中的所有记录,如果没有匹配的记录,则返回 NULL。
  2. 如何使用 INNER JOIN?

    SELECT * FROM employees
    INNER JOIN departments ON employees.department_id = departments.department_id;
    
  3. 如何使用 LEFT JOIN?

    SELECT * FROM employees
    LEFT JOIN departments ON employees.department_id = departments.department_id;
    

索引

  1. 什么是索引?

    • 索引是一种数据库结构,用于加快数据检索的速度。索引可以基于一个或多个列创建。
  2. 如何创建索引?

    CREATE INDEX index_name ON table_name (column1, column2);
    

事务

  1. 什么是事务?

    • 事务是一组 SQL 语句,作为一个整体一起执行。事务具有 ACID 特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
  2. 如何使用事务?

    BEGIN TRANSACTION;
    UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
    UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
    COMMIT;
    

视图

  1. 什么是视图?

    • 视图是一个虚拟表,其内容由查询定义。视图可以简化复杂的查询,提高数据的安全性。
  2. 如何创建视图?

    CREATE VIEW view_name AS
    SELECT column1, column2
    FROM table_name
    WHERE condition;
    

高级查询

  1. 如何使用 UNION 合并查询结果?

    SELECT column1 FROM table1
    UNION
    SELECT column1 FROM table2;
    
  2. 如何使用 CASE 语句进行条件判断?

    SELECT column1,CASEWHEN column2 > 10 THEN 'High'WHEN column2 <= 10 THEN 'Low'ELSE 'Unknown'END AS status
    FROM table_name;
    

示例问题

  1. 如何查询每个部门的员工数量?

    SELECT department, COUNT(*) AS num_employees
    FROM employees
    GROUP BY department;
    
  2. 如何查询工资最高的前 5 名员工?

    SELECT * FROM employees
    ORDER BY salary DESC
    LIMIT 5;
    
  3. 如何查询每个部门的平均工资?

    SELECT department, AVG(salary) AS avg_salary
    FROM employees
    GROUP BY department;
    

相关文章:

SQL相关常见的面试题

SQL&#xff08;Structured Query Language&#xff09;是数据库管理中不可或缺的一部分&#xff0c;因此在技术面试中经常会被问到与 SQL 相关的问题。以下是一些常见的 SQL 面试题及其答案。 基础概念 什么是 SQL&#xff1f; SQL 是一种用于管理和处理关系型数据库的标准语…...

Vue数据响应式原理

前言 Vue是一个结构的框架,也就是 数据层、视图层、数据-视图层&#xff1b;响应式的原理就是实现当数据更新时&#xff0c;视图层也要相应的更新 响应式实现 基于发布订阅模式和数据劫持实现 1.发布订阅模式&#xff1a;vue使用发布订阅模式来实现数据变动的通知和更新 2…...

Electron + Vue3 开发桌面应用+附源码

什么是 Electron&#xff1f; Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台桌面应用程序的框架。它由 GitHub 开发并维护&#xff0c;允许开发者使用现代 Web 技术创建原生应用程序。Electron 结合了 Chromium 渲染引擎和 Node.js 运行时环境&#xff0c;使得开发…...

Webserver(5.2)网页服务器框架

目录 网页服务器服务器编程基本框架两种高效的事件处理模式reactor模式proactor模式同步IO模拟Proactor模式 网页服务器 接收、存储&#xff0c;处理来自客户端的HTTP请求&#xff0c;并对其请求做出HTTP响应。 Web服务器底层是基于tcp协议的&#xff0c;因为要保证数据安全。…...

股指期货交易中,如何应对震荡行情?

在股指期货交易中&#xff0c;趋势和震荡是市场波动的两种基本形态。然而&#xff0c;对于许多交易者来说&#xff0c;如何在趋势交易中有效应对震荡行情&#xff0c;却是一个令人头疼的问题。本文将结合相关链接内容&#xff0c;为您详细解读期货交易中如何应对震荡行情。 一…...

理想汽车Android面试题及参考答案

请解释一下 Android 中的 Handler 是如何工作的 在 Android 中&#xff0c;Handler 主要用于在不同线程之间进行通信&#xff0c;特别是在主线程&#xff08;UI 线程&#xff09;和工作线程之间。 Handler 是基于消息队列&#xff08;MessageQueue&#xff09;和 Looper 来工作…...

【数据集】【YOLO】【目标检测】口罩佩戴识别数据集 1971 张,YOLO佩戴口罩检测算法实战训练教程!

数据集介绍 【数据集】口罩佩戴检测数据集 1971 张&#xff0c;目标检测&#xff0c;包含YOLO/VOC格式标注。 数据集中包含1种分类&#xff1a;{0: face_mask}&#xff0c;佩戴口罩。 数据集来自国内外图片网站和视频截图。 检测场景为城市街道、医院、商场、机场、车站、办…...

前端将后端返回的文件下载到本地

vue 将后端返回的文件地址下载到本地 在 template 拿到后端返回的文件路径 <el-button link type"success" icon"Download" click"handleDownload(file)"> 附件下载 </el-button>在 script 里面写方法 function handleDownload(v…...

GISBox VS ArcGIS:分别适用于大型和小型项目的两款GIS软件

在现代地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;有许多大家耳熟能详的GIS软件。它们各自具有独特的优势&#xff0c;适用于不同的行业需求和使用场景。在众多企业和开发者面前&#xff0c;如何选择合适的 GIS 软件成为了一个值得深入思考的问题。今天&#xff…...

掌握分布式系统的38个核心概念

天天说分布式分布式&#xff0c;那么我们是否知道什么是分布式&#xff0c;分布式会遇到什么问题&#xff0c;有哪些理论支撑&#xff0c;有哪些经典的应对方案&#xff0c;业界是如何设计并保证分布式系统的高可用呢&#xff1f; 1. 架构设计 这一节将从一些经典的开源系统架…...

如何使用 VNC 服务器连接桌面

如何使用VNC软件去连接远程桌面系统呢? 一、什么是VNC? VNC(Virtual Network Computing,虚拟网络计算)是一种远程桌面共享协议,允许用户通过网络访问和控制远程计算机的桌面界面。VNC 使用的是一种基于图像的方式,将远程计算机的桌面环境发送到客户端的显示设备上,同时…...

算法每日练 -- 双指针篇(持续更新中)

介绍&#xff1a; 常见的双指针有两种形式&#xff0c;一种是对撞指针&#xff08;左右指针&#xff09;&#xff0c;一种是快慢指针&#xff08;前后指针&#xff09;。需要注意这里的双指针不是 int* 之类的类型指针&#xff0c;而是使用数组下标模拟地址来进行遍历的方式。 …...

读取excel并且显示进度条

读取excel并且显示进度条 通过C#实现DataGridView加载EXCEL文件&#xff0c;但加载时不能阻塞UI刷新线程&#xff0c;且向UI显示加载进度条。 #region 左上角导入 private async void ToolStripMenuItem_ClickAsync(object sender, EventArgs e) { …...

MySQL多表查询习题

数据内容介绍 数据库中有两个表 ​​​​ 内容如下&#xff1a; 习题 列出所有员工的姓名及其直接上级的姓名。列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称。列出部门名称和这些部门的员工信息&#xff0c;同时列出那些没有员工的部门。列出在财务部工作的员…...

HTML静态网页成品作业(HTML+CSS)——阜阳剪纸介绍设计制作(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…...

创新引领,模块化微电网重塑能源格局

根据QYResearch调研团队最新发布的《全球模块化微电网市场报告2023-2029》显示&#xff0c;预计到2029年&#xff0c;全球模块化微电网市场的规模将扩大至33.1亿美元&#xff0c;且在未来几年内&#xff0c;其年复合增长率&#xff08;CAGR&#xff09;将达到8.8%。 如下图所示…...

LeetCode34:在排序数组中查找元素第一个和最后一个位置

原题地址&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须…...

汽车广告常见特效处理有哪些?

​汽车广告作为展示汽车性能和外观的重要媒介&#xff0c;常常需要借助特效来增强视觉效果&#xff0c;吸引观众的注意力。以下是一篇关于汽车广告中常见特效处理的文章。 在竞争激烈的汽车市场中&#xff0c;广告不仅是推广产品的工具&#xff0c;更是艺术和科技的结合。特效技…...

Unexpected response code: 400解决

原因&#xff1a;Nginx配置错误&#xff0c;业务服务提供了 websocket 服务&#xff0c;基于 websocket 来实现报表数据的推送&#xff0c;客户在浏览器上查看报表&#xff0c;经过 http 代理将请求传递给后端服务。 解决方案 Nginx中增加websocket配置 location ~/websocket…...

世优科技携手人民中科打造AI数字人智能体助力智慧校园

近日&#xff0c;世优科技与人民中科携手&#xff0c;为中国劳动关系学院开发了一款AI数字人助手&#xff0c;不仅在校园内部承担日常问询、交互工作&#xff0c;还在学校的展厅中担任讲解员的角色&#xff0c;为师生们提供生动详尽的导览服务。 中国劳动关系学院作为中华全国总…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...