SQL相关的问题通常涵盖基本查询、连接、聚合、子查询、窗口函数、数据修改以及数据库设计等方面。以下是一些常见的面试问题和示例:
基本查询:
SELECT column1, column2 FROM table_name;
#条件查询
where
SELECT * FROM table_name WHERE condition;
#排序结果:
SELECT * FROM table_name ORDER BY column1 ASC, column2 DESC;
#内连接
SELECT a.column, b.column
FROM table_a a
JOIN table_b b ON a.id = b.a_id;
#左连接
SELECT a.column, b.column
FROM table_a a
LEFT JOIN table_b b ON a.id = b.a_id;
#自连接(例如,查找同一表中具有相同值的记录)
SELECT a.column, b.column
FROM table a, table b
WHERE a.column = b.column AND a.id != b.id;
#计数、求和、平均值等
SELECT COUNT(), SUM(column1), AVG(column2)
FROM table_name
GROUP BY column3;
#使用HAVING子句过滤分组
SELECT column1, COUNT( )
FROM table_name
GROUP BY column1
HAVING COUNT() > 1;
#子查询
SELECT column1
FROM table_name
WHERE column2 IN (SELECT column2 FROM another_table WHERE condition);
#插入数据
INSERT INTO table_name (column1, column2) VALUES (value1, value2);
#更新数据
UPDATE table_name SET column1 = value1 WHERE condition;
#删除数据
DELETE FROM table_name WHERE condition;
#查询重复的数据
SELECT column1, COUNT( )
FROM table_name
GROUP BY column1
HAVING COUNT(*) > 1;
#删除重复记录
DELETE FROM table_name
WHERE id NOT IN (
SELECT MIN(id)
FROM table_name
GROUP BY column1
);
#查询第二高
SELECT DISTINCT salary
FROM employee
ORDER BY salary DESC
LIMIT 1 OFFSET 1;
