SQL相关常见的面试题

news/2024/11/8 17:31:26 标签: sql, oracle, 数据库

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. 如何查询表中的所有记录?

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

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

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

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

    sql">SELECT * FROM table_name WHERE column LIKE '%pattern%';
    

聚合函数

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

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

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

子查询

  1. 什么是子查询?

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

    sql">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?

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

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

索引

  1. 什么是索引?

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

    sql">CREATE INDEX index_name ON table_name (column1, column2);
    

事务

  1. 什么是事务?

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

    sql">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. 如何创建视图?

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

高级查询

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

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

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

示例问题

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

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

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

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

http://www.niftyadmin.cn/n/5744216.html

相关文章

mac 中python 安装mysqlclient 出现 ld: library ‘ssl‘ not found错误

1. 出现报错 2. 获取openssl位置 brew info openssl 3. 配置环境变量&#xff08;我的是在~/.bash.profile&#xff09; export LDFLAGS"-L/opt/homebrew/Cellar/openssl3/3.4.0/lib" export CPPFLAGS"-I/opt/homebrew/Cellar/openssl3/…

如何利用探商宝精准营销,抓住行业机遇——以AI技术与大数据推动企业信息精准筛选

近年来&#xff0c;随着人工智能与大数据技术的迅猛发展&#xff0c;企业的营销手段和策略发生了巨大变化。尤其是在信息爆炸的数字时代&#xff0c;如何有效利用这些技术在海量数据中精准找到潜在客户&#xff0c;已成为中小企业亟待解决的核心问题。 最近&#xff0c;全球人…

JavaFX -- chapter07(HTTP程序设计)

chapter07(HTTP程序设计) 使用Java的Socket类时&#xff0c;你只需要知道服务器的域名&#xff08;或IP地址&#xff09;和端口号就可以建立连接。Java的网络库会处理域名解析的过程&#xff0c;即将域名转换为IP地址。 import java.io.*; import java.net.*;public class So…

美国大选——极具典型的可视化案例!GISer学起来

有人说可视化技术有啥意义&#xff0c;不就做个大屏么&#xff1f; 那真的小看了&#xff0c;就如下图这个美国大选来看&#xff0c;这么复杂混乱的信息&#xff0c;可视化技术给你梳理的明明白白的&#xff0c;简单、直观、形象、便于记忆。 让用户能够从繁杂信息中快速抓到重…

SpringBoot在城镇保障性住房管理中的应用

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理城镇保障性住房管理系统的相关信息成为必然…

从零学习大模型(十二)-----基于梯度的重要性剪枝(Gradient-based Pruning)

梯度的重要性定义 权重重要性&#xff08;Weight Importance&#xff09; 权重重要性通常指的是某个权重参数在模型输出中的影响程度。权重重要性的评估通常基于以下几个方面&#xff1a; 绝对值&#xff1a;一个常见的方法是直接使用权重的绝对值作为其重要性指标。权重越大…

《Spring Boot从入门到实战》第五章习题答案

5.7 本章练习 1&#xff09;创建Spring Boot Web项目&#xff0c;使用Thymeleaf页面模板引擎实现人员管理模块的功能。 答案&#xff1a; 1. 创建人员实体类 创建一个 Person 实体类&#xff0c;用于定义人员属性 package com.example.demo.bean;import javax.persistence.…

[JAVA]有关一些Maven的介绍

Maven 是一个强大的项目管理和构建自动化工具&#xff0c;主要用于Java项目&#xff0c;也可以用于其他基于JVM&#xff08;Java虚拟机&#xff09;的语言项目&#xff0c;它的作用介绍如下 1.依赖管理 在Java开发中&#xff0c;一个项目通常会依赖许多外部的库&#xff0c;比…