SQL面试题及答案

SQL是结构化查询语言,用于数据库管理。它包括DDL(创建表)、DML(插入数据)、DCL和TCL。创建表格使用`CREATETABLE`语句,插入数据用`INSERTINTO`。选择特定表格和数据行涉及`SELECT`和`WHERE`子句。`JOIN`用于多表操作,`GROUPBY`和`HAVING`用于数据分组和过滤,`ORDERBY`和`LIMIT`用于排序和限制结果数。视图是虚拟表格,`UNION`合并查询结果,`DISTINCT`去除重复行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

  1. 什么是SQL? SQL分为哪几种类型?

  1. 如何创建表格? 如何在表格中插入数据?

  1. 如何选择一个特定的表格? 如何使用“Where”子句选择特定的数据行?

  1. 如何同时选择多个表格? 如何进行表格连接?

  1. 如何使用“Group By”合并数据? 如何使用“Having”筛选分组数据?

  1. 如何使用“Order By”对数据进行排序? 如何将结果中的前几条数据筛选出来?

  1. 什么是视图? 如何创建并使用视图?

  1. 什么是子查询? 如何使用子查询?

  1. 如何使用“Union”操作符合并两个查询的结果?

  1. 如何使用“Distinct”关键字去除重复数据行?

答案

  1. SQL是结构化查询语言的缩写。它有四种类型:Data Definition Language(DDL,数据定义语言),Data Manipulation Language(DML,数据操作语言),Data Control Language(DCL,数据控制语言)和Transaction Control Language(TCL,事务控制语言)。

  1. 要创建表,您可以使用“Create Table”语句。例如:CREATE TABLE employees (id INT, name VARCHAR(50), age INT, salary INT); 要在表中插入数据,您可以使用如下的语句:INSERT INTO employees (id, name, age, salary) VALUES (1, 'John Smith', 25, 50000);

  1. 要选择一个特定的表,您可以使用“Select”语句。例如:SELECT * FROM employees; 要使用“Where”子句选择特定的数据行,您可以使用如下的语句:SELECT * FROM employees WHERE age > 30;

  1. 要同时选择多个表,您可以使用“Join”操作符。例如:SELECT employees.name, departments.department_name FROM employees JOIN departments ON employees.department_id = departments.id;

  1. 要使用“Group By”合并数据,您可以使用如下的语句:SELECT department_id, COUNT() FROM employees GROUP BY department_id; 要使用“Having”筛选分组数据,您可以使用如下的语句:SELECT department_id, COUNT() FROM employees GROUP BY department_id HAVING COUNT(*) > 10;

  1. 要使用“Order By”对数据进行排序,您可以使用如下的语句:SELECT * FROM employees ORDER BY salary DESC; 要将结果中的前几条数据筛选出来,您可以使用“Limit”子句。例如:SELECT * FROM employees ORDER BY salary DESC LIMIT 10;

  1. 视图是一种虚拟的表格,其内容是根据查询定义的。可以使用“Create View”语句创建视图。例如:CREATE VIEW employee_details AS SELECT employees.name, employees.age, departments.department_name FROM employees JOIN departments ON employees.department_id = departments.id; 要使用视图,只需要使用其名称来替代基本表的名称即可。例如:SELECT * FROM employee_details;

  1. 子查询是一种嵌套查询,可以在主查询中使用。例如:SELECT * FROM employees WHERE department_id IN (SELECT id FROM departments WHERE department_name = 'Sales');

  1. 使用“Union”操作符合并两个查询的结果,例如:SELECT name, age FROM employees UNION SELECT name, age FROM customers;

  1. 使用“Distinct”关键字去除重复数据行,例如:SELECT DISTINCT department_id FROM employees;

希望这一些基本的SQL技术问题的答案能对您的面试有所帮助。

### SQL 面试题答案解析 以下是针对 SQL 面试题的详细解析,涵盖基础操作、进阶函数以及实战场景。以下内容结合了常见的 SQL 面试题及其答案解析[^1]。 #### 1. 创建基础表 在回答 SQL 面试题之前,通常需要创建一些基础表作为测试环境。例如,学生表、成绩表、课程表和教师表是常见的测试表。以下是创建这些表的 SQL 语句: ```sql -- 学生表 CREATE TABLE `Student` ( `s_id` VARCHAR(20), `s_name` VARCHAR(20) NOT NULL DEFAULT '', `s_bir` DATE ); -- 成绩表 CREATE TABLE `Score` ( `s_id` VARCHAR(20), `c_id` VARCHAR(20), `score` DECIMAL(4, 1) ); -- 课程表 CREATE TABLE `Course` ( `c_id` VARCHAR(20), `c_name` VARCHAR(20), `t_id` VARCHAR(20) ); -- 教师表 CREATE TABLE `Teacher` ( `t_id` VARCHAR(20), `t_name` VARCHAR(20) ); ``` #### 2. 基础查询与过滤 **Q1:** 查询所有学生的姓名和生日。 ```sql SELECT s_name, s_bir FROM Student; ``` 此查询返回学生表中的姓名和生日列[^1]。 #### 3. 分组与聚合 **Q2:** 查询每门课程的平均分。 ```sql SELECT c_id, AVG(score) AS avg_score FROM Score GROUP BY c_id; ``` 通过 `GROUP BY` 和 `AVG` 函数计算每门课程的平均分[^1]。 #### 4. 连接查询 **Q3:** 查询每个学生的姓名及其对应的课程名称和成绩。 ```sql SELECT s.s_name, c.c_name, sc.score FROM Student s JOIN Score sc ON s.s_id = sc.s_id JOIN Course c ON sc.c_id = c.c_id; ``` 使用多表连接查询,将学生表、成绩表和课程表关联起来[^1]。 #### 5. 窗口函数 **Q4:** 查询每个学生的总成绩排名。 ```sql SELECT s_name, SUM(score) AS total_score, RANK() OVER (ORDER BY SUM(score) DESC) AS rank FROM Student s JOIN Score sc ON
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dumpling90

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值