温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么用ANSI SQL写查询

发布时间:2026-07-26 18:53:14 来源:亿速云 阅读:81 作者:小樊 栏目:数据库

ANSI SQL(即标准 SQL)写查询,核心是使用 SQL 标准语法,而不是某个数据库(如 MySQL、Oracle、SQL Server)的私有语法。下面从基础到进阶,给你一个清晰的说明和示例。


一、最基本的查询(SELECT)

SELECT column1, column2
FROM table_name;

示例:

SELECT first_name, last_name
FROM employees;

二、带条件的查询(WHERE)

SELECT *
FROM table_name
WHERE condition;

示例:

SELECT *
FROM employees
WHERE salary > 5000;

常见条件:

  • =, >, <, >=, <=
  • AND, OR, NOT
  • IN (...)
  • BETWEEN ... AND ...
  • IS NULL / IS NOT NULL

三、排序(ORDER BY)

SELECT *
FROM table_name
ORDER BY column1 [ASC | DESC];

示例:

SELECT *
FROM employees
ORDER BY hire_date DESC;

四、分组与聚合(GROUP BY / HAVING)

SELECT column, aggregate_function(column)
FROM table_name
GROUP BY column
HAVING condition;

示例:

SELECT department_id, COUNT(*) AS emp_count
FROM employees
GROUP BY department_id
HAVING COUNT(*) > 10;

常见聚合函数:

  • COUNT()
  • SUM()
  • AVG()
  • MAX()
  • MIN()

五、连接查询(JOIN,ANSI SQL 推荐写法)

ANSI SQL 标准 JOIN 写法(推荐)

SELECT e.first_name, d.department_name
FROM employees e
JOIN departments d
  ON e.department_id = d.department_id;

其他 JOIN 类型:

  • INNER JOIN(默认)
  • LEFT JOIN
  • RIGHT JOIN
  • FULL JOIN

示例(左连接):

SELECT e.first_name, d.department_name
FROM employees e
LEFT JOIN departments d
  ON e.department_id = d.department_id;

⚠️ 不推荐旧式写法(虽然很多数据库仍支持):

-- 不推荐
SELECT *
FROM employees, departments
WHERE employees.department_id = departments.department_id;

六、子查询(Subquery)

SELECT *
FROM employees
WHERE salary > (
    SELECT AVG(salary)
    FROM employees
);

子查询可以出现在:

  • WHERE
  • FROM
  • SELECT

七、集合操作(UNION / INTERSECT / EXCEPT)

SELECT column FROM table1
UNION
SELECT column FROM table2;
  • UNION:去重
  • UNION ALL:不去重
  • INTERSECT:交集
  • EXCEPT:差集(有些数据库用 MINUS

八、分页(ANSI SQL 标准写法)

✅ ANSI SQL 标准(部分数据库支持):

SELECT *
FROM employees
ORDER BY employee_id
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;

⚠️ 注意:

  • MySQL 用 LIMIT
  • SQL Server 用 OFFSET FETCH
  • Oracle 用 ROWNUMFETCH

九、ANSI SQL 写查询的几个原则

  1. 使用标准关键字
    • JOIN ... ON
    • AS(别名)
  2. 避免数据库私有语法
    • 如 MySQL 的 LIMIT(非 ANSI)
  3. 注意数据类型
    • 字符串用单引号 'abc'
  4. 大小写不敏感(通常)
    • 习惯:关键字大写,表名列名小写

十、一个完整示例(标准 ANSI SQL)

SELECT
    d.department_name,
    COUNT(e.employee_id) AS employee_count
FROM departments d
LEFT JOIN employees e
  ON d.department_id = e.department_id
WHERE d.location_id IS NOT NULL
GROUP BY d.department_name
HAVING COUNT(e.employee_id) > 5
ORDER BY employee_count DESC;

如果你愿意,可以告诉我:

  • 用的是 哪种数据库(MySQL / PostgreSQL / Oracle / SQL Server)
  • 或者你有 具体查询需求

我可以帮你把查询 严格按 ANSI SQL 写,并解释每一部分。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI