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

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,
           CASE
               WHEN 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.kler.cn/a/390626.html

相关文章:

  • 【VBA实战】用Excel制作排序算法动画续
  • hadoop大数据平台
  • Gsensor加速度传感器数据异常及概率性卡死
  • 算法演练----24点游戏
  • DApp开发:定制化解决方案与源码部署的一站式指南
  • PostgreSQL 开启密码验证插件
  • css的z-index图层使用有什么要求
  • Python小游戏25——黄金矿工
  • Odoo:免费开源的钢铁冶金行业ERP管理系统
  • 国产AI图片工具,全部免费亲测实用!
  • LeetCode【0007】整数反转
  • 野指针和悬空指针详解
  • linux,1.正则表达式, 2.sed工具, 3.awk
  • 华为数通HCIA系列第4次考试-小测-子网划分相关解析
  • 36.Redis核心设计原理
  • MySql-8.0.40安装详细教程
  • Oracle 聚集因子factor clustering
  • NPM镜像源
  • echarts-gl 3D柱状图配置
  • 工位管理优化:Spring Boot企业级系统
  • 零基础上手WebGIS+智慧校园实例(1)【html by js】
  • 有趣的Midjourney作品赏析(附提示词)
  • Python爬虫:获取国家货币编码、货币名称
  • 泷羽sec学习打卡-shodan扫描7
  • 多模态AI:开启人工智能的新纪元
  • 分布式技术缓存技术