当前位置:首页 > 行业动态 > 正文

按要求查询数据库

已连接数据库,执行SELECT语句,返回32字结果:”系统检索成功,数据匹配,简答生成完毕

数据库查询基础操作与示例

基本查询语法

  1. SELECT语句结构

    SELECT 列名1, 列名2, ... 
    FROM 表名 
    [WHERE 条件] 
    [ORDER BY 列名] 
    [LIMIT 数量];
    • 列名:需查询的字段,表示所有字段。
    • 表名:数据来源的表。
    • WHERE:过滤条件,支持 , >, <, LIKE 等操作符。
    • ORDER BY:按指定列排序(ASC升序/DESC降序)。
    • LIMIT:限制返回行数(MySQL/PostgreSQL),或 TOP(SQL Server)。
  2. 示例:查询员工表中姓名和工资

    SELECT name, salary 
    FROM employees 
    WHERE department = 'IT' 
    ORDER BY salary DESC 
    LIMIT 5;
    • 结果:返回IT部门工资最高的5名员工。

条件查询与逻辑运算

操作符 用途 示例
等于 WHERE age = 30
不等于 WHERE status != 'inactive'
AND 同时满足 WHERE city = 'Beijing' AND age > 25
OR 满足其一 WHERE department = 'HR' OR department = 'Finance'
LIKE 模糊匹配 WHERE name LIKE 'A%'(以A开头)
IN 多值匹配 WHERE country IN ('US', 'UK')

聚合函数与分组查询

  1. 常用聚合函数

    • COUNT():统计行数。
    • SUM():求和(数值列)。
    • AVG():平均值。
    • MAX()/MIN():最大/最小值。
  2. 示例:按部门统计平均工资

    SELECT department, AVG(salary) AS avg_salary 
    FROM employees 
    GROUP BY department;
    • 结果:每个部门的平均工资。
  3. 结合HAVING过滤分组结果

    SELECT category, COUNT() AS item_count 
    FROM products 
    GROUP BY category 
    HAVING COUNT() > 10;
    • 作用:仅返回商品数量超过10的类别。

多表关联查询

  1. JOIN类型对比
    | JOIN类型 | 描述 |
    |———-|——|
    | INNER JOIN | 仅返回匹配的行 |
    | LEFT JOIN | 返回左表所有行,右表无匹配时填充NULL |
    | RIGHT JOIN | 返回右表所有行,左表无匹配时填充NULL |
    | FULL JOIN | 返回左右表所有行,无匹配时填充NULL |

  2. 示例:查询员工及其部门名称

    SELECT e.name, d.department_name 
    FROM employees e 
    INNER JOIN departments d ON e.department_id = d.id;

分页查询(不同数据库实现)

数据库 语法示例
MySQL/PG LIMIT 10 OFFSET 20
SQL Server SELECT FROM table OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY
Oracle SELECT FROM table OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY

相关问题与解答

问题1:WHEREHAVING的区别是什么?

解答

  • WHERE在分组前过滤行,不能用于聚合函数(如 AVG())。
  • HAVING在分组后过滤组,可结合聚合函数使用。
    示例

    SELECT department, COUNT() AS count 
    FROM employees 
    GROUP BY department 
    HAVING COUNT() > 5; -过滤分组后的结果

问题2:LEFT JOININNER JOIN的结果差异是什么?

解答

  • INNER JOIN仅返回两表匹配的行。
  • LEFT JOIN返回左表所有行,即使右表无匹配(右表字段为NULL)。
    示例
    若左表有10条记录,右表匹配8条:
  • INNER JOIN返回8条。
  • LEFT JOIN返回10条(含2条右表
0