可以实现“大部分”跨数据库使用,但不能保证 100% 通用。
下面分点说明,比较实用:
ANSI SQL 是由 美国国家标准学会(ANSI) 制定的 SQL 标准,定义了 SQL 的语法、语义和行为规范。
常见版本:
如果你只写 ANSI SQL 标准语法,那么:
基本都能执行
例如下面这些基本是通用的:
SELECT id, name
FROM users
WHERE age > 18
ORDER BY id;
INSERT INTO users (id, name) VALUES (1, 'Tom');
UPDATE users SET age = 20 WHERE id = 1;
DELETE FROM users WHERE id = 1;
每个数据库都会 扩展 ANSI SQL,例如:
| 功能 | MySQL | Oracle | SQL Server | PostgreSQL |
|---|---|---|---|---|
| 当前时间 | NOW() | SYSDATE | GETDATE() | NOW() |
| 字符串拼接 | CONCAT() | || | + | || |
| 分页 | LIMIT | ROWNUM | TOP / OFFSET | LIMIT |
❌ 这些 不是 ANSI SQL
| 数据库 | 特有类型 |
|---|---|
| MySQL | TINYINT, AUTO_INCREMENT |
| Oracle | NUMBER, CLOB, DATE |
| SQL Server | DATETIME, BIT |
| PostgreSQL | SERIAL, JSONB |
原因:
ANSI SQL 可以跨数据库用,但只能用在“标准 SQL 范围内”;一旦涉及具体数据库特性,就会失去通用性。
如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。