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;
    

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

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

相关文章

OpenCV相机标定与3D重建(1)概述

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 本节中的函数使用所谓的针孔相机模型。通过使用透视变换将场景中的3D点 P w P_w Pw​ 投影到图像平面上&#xff0c;从而获得场景的视图&#x…

Docker部署Oracle 11g

1&#xff0c;拉取镜像&#xff1a; sudo docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11gsudo docker images 2&#xff0c;启动一个临时容器&#xff0c;用于拷贝数据库文件&#xff0c;挂载到宿主主机&#xff0c;使数据持久化&#xff1a; sudo docke…

【Linux系统】—— 基本指令(二)

【Linux系统】—— 基本指令&#xff08;二&#xff09; 1 「alias」命令1.1 「ll」命令1.2 「alias」命令 2 「rmdir」指令与「rm」指令2.1 「rmdir」2.2 「rm」2.2.1 「rm」 删除普通文件2.2.2 「rm」 删除目录2.2.3 『 * 』 通配符 3 「man」 指令4 「cp」 指令4.1 拷贝普通…

从单层到 MVC,再到 DDD:架构演进的思考与实践

引言 在日常开发中&#xff0c;我们之前工作中经常接手的大多数都是传统 MVC 架构体系的项目。然而&#xff0c;随着现在分布式和微服务架构的普及&#xff0c;越来越多的项目开始重构、拆分&#xff0c;传统的 MVC 架构也逐渐向 DDD 架构演进。为什么需要将传统架构重构为 DD…

贝式计算的 AI4S 观察:使用机器学习对世界进行感知与推演,最大魅力在于横向扩展的有效性

「传统研究方法高度依赖于科研人员自身的特征和问题定义能力&#xff0c;通常采用小数据&#xff0c;在泛化能力和拓展能力上存疑。而 AI 研究方法则需要引入大规模、高质量数据&#xff0c;并采用机器学习进行特征抽取&#xff0c;这使得产生的科研结果在真实世界的问题中非常…

[产品管理-58]:安索夫矩阵矩阵帮助创业者确定研发出来的产品在市场中定位策略

目录 一、提出背景 二、核心思想与结构 三、应用背景与领域 四、实践案例 安索夫矩阵&#xff08;Ansoff Matrix&#xff09;&#xff0c;也被称为产品/市场方格或成长矢量矩阵&#xff0c;其应用背景可以从以下几个方面进行详细阐述&#xff1a; 一、提出背景 安索夫矩阵…

安当ASP系统:适合中小企业的轻量级Radius认证服务器

安当ASP&#xff08;Authentication Service Platform&#xff09;身份认证系统是一款功能强大的身份认证服务平台&#xff0c;特别适用于中小企业。其中&#xff0c;简约型Radius认证服务器是安当ASP系统中的一个重要组成部分。以下是对该系统的详细介绍&#xff1a; 一、主要…

uniapp配置h5路由模式为history时404

为了不让URL中出现#&#xff0c;让uniapp项目配置h5路由模式为hisory 然而本地好好的&#xff0c;放到服务器上却404了。 解决方法是给nginx配置一个伪静态&#xff1a; location /xxx-html/ {alias /home/nginx_web/xxx_new_html/;try_files $uri $uri/ /xxx-html/index.ht…

Go-HTTP框架设计实现概述

1.再谈HTTP协议 第一个大规模使用&#xff1a;HTTP0.9 三十多年了 HTTP:超文本传输协议&#xff08;Hypertext Transfer Protocal&#xff09; 为什么是超文本&#xff1a;因为图片、音乐、视频是文本的扩充 为什么需要协议&#xff1a;约定俗称的规则&#xff08;像说话&…

使用Matlab建立决策树

综述 除了神经网络模型以外&#xff0c;树模型及基于树的集成学习模型是较为常用的效果较好的预测模型。我们以下先构建一个决策树模型。 决策树算法的优点如下&#xff1a;1、 决策树易于理解和实现&#xff0c;用户在学习过程中不需要了解过多的背景知识&#xff0c;其能够…

【JavaSE】(3)数组

目录 一、数组的定义和初始化 1. 什么是数组 2. 数组的定义 3. 数组的初始化 4. 操作数组的工具包 二、数组的使用 三、引用类型 1. JVM内存分布 2. 引用变量 3. 默认值 null 四、二维数组 1. 二维数组的定义和初始化 2. 不规则的二维数组 一、数组的定义和初始化…

uniapp—android原生插件开发(3Android真机调试)

本篇文章从实战角度出发&#xff0c;将UniApp集成新大陆PDA设备RFID的全过程分为四部曲&#xff0c;涵盖环境搭建、插件开发、AAR打包、项目引入和功能调试。通过这份教程&#xff0c;轻松应对安卓原生插件开发与打包需求&#xff01; 一、打包uniapp资源包&#xff1a; 打包…

【 AI写作鹅-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

esp32学习:利用虫洞ESP32开发板,快速实现无线图传

我们的虫洞开发板&#xff0c;能够完美运行esp who AI代码&#xff0c;所以实现无线图传那是非常容易的&#xff0c;我们先看看examples目录&#xff1a; 里面有比较多的web例程&#xff0c;在这些例程下&#xff0c;稍作修改&#xff0c;就可以快速实现我的图传无线功能&#…

Docker网络概述

1. Docker 网络概述 1.1 网络组件 Docker网络的核心组件包括网络驱动程序、网络、容器以及IP地址管理&#xff08;IPAM&#xff09;。这些组件共同工作&#xff0c;为容器提供网络连接和通信能力。 网络驱动程序&#xff1a;Docker支持多种网络驱动程序&#xff0c;每种驱动程…

RK3568平台开发系列讲解(设备树篇)设备树中CPU描述

🚀返回专栏总目录 文章目录 一、CPU节点1.1、节点结构:1.2、处理器属性:1.3、 处理器拓扑关系:二、cpu-map、 socket、 cluster 节点三、core、 thread 节点沉淀、分享、成长,让自己和他人都能有所收获!😄 一、CPU节点 设备树的 cpus 节点是用于描述系统中的处理器的一…

element plus中修改el-table的样式

文章目录 前情提要相关环境package.jsonvue代码结果 方式一直接看代码 方式二直接看代码 前情提要 因为项目中用到el-table的时候&#xff0c;需要将el-table表格的样式进行修改&#xff0c;将整个表格的背景颜色从白色变成透明&#xff0c;使得表格变得透明之后&#xff0c;展…

【启程Golang之旅】一站式理解Go语言中的gRPC

在本文中将深入探讨如何使用Go语言构建基于gRPC的高效服务通信&#xff0c;无论你是刚刚接触gRPC还是已经有一定基础的开发者&#xff0c;这篇文章都将带你从理论到实践&#xff0c;全面理解如何借助Go和gRPC提升应用程序的性能与可维护性。 目录 初识gRPC gRPC基本使用 初识…

Ubuntu22.04安装DataEase

看到DataEase的驾驶舱&#xff0c;感觉比PowerBI要好用一点&#xff0c;于是搭建起来玩玩。Dataease推荐的操作系统是Ubuntu22.04/Centos 7。 下载了Ubuntu22.04和DataEase 最新版本的离线安装包 一.安装ubuntu22.04 在安装的时候&#xff0c;没有顺手设置IP地址信息&#xff…

IDEA加载通义灵码插件及使用指南

安装通义灵码插件 登录通义灵码IDE插件 下载登录参考教程 https://help.aliyun.com/zh/lingma/user-guide/download-the-installation-guide 本地工程和企业知识库准备 请下载本地工程和知识库压缩包&#xff0c;并在本地解压缩&#xff0c;其中包含demoProject和知识库文件…